数据结构学生成绩管理系统汇编Word文档格式.docx
- 文档编号:14112004
- 上传时间:2022-10-18
- 格式:DOCX
- 页数:22
- 大小:411.23KB
数据结构学生成绩管理系统汇编Word文档格式.docx
《数据结构学生成绩管理系统汇编Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据结构学生成绩管理系统汇编Word文档格式.docx(22页珍藏版)》请在冰豆网上搜索。
指导教师:
_________________________
一、需求分析2
二、设计要求3
三、概要设计4
四、详细设计6
五、运行结果16
六、心得体会21
七、参考文献21
摘
要
:
据结构”是计算机程序设计的重要理论技术基础,它是计算机学科的核心课程。
用数据结构中的知识、算法、思想解决一些实际问题可使的一些问题变得一目了然,易懂。
本论文设计一个简单程序,来实现学生管理系统的设计。
首先在设计的时候就想了一下,应该运用到那些知识点,不管是C语言还是数据结构的。
首先我们想到的是应该运用到线性链表表的相关知识,运用到单链表(数据域+指针域)的存取结构,方便存储和查找,以及简单的排序。
综合数据结构和c++语言相关知识,锻炼自己的编程能力和考察一下所学的数据结构只是,是自己在实践中发现自己的不足,找不自己的不足之处,在实践中提高。
理论中的数据结构知识只有运用到实践中,再能转变为使用价值,本课程我将用源代码和流程图来说明和设计我的论文。
关键字:
单链表、条件、循环、排序。
一、需求分析
本文是运用数据结构和C++语言知识实现一个简单的学生成绩管理系统,方便教师对学生成绩的录入、查询、删除、排序等操作。
学生给您记录所用的存储结构是数据结构这门课中所学到的单链表只是。
单链表要有数据域和指针域。
课程设计中药涉及到单链表的初始化、创建、查询、插入、删除、排序等一些基本操作。
程序中要大量用用到指针操作数据,指针是c语言中的精髓,熟悉指针的操作可以极大提高编程能力和减少大量代码。
录入给出多名学生的3门考试的成绩表,每个学生的信息由学号、姓名、以及各科成绩,名次组成。
对学生的考试成绩进行有关统计:
按总数高低次序,打印出名次表,分数相同的为同一名次;
按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
系统存储的各种数据均保存在数据结构单链表内,各种操作都是对链表结构的操作。
二、设计要求
首先使用人员需要进行密码验证才能登录系统。
在这里密码默认为:
123456,登录之后是系统的主菜单,第一行是“欢迎进入学生成绩管理系统”欢迎语。
菜单包括:
1.请输入学生的成绩记录
2.显示学生的成绩记录
3.搜索某个学生的成绩记录
4.删除一个学生的成绩记录
5.排序形成一个新的文件
6.插入一个记录
7.保存这个文件
8.读取这个文件
9.退出
九项选择。
并通过键入菜单项前的序号进行菜单选择。
如果输入序号不正确将提示:
序号不对!
要求重新键入选择项。
选择菜单之后就会进入不同的程序分支,调用各自的函数进行操作。
同时本程序系统还提高记录文件导出和记录功能,以方便文件的保存和读取。
默认保存文件路径问源程序文件件内。
程序运行当中,对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:
“成绩超出范围,请重新输入”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分等信息。
三、概要设计
程序伊始要定义链表结构以保存成绩记录
typedefstructstu//定义结构体数组用于缓存数据//
{
charnum[13];
//用来保存学号
charname[5];
//用来保存姓名
intscore[3];
//保存分数,三个科目
intsum;
//总成绩
floataverage;
//平均分
intorder;
//名次
structstu*next;
//指向下一个数据记录指针地址
}STUDENT;
STUDENT*init();
//初始化函数//
STUDENT*create();
//创建链表//
voidprint(STUDENT*head);
//显示全部记录//
voidsearch(STUDENT*head);
//查找记录//
STUDENT*Delete(STUDENT*head);
//删除记录//
STUDENT*sort(STUDENT*head);
//排序//
STUDENT*insert(STUDENT*head);
//插入记录//
voidsave(STUDENT*head);
//保存文件//
voidmain(){};
//主函数作为下同的菜单选择
系统流程图如下
四、详细设计
1.成绩录入功能
教师进入此功能后,根据提示录入学生成绩,在录入过程中,遇到不合适的的成绩系统会自动识别,进行提示。
STUDENT*create()
system("
cls"
);
//清屏//
inti,s;
STUDENT*head=NULL,*p;
//定义函数.此函数带回一个指向链表头的指针//
//clrscr();
for(;
;
)
{
p=(STUDENT*)malloc(LEN);
//开辟一个新的单元//
if(!
p)//如果指针p为空//
{
printf("
\n内存溢出"
//输出内存溢出//
return(head);
//返回头指针,下同//
}
printf("
输入学号(输入0结束):
"
scanf("
%s"
&
p->
num);
if(p->
num[0]=='
0'
)break;
//如果学号为0则结束输入//
输入姓名:
name);
开始输入成绩%d科\n"
3);
//提示开始输入成绩//
s=0;
//计算每个学生的总分,初值为0//
for(i=0;
i<
3;
i++)//3门课程循环3次//
do{
printf("
成绩%d:
i+1);
scanf("
%d"
score[i]);
if(p->
score[i]<
0||p->
score[i]>
100)//成绩一定要在0~100之间//
printf("
成绩超出范围,请重新输入\n"
}while(p->
100);
s=s+p->
score[i];
//将各门成绩累加起来//
p->
sum=s;
//将总分保存//
average=(float)s/3;
//先用强制类型转换将s转换成float型,再求平均值//
order=0;
//没有排序时,此值为0//
next=head;
//将头结点做为新输入结点的后继结点//
head=p;
//新输入结点为新的头结点//
}
return(head);
}
2.显示记录功能
系统中如已有记录,执行此功能之后将显示出所有的记录,如系统无记录,将不予显示,并显示提示信息
voidprint(STUDENT*head)
colorA"
inti=0;
//统计记录的数目//
STUDENT*p;
//将指针移动//
p=head;
//初值为头指针//
printf("
\n************************************STUDENT************************************\n"
-------------------------------------------------------------------------------\n"
|排名|学号|姓名|成绩1|成绩2|成绩3|总分|平均分|次序|\n"
while(p!
=NULL)
i++;
|%3d|%12s|%6s|%3d|%3d|%3d|%3d|%4.2f|%-5d|\n"
i,p->
num,p->
name,p->
score[0],p->
score[1],p->
score[2],p->
sum,p->
average,p->
order);
p=p->
next;
**************************************END**************************************\n"
3.搜索记录功能
此功能可根据输入的学生姓名显示出存在学生的成绩记录
voidsearch(STUDENT*head)
//移动指针//
chars[13];
//存放姓名用的字符数组//
请输入要寻找的学生的姓名:
\n"
scanf("
s);
while(strcmp(p->
name,s)&
&
p->
next!
=NULL)//当记录的姓名不是所想要找的,或者指针不是为空的时候//
//将指针移动,使之指向下一结点//
if(!
strcmp(p->
name,s))
\n**********************
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学生 成绩管理系统 汇编