大学c语言考试求助!~
# include & ltiostream & gt
# include & ltiomanip & gt
# include & ltfstream & gt
# include & lt字符串& gt
使用命名空间std
#定义max 100;
班级学生
{
公共:
学生*下一个;
公共:
字符串名称;//名称
长num//学生编号
int x,y,z;//数学、语文、英语
int AA//总分
void play(){ cout & lt;& lt名称& lt& lt“学号是”
student(string sname,long snum,int sx,int sy,int sz)
{
name = sname
num = snum
x = sx
y = sy
z = sz
}
};
类别cla
{
公共:
Cla()//构造函数
{
stu = 0;
sload();
}
~cla()//析构函数
{
学生* p;
p = stu
while(p)
{
p = p-& gt;接下来;
删除stu
stu = p;
}
stu = 0;
}
void sadd();//添加
void s remove();//删除
void samend();//修改
void s search();//查询
void stat xis();//排序
void ssave();//保存
void sload();//读取
//排序功能
void pxh();
void psx();
void pyw();
void pyy();
void pAA();
私人:
学生* stu//头部接触
};
Voidcla:: sad ()//Add
{
学生* q;
字符串名称1;
long num 1;
int x1,y1,z 1;
系统(“cls”);
cout & lt& lt" \n **附加学生* * \ n " & lt& ltendl
cout & lt& lt“请输入学生(用空格分隔)”< & ltendl
cout & lt& lt姓名、学号、数学成绩、语文成绩和英语成绩:“< & ltendl
CIN & gt;& gtname 1 & gt;& gtnum 1 & gt;& gtx 1 & gt;& gty 1 & gt;& gtz 1;
q =新生(name1,num1,x1,y1,z 1);
q->;next = 0;
q->;AA = x 1+y 1+z 1;
如果(斯图)
{
学生* t;
t = stu
if(t->;num==num1)
{
cout & lt& lt学号已经存在,请重新输入
返回;
}
while(t->;下一个)
{
if(t->;num==num1)
{
cout & lt& lt学号已经存在,请重新输入
返回;
}
t = t-& gt;接下来;
}
t->;next = q;
}
其他
{
stu = q;
}
cout & lt& lt"输入完成"
}
Void cla::sremove()// delete
{
系统(“cls”);
int num 1;
cout & lt& lt”\n**删除学生信息* * \ n”;
cout & lt& lt"请输入您要删除的学生的学号:";
CIN & gt;& gtnum 1;
//找到要删除的节点。
学生*p1,* p2
p 1 = stu;
while(p1)
{
if(p 1->;num==num1)
打破;
其他
{
p2 = p 1;
p 1 = p 1->;接下来;
}
}
//删除节点
if(p1!=NULL)//如果找到一个节点,就删除它。
{
p 1->;play();
cout & lt& lt“您确定要删除它吗?[是/否]" & lt;& ltendl
char c;CIN & gt;& gtc;
if(toupper(c)!='Y ')返回;
If(p1==stu) //要删除的节点是第一个节点。
{
stu = p 1->;接下来;
删除p 1;
}
Else //要删除的节点是后续节点。
{
p2->;next = p 1->;接下来;
删除p 1;
}
cout & lt& lt"发现学生编号为"
}
Else //找不到节点
cout & lt& lt“没有找到您要删除的学生!\ n ";
}
Void cla::samend()//修改
{
系统(“cls”);
long num 1;
cout & lt& lt”\n**修改学生信息* * \ n”;
cout & lt& lt”输入要修改的学号”;
CIN & gt;& gtnum 1;
//找到要修改的节点。
学生*p1,* p2
p 1 = stu;
while(p1)
{
if(p 1->;num==num1)
打破;
其他
{
p2 = p 1;
p 1 = p 1->;接下来;
}
}
if(p1!=空)
{
cout & lt& lt“学号是”
cout & lt& lt"名称"
cout & lt& lt“请输入修改后的信息:姓名、数学成绩、语文成绩和英语成绩”< & ltendl
CIN & gt;& gtp 1->;名称& gt& gtp 1->;x & gt& gtp 1->;y & gt& gtp 1->;z;
p 1->;AA = p 1->;x+p 1->;y+p 1->;z;
cout & lt& lt"修改成功"
}
Else //找不到联系人。
cout & lt& lt“没找到!\ n ";
}
Void cla::ssearch()//查询
{
系统(“cls”);
cout & lt& lt" \n**查询学生信息* * \ n " & lt& ltendl
cout & lt& lt"请输入查询方法:"
cout & lt& lt"1.按学号查询"
cout & lt& lt"2.按名称查询"
cout & lt& lt"3.返回"
char c;CIN & gt;& gtc;
开关(c)
{
案例“1”:
{
long num 1;
cout & lt& lt"要查询的学生证"
CIN & gt;& gtnum 1;
//找到要查询的节点。
学生*p1,* p2
p 1 = stu;
while(p1)
{
if(p 1->;num==num1)
打破;
其他
{
p2 = p 1;
p 1 = p 1->;接下来;
}
}
if(p1!=空)
{
cout & lt& lt“学号是”
cout & lt& lt"名称:"
cout & lt& lt"查询完成...";
}
Else //找不到联系人。
cout & lt& lt“没找到!\ n ";
打破;
}
案例“2”:
{
字符串名称1;
cout & lt& lt"要查询的学生姓名"
CIN & gt;& gtname 1;
//找到要查询的节点。
学生*p1,* p2
p 1 = stu;
while(p1)
{
if(p 1->;name==name1)
打破;
其他
{
p2 = p 1;
p 1 = p 1->;接下来;
}
}
if(p1!=空)
{
cout & lt& ltname 1 & lt;& lt"学生信息" < & ltendl
cout & lt& lt"学生编号:"
cout & lt& lt"查询完成...";
}
Else //找不到联系人。
cout & lt& lt“没找到!\ n ";
打破;
}
案例“3”:返回;
}
}
Void cla::pxh() //按学号排序。
{
学生*p1,* p2
int n;
p 1 = stu;
n = 1;
while(p 1->;下一个)
{ n++;p 1 = p 1->;接下来;}
cout & lt& lt“* * *是的”
int I;
p 1 = stu;
for(I = 1;我& ltn;i++)
{
p 1 = stu;
if(p 1->;num & gtp 1->;下一个-& gt;Num) //如果头节点大于第二个。
{
p2 = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;next = p 1;//头节点交换
stu = p2
}
p 1 = stu;
while(p 1->;下一个-& gt;下一步)//中间交换
{
p2 = p 1;
p 1 = p 1->;接下来;
if(p 1->;num & gtp 1->;下一个-& gt;数字)
{
p2->;next = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;下一个-& gt;next = p 1;
p1=p2->接下来;//交换
}
}
}
p 1 = stu;
做
{
p 1->;play();
p 1 = p 1->;接下来;
} while(p 1);
}
Void cla::psx()//按数学成绩排序。
{
学生*p1,* p2
int n;
p 1 = stu;
n = 1;
while(p 1->;下一个)
{ n++;p 1 = p 1->;接下来;}
cout & lt& lt“* * *是的”
int I;
p 1 = stu;
for(I = 1;我& ltn;i++)
{ p 1 = stu;
if(p 1->;x & gtp 1->;下一个-& gt;X) //如果头节点大于第二个。
{ p2 = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;next = p 1;//头节点交换
stu = p2
}
p 1 = stu;
while(p 1->;下一个-& gt;下一步)//中间交换
{ p2 = p 1;
p 1 = p 1->;接下来;
if(p 1->;x & gtp 1->;下一个-& gt;x)
{
p2->;next = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;下一个-& gt;next = p 1;
p1=p2->接下来;//交换
}
}
}
p 1 = stu;
做
{ p 1->;play();
p 1 = p 1->;接下来;
} while(p 1);
}
Void cla::pyw()//按中文分数排序。
{
学生*p1,* p2
int n;
p 1 = stu;
n = 1;
while(p 1->;下一个)
{ n++;p 1 = p 1->;接下来;}
cout & lt& lt“* * *是的”
int I;
p 1 = stu;
for(I = 1;我& ltn;i++)
{ p 1 = stu;
if(p 1->;y & gtp 1->;下一个-& gt;Y) //如果首节点大于第二个节点的
{ p2 = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;next = p 1;//头节点交换
stu = p2
}
p 1 = stu;
while(p 1->;下一个-& gt;下一步)//中间交换
{ p2 = p 1;
p 1 = p 1->;接下来;
if(p 1->;y & gtp 1->;下一个-& gt;y)
{
p2->;next = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;下一个-& gt;next = p 1;
p1=p2->接下来;//交换
}
}
}
p 1 = stu;
做
{ p 1->;play();
p 1 = p 1->;接下来;
} while(p 1);
}
Void cla::pyy()//按英语成绩排序。
{
学生*p1,* p2
int n;
p 1 = stu;
n = 1;
while(p 1->;下一个)
{ n++;p 1 = p 1->;接下来;}
cout & lt& lt“* * *是的”
int I;
p 1 = stu;
for(I = 1;我& ltn;i++)
{ p 1 = stu;
if(p 1->;z & gtp 1->;下一个-& gt;Z) //如果头节点大于第二个。
{ p2 = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;next = p 1;//头节点交换
stu = p2
}
p 1 = stu;
while(p 1->;下一个-& gt;下一步)//中间交换
{ p2 = p 1;
p 1 = p 1->;接下来;
if(p 1->;z & gtp 1->;下一个-& gt;z)
{
p2->;next = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;下一个-& gt;next = p 1;
p1=p2->接下来;//交换
}
}
}
p 1 = stu;
做
{ p 1->;play();
p 1 = p 1->;接下来;
} while(p 1);
}
Void cla::pAA()//按总分排序。
{
学生*p1,* p2
int n;
p 1 = stu;
n = 1;
while(p 1->;下一个)
{ n++;p 1 = p 1->;接下来;}
cout & lt& lt“* * *是的”
int I;
p 1 = stu;
for(I = 1;我& ltn;i++)
{ p 1 = stu;
if(p 1->;AA & gtp 1->;下一个-& gt;AA) //如果首节点大于第二个节点的
{ p2 = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;next = p 1;//头节点交换
stu = p2
}
p 1 = stu;
while(p 1->;下一个-& gt;下一步)//中间交换
{ p2 = p 1;
p 1 = p 1->;接下来;
if(p 1->;AA & gtp 1->;下一个-& gt;AA)
{
p2->;next = p 1->;接下来;
p 1->;next = p 1->;下一个-& gt;接下来;
p2->;下一个-& gt;next = p 1;
p1=p2->接下来;//交换
}
}
}
p 1 = stu;
做
{ p 1->;play();
p 1 = p 1->;接下来;
} while(p 1);
}
void cla::s taxi()//排序
{
系统(“cls”);
char c;
cout & lt& lt"请选择排序方式:"
cout & lt& lt"1 ...按学号排序"
cout & lt& lt"2 ...按数学成绩排序"
cout & lt& lt"3 ...按语文成绩排名”< & ltendl
cout & lt& lt"4 ...按英语成绩排名”< & ltendl
cout & lt& lt"5 ...按总分排序"
cout & lt& lt"6 ...返回"
cout & lt& lt"请选择(1-6)"
CIN & gt;& gtc;
开关(c)
{
case ' 1 ':pxh();打破;
案例“2”:psx();打破;
案例“3”:pyw();打破;
事例“4”:pyy();打破;
案例“5”:pAA();打破;
情况“6”:返回;
}
}
Void cla::ssave() //保存到文件。
{
系统(“cls”);
char c;
cout & lt& lt" \ n保存学生信息(这将覆盖原始文件)。你想继续吗?[是/否]:";CIN & gt;& gtc;
if(toupper(c)!='Y ')返回;
ofstream tfile("date.txt ",IOs _ base::binary);
学生* p = stu
While(p)//写入文件
{
tfile & lt& ltp->;名称& lt& lt" \ t " & lt& ltp->;num & lt& lt" \ t " & lt& ltp->;x & lt& lt" \ t " & lt& ltp->;y & lt& lt" \ t " & lt& ltp->;z;
tfile & lt& ltendl
p = p-& gt;接下来;
}
tfile . close();
cout & lt& lt“保存了……”
}
Void cla::sload() // read
{
学生* p;
p = stu
while(p)
{
stu = p-& gt;接下来;
删除p;
p = stu
}
ifstream tfile("date.txt ",IOs _ base::binary);
字符串名称1;
long num 1;
int x1,y1,z 1;
tfile & gt& gtname 1 & gt;& gtnum 1 & gt;& gtx 1 & gt;& gty 1 & gt;& gtz 1;
while(tfile.good())
{
//创建学生联系人
学生的;
s = stu
s =新生(name1,num1,x1,y1,z 1);
s-& gt;next = 0;
s-& gt;AA = x 1+y 1+z 1;
If(stu) //如果一个节点已经存在
{
学生* p2
p2 = stu
而(p2->下一步)//找到尾节点
{
p2 = p2-& gt;接下来;
}
p2->;next = s;//连接
}
否则//如果没有节点(空表)
{
stu = s;//连接
}
tfile & gt& gtname 1 & gt;& gtnum 1 & gt;& gtx 1 & gt;& gty 1 & gt;& gtz 1;
}
tfile . close();
cout & lt& lt" \ n已加载学生信息...\ n ";
}
void main()
{
char c;
cla a;
做
{
cout & lt& lt”\n学生成绩管理系统\ n”;
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;
cout & lt& lt“作者:软件工程06110119:zgjxwl \ n”;
cout & lt& lt"1 ...增加学生\ n ";
cout & lt& lt"2 ...删除学生\ n ";
cout & lt& lt"3 ...修改学生\ n ";
cout & lt& lt"4 ...查询学生信息\ n ";
cout & lt& lt"5 ...排序\ n ";
cout & lt& lt"6 ...保存信息\ n ";
cout & lt& lt"7 ...读取信息\ n ";
cout & lt& lt"8 ...退出\ n ";
cout & lt& lt“* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”;
cout & lt& lt请选择(1-8):;
CIN & gt;& gtc;
开关(c)
{
case ' 1 ':a . sadd();打破;
案例“2”:a . s remove();打破;
案例“3”:a . samend();打破;
案例“4”:a . s search();打破;
案例“5”:a . stat xis();打破;
案例“6”:a . ssave();打破;
案例“7”:a . sload();打破;
}
}while(c!='8');
}