大学c语言考试求助!~

给一个学生成绩的管理,在VC上运行过,不了解TC。自己试试,可能会有很多问题。这是C++版本,你要改成C版本,而且改了之后可能不太可行,主要是TC对标准支持不好,不利于调试...还是别用TC了。

# 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');

}