学生成绩信息管理系统实践类核心课程设计报告

上传人:bei****lei 文档编号:203559279 上传时间:2023-04-25 格式:DOCX 页数:36 大小:921.62KB
收藏 版权申诉 举报 下载
学生成绩信息管理系统实践类核心课程设计报告_第1页
第1页 / 共36页
学生成绩信息管理系统实践类核心课程设计报告_第2页
第2页 / 共36页
学生成绩信息管理系统实践类核心课程设计报告_第3页
第3页 / 共36页
资源描述:

《学生成绩信息管理系统实践类核心课程设计报告》由会员分享,可在线阅读,更多相关《学生成绩信息管理系统实践类核心课程设计报告(36页珍藏版)》请在装配图网上搜索。

1、电子科技大学成都学院计算机系实践类核心课程设计报告课 程 名 称:程序设计实践2设 计 题 目:学生信息管理系统指导 教师 组:周舸组长学号姓名:1540610103 何金城组员学号姓名:1540610105 唐震计算机系制2016年6月361.0项目需求分析随着学生管理的复杂度提高,单纯的文本管理已经无法满足学校教务的要求,学生管理系统开始大量的涌入高校,同时随着学生管理系统涌入我们的高校,如何更便利的对学生信息进行系统和有序的操作,成为了我们需要考虑的问题。1.1设计内容本项目运用C语言程序设计一个学生信息管理系统。系统的功能主要有:学生信息添加,学生信息修改,学生信息删除,学生信息查询,

2、学生信息浏览,系统密码管理,系统时间查询,以及在相应的硬盘上面进行存盘以防止部分数据的丢失。本系统的功能模块图如图1所示。图1.学生信息管理系统功能模块图1.2 设计要求需要有系统的功能:学生信息添加,学生信息修改,学生信息删除,学生信息查询,学生信息浏览等功能;并可以在文件中存储学生信息,使得第二次打开依旧会保存上次的操作2.1程序的功能分析Main() 主函数:调用动画函数,调用菜单函数,调用文件信息读入函数。Cartoon() 动画函数:打印进入动画,调用密码函数。Keyword() 密码函数:限制进入系统的人的权限。Menu() 菜单函数:打印系统功能,并选择执行功能,有打印提示使用者

3、。Read() 文件读入函数:从数据文件读入数据,进入链表,并返回头节点。Save() 文件写入函数:将单链表中数据,写入文件中。Push() 压栈函数:将数据压栈。Pop() 出栈函数:将数据出栈并打印。Totle() 计算总分函数:自动计算当前链表所有节点的总分。Average() 计算平均分函数:自动计算当前链表所有结点的平均分。AddNODE() 添加信息函数:在单链表最末端添加信息。Delet() 信息删除函数:找到需要删除的学生的结点,并删除该结点。InquiryNODE 信息查询函数:找到所查询的信息所在结点,并打印该结点的所有数据。modifyNODE() 修改信息函数:找到需

4、要修改的信息的结点,让使用者输入修改后的数据,输入当前链表的结点中。Browse() 浏览信息函数:对除头结点以外的所有结点进行访问,并打印数据。SortTNODE() 排序函数:依次将单链表中,各科成绩输入函数Tree()中,建立二叉排序树。Tree() 二叉排序树建立函数:依次接受一个值,进行插入排序建立二叉排序树,并调用Inview()函数。Inview() 二叉排序树的中序遍历函数:对二叉排序树进行中序遍历,调用push()及pop()函数,进行降序排序。Exit() 退出函数:调用文件写入函数,并退出程序。Time() 时间函数:调用Windows API,实现获取系统时间,并保存。

5、2.2程序功能结构AddNODE() Delet() InquiryNODE() ModifyNODE() Browse() Time() Sort() 2.3存储结构设计struct datadent/学生信息结构体char name20;/姓名char sex5;/性别int data_num;/学号int Math;/数学成绩int English;/英语成绩int C_language;/C语言成绩int telphone;/电话int totle;/总分int average;/平均分;struct NODE/链式存储结构datadent data;NODE *next;struct

6、 Password/密码结构体int Acc;int Pas;pass2;/密码结构体数组struct Time/时间信息结构体int year;/年int month;/月int day;/日int hour;/时int minute;/分int second;/秒TIME;struct STACK/栈结构体int sSIZE;/数组int top;/栈底指针;struct TNODE/二叉树结构体int data;/数据域struct TNODE *Lchild;/左孩子struct TNODE *Rchild;/右孩子;int Permissions = 0;/权限等级NODE *HEA

7、D;/全局变量2.4功能及算法设计Main() 主函数:调用动画函数Cartoon(),调用菜单函数Menu(),调用文件写入函数Read()完成主界面的设计。Cartoon() 动画函数:利用二维数组存储点,使用rand函数以及srand函数生成随机赋值给二维数组,printf打印二维数组,清屏,重复打印。调用密码函数Keyword()。Keyword() 密码函数:采用了fopen,fread,fwrite等函数,完成了文件的写入与写出。运行时,先从文件写出信息,将用户输入的信息与之比对,正确则将权限变量Permissions赋值为1。Menu() 菜单函数:首先判断权限变量是否为1,不为

8、1则打印普通功能,为1则进入普通用户界面,否则进入高级用户界面。随后打印系统功能,提示用户选择功能,利用switch完成功能的选取操作并选择执行相关功能函数。Read() 文件读入函数:采用了fopen,fread等函数,完成了文件的写入,定义新结点,将文件中写入的信息依次写入结点数据域,将结点挂载到链表上,重复以上操作,直到文件为空,返回链表头指针。Save() 文件写入函数:接收链表头指针,采用了fopen,fwrite等函数,完成了文件的写入。将链表中结点中数据域中信息依次写入文件,直到链表为空。Push() 压栈函数:将数据压栈。Pop() 出栈函数:将数据出栈并打印。Totle()

9、计算总分函数:自动计算当前链表所有节点的总分。Average() 计算平均分函数:自动计算当前链表所有结点的平均分。AddNODE() 添加信息函数:接收单链表头指针 ,找到链表中最后一个结点,接收用户输入数据,将数据写入一个新结点,将结点挂载到链表上。Delet() 信息删除函数:接收单链表头指针,接收用户输入信息,依次查找单链表中信息是否有与之相匹配的,找到则询问用户是否删除,删除则孤立该结点,然后使用free释放掉。InquiryNODE() 信息查询函数:接收单链表头指针,接收用户输入信息,查询是否存在,存在则打印该学号学生信息。modifyNODE() 修改信息函数:接收单链表头指针

10、,接收用户输入信息,在单链表中数据域比较是否有与之匹配的信息,有则提示用户输入想要修改的数据,将用户输入的信息重新赋值给该结点。Browse() 浏览信息函数:接收单链表头指针,对除头结点以外的所有结点进行访问,并打印数据域中信息。SortTNODE() 排序函数:接收单链表头指针,依次将单链表中结点的数据域输入函数Tree()中,建立二叉排序树,调用Inview函数,打印出排序结果。Tree() 二叉排序树建立函数:依次接受一个值,进行插入排序建立二叉排序树,并调用Inview()函数。Inview() 二叉排序树的中序遍历函数:对二叉排序树进行中序遍历,调用push()及pop()函数,进

11、行降序排序。Exit() 退出函数:接收链表头指针,调用文件写入函数Save,并退出程序。Time() 时间函数:调用Windows API,实现获取系统时间,并使用fropen,fread等函数写入文件保存。2.5系统实现及测试Cartoon() 动画函数此为动画界面,由于是动态,所以只截了一张图,后续图片,将以此格式打印出来,但点的位置为随机,点的颜色依次从红,黄,蓝,绿,青,橙,紫变化。Keyword() 密码函数密码输入界面,密码初始输入必须为1540610103,610103以及1540610105,610105。如果密码输入不对则进入普通用户界面。Main()主菜单函数此为密码输错

12、界面,只可进行学生信息的查找以及浏览,输入数字1,2,3进行相关操作。Main()主菜单函数密码输对界面,可使用添加,删除,查询,修改,浏览,密码修改,时间查询等操作,输入对应数字进行操作。Browse() 浏览信息函数第一次进入系统,使用浏览函数浏览信息,发现为空,证明文件内未包含任何信息。AddNODE() 添加信息函数使用了添加功能,输入了两个学生信息。Browse() 浏览信息函数添加完进行浏览,发现添加学生信息成功,成功的打印出了刚添加的学生信息。InquiryNODE() 信息查询函数使用查询函数,查询刚才添加的两个学生信息,发现查询成功,打印出了这两个学生信息。Delet() 信

13、息删除函数使用删除功能,删除了学号为1540610103的学生信息。InquiryNODE() 信息查询函数使用浏览功能,删除后浏览发现,删除的学号为1540610103的学生信息不在打印出来,证明删除成功。SortTNODE() 排序函数使用了排序功能,成功由高到低依次打印出了各项成绩。Time() 时间函数使用查看系统时间功能,成功打印出了上一次进入系统的时间,以及现在的系统时间。2.6调试及解决方案在动画函数的运行时,由于采用的是二维数组,以随机数方式打印“.”,达到动画效果,发生了堆栈溢出的情况,随后百度以及检查代码,发现是数组的使用越界 在输入数据时,发现会自动跳过,于是采用了sca

14、nf_s( %d),的方式(在%前方加空格),但是发现效果不如人意,随后便在scanf_s前面加fflush(stdin);清除标准输入输出缓冲区 在用scanf_s接收字符数组时,会出现失败的现象,后采用get_s解决此问题 在文件的写入时,开始会报错,错误提示为stream为空,后发现是指针的指向问题,以及指针未能及时的释放。 在排序过程中,因为二叉排序树的建立中根结点的建立与,其他子树的不同,根结点在建立时,并没有赋值,采取在sortTNODE()函数中,先给根结点赋值,解决问题。 在把组内成员的写好的代码拿来拼接的时候,多次调试,无法拼接成功,采用函数形参相同的方式,定义一个全局变量的

15、头指针,方解决。3总结及心得体会此次实践课编写的是一个应用程序,相对于以前我们见的程序,它要大得多,运行的结果也没有预想中的好,数据的输出格式不太规范,而且各模块也出现了一些小问题,在共同的努力的下,我们一次又一次的进行修改,最后运行的结果基本上达到了预期的目的。可是毕竟是第一次独立完成这样的大程序,结果还不是太理想。由于时间很短,在选题报告中设想到的好多功能都没有实现。已有的那些功能虽已能基本上满足用户的需要,但如果还有更多的功能程序就会更加完美。如:再录入数据时,没有设计数据输入出错的提示,如果成绩输的是负值程序也继续执行,这就给运用上带来一些不便;没有设计按各科成绩排序的功能。2.在设计过程中的感受:本次数据结构课程设计让我们对计算机语言的学习又有了更深入的了解,也让我们更深刻地领悟到了“实践出真理”这个道理,在上机实践过程中学到的知识远远超过了在课堂上十几周学到的,课程安排的这次设计让我们这些实践知识匮乏的大学生增添了许多经验,为我们将来走上工作岗位其了不小的铺垫作用。本次课程设计中我们遇到了很多以前没有遇到过的问题,也曾想要放弃,但看到其他组同学都在那认真的写程序,给了我们继续的信心。共同的努力下,我们顺利的结束了本次课程设计,让我们知道原来凭借自己努力取得的成功会让自己这么欣慰,也让我们知道了友谊和团结的重要性。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!