码迷,mamicode.com
首页 > 其他好文 > 详细

考试报名管理

时间:2015-09-18 09:17:21      阅读:265      评论:0      收藏:0      [点我收藏+]

标签:

                                                                   考试报名管理
考试报名系统是对考试报名管理的简单模拟。用菜单选择方式完毕下列功能:输入考生信息;输出考生信息。查询考生信息。加入考生信息;改动考生信息。删除考生信息。

每条考生信息由准考证号、姓名、性别、年龄、报考类别等信息组成。
要求:定义一个专用的类型 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 **************************************************/


 


 

版权声明:本文博主原创文章。博客,未经同意不得转载。

考试报名管理

标签:

原文地址:http://www.cnblogs.com/gcczhongduan/p/4818187.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!