摘要:一个简单的学生成绩管理系统自然要包括增删改查。学生成绩管理是学校教务部门日常工作的重要组成部分,其处理信息量很大。此代码是对学生成绩管理的简单模拟,用菜单选择方式完成下列功能:输入学生数据;输出学生数据;学生数据查询;添加学生数据;修改学生数据;删除学生数据。

本管理系统数据是一组学生的成绩信息,每条学生的成绩信息由学号、姓名和成绩组成,这组学生的成绩信息具有相同特性,属于同一数据对象。由此可以看出,这些数据具有线性表中数据元素的性质,所以该系统的数据采用线性表来存储。

顺序表是线性表的顺序存储结构,是指用一组连续的内存单元依次存放线性表的数据元素。在顺序存储结构下,逻辑关系相邻的两个元素在物理位置上也相邻,这是顺序表的特点。本项目可以采用顺序表的线性表顺序存储结构。

利用最简单的结构体数组来完成:

先说几个比较重要的模块:

录入信息模块:

void Logging_data();//录入学生信息

void List::Logging_data()//录入学生信息{if(len==Listlen){cout << "表已满 !"<<endl;return; }cout <<"请输入学生学号 "<>Elem[len+1].id; if(id_ifnd(Elem[len+1].id) >=0 ){cout << "该学号已存在!"<<endl; return;}cout <<"请输入学生姓名 "<>Elem[len+1].name;cout <<"请输入学生成绩 "<>Elem[len+1].score;if(Elem[len+1].score 100){cout << "输入有误!" <<endl;return;}len++;}

int id_ifnd(char *fin_id);//按学号查找返回查找到的位置或者没查找到的;

void dele_stuinfo(); //删除学生信息
删除信息模块:

void List::dele_stuinfo() //删除学生信息 {if(is_empty()){cout << "表为空 !"<<endl;return; }char dele_id[15]={0};int i;cout <>dele_id;for(i=0;i<len+1;i++){if(strcmp(Elem[i].id,dele_id)==0){if(i==len){len--;cout << "删除成功" << endl;print_list();return;}else{for(i;i<len+1;i++){Elem[i]=Elem[i+1];}len--;cout << "删除成功" << endl;print_list();return;}}}cout << "没有此学号的学生!"<<endl;}

int is_empty(); //表为空

int is_full() ; //表为满

void print_list(); //普通打印

打印模块:

void List::print_list()//普通打印 {int i;if(is_empty()){cout << "表为空 !"<<endl;return; }else{cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;for(i=0;i<len+1;i++){cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;}cout <<endl;cout <<"************************************************"<<endl;cout <<endl;}}

void score_sort_low(); //成绩排序 (不及格)

void score_sort_up(); //按成绩升序(从低到高)排序

void id_sort(); //按学号升序排序

按学号升序排序 模块:

void List::id_sort() //按学号升序排序 ok {if(is_empty()){cout << "表为空 !"<<endl;return; }int i,j;STUtemp;for(i=0;i<len;i++){for(j=0;j0){temp=Elem[j];Elem[j]=Elem[j+1];Elem[j+1]=temp;}}}}

void score_sort_donw(); //按成绩降序(从高到低)排序

成绩排序模块:

void List::score_sort_donw() //按成绩降序(从高到低)排序ok{if(is_empty()){cout << "表为空 !"<<endl;return; }int i,j;STUtemp;for(i=0;i<len;i++){for(j=0;j<len-i;j++){if(Elem[j].score<Elem[j+1].score){temp=Elem[j];Elem[j]=Elem[j+1];Elem[j+1]=temp;}}}}

void id_find_info(); //按学号查找学生信息;

按学号查找学生信息模块:

void List::id_find_info() //按学号查找学生信息; {cout <>buf;int i,k;k=0;for(i=0;i<len+1;i++){if(strcmp(buf,Elem[i].id) == 0){k++;cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;cout <<endl;cout <<"************************************************"<<endl;cout <<endl;}else{continue;}}if(k==0){cout <<"没有该学号的学生!"<<endl;}}

void name_find_info(); //按姓名查找学生信息;

void amend_info();//修改学生信息

修改学生信息模块:

void List::amend_info()//修改学生信息{if(is_empty()){cout << "表为空 !"<<endl;return; }char amend_id[15]={0};int i;char buf1[15]={0};char buf2[15]={0};float k;cout <>amend_id;for(i=0;i<len+1;i++){if(strcmp(Elem[i].id,amend_id)==0){cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;cout <<endl;cout <<"************************************************"<<endl;cout <<endl;AAA:cout <<"请输入学生新学号 "<>buf1; if(strcmp(buf1,Elem[i].id) != 0 && id_ifnd(buf1) >=0 ){cout << "该学号已存在!请重新输入"<<endl;memset(buf1,0,sizeof(buf1)); goto AAA;}strcpy(Elem[i].id,buf1);print_list();cout <<"请输入学生新姓名 "<>buf2;strcpy(Elem[i].name,buf2);print_list();BBB:cout <<"请输入学生新成绩 "<>k;if(k 100){cout << "输入有误!请重新输入:" <<endl;goto BBB;}Elem[i].score=k;print_list();cout << "已修改" << endl;id_sort();print_list();return;}}cout << "没有此学号的学生!"<<endl;return;}

完整代码

#include#include#define Listlen 100 //这里可以修改数组的大小,目前可以记录一百个学生成绩信息using namespace std;typedef struct ElemType{char id[15];//学号char name[15]; //姓名float score;//成绩}STU;class List{public:List(){Elem[Listlen]={0}; len=-1;}~List(){}void Logging_data();//录入学生信息int id_ifnd(char *fin_id);//按学号查找返回查找到的位置或者没查找到的; void dele_stuinfo(); //删除学生信息 int is_empty();//表为空 int is_full() ; //表为满 void print_list();//普通打印 void score_sort_low(); //成绩排序 (不及格) void score_sort_up(); //按成绩升序(从低到高)排序 void id_sort(); //按学号升序排序 void score_sort_donw(); //按成绩降序(从高到低)排序 void id_find_info(); //按学号查找学生信息; void name_find_info(); //按姓名查找学生信息; void amend_info();//修改学生信息private:STU Elem[Listlen];//定义结构体数组 int len;};int main(void){List a;int k; char quits[6]={0};strcpy(quits,"quit");cout<<endl;cout << "-------欢迎来到德玛西亚学校学生成绩信息管理系统-------"<<endl;LIST:cout << "----------------1-------录入学生信息----------------"<<endl;cout << "----------------2-------删除学生信息----------------"<<endl;cout << "----------------3-------修改学生信息----------------"<<endl;cout << "----------------4-------查询学生信息----------------"<<endl;cout << "----------------0-------退出管理系统----------------"<<endl;cout<>k;char buf1[6]={0};char buf2[6]={0};char buf3[6]={0};switch(k){case 1:for(k=0;k<100;k++){a.Logging_data();cout <>buf1;if(strcmp(buf1,quits)==0){cout<<"录入结束表为 :"<<endl;cout<<endl;a.id_sort();a.print_list();goto LIST;}}case 2:for(k=0;k<100;k++){a.dele_stuinfo();cout <>buf2;if(strcmp(buf2,quits)==0){cout<<"删除结束表为 :"<<endl;cout<<endl;a.id_sort();a.print_list();goto LIST;}}case 3:for(k=0;k<100;k++){a.amend_info();cout <>buf3;if(strcmp(buf3,quits)==0){cout<<"修改结束表为 :"<<endl;cout<<endl;a.id_sort();a.print_list();goto LIST;}}case 4:int m;FIND:cout<<endl; cout << "----------------1-------按学号查找学生信息----------------"<<endl;cout << "----------------2-------按姓名查找学生信息----------------"<<endl;cout << "----------------3-------查找未及格的学生信息--------------"<<endl;cout << "----------------4-------成绩降序表查看--------------------"<<endl;cout << "----------------5-------成绩升序表查看--------------------"<<endl;cout << "----------------0-------退出查询--------------------------"<<endl;cout<>m;switch(m) {case 1:a.id_find_info();goto FIND;case 2:a.name_find_info();goto FIND;case 3:a.score_sort_low();goto FIND;case 4:a.score_sort_donw();a.print_list();goto FIND;case 5:a.score_sort_up();a.print_list();goto FIND;case 0:goto LIST;default:cout <<"输入有误 请重新输入!"<<endl;goto FIND;}case 0:break;default:cout <<"输入有误 请重新输入!"<<endl;goto LIST;}return 0;}void List::Logging_data()//录入学生信息{if(len==Listlen){cout << "表已满 !"<<endl;return; }cout <<"请输入学生学号 "<>Elem[len+1].id; if(id_ifnd(Elem[len+1].id) >=0 ){cout << "该学号已存在!"<<endl; return;}cout <<"请输入学生姓名 "<>Elem[len+1].name;cout <<"请输入学生成绩 "<>Elem[len+1].score;if(Elem[len+1].score 100){cout << "输入有误!" <<endl;return;}len++;}int List::id_ifnd(char *fin_id) //按学号查找返回查找到的位置或者没查找到的; {int i;for(i=0;i<len+1;i++){if(strcmp(fin_id,Elem[i].id) == 0){return i;}else{continue;}}if(i==len+1){return -1;}}void List::dele_stuinfo() //删除学生信息 {if(is_empty()){cout << "表为空 !"<<endl;return; }char dele_id[15]={0};int i;cout <>dele_id;for(i=0;i<len+1;i++){if(strcmp(Elem[i].id,dele_id)==0){if(i==len){len--;cout << "删除成功" << endl;print_list();return;}else{for(i;i<len+1;i++){Elem[i]=Elem[i+1];}len--;cout << "删除成功" << endl;print_list();return;}}}cout << "没有此学号的学生!"<<endl;}int List::is_empty()//表为空 {if(len==-1){return 1;}else{return 0;}}int List::is_full()//表为满 {if(len+1==Listlen){return 1;}else{return 0;}}void List::print_list()//普通打印 {int i;if(is_empty()){cout << "表为空 !"<<endl;return; }else{cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;for(i=0;i<len+1;i++){cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;}cout <<endl;cout <<"************************************************"<<endl;cout <<endl;}}void List::score_sort_low() //成绩排序 (不及格) {if(is_empty()){cout << "表为空 !"<<endl;return; }int i,j;STUtemp;for(i=0;i<len;i++){for(j=0;j<len-i;j++){if(Elem[j].score<Elem[j+1].score){temp=Elem[j];Elem[j]=Elem[j+1];Elem[j+1]=temp;}}}int k=0;for(i=0;i<len+1;i++){if(Elem[i].score<60.0000){break;}}if(i==len+1){cout << "没有不及格的学生!"<<endl;return;}cout <<"学号"<<"姓名"<<"成绩(不及格) "<<endl;cout <<"************************************************"<<endl;cout <<endl;for(i;i<len+1;i++){cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;}cout <<endl;cout <<"************************************************"<<endl;cout <<endl;} void List::score_sort_up() //按成绩升序(从低到高)排序 ok{if(is_empty()){cout << "表为空 !"<<endl;return; }int i,j;STUtemp;for(i=0;i<len;i++){for(j=0;jElem[j+1].score){temp=Elem[j];Elem[j]=Elem[j+1];Elem[j+1]=temp;}}}} void List::id_sort() //按学号升序排序 ok {if(is_empty()){cout << "表为空 !"<<endl;return; }int i,j;STUtemp;for(i=0;i<len;i++){for(j=0;j0){temp=Elem[j];Elem[j]=Elem[j+1];Elem[j+1]=temp;}}}}void List::score_sort_donw() //按成绩降序(从高到低)排序ok{if(is_empty()){cout << "表为空 !"<<endl;return; }int i,j;STUtemp;for(i=0;i<len;i++){for(j=0;j<len-i;j++){if(Elem[j].score<Elem[j+1].score){temp=Elem[j];Elem[j]=Elem[j+1];Elem[j+1]=temp;}}}}void List::id_find_info() //按学号查找学生信息; {cout <>buf;int i,k;k=0;for(i=0;i<len+1;i++){if(strcmp(buf,Elem[i].id) == 0){k++;cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;cout <<endl;cout <<"************************************************"<<endl;cout <<endl;}else{continue;}}if(k==0){cout <<"没有该学号的学生!"<<endl;}}void List::name_find_info() //按姓名查找学生信息; {cout <>buf;int i,k;k=0;for(i=0;i<len+1;i++){if(strcmp(buf,Elem[i].name) == 0){k++;cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;cout <<endl;cout <<"************************************************"<<endl;cout <<endl;}else{continue;}}if(k==0){cout <<"没有该姓名的学生!"<<endl;}}void List::amend_info()//修改学生信息{if(is_empty()){cout << "表为空 !"<<endl;return; }char amend_id[15]={0};int i;char buf1[15]={0};char buf2[15]={0};float k;cout <>amend_id;for(i=0;i<len+1;i++){if(strcmp(Elem[i].id,amend_id)==0){cout <<"学号"<<"姓名"<<"成绩 "<<endl;cout <<"************************************************"<<endl;cout <<endl;cout<<Elem[i].id<<""<<Elem[i].name<<""<<Elem[i].score<<endl;cout <<endl;cout <<"************************************************"<<endl;cout <<endl;AAA:cout <<"请输入学生新学号 "<>buf1; if(strcmp(buf1,Elem[i].id) != 0 && id_ifnd(buf1) >=0 ){cout << "该学号已存在!请重新输入"<<endl;memset(buf1,0,sizeof(buf1)); goto AAA;}strcpy(Elem[i].id,buf1);print_list();cout <<"请输入学生新姓名 "<>buf2;strcpy(Elem[i].name,buf2);print_list();BBB:cout <<"请输入学生新成绩 "<>k;if(k 100){cout << "输入有误!请重新输入:" <<endl;goto BBB;}Elem[i].score=k;print_list();cout << "已修改" << endl;id_sort();print_list();return;}}cout << "没有此学号的学生!"<<endl;return;}

运行结果:随便输入点瞅瞅

有兴趣的小火把可以拿来玩玩!今天的分享就到此结束了,感谢各位读者姥爷个观看,下次见!!芜湖!!