学生成绩信息管理系统实践类核心课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
电子科技大学成都学院计算机系
实践类核心课程设计报告
课程名称:程序设计实践2
设计题目:学生信息管理系统
指导教师组:周舸
组长学号姓名:
组员学号姓名:
计算机系制
2016年6月
项目需求分析
随着学生管理的复杂度提高,单纯的文本管理已经无法满足学校教务的要求,学生管理系统开始大量的涌入高校,同时随着学生管理系统涌入我们的高校,如何更便利的对学生信息进行系统和有序的操作,成为了我们需要考虑的问题。
设计内容
本项目运用C语言程序设计一个学生信息管理系统。系统的功能主要有:学生信息添加,学生信息修改,学生信息删除,学生信息查询,学生信息浏览,系统密码管理,系统时间查询,以及在相应的硬盘上面进行存盘以防止部分数据的丢失。本系统的功能模块图如图1所示。
图1.学生信息管理系统功能模块图
设计要求
需要有系统的功能:学生信息添加,学生信息修改,学生信息删除,学生信息查询,学生信息浏览等功能;
并可以在文件中存储学生信息,使得第二次打开依旧会保存上次的操作
程序的功能分析
Main() 主函数:调用动画函数,调用菜单函数,调用文件信息读入函数。Cartoon() 动画函数:打印进入动画,调用密码函数。
Keyword() 密码函数:限制进入系统的人的权限。
Menu() 菜单函数:打印系统功能,并选择执行功能,有打印提示使用者。Read() 文件读入函数:从数据文件读入数据,进入链表,并返回头节点。Save() 文件写入函数:将单链表中数据,写入文件中。
Push() 压栈函数:将数据压栈。
Pop() 出栈函数:将数据出栈并打印。
Totle() 计算总分函数:自动计算当前链表所有节点的总分。
Average() 计算平均分函数:自动计算当前链表所有结点的平均分。AddNODE() 添加信息函数:在单链表最末端添加信息。
Delet() 信息删除函数:找到需要删除的学生的结点,并删除该结点。InquiryNODE 信息查询函数:找到所查询的信息所在结点,并打印该结点的所有数据。
modifyNODE() 修改信息函数:找到需要修改的信息的结点,让使用者输入修改后的数据,输入当前链表的结点中。
Browse() 浏览信息函数:对除头结点以外的所有结点进行访问,并打印数据。SortTNODE() 排序函数:依次将单链表中,各科成绩输入函数Tree()中,建立二叉排序树。
Tree() 二叉排序树建立函数:依次接受一个值,进行插入排序建立二叉排序树,并调用Inview()函数。
Inview() 二叉排序树的中序遍历函数:对二叉排序树进行中序遍历,调用push()及pop()函数,进行降序排序。
Exit() 退出函数:调用文件写入函数,并退出程序。
Time() 时间函数:调用Windows API,实现获取系统时间,并保存。
程序功能结构AddNODE() Delet() InquiryNODE() ModifyNODE() Browse() Time()
Sort()
存储结构设计
struct datadent,达到动画效果,发生了堆栈溢出的情况,随后百度以及检查代码,发现是数组的使用越界
在输入数据时,发现会自动跳过,于是采用了scanf_s(" %d"),的方式(在%前方加空格),但是发现效果不如人意,随后便在scanf_s前面加fflush(stdin);清除标准输入输出缓冲区
在用scanf_s接收字符数组时,会出现失败的现象,后采用get_s解决此问题
在文件的写入时,开始会报错,错误提示为stream为空,后发现是指针的指向问题,以及指针未能及时的释放。
在排序过程中,因为二叉排序树的建立中根结点的建立与,其他子树的不同,根结点在建立时,并没有赋值,采取在sortTNODE()函数中,先给根结点赋值,解决问题。
在把组内成员的写好的代码拿来拼接的时候,多次调试,无法拼接成功,采用函数形参相同的方式,定义一个全局变量的头指针,方解决。
3总结及心得体会
此次实践课编写的是一个应用程序,相对于以前我们见的程序,它要大得多,运行的结果也没有预想中的好,数据的输出格式不太规范,而且各模块也出现了一些小问题,在共同的努力的下,我们一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可是毕竟是第一次独立完成这样的大程序,结果还不是太理想。
由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:再录入数据时,没有设计数据输入出错的提示,如果成绩输的是负值程序也继续执行,这就给运用上带来一些不便;没有设计按各科成绩排序的功能。
2.在设计过程中的感受:
本次数据结构课程设计让我们对计算机语言的学习又有了更深入的了解,也让我们更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,课程安排的这次设计让我们这些实践知识匮乏的大学生增添了许多经验,为我们将来走上工作岗位其了不小的铺垫作用。
本次课程设计中我们遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到其他组同学都在那认真的写程序,给了我们继续的信心。共同的努力下,我们顺利的结束了本次课程设计,让我们知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我们知道了友谊和团结的重要性。