考试报名管理

来源:互联网 发布:ubuntu启动盘修复 grub 编辑:程序博客网 时间:2024/04/28 06:25

                                                                   考试报名管理
考试报名系统是对考试报名管理的简单模拟,用菜单选择方式完成下列功能:输入考生信息;输出考生信息;查询考生信息;添加考生信息;修改考生信息;删除考生信息。每条考生信息由准考证号、姓名、性别、年龄、报考类别等信息组成。
要求:定义一个专用的类型 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;elsep2->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;elsep2->next=p1->next;cout<<"           ****学号为"<<num<<"的考生信息已删除!****"<<endl;n=n-1;}elsecout<<"                 ****找不到该考生信息!****"<<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;elsep2->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 li102 xueyingying  m 20 wen104 mahuiying    m 20 wen106 maruihan     f 19 li108 sunmengyao   m 18 li  105 sunsm f 23 wen106 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 wen102 li m 12 li103 wang m 13 li105 guo f 14 wen107 wen m 15 li104 xin1 f 14 wen106 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 wen102 li m 12 li103 wang m 13 li105 guo f 14 wen107 wen m 15 li104 xin1 f 14 wen106 xin2 m 16 li**************************************************/


 


 

0 0