数据结构课程设计Word下载.docx
- 文档编号:21290934
- 上传时间:2023-01-29
- 格式:DOCX
- 页数:41
- 大小:198.42KB
数据结构课程设计Word下载.docx
《数据结构课程设计Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计Word下载.docx(41页珍藏版)》请在冰豆网上搜索。
⒋信息的报表打印,包括学生的基本信息的报表打印、考试成绩的报表打印。
1.2.2性能需求
1.写出系统需求分析,并建模。
2.编程实现,界面友好。
3.输出操作前后的结果
2总体设计
2.1系统介绍
1.学生信息管理系统主要涉及到查询等各的功能,需要通过磁盘读写数据,虽然本系统仅实现了简单的功能,但也需要按照系统整体性来设计。
程序可以查询、修改、增添、删除学生信息,并将之保存在磁盘文件中,信息数据不易丢失;
2.为了提高系统的稳定性和可重用性,程序采用子函数调用的形式完成各项功能,并用单向动态链表存储从磁盘文件读取到的信息;
3.屏幕设计:
屏幕作为信息的显示,通过输出格式的控制,界面更简洁、合理!
3代码设计
3.1程序运行结果截图
登陆界面:
主界面:
文件读入学生信息:
添加学生信息:
(链表尾插法)
删除已有学生信息:
按学号查询:
修改学生信息:
已有学生信息排序:
(总分升序排序)
(学号升序排序)
程序的退出:
(提示是否保存文件)
3.2程序源代码
1.头文件
#defineMAX_NUM10
#include<
String>
fstream>
usingnamespacestd;
boolquit=false;
structStuNode{
intnum;
intmath,eng,yuwen;
intsum;
StuNode*nextstu;
};
classSInfo{
StuNode*StuListHead;
public:
SInfo();
//构造函数
~SInfo();
//析构函数
voidCreatSinfo();
//创建学生信息
voidStuInsert(intsnum,intsmath,intseng,intsyuwen);
//插入学生信息
voidStuDelete(intsnum);
//删除学生信息
StuNode*StuFind(intsnum);
//查找学生信息,传入参数学号
voidStuModify(intsnum,intsmath,intseng,intsyuwen);
//修改学生信息
voidStuCopy(StuNode*ptemp,StuNode*p);
//学生信息拷贝
voidStuSort(charch);
voidStuClassfy();
//分类合计
voidStuRead();
//从文件读入学生信息
voidStuSave();
//保存学生信息到文件
intIsRead();
voidStuQuit();
voidShowInfo();
//遍历输出学生信息
intSystemdoor()
{
stringusername="
zyq"
password="
password"
;
stringname,temp;
intnumber=3;
while
(1)
{
cout<
<
"
用户名:
"
cin>
>
name;
密码:
temp;
if(name!
=username||temp!
=password)
{
number--;
if(number>
0)
{
cout<
用户名/密码错误!
你还有"
<
number<
次机会"
endl;
}
else
用户名/密码错误!
endl,exit(0);
}
else
cout<
********************密码正确********************"
endl<
endl;
return1;
}
}
voidShowMenu()
cout<
********************************************"
******学生信息系统******"
******0.安全退出系统******"
******1.文件读入学生信息******"
******2.录入新的学生信息******"
******3.添加新的学生信息******"
******4.删除已有学生信息******"
******5.查找已有学生信息******"
******6.修改已有学生信息******"
******7.已有学生信息排序******"
******8.分类合计学生信息******"
******9.输出所有学生信息******"
******10.保存现有学生信息******"
\n\t\n\t\t请选择:
SInfo:
:
SInfo()//构造函数
StuListHead=newStuNode;
StuListHead->
nextstu=NULL;
~SInfo()//析构函数
StuNode*p;
while(StuListHead)
p=StuListHead;
StuListHead=StuListHead->
nextstu;
deletep;
StuListHead=NULL;
voidSInfo:
CreatSinfo()//创建学生信息表
intn;
StuNode*p,*s;
p=StuListHead;
请输入学生人数:
cin>
n;
for(inti=1;
i<
=n;
i++)
s=newStuNode;
s->
num>
math>
s->
eng>
yuwen;
s->
sum=s->
math+s->
eng+s->
nextstu=p->
p->
nextstu=s;
p=p->
if(p==NULL)//判断学生信息表是否创建成功
创建失败请重新创建!
CreatSinfo();
ShowInfo()//遍历输出
学号"
'
\t'
数学"
英语"
语文"
总分"
for(p=StuListHead->
p!
=NULL;
p=p->
nextstu)
p->
num<
math<
eng<
yuwen<
sum<
StuInsert(intsnum,intsmath,intseng,intsyuwen)//插入学生信息(头插法)
StuNode*s,*p;
s=newStuNode;
num=snum;
math=smath;
eng=seng;
yuwen=syuwen;
StuDelete(intsnum)
StuNode*p,*ptemp;
ptemp=p;
while(p->
nextstu&
&
num!
=snum)//循环终止条件为p->
nextstu不为空而且没有找到相应学号的学生
ptemp=p;
if(p->
num==snum)
ptemp->
else
未找到该学生信息!
StuNode*SInfo:
StuFind(intsnum)
p=StuListHead->
num!
=snum)//循环终止条件为p->
returnp;
returnNULL;
StuModify(intsnum,intsmath,intseng,intsyuwen)
StuNode*ItemStu=StuFind(snum);
//直接调用查找函数
if(ItemStu!
=NULL)
ItemStu->
sum=ItemStu->
math+ItemStu->
eng+ItemStu->
StuCopy(StuNode*ptemp,StuNode*p)//拷贝学生信息(将p的信息拷贝到ptemp中)
if(p==NULL)
拷贝目标为空!
num=p->
num;
math=p->
math;
eng=p->
eng;
yuwen=p->
sum=p->
sum;
//ptemp->
//只是信息拷贝,next不能拷贝否则信息丢失
StuSort(charch)//根据总分排序
if(ch=='
'
)
for(StuNode*p=StuListHead->
for(StuNode*q=StuListHead->
q!
q=q->
if(p->
sum>
q->
sum)
{
StuNode*ptemp=newStuNode;
StuCopy(ptemp,p);
StuCopy(p,q);
StuCopy(q,ptemp);
}
elseif(ch=='
o'
num)
排序条件出错!
StuClassfy()//根据学生总分分类
intgrade[5]={0};
StuNode*p=StuListHead->
while(p!
if(89<
math)
grade[0]++;
elseif(79<
math&
90)
grade[1]++;
elseif(69<
80)
grade[2]++;
elseif(59<
70)
grade[3]++;
grade[4]++;
A"
B"
C"
D"
E"
for(inti=0;
5;
grade[i]<
StuRead()//从文件读入数据
ifstreamin("
StudentList.txt"
);
if(!
in){cout<
没有学生信息,请先录入学生信息!
return;
while(!
in.eof())
intnum,math,eng,yuwen,sum;
in>
num>
math>
eng>
yuwen>
StuInsert(num,math,eng,yuwen);
StuSave()//保存学生信息
ofstreamout("
out){cout<
不能打开文件!
out<
\n'
StuQuit()//学生信息写入文件
charchoice;
是否保存学生信息:
?
(Y/N)"
choice;
if(choice=='
y'
||choice=='
Y'
StuSave();
学生信息已保存..."
2.源程序
#include<
iostream>
#include"
SInfo.h"
cstdlib>
intmain()
Systemdoor();
intx=100,pnum,pmath,peng,pyuwen;
StuNode*pfind;
SInfostu;
******************************************"
************"
******欢迎进入学生信息管理系统******"
while(x!
=0)
system("
pause"
cls"
//清屏
ShowMenu();
x;
switch(x)
case0:
stu.StuQuit();
break;
case1:
stu.StuRead();
读入学生信息表:
stu.ShowInfo();
case2:
stu.CreatSinfo();
请核对输入学生信息!
case3:
请输入添加学生信息:
cin>
pnum>
pmath>
peng>
pyuwen;
stu.StuInsert(pnum,pmath,peng,pyuwen);
更新学生信息表..."
case4:
请输入要删除学生学号:
pnum;
stu.StuDelete(pnum);
case5:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 课程设计