北京理工大学数据结构课程设计学生信息管理专题报告Word文档格式.docx
《北京理工大学数据结构课程设计学生信息管理专题报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《北京理工大学数据结构课程设计学生信息管理专题报告Word文档格式.docx(29页珍藏版)》请在冰豆网上搜索。
数据结构
学生成绩可以用单链表存储,方便随时插入和删除学生成绩记录,实现动态管理。
一个学生作为一个结点。
使用链表的基本算法实现学生成绩单的各项管理功能。
设计与实现
学生成绩信息管理功能模块
学生成绩信息读取
学生成绩信息插入
学生成绩信息保存
学生成绩信息查询
学生成绩信息显示
学生成绩信息删除
学生成绩信息修改
学生成绩信息录入
成绩信息管理系统具体分为两个模块:
数据类和功能类。
数据类包括学生的姓名、学号及成绩等信息。
通过对学生信息管理系统的功能分析,可以定义出系统的总体功能结构模块图,如上图所示。
当用户运行该系统后可以来进行学生信息信息(录入)插入管理、学生信息修改管理、学生信息删除管理、学生信息显示管理及学生信息显示等操作。
根据功能需求的结果分析,主界面应该由学生信息录入管理、学生信息插入管理、学生信息修改管理、学生信息删除管理、学生信息显示管理和学生信息信息查询管理组成,可以通过输入相应的数字进入相应的功能模块。
在本系统中需要编码实现的主要有学生信息录入、学生成绩信息插入、学生成绩信息查询、学生成绩信息修改、学生成绩信息删除和学生成绩信息输出等6个功能模块,以及学生信息的文件存储与读取功能。
学生成绩信息录入模块:
添加的信息包括姓名、学号及各科成绩。
实际流程为开始→输入学生信息→调用类成员函数采用单链表保存数据→结束。
代码如下:
voidFunction:
:
Add()//录入学生信息函数
{
charname[64];
charno[20];
Classscore;
charchoose;
Student*f1,*p;
f1=Student_First;
while(f1->
Next)
f1=f1->
Next;
do
{
p=newStudent;
cout<
<
"
请输入您要添加的学生成绩信息:
endl;
请输入学生姓名:
"
;
cin>
>
name;
请输入学号:
no;
cout<
请输入计算机成绩:
cin>
score.Computer;
请输入数学成绩:
score.Math;
请输入英语成绩:
score.English;
请输入体育成绩:
score.Pe;
请输入音乐成绩:
score.Music;
p->
Set(name,no,score);
f1->
Next=p;
p->
Next=NULL;
是否继续输入信息?
(Y\\N)-------"
cin>
choose;
}
while(choose=='
y'
||choose=='
Y'
);
Save();
Menu();
}
学生成绩信息插入模块:
输入一个存在的学号作为插入位置,在其后插入的信息包括姓名、学号及各科成绩。
流程为开始→输入学生学号→以学号为插入位置,在其后插入信息→调用类成员函数采用单链表保存数据→结束。
Insert()
{
charname[64];
Classscore;
Student*f1,*p;
f1=Student_First;
p=newStudent;
请输入学号来确定插入位置:
while(f1)
{ if(strcmp(f1->
GetNo(),no)==0)
break;
f1=f1->
}
cout<
cin>
cout<
cin>
p->
p->
Next=f1->
f1->
Save();
cout<
插入成功!
Menu();
学生成绩信息修改模块:
首先查找与要修改数据相匹配的信息,将相应的信息输出,然后再重新输入新的数据并保存到单链表。
流程为开始→输入学生学号,显示学生信息→修改学生信息→结束。
Modify()//修改学生信息函数
charchoose;
Student*temp,*p;
temp=p=Student_First;
cout<
请输入您要修改的学号:
cin>
while(temp)
{
if(strcmp(temp->
{
cout<
姓名学号微机数学英语体育音乐\n"
temp->
Out();
cout<
请输入姓名:
cin>
cout<
cin>
temp->
break;
}
temp=temp->
}
Save();
cout<
修改成功!
1.返回主菜单\n2.继续修改-------"
cin>
if(choose=='
1'
)Menu();
elseModify();
学生成绩信息删除模块:
当选择删除功能时,输入要删除的同学的学号,如果该同学存在,进行删除操作。
Delete()//删除学生信息函数
{
charno[20];
p=temp=Student_First;
输入学号:
{if(strcmp(temp->
GetNo(),no)==0)
{
p->
Next=p->
Next->
deletetemp;
删除成功:
\n"
break;
}
p=temp;
temp=temp->
Save();
1.返回主菜单\n2.继续删除-------"
while(choose!
='
&
choose!
2'
)
{ cout<
cin>
Menu();
elseif(choose=='
Delete();
学生成绩信息显示模块:
从单链表表头遍历整个单链表,将所有数据输出。
Show()
Student*temp;