数据结构,学生成绩管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
海南大学信息科学技术
学院
数据结构课程设计报告
设计题目:______________________
专业班级:________________________
姓名:___________________________
学号:___________________________
指导教师:_________________________
目录
一、需求分析 2
二、设计要求 3
三、概要设计 4
四、详细设计 6
五、运行结果 16
六、心得体会 21
七、参考文献 21
摘要:
据结构”是计算机程序设计的重要理论技术基础,它是计算机学科的核心课程。用数据结构中的知识、算法、思想解决一些实际问题可使的一些问题变得一目了然,易懂。
本论文设计一个简单程序,来实现学生管理系统的设计。首先在设计的时候就想了一下,应该运用到那些知识点,不管是C语言还是数据结构的。首先我们想到的是应该运用到线性链表表的相关知识,运用到单链表(数据域+指针域)的存取结构,方便存储和查找,以及简单的排序。综合数据结构和c++语言相关知识,锻炼自己的编程能力和考察一下所学的数据结构只是,是自己在实践中发现自己的不足,找不自己的不足之处,在实践中提高。理论中的数据结构知识只有运用到实践中,再能转变为使用价值,本课程我将用源代码和流程图来说明和设计我的论文。
关键字:单链表、条件、循环、排序。
一、需求分析
本文是运用数据结构和C++语言知识实现一个简单的学生成绩管理系统,方便教师对学生成绩的录入、查询、删除、排序等操作。学生给您记录所用的存储结构是数据结构这门课中所学到的单链表只是。单链表要有数据域和指针域。课程设计中药涉及到单链表的初始化、创建、查询、插入、删除、排序等一些基本操作。程序中要大量用用到指针操作数据,指针是c语言中的精髓,熟悉指针的操作可以极大提高编程能力和减少大量代码。
录入给出多名学生的3门考试的成绩表,每个学生的信息由学号、姓名、以及各科成绩,名次组成。对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
系统存储的各种数据均保存在数据结构单链表内,各种操作都是对链表结构的操作。
二、设计要求
首先使用人员需要进行密码验证才能登录系统。在这里密码默认为:123456,登录之后是系统的主菜单,第一行是“欢迎进入学生成绩管理系统”欢迎语。菜单包括:
1. 请输入学生的成绩记录
2. 显示学生的成绩记录
3. 搜索某个学生的成绩记录
4. 删除一个学生的成绩记录
5. 排序形成一个新的文件
6. 插入一个记录
7. 保存这个文件
8. 读取这个文件
9. 退出
九项选择。并通过键入菜单项前的序号进行菜单选择。如果输入序号不正确将提示:序号不对!要求重新键入选择项。
选择菜单之后就会进入不同的程序分支,调用各自的函数进行操作。
同时本程序系统还提高记录文件导出和记录功能,以方便文件的保存和读取。默认保存文件路径问源程序文件件内。
程序运行当中,对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“成绩超出范围,请重新输入”。再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分等信息。
三、概要设计
程序伊始要定义链表结构以保存成绩记录
typedef struct stu //定义结构体数组用于缓存数据//
{
char num[13];//用来保存学号
char name[5];//用来保存姓名
int score[3];//保存分数,三个科目
int sum;//总成绩
float average;//平均分
int order;//名次
struct stu *next;//指向下一个数据记录指针地址
}STUDENT;
STUDENT *init(); //初始化函数// STUDENT *create(); //创建链表//
void print(STUDENT *head); // 显示全部记录//
void search(STUDENT *head); //查找记录// STUDENT *Delete(STUDENT *head); //删除记录// STUDENT *sort(STUDENT *head); //排序// STUDENT *insert(STUDENT *head); //插入记录//
void save(STUDENT *head); //保存文件//
void main(){};//主函数作为下同的菜单选择系统流程图如下
四、详细设计
1.成绩录入功能
教师进入此功能后,根据提示录入学生成绩,在录入过程中,遇到不合适的的成绩系统会自动识别,进行提示。
STUDENT *create()
{
system("cls"); //清屏//
int i,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则结束输入//
printf("输入姓名:");
scanf("%s",&p->name);
printf("开始输入成绩%d科\n",3); //提示开始输入成绩//
s=0; //计算每个学生的总分,初值为0//
for(i=0;i<3;i++) //3门课程循环3次//
{
do{
printf("成绩%d:",i+1);
scanf("%d",&p->score[i]);
if(p->score[i]<0 || p->score[i]>100) //成绩一定要在0~100之间//
printf("成绩超出范围,请重新输入\n");
}while(p->score[i]<0 || p->score[i]>100);
s=s+p->score[i]; //将各门成绩累加起来// }
p->sum=s; //将总分保存//