学生考试成绩管理系统.docx
《学生考试成绩管理系统.docx》由会员分享,可在线阅读,更多相关《学生考试成绩管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
学生考试成绩管理系统
学生考试成绩管理系统
一、课程设计内容:
学生考试成绩管理系统具体要求:
对某专业多个班级的学生的多门功课的成绩进行管理,要求实现以下功能:
1.输入学生成绩
2.修改学生成绩
3.删除学生成绩
4.计算每位学生总分
5。
计算每位学生的平均分
6。
按学号或姓名查询学生成绩
7.按班级查询学生成绩
8.成绩排序
9.按班级统计学科总分,平均分
0、退出
#include#include〈iomanip〉#include#include{
public:
student*next;public:
stringname;//姓名
longnum;//学号
intx,y,z;//数学,语文,英语intAA;//总分
voidplay(){cout<"<”<〈y<〈",英
语:
"<〈z<〈”,总分:
"<〈AA<〈endl;};
student(stringsname,longsnum,intsx,intsy,intsz)
{
name=sname;num=snum;x=sx;
y=sy;
z=sz;
}
};
classcla{
public:
cla()//构造函数
{
stu=0;
sload();
}
~cla()//析构函数
{
student*p;p=stu;
while(p)
{
p=p—〉next;deletestu;stu=p;
}
stu=0;
}
voidsadd();//添加
voidsremove();//删除voidsamend();//修改
voidssearch();//查询
voidstaxis();//排序
voidssave();//保存
voidsload();//读取
//排序函数
voidpxh();voidpsx();voidpyw();voidpyy();voidpAA();private:
student*stu;//头接点};
voidcla:
:
sadd()//添加{
student*q;stringname1;longnum1;intx1,y1,z1;
system("cls”);
cout<<”\n**增加的学生**\n”<〈endl;cout〈〈"请输入学生的(中间用空格间隔)”<"<〈endl;
cin>〉name1>>num1〉>x1〉>y1>>z1;
q=newstudent(name1,num1,x1,y1,z1);
q-〉next=0;
q—>AA=x1+y1+z1;
if(stu)
{
student*t;
t=stu;
if(t—〉num==num1)
{
cout〈<”学号已存在,请重新输入"<〈endl;return;
}
while(t—>next)
{
if(t—>num==num1)
{
cout〈<”学号已存在,请重新输入”<〈endl;return;
}
t=t-〉next;
}
t-〉next=q;
}
else
{
stu=q;
}
cout〈<"输入完毕”〈〈endl;}
voidcla:
:
sremove()//删除
{
system("cls");intnum1;
cout〈<”\n**删除学生信息**\n”;
cout〈〈”请输入想要删除学生的学号:
";cin>>num1;
//查找要删除的结点
student*p1,*p2;p1=stu;
while(p1)
{
if(p1—〉num==num1)break;
else
{
p2=p1;
p1=p1—〉next;}
}
//删除结点
if(p1!
=NULL)//若找到结点,则删除{
p1->play();
cout<〈"确定删除吗?
[Y/N]"<charc;cin〉>c;
if(toupper(c)!
=’Y’)return;
if(p1==stu)//若要删除的结点是第一个结点{
stu=p1->next;
deletep1;
}
else//若要删除的结点是后续结点
{
p2—>next=p1->next;deletep1;
}
cout〈〈”找到学号为"<〈num1<〈"的学生,并删除\n";
}
else//未找到结点
cout〈〈”未找到想要删除的学生!
\n";}
voidcla:
:
samend()//修改
{
system("cls");
longnum1;
cout<<"\n**修改学生信息**\n”;
cout<<”输入要修改学生的学号";
cin〉>num1;
//查找要修改的结点
student*p1,*p2;
p1=stu;
while(p1)
{
if(p1—>num==num1)
break;
else
{
p2=p1;
p1=p1—〉next;
}
}
if(p1!
=NULL)
{
cout〈〈”学号是"<〈num1〈〈”的学生的信息”〈〈endl;cout<〈"姓名”<name<<"数学"〈x<<"语文"〈y〈<”英语”<〈p1—〉z<cout<<"请输入修改后的信息:
姓名数学成绩语文成绩英语成绩"〈cin〉>p1-〉name〉>p1-〉x〉〉p1->y〉>p1-〉z;
p1—>AA=p1-〉x+p1—>y+p1—>z;cout<〈"修改成功"〈〈endl;
}
else//未找到接点
cout〈〈”未找到!
\n";
}
voidcla:
:
ssearch()//查询
{
system("cls”);cout〈<”\n**查询学生信息**\n”<cout<〈"请输入查询方式:
"<〈endl;cout<〈”1.按学号查询"<〈endl;cout〈<"2。
按姓名查询"〈〈endl;
”<charc;cin>〉c;switch(c)
{
case'1’:
{
longnum1;
cout<〈"要查询的学号”〈〈endl;cin〉>num1;
//查找要查询的结点
student*p1,*p2;p1=stu;
while(p1)
{
if(p1-〉num==num1)break;
else
{
p2=p1;
p1=p1-〉next;
}
}
if(p1!
=NULL)
{
cout〈<”学号是"〈cout<〈”姓名:
”<name〈<”数学:
"〈"〈”〈cout<<”查询完毕..。
”;
}
else//未找到接点
cout<〈"未找到!
\n";
break;
}
case'2’:
{
stringname1;cout〈<”要查询的学生姓名”〈〈endl;cin>〉name1;
//查找要查询的结点
student*p1,*p2;p1=stu;
while(p1)
{
if(p1—〉name==name1)break;
else
{
p2=p1;
p1=p1->next;
}
}
if(p1!
=NULL)
{
cout〈”〈"〈x〈〈"语文:
"<y〈<"英语:
”〈〈p1-〉z<〈endl;
cout〈<"查询完毕...";
}
else//未找到接点
cout<<"未找到!
\n";
break;
}
case'3':
return;}
}
voidcla:
:
pxh()//按学号排序
{
student*p1,*p2;
intn;
p1=stu;
n=1;
while(p1—〉next)
{n++;p1=p1—〉next;}cout<<”共有"〈〈n〈<”条信息。
。
。
”<p1=stu;
for(i=1;i{
p1=stu;
if(p1—>num〉p1-〉next—>num)//如果头结点大于第二个的
{
p2=p1-〉next;
p1—>next=p1—>next—>next;
p2—>next=p1;//头结点交换
stu=p2;
}
p1=stu;
while(p1->next-〉next)//中间的交换{
p2=p1;
p1=p1—〉next;
if(p1—>num〉p1—〉next—〉num)
{
p2->next=p1->next;p1->next=p1->next—〉next;
p2->next—>next=p1;p1=p2—〉next;//交换
}
}
}
p1=stu;
do
{
p1—〉play();
p1=p1-〉next;
}while(p1);
}
voidcla:
:
psx()//按数学成绩排序
{
student*p1,*p2;
intn;
p1=stu;
n=1;
while(p1—〉next)
{n++;p1=p1-〉next;}cout<〈"共有”<”<〈endl;inti;
p1=stu;
for(i=1;i{p1=stu;
if(p1—>x>p1—>next->x)//如果头结点大于第二个的{p2=p1—〉next;
p1-〉next=p1—>next—>next;p2—>next=p1;//头结点交换
stu=p2;
}
p1=stu;
while(p1-〉next->next)//中间的交换
{p2=p1;
p1=p1—>next;
if(p1-〉x>p1->next->x){
p2->next=p1->next;p1—〉next=p1—〉next->next;p2->next—〉next=p1;p1=p2-〉next;//交换
}
}
}
p1=stu;
do
{p1—〉play();p1=p1—〉next;
}while(p1);
}
voidcla:
:
pyw()//按语文成绩排序{
student*p1,*p2;intn;
p1=stu;
n=1;
while(p1—>next){n++;p1=p1—>next;}
cout<〈"共有”<〈n〈〈”条信息。
.。
”〈〈endl;
inti;
p1=stu;
for(i=1;i〈n;i++){p1=stu;
if(p1->y>p1—〉next—>y)//如果头结点大于第二个的
{p2=p1->next;p1—>next=p1—>next->next;
p2—>next=p1;//头结点交换
stu=p2;
}
p1=stu;
while(p1—>next-〉next)//中间的交换{p2=p1;
p1=p1—〉next;
if(p1->y>p1—>next—>y){
p2—〉next=p1—>next;p1->next=p1—>next—〉next;
p2->next—〉next=p1;p1=p2-〉next;//交换
}
}
}
p1=stu;
do
{p1->play();
p1=p1-〉next;
}while(p1);
}
voidcla:
:
pyy()//按英语成绩排序
{
student*p1,*p2;intn;
p1=stu;
n=1;
while(p1->next){n++;p1=p1—〉next;}cout〈〈"共有”〈〈n〈<"条信息。
.。
”〈inti;
p1=stu;
for(i=1;i〈n;i++){p1=stu;
if(p1—〉z〉p1—〉next—〉z)//如果头结点大于第二个的{p2=p1—〉next;
p1->next=p1—>next—〉next;
p2-〉next=p1;//头结点交换
stu=p2;
}
p1=stu;
while(p1—>next-〉next)//中间的交换{p2=p1;
p1=p1—〉next;
if(p1—〉z>p1->next->z){
p2-〉next=p1->next;p1—〉next=p1—>next-〉next;
p2—>next—〉next=p1;p1=p2-〉next;//交换
}
}
}
p1=stu;
do
{p1—〉play();
p1=p1-〉next;
}while(p1);
}
voidcla:
:
pAA()//按总分排序
{
student*p1,*p2;
intn;
p1=stu;
n=1;
while(p1-〉next)
{n++;p1=p1-〉next;}cout<〈”共有"〈〈n<〈”条信息.。
。
"〈〈endl;inti;
p1=stu;
for(i=1;i{p1=stu;
if(p1—>AA〉p1->next—〉AA)//如果头结点大于第二个的{p2=p1—〉next;
p1-〉next=p1—>next-〉next;p2—>next=p1;//头结点交换
stu=p2;
}
p1=stu;
while(p1—〉next-〉next)//中间的交换
{p2=p1;
p1=p1—>next;
if(p1—>AA〉p1->next—>AA){
p2->next=p1—〉next;p1—〉next=p1-〉next—>next;p2-〉next->next=p1;p1=p2—>next;//交换
}
}
}
p1=stu;
do
{p1—>play();
p1=p1-〉next;
}while(p1);
}
voidcla:
:
staxis()//排序
{
system("cls");
charc;
cout〈<”请选择以何种方式排序:
”〈〈endl;cout〈〈”1……以学号排序"<cout〈<"请选择(1-6)"〈switch(c)
{
case’1’:
pxh();break;case'2’:
psx();break;case’3’:
pyw();break;case'4’:
pyy();break;case'5’:
pAA();break;case'6':
return;
}
}
voidcla:
:
ssave()//保存到文件
{
system("cls”);
charc;
cout〈〈”\n保存学生信息(将覆盖原文件),是否继续?
[Y/N]:
";cin>>c;
if(toupper(c)!
=’Y')return;
ofstreamtfile(”date.txt”,ios_base:
:
binary);
student*p=stu;while(p)//写入文件
{
tfile〈〈p-〉name〈〈"\t"<y<<"\t"〈〈p—〉z;
tfile<p=p-〉next;
}
tfile.close();
cout<〈"保存完毕。
。
.”<voidcla:
:
sload()//读取
{
student*p;
p=stu;
while(p)
{
stu=p->next;
deletep;
p=stu;
}
ifstreamtfile(”date.txt”,ios_base:
:
binary);
stringname1;longnum1;
intx1,y1,z1;tfile>>name1〉〉num1>>x1〉>y1〉〉z1;
while(tfile。
good())
{
//创建学生接点
student*s;
s=stu;
s=newstudent(name1,num1,x1,y1,z1);
s-〉next=0;
s-〉AA=x1+y1+z1;if(stu)//若已经存在结点
{
student*p2;p2=stu;
while(p2—>next)//查找尾结点{
p2=p2->next;}
p2—>next=s;//连接
}
else//若不存在结点(表空)
{
stu=s;//连接
}
tfile>>name1>〉num1>>x1〉>y1>〉z1;
}
tfile.close();
cout<<”\n学生信息已经装入。
..\n”;
}
voidmain()
{
charc;
claa;
do
{
cout<〈"\n学生成绩管理系统\n”;cout<〈”**************************************\n”;
cout〈〈"作者:
软件工程06110119:
zgjxwl\n”;
cout<〈"1……增加学生\n";
cout<〈"2……删除学生\n”;
cout〈<”3……修改学生\n”;
cout〈〈"4……查询学生信息\n";cout<<”5……排序\n";
cout〈〈"6……保存信息\n";
cout<〈"7……读取信息\n";
cout<<”8……退出\n”;
cout〈<"**************************************\n”;
cout<<"请选择(1-8):
”;
cin〉>c;
switch(c)
{
case’1':
a.sadd();break;case'2':
a。
sremove();break;case'3':
a。
samend();break;case'4’:
a。
ssearch();break;case'5':
a。
staxis();break;case'6’:
a。
ssave();break;case'7':
a.sload();break;}
}while(c!
='8’);
}