学生成绩管理系统数据结构课程设计Word文件下载.doc
- 文档编号:1505816
- 上传时间:2023-04-30
- 格式:DOC
- 页数:21
- 大小:500KB
学生成绩管理系统数据结构课程设计Word文件下载.doc
《学生成绩管理系统数据结构课程设计Word文件下载.doc》由会员分享,可在线阅读,更多相关《学生成绩管理系统数据结构课程设计Word文件下载.doc(21页珍藏版)》请在冰点文库上搜索。
6显示信息
7
退出系统
程序
结束
图2.1系统操作流程图
2.2系统功能分析
系统主要石油几大函数块来实现整个系统的功能。
1)学生个人成绩信息录入
当用户选择第一项操作时,便进入学生成绩录入的函数。
其流程图如下:
输入姓名
输入班级
输入学号
返回主菜单
输入分数
输入学期
输入科目
图2.2成绩录入操作流程图
2)学生成绩修改
成绩修改
输入要修改分数
输入要修改学生学号
图2.3成绩录入操作流程图
3)学生成绩删除
成绩删除
删除
输入要删除学生学号
图2.4成绩删除操作流程图
4)学生成绩统计
统计方式
统计所有班级
统计某个班级
输入查询班级
图2.5成绩统计操作流程图
5)学生成绩查询
成绩查询
查询方式
2
班级成绩查询
个人成绩查询
输入查询学生学号
图2.6成绩统计操作流程图
6)所有学生成绩信息显示
成绩显示
图2.7所有学生成绩和个人信息显示操作流程图
3代码实现
3.1创建结构体和链表解释
typedefstruct
{
charNumber[20];
//学号
charClass[20];
//班级
charName[20];
//姓名
charSubject[20];
//科目
intterm;
//学期
intScore;
//分数
}Node;
//链表的定义
intcount;
NodeStudent[MAX];
}List;
//线性表的定义
//班级名字
intAcount;
//班级优秀的人数
intDcount;
//班级不及格的人数
intcount;
//班级总人数
}ClassInfor;
创建一个链表,并定义数据对象;
在创建线性表用来计数和存储信息。
3.2学生成绩的录入代码解释
voidInsert(List*L,ClassInfor*S)//成绩录入
intTerm;
inti,flag=0;
printf("
\n\t\t\t\t请输入学号:
"
);
scanf("
%s"
Number);
getchar();
if(strcmp(L->
Student[L->
count-1].Number,Number)>
0)//录入学号与最后学号进行比较
{
printf("
\n\n\t\t\t不合法学号,学号应大于%s"
L->
count-1].Number);
return;
}
\n\t\t\t\t请输入班级:
Class);
for(i=0;
i<
Class_NUM;
i++)
if(strcmp(S[i].Class,Class)==0)
{
S[i].count++;
//该班级人数+1
flag=1;
break;
}
if(flag==0)
\n\n\t\t\t\t请输入正确的班级\n"
\n\t\t\t\t请输入姓名:
Name);
\t\t\t"
\n\t\t\t\t请输入科目:
Subject);
\n\t\t\t\t请输入学期:
2\n"
Term=2;
\n\t\t\t\t请输入分数:
%d"
&
Score);
if(Score>
=90)//优秀人数+1
S[i].Acount++;
if(Score<
60)//不及格人数+1
S[i].Dcount++;
//寻找插入位置。
与录入学生班级相同的排一块
for(i=L->
count;
i>
=0;
i--)
if(strcmp(L->
Student[i].Class,Class)==0)
strcpy(L->
Student[i+1].Number,Number);
Student[i+1].Class,Class);
Student[i+1].Name,Name);
Student[i+1].Subject,Subject);
L->
Student[i+1].term=Term;
Student[i+1].Score=Score;
count++;
//所插入班级人数+1
return;
else
L->
Student[i+1]=L->
Student[i];
}
该函数实现了对学生成绩信息的录入。
3.3学生成绩的修改代码解释
oidChange(List*L,ClassInfor*S)//成绩修改
//,Class[20];
inti,flag=0;
\n\n\t\t\t请输入要修改学生的学号:
MAX;
i++)//找到要修改学生
Student[i].Number,Number)==0)//通过比较输入的学号和文件当中存储的学号,然后通过链表访问到该学生。
\n\n\t\t\t请输入正确的学号!
\n"
//输出此人信息
\n\n\t\t\t班级:
%s\n"
Student[i].Class);
\n\n\t\t\t学号:
Student[i].Number);
\n\n\t\t\t姓名:
Student[i].Name);
\n\n\t\t\t学期:
%d\n"
Student[i].term);
\n\n\t\t\t课程:
Student[i].Subject);
\n\n\t\t\t分数:
Student[i].Score);
\n\n\t\t\t请输入修改数据结构后的分数:
L->
该函数块实现对学生信息的修改,通过了比较,然后由链表访问到。
3.4学生信息的删除代码解释
voidDelect(List*L,ClassInfor*S)//删除学生信息
inti,j,flag=0;
printf("
\n\n\t"
\t\t\t请输入要删除的学号:
L->
Student[i].Number,Number)==0)
if(flag)
for(j=0;
j<
j++)
if(strcmp(S[j].Class,L->
Student[i].Class)==0)
{
S[i].count--;
//该班级人数-1
break;
}
for(j=i;
count-i;
Student[j]=L->
Student[j+1];
L->
count--;
\t\t\t没有该学号的学生\n"
该函数通过链表访问实现了对学生信息的删除
voidDisplay(List*L)//显示输出所有学生信息
intk;
for(k=0;
k<
k++)
班级:
%s"
Student[k].Class);
学号:
Student[k].Number);
姓名:
Student[k].Name);
学期:
%d"
Student[k].term);
课程:
Student[k].Subject);
分数:
Student[k].Score);
\n\n"
该函数实现了对学生信息的输出。
3.5学生成绩统计的代码解释
voidSearch(List*L,ClassInfor*S)//统计函数块
intx;
\n\n\t\t\t1.统计所有班级\n"
\n\n\t\t\t2.统计某个班级\n"
\n\n\t\t\t"
x);
if(x==1)
DisplayAll(L,S);
//统计所有班级所有学生
if(x==2)
DisplayClass(L,S);
//统计某个班级所有学生
该函数实现了对所有学生或者某个班级学生的优秀率和及格率进行统计并输出
3.6学生成绩查询的代码解释
voidFind(List*L,ClassInfor*S)//成绩查询函数块
\n\n\t\t\t1.个人成绩查询\n"
\n\n\t\t\t2.班级成绩查询\n"
\n\n\t\t\t请输入操作:
switch(x)
case1:
PersonalFind(L,S);
//个人成绩查询
break;
case2:
ClassFind(L,S);
//班级成绩查询
该函数实现了对学生信息的查询。
3.7所有学生信息成绩显示的代码解释
该函数通过链表访问实现了对学生成绩的显示。
4系统功能实现
4.1系统功能主菜单界面实现
图4.1系统操作菜单主页面
4.2学生成绩录入界面实现
图4.2学生成绩录入操作界面
4.3学生成绩删除界面实现
图4.3学生信息的删除操作界面
4.4学生成绩统计界面实现
图4.4统计所有班级的优秀率和及格率操作界面
图4.5统计某个班级的优秀率和及格率
4.5学生成查询计界面实现
图4.6按学生个人成绩查询操作界面
图4.7按班级查询学生成绩操作界面
4.6所有学生个人信息成绩显示界面实现
图4.8所有学生个人信息成绩的显示
5系统使用说明书
1.成绩录入:
在本操作中,用户可以录入新添加的学生信息和成绩。
当用户退出系统时,系统会自动保存新添加的学生信息,并写入文件。
2.成绩修改:
在本操作中,用户可根据学生学号访问并修改学生成绩退出系统时总动保存修改后的学生成绩。
3.删除信息:
再此目录下,用户根据学号访问到要删除的学生,并删除其所有个人信息。
4.成绩统计:
在此操作中,用户可以根据提示分别统计所有班级所有学生和每个班级所有学生的优秀率和及格率。
5.成绩查询:
在此操作中,用户可根据某个学生的学号查询该学生的班级、科目、考试成绩等个人信息;
也可以根据班级名称查询某个班级的所有学生的信息。
6.显示所有信息:
该操作会读取文件当中所存储的所有学生的个人信息,并输出到显示屏幕。
0.退出系统:
用户只要按0键便会退出操作系统。
6总结
两周时间的数据结构课程设计终于结束,在整个课程设计的过程当中,从前期两天的任务理解,思考大致框架和程序设计思路,然后后再通过查询相应的资料,上网搜寻一些相应的程序学习其设计的思路方法。
在准备充分后便开始进行代码编写,首先定义链表、结构体、主要功能的函数块等,将大的框架先准备完备,前期设计就算初步完成了。
接下来便是根据任务书题目当中的具体要求,一步一步实现具体的功能。
在这期间出现不少问题,有没有掌握到的知识,如对快速排序没有掌握,从而不知道该如何怎样快速显示出所有学生的信息;
有因马虎大意而导致的小错误,如文本录入是学生信息数目没有录入够,而导致最终读取显示学生信息时出现乱码,死循环等;
也有思考不够全面等造成的一系列困难。
但还是在经过一番思路整理,请教老师和同学自己困惑、不懂的地方,然后在一步步的修改和完善,一次次的调试和优化,从而实现所有的功能和要求,最终终于将程序顺利运行!
7参考文献
[1]吴伟民.结构(C语言版).大学出版社2000
[2]程杰.大话数据结构.清华大学出版社2011.6
[3]谭浩强.C程序设计(第三版).清华大学出版设2008
[4]苏仕华.数据结构课程设计.北京:
机械工业出版社2005
8致谢
历经两周的努力,一份关于学生成绩管理系统的数据结构课程设计任务终于完成了。
在整个设计过程当中,遇到很多不懂得问题和麻烦,但经过自己的努力,不懂的知识就下来自己上网搜索资料,查阅相关书籍,和向懂得同学请教,向老师询问寻求帮助,最终很多问题还是都逐个解决。
在此,我要感谢所有帮助我的同学和老师,感谢他们的细心讲解和耐心的指导,从而才使我能顺利的完成本次的课程设计。
在本次的课程设计当中,对数据结构有了更进一步的了解和掌握。
对自己在程序设计的思路和想法方面有了一定的收获,让自己学到不少东西。
再次衷心感谢所有帮助过我的老师和同学。
21
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 数据结构 课程设计