数据结构实训初结构体数组实现学生信息管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a973893384/article/details/7927649
// 00001.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"
#include "iostream"

using namespace std;

struct Stud
{
	char name[21];
	char sex[5];
	int Scor[4];
	int stdno;
	float avg;
	int sum;
}S[101],temp;

int k;

int main(int argc, char* argv[])
{
	void Input_();
	void Output_();
	void Sort_();
	void Insert_();
	void Delet_();
	void Find_();

	int t;

	puts("1:Input      2:OutPut      3:Sort\n4:Insert     5:Delete      6:Find");
	scanf("%d",&t);
	while(1)
	{
		if(t==1)
			{Input_();puts("Next:");scanf("%d",&t);system("cls");}
		else if(t==2)
			{Output_();puts("Next:");scanf("%d",&t);system("cls");}
		else if(t==3)
			{Sort_();puts("Next:");scanf("%d",&t);system("cls");}
		else if(t==4)
			{Insert_();puts("Next:");scanf("%d",&t);system("cls");}
		else if(t==5)
			{Delet_();puts("Next:");scanf("%d",&t);system("cls");}
		else if(t==6)
			{Find_();puts("Next:");scanf("%d",&t);system("cls");}
	}
	return 0;
}

void Input_()
{
	puts("How much you want input:");
	scanf("%d",&k);
	for(int i=0;i<k;i++)
	{
		puts("Name:");
		scanf("%s",&S[i].name);
		puts("Sex:");
		scanf("%s",&S[i].sex);
		puts("StdN:");
		scanf("%d",&S[i].stdno);
		puts("Score:");
		scanf("%d %d %d %d",&S[i].Scor[0],&S[i].Scor[1],&S[i].Scor[2],&S[i].Scor[3]);
		S[i].sum=S[i].Scor[0]+S[i].Scor[1]+S[i].Scor[2]+S[i].Scor[3];
		S[i].avg=float(S[i].sum/4);
	}
}

void Output_()
{
	for(int i=0;i<k;i++)
		printf("Name:%s\tStdN:%d\tSex:%s\tScore:%d %d %d %d\tAvg:%0.2f\tSum:%d\n",
		S[i].name,S[i].stdno,S[i].sex,S[i].Scor[0],S[i].Scor[1],S[i].Scor[2],S[i].Scor[3],S[i].avg,S[i].sum);
}

void Sort_()
{
	int e;
	puts("1:Sort with to StudentNumber\t\t\t2:Sort with to StudentScore");
	scanf("%d",&e);
	if(e==1)
	{
		for(int i=0;i<k-1;i++)
			for(int j=0;j<k-i-1;j++)
				if(S[j].stdno<S[j+1].stdno)
				{
					temp=S[j];
					S[j]=S[j+1];
					S[j+1]=temp;
				}
	}
	if(e==2)
	{
		for(int i=0;i<k-1;i++)
			for(int j=0;j<k-i-1;j++)
				if(S[j].sum<S[j+1].sum)
				{
					temp=S[j];
					S[j]=S[j+1];
					S[j+1]=temp;
				}
	}
	puts("Success!");
}

void Insert_()
{
	int e;
	puts("Please input you want insert's infomation:");
	puts("Name:");
	scanf("%s",&temp.name);
	puts("Sex:");
	scanf("%s",&temp.sex);
	puts("StdN:");
	scanf("%d",&temp.stdno);
	puts("Score:");
	scanf("%d %d %d %d",&temp.Scor[0],&temp.Scor[1],&temp.Scor[2],&temp.Scor[3]);
	temp.sum=temp.Scor[0]+temp.Scor[1]+temp.Scor[2]+temp.Scor[3];
	temp.avg=float(temp.sum/4);
	for(int i=0;i<k;i++)
	{
		if(temp.stdno<S[i].stdno)
			e=i;
	}
	if(temp.stdno>S[i].stdno&&i==k)
		S[k]=temp;
	else
	{
		for(int j=e;j<=k;j++)
			S[j+1]=S[j];
		S[e]=temp;	
	}
	k++;
}

void Delet_()
{
	int e,t;
	puts("you want Delete:");
	scanf("%d",&e);
	for(int i=0;i<k;i++)
		if(S[i].stdno==e)
		{
			t=i;
			break;
		}
	for(int j=t;j<k;j++)
	{
		S[j]=S[j+1];
	}
	k--;
}

void Find_()
{
	int e,t;
	char tname[21];
	puts("You want find:\n1:StudentNumber\t\t2:StudentName");
	scanf("%d",&e);
	if(e==1)
	{
		puts("input StudentNumber:");
		scanf("%d",&t);
		if(t>=0&&t<=k)
			printf("Name:%s\tStdN:%d\tSex:%s\tScore:%d %d %d %d\tAvg:%0.2f\tSum:%d\n",
			S[t-1].name,S[t-1].stdno,S[t-1].sex,S[t-1].Scor[0],S[t-1].Scor[1],S[t-1].
			Scor[2],S[t-1].Scor[3],S[t-1].avg,S[t-1].sum);
	}

	if(e==2)
	{
		puts("StudentName:");
		scanf("%s",&tname);
		for(int i=0;i<k;i++)
			if(strcmp(S[i].name,tname)==0)
			{
				printf("Name:%s\tStdN:%d\tSex:%s\tScore:%d %d %d %d\tAvg:%0.2f\tSum:%d\n",
				S[i].name,S[i].stdno,S[i].sex,S[i].Scor[0],S[i].Scor[1],S[i].
				Scor[2],S[i].Scor[3],S[i].avg,S[i].sum);
				break;
			}
		if(strcmp(S[i].name,tname)!=0)
			puts("ERROR!");
	}
}


猜你喜欢

转载自blog.csdn.net/a973893384/article/details/7927649