顺序表——学生成绩管理

       1.建立一个由n个学生成绩的顺序表,n的大小由自己确定,每一个学生的成绩信息由自己确定,实现数据的对表进行插入、删除、查找等操作。分别输出结果。

# include 
# include 
# include 
#define MAX 100
int i,n;
using namespace std;

struct Student{      //声明一个结构体类型Student 
 char id[20];         
 char name[20]; 
 int Lnum;       //离散课程得分
 int Gnum;       //管理学课程得分
 int Enum;       //英语课程得分
 float sum;        //总分  
 void Menu();
 void Find();
 void RemoveItem();
 void Display(); 
 void show();
 void AddItem();
 void Input();
 
}Stu[MAX+1];
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Menu(){
  
  cout<<"																"<>n;
for(i=1;i<=n;i++)
{
  cout<<"第"<> Stu[i].name;
  cout<<"\t\t请输入学生学号:"<>Stu[i].id;
  cout<<"\t\t请输入离散成绩:"<>Stu[i].Lnum;
  cout<<"\t\t请输入管理成绩:"<>Stu[i].Gnum;
  cout<<"\t\t请输入英语成绩:"<>Stu[i].Enum;
  Stu[i].sum=Stu[i].Lnum+Stu[i].Gnum+Stu[i].Enum;
}
}


//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌显示所有信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Display()
{
cout<<"序号"<<"\t"<<"姓名"<<"\t\t"<<"学号"<<"\t"<<"离散"<<"\t"<<"管理"<<"\t"<<"英语"<<"\t"<<"总分"<>x;
   switch(x)
   {
      case 1:{
		  cout<<"\t\t请输入要查找的姓名:";cin>>na;
          bool flag=false;
         for(i=1;i<=n;i++)
		 {
			if(strcmp(Stu[i].name, na) == 0) 
			{
			 Stu[i].show();
			 flag=true;
			}	
		
		  }
		 if(!flag){
		 cout<<"无此人";
		 
		 }
	
		 
			}break;

	
	 case 2:{
          cout<<"\t\t请输入要查找的学号:";cin>>I;
		   bool flag=false;
          for(i=1;i<=n;i++)
		 {
			if(strcmp(Stu[i].id, I) == 0) 
			{ 
	    	 Stu[i].show();
			flag=true;}
			
		 }
		  if(!flag){
			  cout<<"无此人";}
			}break;
	 case 3:{
          cout<<"\t\t请输入要查找的序号:";cin>>i;
		  if(i<1||i>n) throw "position error";
	      else  Stu[i].show();
			}break;

   }
 
}


//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌插入信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

 void AddItem()
 {
int i,j;
n++;
if(n>MAX) throw "overflow";
cout<<"which position do you want to insert?";
cin>>i;
if(i<1||i>n) throw "position";
for(j=n;j>=i;j--)
{
Stu[j]=Stu[j-1];
}
  cout<<"第"<> Stu[i].name;
  cout<<"\t\t请输入学生学号:"<>Stu[i].id;
  cout<<"\t\t请输入离散成绩:"<>Stu[i].Lnum;
  cout<<"\t\t请输入管理成绩:"<>Stu[i].Gnum;
  cout<<"\t\t请输入英语成绩:"<>Stu[i].Enum;
  Stu[i].sum=Stu[i].Lnum+Stu[i].Gnum+Stu[i].Enum;
 cout<<"The new list is:";
  Display();
 }
 //﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌

 void RemoveItem()
 {
 int j;
 if(n==0) throw "underflow";
cout<<"which sequence number do you want to delete?";
cin>>i;
if(i<1||i>n) throw "position";
for(j=i+1;j<=n;j++)
{
Stu[j-1]=Stu[j];

}
cout<<"The new list is: ";
n--;
 Display();
 }

int  main()
{
int x,i=0;
 bool quit=false;
 while(!quit)
 {
  system("cls");
  Menu();  
  cin>>x;
  switch(x)
  {
  case 0:quit=true;break;
  case 1:Input();system("pause");break;
  case 2:Display();system("pause");break;
  case 3:Find();system("pause");break;
  case 4:AddItem();system("pause");break;
  case 5:RemoveItem();system("pause");break;
  }
 }
 return 0;
}

实验结果如图所示

菜单界面


顺序表——学生成绩管理_第1张图片


自定义要录入多少个学生


顺序表——学生成绩管理_第2张图片


录完之后的显示界面



查询功能。包括按姓名,按学号和按序号

若查无此人则返回“无此人”

顺序表——学生成绩管理_第3张图片



插入功能。如现在我在第二位插入“陈某某”,出现的新表如图

顺序表——学生成绩管理_第4张图片



删除功能。如将陈某某删除后,新的表如图所示。

顺序表——学生成绩管理_第5张图片

你可能感兴趣的:(顺序表——学生成绩管理)