顺序表——学生成绩管理

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"; elseStu[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(); }intmain() { 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; }


实验结果如图所示
菜单界面


顺序表——学生成绩管理
文章图片




自定义要录入多少个学生


顺序表——学生成绩管理
文章图片




【顺序表——学生成绩管理】录完之后的显示界面
顺序表——学生成绩管理
文章图片




查询功能。包括按姓名,按学号和按序号
若查无此人则返回“无此人”
顺序表——学生成绩管理
文章图片






插入功能。如现在我在第二位插入“陈某某”,出现的新表如图
顺序表——学生成绩管理
文章图片






删除功能。如将陈某某删除后,新的表如图所示。
顺序表——学生成绩管理
文章图片


    推荐阅读