C程序设计基础课程设计设计报告链表建立学生成绩管理系统

上传人:pu****.1 文档编号:542214466 上传时间:2022-12-27 格式:DOC 页数:53 大小:119.50KB
返回 下载 相关 举报
C程序设计基础课程设计设计报告链表建立学生成绩管理系统_第1页
第1页 / 共53页
C程序设计基础课程设计设计报告链表建立学生成绩管理系统_第2页
第2页 / 共53页
C程序设计基础课程设计设计报告链表建立学生成绩管理系统_第3页
第3页 / 共53页
C程序设计基础课程设计设计报告链表建立学生成绩管理系统_第4页
第4页 / 共53页
C程序设计基础课程设计设计报告链表建立学生成绩管理系统_第5页
第5页 / 共53页
点击查看更多>>
资源描述

《C程序设计基础课程设计设计报告链表建立学生成绩管理系统》由会员分享,可在线阅读,更多相关《C程序设计基础课程设计设计报告链表建立学生成绩管理系统(53页珍藏版)》请在金锄头文库上搜索。

1、C程序设计基础课程设计设计报告链表建立学生成绩管理系统22020年4月19日资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。设计题目: 班 级: 姓 名: 学 号: 完成日期: 目 录目 录11.课程设计目的和要求11.1课程设计学生成绩管理系统的题目要求12.课程设计任务内容22.1学生成绩管理系统主要功能实现方式22.1.1链表处理数据22.1.2文件读写存储学生信息22.2创立数据库管理系统( DBMS) 23.详细设计说明33.1题目设计分析33.1.1需求分析33.1.2解题思路分析33.2设计过程33.2.1链表( 结构体) 定义33.2.2函数编写33.2.3编译与调

2、试54.软件使用说明64.1主界面介绍64.2创立学生信息数据表64.3增加数据信息64.4删除数据信息64.5修改信息64.6查找信息64.7统计功能75.课程设计心得与体会75.1概述75.2心得与体会75.2.1数据库管理系统链表+文件读写75.2.2指针与内存86.参考文献87.附录: 部分程序清单81. 课程设计目的和要求1.1课程设计学生成绩管理系统的题目要求学生包含以下信息项: 学号、 姓名、 学院、 班级、 高数成绩、 英语成绩、 C语言成绩、 总分、 平均分。系统的主要功能包括: 1. 创立学生成绩信息文件, 根据提示输入学生的各项信息, 计算出总分和平均分, 然后按学号对学

3、生信息进行排序, 并将排序后的学生成绩信息存储到一个二进制文件中。2. 增加学生信息, 在原有学生信息文件的基础上增加新的学生成绩信息, 要求: 增加后的学生信息仍按学号排序, 并继续保存至原文件。3. 删除学生信息, 提示用户输入要进行删除操作的学号, 如果在文件中有该信息存在, 则将该学号所对应的学生信息删除, 否则输出提示信息, 并提示用户选择是否继续进行删除操作。4. 修改学生信息, 提示用户输入要进行修改操作的学号, 如果在文件中有该息存在, 则将提示用户输入该学号对应的要修改的选项, 结果保存至原文件, 并提示用户选择是否继续进行修改操作。5. 按不同条件对学生信息进行查询操作,

4、输出满足条件的学生信息。(1) 按学号查询, 输入一个学号, 输出对应的学生信息。(2) 按姓名查询, 包括精确查询(输入全名), 模糊查询(输入姓)。(3) 按学院查询, 输入学院名称, 输出该学院的全部学生的信息。(4) 按班级查询, 输入班级名称, 输出该班级的全部学生的信息。6. 按不同条件对学生成绩进行统计工作。( 两个表) (1) 按总分对学生信息进行排序( 由高到低) , 输出排序后的信息, 并将排序后的学生信息存放到一个新的二进制文件中。(2) 按平均分统计各个分数段的学生人数( n) ( 不及格, 60-69, 70-79, 80-89, 90-100) 。(3) 分别找出3

5、门课程成绩最高的学生, 并输出她们的信息。(4) 分别统计出3门课程的不及格率(n/N), 并输出。2. 课程设计任务内容2.1学生成绩管理系统主要功能实现方式2.1.1链表处理数据学生作为某一对象, 其自身包含不同属性, 而每个属性的类型并不完全相同, 因而, 我们必须经过创立结构体类型的变量来定义学生信息。而用户在输入学生信息时, 并不一定指定学生人数, 因此, 需要系统动态分配内存给节点, 从而达到随时增删的目的。但, 结构体仅能记录单个学生的信息, 并不能是所有信息产生联系, 故, 必须经过定义结构体指针变量, 来将全部的学生信息串连在一起。2.1.2文件读写存储学生信息在学生成绩管理

6、系统中输入的学生信息只暂时存储于内存中, 当学生成绩管理系统关闭时, 内存会自动清除已输入的信息, 从而使学生信息丢失。因此, 必须将学生信息存入指定文件中才能实现数据的存储。2.2创立数据库管理系统( DBMS) 学生成绩管理系统的实质即简易的数据库管理系统, 经过对数据的增删改查, 而创立出特定的数据处理仓库。数据库管理系统( DBSM) 能够对存入的数据进行统一的管理和控制, 具有数据的完整性, 数据的安全性, 并发控制, 和数据库的恢复等功能。利用关系模型和关系数据库系统, 使数据以二维表的形式表示, 数据结构简单清晰, 易学易用。3. 详细设计说明3.1题目设计分析3.1.1需求分析

7、学生成绩管理系统是应用于学生考试成绩存储的简易系统。经过该系统能够创立、 增加、 删除、 查询学生的个人信息, 统计学生考试情况, 并能够存储到指定目录的文件中, 以达到创立数据库管理系统的目的。3.1.2解题思路分析首先, 分析学生成绩管理系统的主要功能模块。该系统组要分为两大模块: 一是, 对数据信息的增删改查; 二是, 对已有信息的统计。其次, 分析该系统的实现方式。该系统为链表的具体应用, 需要熟练掌握链表及文件读写的相关知识。另外, 需要将每个具体功能编写为单一的被调函数, 主函数实现输入输出功能, 以达到优化程序的目的。最后, 运行并调试程序, 更改程序错误, 优化程序功能。3.2

8、设计过程3.2.1链表( 结构体) 定义struct nodeint num;char namN;char colN;char claN;float math;float eng;float clan;float sum;float ave;struct node *next;3.2.2函数编写l 主函数void main( ) 主函数void main( ) 实现各功能的选择, 分为创立、 增加、 删除、 修改、 查询, 以及统计等功能, 而各功能分别编写为被调函数。利用while循环实现用户的人性化操作, 以达到结束程序或继续运行程序的目的。创立、 增加、 删除、 修改、 查询、 统计等被

9、调函数, 都须写于主函数之上; 利用switch( ) 函数实现各功能的选择。对数据的增、 删、 改操作, 必须返回结构退指针, 而查找功能只需要输出即可。l 创立链表struct node *creat(void)创立新链表函数, 返回链表头指针。定义结构体指针变量”struct node *h=NULL, *p,*q,*r;”。h为头指针, 及数据表的表头; 动态分配内存给p, 令其始终指向新节点; 而q,r而中间辅助指针, 是链表按要求链接。在创立链表的过程中, 动态分配内存给指针p, 分别输入学生信息, 并进行数据计算与赋值。在节点连接的过程中, 经过对输入学号大小的比较while(p

10、-numq-num)&(q-next!=NULL), 按学号排序连接节点, 使学号以升序排列。在输入玩一个信息之后, 会有提示信息询问是否继续。l 增加新节点struct node *insert(struct node *h)增加过程与创立过程大致相同, 唯一不同的是, 增加过程需要得到形参继续增加学生信息。l 删除节点struct node *del(struct node *h,int n)删除节点实质就是, 将链表指针所指向的地址在内存中擦除。主要分为两种情况: 删除头指针所指向的节点地址和删除中间或结尾的节点地址。首先, 需要判断所删除节点的地址”while(p-num!=n)&(p

11、!=NULL)”, 然后, 进行逻辑判断, 是否存在该学号的节点, 以及判断是否为头指针, 并将p的内存空间释放掉: ”if(p=h)h=p-next;elseq-next=p-next;free(p);M-;printf(M:%dn,M);puts(Delete!);” 。l 修改节点struct node *modify(struct node *h)即删除和增加过成功地结合。进行l 查找节点查找节点, 即根据所查询的信息查找记录, 需要定义结构体指针变量p, 进行逻辑判断即可。while(strcmp(p-nam,nam)!=0)&(p-next!=NULL)p=p-next;if(st

12、rcmp(p-nam,nam)=0)l 统计平均分分数段需要根据创立( 或增加) 时计算出的平均分各分数段的个数, 来统计。分为A,B,C,D,E五个分数段, 若链表中的平均分满足判断条件, 如if(p-ave=90)&(p-avesum=max), 这样即使是相同分数的学生也能够同时输出到屏幕上。l 统计不及格率需要定义全局变量M, 然后根据各科不及格的人数n计算出不及格率: ”printf(The RATE of %c-Failer:%.2f%cn,c,(a2/(float)M)*100,37);”l 按最高分排序按最高分排序需要建立新的链表。然后根据总分成绩进行排序。struct nod

13、e *h1=NULL,*p,*a=NULL,*b,*c=NULL; struct node *sta_sor(struct node *h) struct node *h1=NULL,*p,*a=NULL,*b,*c=NULL;if(h=NULL)return NULL;/creat new link point/h1 : a,b,c;/b is the latest copied informationp=h;/start to copy&compare theinformation constantlywhile(p != NULL)b = copyasta(p);if(c=NULL)h1

14、 = b;/if h1 is null,insert b/printf(insert %d before h1n,b-num);elseif(a = NULL & b-sum = c-sum)b-next = c;h1 = b;/printf(2在最前面插入%dn,b-num);c = h1;a=NULL; p=p-next;continue;a=h1;c=a-next; doif(c=NULL)a-next=b; break; /compareif(b-sum = c-sum)b-next = c;a-next = b;break;a = c;c = c-next;while(c != NULL);c = h1;a = NULL;p=p-next;return h1;3.2.3编译与调试在VC+6.0的编译环境下, 当程序编写完运行时, 须先按F7, 检查语法错误, 之后按CTRL+F5运行程序, 再根据程序运行结果进行调试, 以优化程序。在程序调试过程中, 如果要对某个被调函数进行调试, 能够标记该被调函数的某一句, 之后按F10开始调试, 如果不运

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号