学生管理程序课程设计文档格式.docx
《学生管理程序课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《学生管理程序课程设计文档格式.docx(34页珍藏版)》请在冰豆网上搜索。
public:
student*next;
stringname;
//姓名
longnum;
//学号
intx,y,z;
//数学,语文,英语
intAA;
//总分
voidplay(){cout<
<
name<
"
学生的学号是"
num<
数学:
x<
语文:
y<
英语:
z<
总分:
AA<
endl;
};
student(stringsname,longsnum,intsx,intsy,intsz)
name=sname;
num=snum;
x=sx;
y=sy;
z=sz;
}
classcla
cla()//构造函数
stu=0;
sload();
~cla()//析构函数
student*p;
p=stu;
while(p)
p=p->
next;
deletestu;
stu=p;
voidsadd();
//录入
voidsremove();
//删除
voidsamend();
//修改
voidssearch();
//查询
voidstaxis();
//排序
voidsload();
//读取
//排序函数
voidpxh();
voidpAA();
private:
student*stu;
//头接点
voidcla:
:
sadd()//录入
student*q;
stringname1;
longnum1;
intx1,y1,z1;
system("
cls"
);
cout<
\n**录入的学生**\n"
请输入学生的(中间用空格间隔)"
姓名学号数学成绩语文成绩英语成绩:
cin>
>
name1>
num1>
x1>
y1>
z1;
q=newstudent(name1,num1,x1,y1,z1);
q->
next=0;
AA=x1+y1+z1;
if(stu)
student*t;
t=stu;
if(t->
num==num1)
学号已存在,请重新输入"
return;
while(t->
next)
t=t->
t->
next=q;
else
stu=q;
输入完毕"
}
3.2删除记录
sremove()//删除
{
intnum1;
\n**删除学生信息**\n"
;
请输入想要删除学生的学号:
num1;
//查找要删除的结点
student*p1,*p2;
p1=stu;
while(p1)
if(p1->
num==num1)
break;
else
p2=p1;
p1=p1->
//删除结点
if(p1!
=NULL)//若找到结点,则删除
p1->
play();
确定删除吗?
[Y/N]"
charc;
c;
if(toupper(c)!
='
Y'
)return;
if(p1==stu)//若要删除的结点是第一个结点
stu=p1->
deletep1;
else//若要删除的结点是后续结点
p2->
next=p1->
找到学号为"
num1<
的学生,并删除\n"
else//未找到结点
未找到想要删除的学生!
\n"
3.3修改记录
samend()//修改
\n**修改学生信息**\n"
输入要修改学生的学号"
//查找要修改的结点
while(p1)
=NULL)
学号是"
的学生的信息"
姓名"
数学"
语文"
英语"
请输入修改后的信息:
姓名数学成绩语文成绩英语成绩"
name>
x>
y>
z;
AA=p1->
x+p1->
y+p1->
修改成功"
else//未找到接点
未找到!
3.4查询记录
voidcla:
ssearch()//查询
\n**查询学生信息**\n"
请输入查询方式:
1.按学号查询"
2.按姓名查询"
3.返回"
cin>
switch(c)
case'
1'
要查询的学号"
//查找要查询的结点
姓名:
数学:
语文:
英语:
查询完毕..."
2'
要查询的学生姓名"
name1;
name==name1)
name1<
学号:
3'
return;
3.5对记录进行排序
pxh()//按学号排序
intn;
n=1;
while(p1->
{n++;
p1=p1->
}
共有"
n<
条信息..."
inti;
for(i=1;
i<
n;
i++)
if(p1->
num>
next->
num)//如果头结点大于第二个的
p2=p1->
next=p1;
//头结点交换
stu=p2;
next)//中间的交换
num)
p1=p2->
//交换
do
}while(p1);
pAA()//按总分排序
{p1=stu;
AA>
AA)//如果头结点大于第二个的
{p2=p1->
{p2=p1;
AA)
{p1->
staxis()//排序
请选择以何种方式排序:
1……以学号排序"
2……以总分排序"
3……返回"
请选择(1-3)"
pxh();
break;
pAA();
4、调试分析
在设计过程中主要遇到下列问题:
(1)、析构函数的构建。
通过查阅《c++高级语言程序设计》一书得到解决.
(2)、成员原函数的调用。
通过查阅《c++高级语言程序设计》一书得到解决。
(3)、指针的运用。
通过查阅《c语言程序》一书得到解决。
5、测试结果
下面是我的测试函数及运行结果:
#include<
iostream>
iomanip>
fstream>
string>
usingnamespacestd;
#definemax100;
floatave;
//平均分
平均分:
ave<
//读取
voidqave();
ave=(x1+y1+z1)/3;
sremove()//删除
//查找要删除的结点
//删除结点
=NULL)//若找到结点,则删除
if(p1==stu)//若要删除的结点是第一个结点
else//若要删除的结点是后续结点
else//未找到结点
总分:
fo