考试报名系统是对考试报名管理的简单模拟。用菜单选择方式完毕下列功能:输入考生信息;输出考生信息。查询考生信息。加入考生信息;改动考生信息。删除考生信息。
每条考生信息由准考证号、姓名、性别、年龄、报考类别等信息组成。
要求:定义一个专用的类型 ElemType。用于描写叙述考生信息,数据结构用一个类描写叙述。命名为List,包含数据、关系和基本操作;数据结构的存储结构用链式结构实现.
#include<iostream> #include<string> #include<stdio.h> #include<windows.h> using namespace std; int n; struct student { int num; char name[20]; char sex; int age; char leibie[10]; student *next; }; class LIST { public: //student *creat(); void creat(); void menu_find(); void find(student *head,int num); void menu_change(); void change(student *head,int num); void menu_del(); student *delet(student *head,int num); void print(); void menu_insert(); student *insert(student *head,student *stu); private: student *head; }; LIST list; ////////////////主菜单//////////////////// void menu() { system("cls"); cout<<"************************欢迎进入考生管理系统************************"<<endl; cout<<"** **"<<endl; cout<<"** 1.创建考生信息 2.查找考生信息 **"<<endl; cout<<"** 3.改动考生信息 4.删除考生信息 **"<<endl; cout<<"** 5.插入考生信息 6.显示考生信息 **"<<endl; cout<<"** 7.退出 **"<<endl; cout<<"********************************************************************"<<endl; cout<<" "<<char(1)<<" 孙淑敏 薛影影 孙梦瑶 马会英 马睿晗"<<endl<<endl; cout<<"请输入文件夹序号:"<<endl; } /////////////////创建考生信息///////////////// void LIST::creat() { cout<<" ****输入以0结束!****"<<endl<<endl; student *p1,*p2; n=0; p1=p2=new student; cout<<"请输入考生: 准考证号 姓名 性别 年龄 报考类别"<<endl; cin>>p1->num; if(p1->num==0) { system("pause"); menu(); return; } cin>>p1->name>>p1->sex>>p1->age>>p1->leibie; list.head=NULL; while(p1->num!=0) { n=n+1; if(n==1) list.head=p1; else p2->next=p1; p2=p1; p1=new student; cout<<"请输入考生:准考证号 姓名 性别 年龄 报考类别!"<<endl; cin>>p1->num; if(p1->num==0) break; cin>>p1->name>>p1->sex>>p1->age>>p1->leibie; } if(p1->num==0) system("pause"); p2->next=NULL; list.head=head; menu(); } ///////////////查找考生信息/////////////// void LIST::menu_find() { cout<<" ****输入以0结束!****"<<endl<<endl; int f_num; cout<<"请输入您要查找考生的准考证号: "<<endl; cin>>f_num; while(f_num!=0) { list.find(list.head,f_num); cout<<"请输入您要查找考生的准考证号: "<<endl; cin>>f_num; } if(f_num==0) system("pause"); menu(); } void LIST::find(student *head,int num) { student *p1,*p2; if(head==NULL) { cout<<" ****当前没有考生信息!****"<<endl<<endl; return ; } p1=head; while(num!=p1->num&&p1->next!=NULL) { p2=p1; p1=p1->next; } if(num==p1->num) { cout<<"您要查找的考生为:"<<endl <<"************************************************"<<endl; cout<<"准考证号:"<<p1->num<<'\n' <<"姓 名:"<<p1->name<<'\n' <<"性 别:"<<p1->sex<<'\n' <<"年 龄:"<<p1->age<<'\n' <<"报考类别:"<<p1->leibie<<endl; cout<<"************************************************"<<endl<<endl; return ; } else if(p1->next==NULL) { cout<<" ****找不到该考生信息!****"<<endl<<endl; return ; } } ///////////////改动考生信息/////////////// void LIST::menu_change() { cout<<" ****输入以0结束!****"<<endl; int xg_num; cout<<"请输入您要改动的考生的准考证号:"<<endl; cin>>xg_num; while(xg_num!=0) { list.change(head,xg_num); cout<<"请输入您要改动的考生的准考证号:"<<endl; cin>>xg_num; } if(xg_num==0) system("pause"); menu(); } void LIST::change(student *head,int num) { student *p1,*p2; if(head==NULL) { cout<<" ****当前没有考生信息!****"<<endl; return ; } p1=head; while(num!=p1->num) { p2=p1; p1=p1->next; } if(num==p1->num) { cout<<"您要改动的考生当前信息:"<<endl; cout<<"**************************************************************"<<endl; cout<<" 准考证号:"<<p1->num<<'\n' <<" 姓 名:"<<p1->name<<'\n' <<" 性 别:"<<p1->sex<<'\n' <<" 年 龄:"<<p1->age<<'\n' <<" 报考类别:"<<p1->leibie<<endl; cout<<"**************************************************************"<<endl; cout<<" ****请又一次输入该考生的信息!****"<<endl<<endl; cout<<"请又一次输入该考生: 准考证号 姓名 性别 年龄 报考类别!"<<endl; int xg_num; char xg_name[20]; char xg_sex; int xg_age; char xg_leibie[10]; cin>>xg_num>>xg_name>>xg_sex>>xg_age>>xg_leibie; p1->num=xg_num; strcpy(p1->name,xg_name); p1->sex=xg_sex; p1->age=xg_age; strcpy(p1->leibie,xg_leibie); cout<<" ****改动成功!****"<<endl<<endl; return ; } else { cout<<" ****找不到该考生信息!****"<<endl<<endl; return ; } } ///////////////显示考生信息/////////////// void LIST::print() { student *p; p=list.head; if(list.head!=NULL) do { cout<<"************************************************"<<endl; cout<<"准考证号:"<<p->num<<'\n' <<"姓 名:"<<p->name<<'\n' <<"性 别:"<<p->sex<<'\n' <<"年 龄:"<<p->age<<'\n' <<"报考类别:"<<p->leibie<<endl; p=p->next; }while(p!=NULL); if(list.head==NULL) cout<<" ****当前没有考生信息!****"<<endl; cout<<"************************************************"<<endl; system("pause"); menu(); } //////////////////删除考生信息/////////////// void LIST::menu_del() { cout<<" ****输入以0结束!****"<<endl; int del_num; cout<<"请输入您要删除的考生准考证号:"<<endl; cin>>del_num; while(del_num!=0) { head=list.delet(head,del_num); cout<<"请输入您要删除的考生准考证号:"<<endl; cin>>del_num; } if(del_num==0) system("pause"); menu(); } student *LIST::delet(student *head,int num) { student *p1,*p2; if(head==NULL) { cout<<" ****当前没有考生信息!****"<<endl; return (head); } p1=head; while(num!=p1->num&&p1->next!=NULL) { p2=p1; p1=p1->next; } if(num==p1->num) { if(p1==head) head=p1->next; else p2->next=p1->next; cout<<" ****学号为"<<num<<"的考生信息已删除!****"<<endl; n=n-1; } else cout<<" ****找不到该考生信息!****"<<endl; return head; } //////////////////插入考生信息//////////////////// void LIST::menu_insert() { student *stu; cout<<" ****输入以0结束!****"<<endl; stu=new student; cout<<"请输入考生: 准考证号 姓名 性别 年龄 报考类别!"<<endl; cin>>stu->num; if(stu->num==0) { system("pause"); menu(); return; } cin>>stu->name>>stu->sex>>stu->age>>stu->leibie; while(stu->num!=0) { head=list.insert(head,stu); stu=new student; cout<<"请输入考生: 准考证号 姓名 性别 年龄 报考类别!"<<endl; cin>>stu->num; if(stu->num==0) break; cin>>stu->name>>stu->sex>>stu->age>>stu->leibie; cout<<" ****插入考生信息成功!****"<<endl; } if(stu->num==0) system("pause"); menu(); } student *LIST::insert(student *head,student *stu) { student *p0,*p1,*p2; p1=head; p0=stu; if(head==NULL) { head=p0; p0->next=NULL; } else { while((p0->num>p1->num)&&(p1->next!=NULL)) { p2=p1; p1=p1->next; } if(p0->num<=p1->num) { if(head==p1) head=p0; else p2->next=p0; p0->next=p1; } else { p1->next=p0; p0->next=NULL; } } n=n+1; return (head); } ////////////////////////////////////////////////////////// int main() { menu(); int num; while(cin>>num) { switch(num) { case 1: { list.creat(); };continue; case 2: { list.menu_find(); };continue; case 3: { list.menu_change(); };continue; case 4: { list.menu_del(); };continue; case 5: { list.menu_insert(); };continue; case 6: { list.print(); };continue; case 7: { cout<<" ****欢迎下次光临!****"<<endl; exit(0); }; } } return 0; } /************************************************** 101 sunshumin f 19 li 102 xueyingying m 20 wen 104 mahuiying m 20 wen 106 maruihan f 19 li 108 sunmengyao m 18 li 105 sunsm f 23 wen 106 xueyy m 22 li **************************************************/
数组形式实现
1.考生管理系统顺序表 #include <iostream> #include <cstring> #include <cstdio> #include <cstdlib> using namespace std; typedef struct { int num; char name[20]; char sex; int age; char category[20]; } ElemType; int cmp(const void *a,const void *b)//qsort排序函数 { return ((*(ElemType*)a).num-(*(ElemType*)b).num); } class List { private: ElemType a[20]; int count; public: friend int cmp(const void *a,const void *b); void CreateList();//建立 void DispList();//显示 void ListInsert();//插入 void LocateElem();//查找 void Listchange();//改动 void ListDelete();//删除 }; void List::CreateList()//建立 { count=0; cout<<"请输入考生信息以”0“结束输入"<<endl; while(cin>>a[count].num&&a[count].num!=0) { cin>>a[count].name>>a[count].sex>>a[count].age>>a[count].category; count++; } } void List::DispList()//显示 { int i; for(i=0; i<count; i++) { cout<<"**************************"<<endl; cout<<"准考证号: "<<a[i].num<<endl; cout<<"姓 名: "<<a[i].name<<endl; cout<<"性 别: "<<a[i].sex<<endl; cout<<"年 龄: "<<a[i].age<<endl; cout<<"报考类别: "<<a[i].category<<endl; cout<<"**************************"<<endl; } } void List::ListDelete()//删除 { int i,k,D_num; cout<<"请输入要删除的考生的考号:"<<endl; cin>>D_num; bool f;//寻找成功的标志 f=false; for(i=0; i<count; i++)//寻找要删除的考生的考号并记录位置 { if(a[i].num==D_num) { k=i; f=true; } } if(f) { for(i=k; i<count-1; i++) { a[i]=a[i+1]; } count--; cout<<"删除成功!"<<endl; } else//寻找失败 { cout<<"查无此人。或该考生信息已被删除。"<<endl; } } void List::ListInsert()//插入 { int S_num; cout<<"请输入考生信息以”0“结束输入"<<endl; while(cin>>S_num&&S_num!=0) { bool f=false;//寻找成功的标志 for(int i=0; i<count; i++) { if(S_num==a[i].num) { f=true; cout<<"该考生已存在,请问是否改动该考生信息?"<<endl; int c; cout<<"1.是 2.否"<<endl; cin>>c; if(c==1) { cout<<"请输入该考生的其它信息:"<<endl; a[i].num=S_num; cout<<"姓 名:"; cin>>a[i].name; cout<<"性 别:"; cin>>a[i].sex; cout<<"年 龄:"; cin>>a[i].age; cout<<"报考类别: "; cin>>a[i].category; cout<<"请输入考生信息以”0“结束输入"<<endl; break; } else//c=2 { cout<<"请又一次输入一个要插入的考生号: "<<endl; break; } } } if(!f)//寻找失败,又一次插入 { a[count].num=S_num; cout<<"请又一次输入考生信息:"<<endl; cout<<"姓 名:"; cin>>a[count].name; cout<<"性 别:"; cin>>a[count].sex; cout<<"年 龄:"; cin>>a[count].age; cout<<"报考类别:"; cin>>a[count].category; cout<<"插入成功! "<<endl; cout<<"请输入考生信息以”0“结束输入"<<endl; count++; } } qsort(a,count,sizeof(a[0]),cmp);//qsort对结构体排序 } void List::LocateElem()//查找 { int b,i; cout<<"请输入要查找的考生的考号:"<<endl; cin>>b; for(i=0; i<count; i++)//寻找要查找的考生的考号 { if(a[i].num==b) { cout<<"**************************"<<endl; cout<<"准考证号: "<<a[i].num<<endl; cout<<"姓 名: "<<a[i].name<<endl; cout<<"性 别: "<<a[i].sex<<endl; cout<<"年 龄: "<<a[i].age<<endl; cout<<"报考类别: "<<a[i].category<<endl; cout<<"**************************"<<endl; } } } void List::Listchange()//改动 { int C_num; cout<<"请输入一个要改动的考生号: "<<endl; while(cin>>C_num&&C_num!=0) { bool f=false;//寻找成功的标志 for(int i=0; i<count; i++) { if(C_num==a[i].num) { cout<<"请又一次输入考生信息:"<<endl; cout<<"准考证号:"; cin>>a[i].num; cout<<"姓 名:"; cin>>a[i].name; cout<<"性 别:"; cin>>a[i].sex; cout<<"年 龄:"; cin>>a[i].age; cout<<"报考类别:"; cin>>a[i].category; f=true; } } if(!f) { cout<<"查找失败,是否又一次插入此考生信息?"<<endl; int b; cout<<"1.是 2.否"<<endl; cin>>b; if(b==1) { cout<<"请输入该考生的其它信息:"<<endl; a[count].num=C_num; cout<<"姓 名:"; cin>>a[count].name; cout<<"性 别:"; cin>>a[count].sex; cout<<"年 龄:"; cin>>a[count].age; cout<<"报考类别: "; cin>>a[count].category; count++; } else { cout<<"请又一次输入一个要改动的考生号: "<<endl; continue; } } cout<<"请输入一个要改动考生信息,否则输入”0“结束改动"<<endl; } qsort(a,count,sizeof(a[0]),cmp); } void Dis()//主界面 { cout<<endl<<endl<<endl; cout<<" *********欢迎进入烟台大学考生管理系统********"<<endl; cout<<" 1.创建考生信息 2.查找考生信息"<<endl; cout<<" 3.改动考生信息 4.删除考生信息"<<endl; cout<<" 5.插入考生信息 6.显示全部考生信息"<<endl; cout<<" 7.退出 8.关于"<<endl; cout<<"请输入您要选择的服务项目:"; } int main() { Dis(); int n; List s; while( cin>>n) { switch(n) { case 1: s.CreateList(); Dis(); break; case 2: s.LocateElem(); Dis(); break; case 3: s.Listchange(); Dis(); break; case 4: s.ListDelete(); Dis(); break; case 5: s.ListInsert(); Dis(); break; case 6: s.DispList(); Dis(); break; case 7: cout<<"谢谢您的使用,再见。"<<endl; return 0; break; case 8: cout<<endl<<endl; cout<<" 本程序由计133-1班12组完毕"<<endl; cout<<" 小组成员: 刘 壮"<<endl; cout<<" 刘洪伶"<<endl; cout<<" 张慧慧"<<endl; cout<<" 赵 洁"<<endl; cout<<" 冉镇东"<<endl; cout<<endl<<endl<<endl; cout<<" 版权全部 翻版必究"<<endl; cout<<" 如有雷同 纯属巧合"<<endl; cout<<"请输入您要选择的服务项目:"; } } return 0; } /************************************************** 101 liu f 11 wen 102 li m 12 li 103 wang m 13 li 105 guo f 14 wen 107 wen m 15 li 104 xin1 f 14 wen 106 xin2 m 16 li **************************************************/ 2.考生管理系统链表 #include <iostream> #include <cstring> using namespace std; typedef struct student { int num; char name[20]; char sex; int age; char category[20]; student *next; } ElemType; class List { private: ElemType *head;//链表头指针 public: void CreateList();//建立 void DispList();//显示 void ListInsert();//插入 void LocateElem();//查找 void Listchange();//改动 void ListDelete();//删除 }; void List::CreateList()//建立 { ElemType *head1,*p; cout<<"请输入考生信息以”0“结束输入"<<endl; head=head1=new ElemType; while(cin>>head1->num&&head1->num) { cin>>head1->name>>head1->sex>>head1->age>>head1->category; p=new ElemType; head1->next=p; head1=p; } head1->next=NULL; } void List::DispList()//显示 { ElemType *head1; head1=head; while(head1->next!=NULL) { cout<<"**************************"<<endl; cout<<"准考证号: "<<head1->num<<endl; cout<<"姓 名: "<<head1->name<<endl; cout<<"性 别: "<<head1->sex<<endl; cout<<"年 龄: "<<head1->age<<endl; cout<<"报考类别: "<<head1->category<<endl; cout<<"**************************"<<endl; head1=head1->next; } } void List::ListDelete()//删除 { int D_num; ElemType *p1,*p2; cout<<"请输入要删除的考生的考号:"<<endl; cin>>D_num; p1=head; bool f=false;//寻找成功的标志 while(D_num!=p1->num&&p1->next!=NULL) { p2=p1; p1=p1->next; } if(D_num==p1->num) { f=true; if(p1==head)head=p1->next;//删除头结点 else p2->next=p1->next; cout<<"删除成功。"<<endl; } if(!f) { cout<<"查无此人,或该考生信息已被删除!"<<endl; } } void List::ListInsert()//插入 { ElemType *p0,*p1,*p2; cout<<"请输入一个要插入的准考证号以”0“结束输入"<<endl; p1=head; p0=new ElemType; while(cin>>p0->num&&p0->num) { cout<<"请输入该考生的其它信息"<<endl; cout<<"姓 名:"; cin>>p0->name; cout<<"性 别:"; cin>>p0->sex; cout<<"年 龄:"; cin>>p0->age; cout<<"报考类别: "; cin>>p0->category; while(p0->num>p1->num&&p1->next->num!=0)//p1指向倒数第二个节点 { p2=p1; p1=p1->next; } if(p0->num<=p1->num) { if(head==p1)head=p0;//插在表头 else p2->next=p0;//插在表中间 p0->next=p1; cout<<"考生信息已记录"<<endl; cout<<"请输入一个要插入的准考证号以”0“结束输入"<<endl; p0=new ElemType; } else//插在表尾 { p0->next=p1->next; p1->next=p0; //cout<<p1->next->num<<"************"<<endl; cout<<"考生信息已记录"<<endl; cout<<"请输入一个要插入的准考证号以”0“结束输入"<<endl; p0=new ElemType; } } } void List::LocateElem()//查找 { int b; ElemType *p; while(1) { bool f=false; cout<<"请输入要查找的考生的考号以”0“结束查找:"<<endl; cin>>b; if(b==0) break; p=head; while(p->next!=NULL) { if(b==p->num) { cout<<"**************************"<<endl; cout<<"准考证号: "<<p->num<<endl; cout<<"姓 名: "<<p->name<<endl; cout<<"性 别: "<<p->sex<<endl; cout<<"年 龄: "<<p->age<<endl; cout<<"报考类别: "<<p->category<<endl; cout<<"**************************"<<endl; f=true; break; } else { p=p->next; } } if(!f) { cout<<"查找失败。此考生不存在!"<<endl; } } } void List::Listchange()//改动学生信息 { int C_num; ElemType *p; while(1) { cout<<"请输入一个要改动考生信息。否则输入”0“结束改动"<<endl; cin>>C_num; if(C_num==0) break; p=head; bool f=false; while(p->next!=NULL) { if(C_num==p->num)//所输入考号与原有考号同样时。開始改动学生信息 { f=true; cout<<"请又一次输入考生信息:"<<endl; cout<<"姓 名:"; cin>>p->name; cout<<"性 别:"; cin>>p->sex; cout<<"年 龄:"; cin>>p->age; cout<<"报考类别: "; cin>>p->category; //cin>>p->num>>p->name>>p->sex>>p->age>>p->category; break; } else { p=p->next; } } if(!f) { cout<<"查无此人。是否插入该考生信息?"<<endl; cout<<"1.是 2.否"<<endl; int m; cin>>m; if(m==1)//p指向 0(即最后一个) 节点 { //找到倒数第二个节点, p=head; while(p->next->num!=0) p=p->next; //p指向倒数第二个节点 ElemType *p1=new ElemType; p1->next=p->next; p->next=p1; cout<<"请输入该考生的其它信息:"<<endl; p1->num=C_num; cout<<"姓 名:"; cin>>p1->name; cout<<"性 别:"; cin>>p1->sex; cout<<"年 龄:"; cin>>p1->age; cout<<"报考类别: "; cin>>p1->category; break; } } } } void Dis()//主界面 { cout<<endl<<endl<<endl; cout<<" *********欢迎进入烟台大学考生管理系统********"<<endl; cout<<" 1.创建考生信息 2.查找考生信息"<<endl; cout<<" 3.改动考生信息 4.删除考生信息"<<endl; cout<<" 5.插入考生信息 6.显示全部考生信息"<<endl; cout<<" 7.退出 8.关于"<<endl; cout<<"请输入您要选择的服务项目:"; } int main() { Dis(); int n; List s; while( cin>>n) { switch(n) { case 1: s.CreateList(); Dis(); break; case 2: s.LocateElem(); Dis(); break; case 3: s.Listchange(); Dis(); break; case 4: s.ListDelete(); Dis(); break; case 5: s.ListInsert(); Dis(); break; case 6: s.DispList(); Dis(); break; case 7: cout<<"谢谢您的使用,再见! "<<endl; return 0; break; case 8: cout<<" 版权全部 翻版必究"<<endl; cout<<" 如有雷同 纯属巧合"<<endl; cout<<"请输入您要选择的服务项目:"; break; default: cout<<"输入错误! 请又一次输入:"<<endl; break; } } return 0; } /************************************************** 101 liu f 11 wen 102 li m 12 li 103 wang m 13 li 105 guo f 14 wen 107 wen m 15 li 104 xin1 f 14 wen 106 xin2 m 16 li **************************************************/
版权声明:本文博主原创文章。博客,未经同意不得转载。
时间: 2024-10-13 11:20:46