您的位置:首页 > 其它

考试报名管理

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: