考试报名管理
2015-12-25 16:28
323 查看
/************************************************************ *版权所有 (C)2015.Gaozhe. * *文件名称:text.cpp *文件标识:无 *内容摘要:该代码是对学生成绩管理的简单模拟 *其他说明:无 *当前版本:vc6.0 *作 者:高哲 *完成日期:2015年12月25日 * **************************************************************/ #include<iostream> #include<conio.h> #include<algorithm> #include<string> using namespace std; /*************************************************************/ struct Student //定义结构体 { long num;//准考证号 string name;//姓名 string sex;//性别 int age;//年龄 string kind;//报考类型 }; char RecSigal(); //Y或N int RecSigal(int,int); Student &operator<<(ostream &,Student &); //重载 Student &operator>>(istream &,Student &); struct Link { Student Data;//Data为Student型 Link *next;//Link的next指针 }; /***************************************************************/ typedef Link ElemType; //定义ElemType class List_Link { private: ElemType *head; //头指针 int length; //定义长度 public: List_Link(); void Interface();///主界面 void Check();///选择操作 void Input();///输入学生 void Add();///添加学生 void GetLength();///得到学生人数 void Delete();///删除学生 void Renew();///修改学生信息 void SearchStud();///查找学生 void Display();///输出所有学生信息 }; /*****************************************************************/ int main() { cout<<"\n ★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<endl; cout<<" ☆ ☆"<<endl; cout<<" ★ *********************** ★"<<endl; cout<<" ☆ * 欢迎进入学生信息管理系统!* ☆"<<endl; cout<<" ★ *********************** ★"<<endl; cout<<" ☆ ☆"<<endl; cout<<" ★☆★☆★☆★☆★☆★☆★☆★☆★☆★"<<endl; List_Link S; S.Interface(); return 0; } /******************************************************************/ List_Link::List_Link()//Link的构造函数,初始化 { head=new ElemType;//开辟一个新的ElemType的指针 length=0; //初始长度为0 head->next=NULL; //头指针指向空 } /****************************************************************** *功能描述:输入考生信息 *输入参数:考生准考证号num、姓名name、性别sex、年龄age、报考类型kind *输出参数:无 *返回值: 无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Input() { if(head->next!=NULL) { cout<<"已有学生信息,请执行添加操作!"; Interface(); } bool flag=true; char x; cin>>head->Data; cout<<"\n考生信息录入成功!\n是否继续录入考生信息?\n是请按'Y',否则按'N'\n"; x=RecSigal(); switch(x) { case 'n': case 'N': cout<<"请继续其他操作!\n"; Interface(); break; case 'y': case 'Y': head->next=NULL; length++; Interface(); break; } } /****************************************************************** *功能描述:添加考生信息 *输入参数:考生准考证号num、姓名name、性别sex、年龄age、报考类型kind *输出参数:无 *返回值: 无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Add()///添加学生 { if(length==0) { cout<<"\n还未输入考生信息,请执行最初操作:\n"; Interface(); } int i; bool flag=false; ElemType *p1,*p2,*p3; p1=head; p2=new ElemType; cin>>p2->Data; for(i=0;i<length;i++) { p3=p1->next; if((p2->Data.num>p1->Data.num)&&p1->next==NULL) { p1->next=p2; p2->next=NULL; flag=true; break; } else if((p2->Data.num)>(p1->Data.num)&&(p2->Data.num)<(p3->Data.num)) { p1->next=p2; p2->next=p3; flag=true; break; } p1=p3; } if(flag) { cout<<"\n考生信息录入成功!\n是否继续录入考生信息?\n是请按'Y',否则按'N'\n"; char x=RecSigal(); switch(x) { case 'n': case 'N': cout<<"请继续其他操作!\n"; Interface(); break; case 'y': case 'Y': length++; Interface(); break; } } } /****************************************************************** *功能描述:删除考生信息 *输入参数:要删除考生的考号num *输出参数:无 *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Delete() { if(length<1) { cout<<"\n考生信息为空!\n请重新选择操作项!\n"; Interface(); } cout<<"请输入要删除的考生的考号:"; long n; cin>>n; bool flag=false; if(head->Data.num==n)//头指针中num等于n { cout<<"\n是否确认删除该考生信息?\n是请按'Y',否则按'N'\n"; char f=RecSigal(); if(f=='n'||f=='N') { cout<<"\n未执行删除操作!\n按任意键返回主界面!\n"; char c=getch();//获得 Interface(); } else { head=head->next; flag=true; } } else { ElemType *p1,*p2;//定义两个临时指针 p1=head; int i; for(i=0;i<length;i++) { p2=p1->next; if(p2->Data.num==n) { cout<<"\n是否确认删除该考生信息?\n是请按'Y',否则按'N'\n"; char f=RecSigal(); if(f=='n'||f=='N') { cout<<"\n未执行删除操作!\n按任意键返回主界面!\n"; char c=getch(); Interface(); } else { p1->next=p2->next; delete p2; flag=true; break; } } p1=p2; } } if(flag) { length--; cout<<"\n考生信息删除成功!"; cout<<"\n按任意键返回主界面!\n"; char c=getch(); Interface(); } else { cout<<"\n未查找到此考生!\n请重新选择操作项!\n"; Interface(); } } /****************************************************************** *功能描述:修改考生信息 *输入参数:要修改考生的考号num *输出参数:考生准考证号num、姓名name、性别sex、年龄age、报考类型kind *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Renew() { if(length<1) { cout<<"\n考生信息为空!\n请重新选择操作项!\n"; Interface(); } cout<<"请输入要修改的考生的考号:"; long n; cin>>n; ElemType *p; p=head; for(int i=0;i<length;i++) { if(p->Data.num==n) { cout<<"\n考生有以下信息:"; cout<<p->Data; cout<<"\n请输入要更改的信息项(除准考证以外的信息):"; int a=RecSigal(2,5); switch(a) { case 2: { cout<<"请输入新的考生姓名:"; string t; cin>>t; p->Data.name=t; } break; case 3: { cout<<"请输入新的考生性别:"; char t; cin>>t; p->Data.sex=t; } break; case 4: { cout<<"请输入新的考生年龄:"; int t; cin>>t; p->Data.age=t; } break; case 5: { cout<<"请输入新的报考类别:"; string t; cin>>t; p->Data.kind=t; } break; } cout<<"\n修改成功!\n修改后的信息为:\n"; cout<<p->Data; cout<<"\n按任意键返回主菜单!\n"; char c=getch(); Interface(); break; } else p=p->next; } if(i>=length) { cout<<"\n未查找到此考生!\n请重新选择操作项!\n"; Interface(); } } /****************************************************************** *功能描述:查找考生信息 *输入参数:查找考生考号num *输出参数:考生准考证号num、姓名name、性别sex、年龄age、报考类型kind *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::SearchStud() { if(length<1) { cout<<"\n考生信息为空!\n请重新选择操作项!\n"; Interface(); } cout<<"请输入要查询的考生的考号:"; long n; cin>>n; ElemType *p; p=head; int i; for(i=0;i<length;i++) { if(p->Data.num==n) { cout<<"\n考生信息为: "; cout<<p->Data; cout<<"\n\n查询成功!\n按任意键返回主界面!\n"; char c=getch(); Interface(); break; } else p=p->next; } if(i>=length) { cout<<"\n未查找到此考生!\n请重新选择操作项!\n"; Interface(); } } /****************************************************************** *功能描述:输出所有考生信息 *输入参数:无 *输出参数:考生准考证号num、姓名name、性别sex、年龄age、报考类型kind *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Display() { if(length<1) { cout<<"\n考生信息为空!\n请重新选择操作项!\n"; Interface(); } ElemType *p; p=head; int i; for(i=0;i<length;i++) { cout<<"\n\n第 "<<i+1<<" 位考生信息:"; cout<<p->Data; if(p->next!=NULL) p=p->next; } if(i>0&&i==length) { cout<<"\n\n查询成功!\n按任意键返回主界面!\n"; char c=getch(); Interface(); } } /****************************************************************** *功能描述:主页面 *输入参数:无 *输出参数:无 *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Interface() { cout<<" 1.输入考生信息操作\n"; cout<<" 2.查询考生信息操作\n"; cout<<" 3.添加考生信息操作\n"; cout<<" 4.修改考生信息操作\n"; cout<<" 5.删除考生信息操作\n"; cout<<" 6.查询全部信息操作\n"; cout<<" 0.退出管理程序操作\n"; cout<<"\n请输入你的操作:"; Check(); } /****************************************************************** *功能描述:查询考生信息 *输入参数:无 *输出参数:考生准考证号num、姓名name、性别sex、年龄age、报考类型kind *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ void List_Link::Check() { int a; cin>>a; switch(a) { case 1: Input(); break; case 2: SearchStud(); break; case 3: Add(); break; case 4: Renew(); break; case 5: Delete(); break; case 6: Display(); break; case 0: cout<<"\n\t\t按任意键退出... ...\n"; exit(0); default: cout<<"输入有误,请重新输入:"; Check(); break; } } /****************************************************************** *功能描述:判断Y或N *输入参数:无 *输出参数:无 *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ int RecSigal(int a,int b) { int c; while(true) { cin>>c; if(c>=a&&c<=b)return c; else { cout<<"\n输入有误!\n请重新输入:"; continue; } } } char RecSigal()//Y或N { char f; while(true) { cin>>f; if(f=='y'||f=='Y'||f=='n'||f=='N') return f; else { cout<<"输入有误,请重新输入:"; continue; } } } /****************************************************************** *功能描述:运算重载 *输入参数:无 *输出参数:无 *返回值:无 *其它说明:消息字段之间用分号(;)分隔 *******************************************************************/ Student &operator>>(istream &input,Student &s) { cout<<"\n请输入准考证号:"; input>>s.num; cout<<"\n请输入考生姓名:"; input>>s.name; cout<<"\n请输入考生性别:"; input>>s.sex; cout<<"\n请输入考生年龄:"; input>>s.age; cout<<"\n请输入报考类别:"; input>>s.kind; return s; } Student &operator<<(ostream &output,Student &s) { output<<"\n1.准考证号:"<<s.num; output<<"\n2.考生姓名:"<<s.name; output<<"\n3.考生性别:"<<s.sex; output<<"\n4.考生年龄:"<<s.age; output<<"\n5.报考类别:"<<s.kind; return s; }
相关文章推荐
- linux实战(一)----日志的截取-----文本过滤器grep、文本流式编辑器sed、报表生成器awk的运用
- JAVA多线程之扩展ThreadPoolExecutor
- leetcode -- Range Sum Query 2D - Immutable -- 简单DP题目
- 通知与 RemoteViews
- Mac下没有make命令解决办法
- LVS+Keepalived+IIS 配置过程高可用负载均衡web服务器
- 时间解析(NSDate、NSDateFormatter、NSCalendar、NSDateComponents):
- web项目乱码问题
- 如何在安装SSL证书后强制Apache的http请求跳转到https
- PHP版本升级到7.x后wordpress的一些修改及wordpress技巧
- ORACLE学习之九 Oracle 字符集的查看和修改 (转帖) 【EXP/IMP 与 字符集|NLS】
- 最近需要总结的一些知识
- P1049送给圣诞夜的礼品(矩阵十大问题之四)
- markdown 编辑器: remarkable 安装(ubuntu)
- 【spring-security】 Property or field 'ROLE_USER' cannot be found on object of type 'org.springframewo
- android bitmap 大小获取
- postgresql
- Android内存测试常用的几个概念
- webservice soap php接口
- 利用scp自动输入密码进行文件远程拷贝或备份