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

上传人:工**** 文档编号:468996701 上传时间:2023-01-30 格式:DOCX 页数:36 大小:921.62KB
返回 下载 相关 举报
学生成绩信息管理系统实践类核心课程设计报告_第1页
第1页 / 共36页
学生成绩信息管理系统实践类核心课程设计报告_第2页
第2页 / 共36页
学生成绩信息管理系统实践类核心课程设计报告_第3页
第3页 / 共36页
学生成绩信息管理系统实践类核心课程设计报告_第4页
第4页 / 共36页
学生成绩信息管理系统实践类核心课程设计报告_第5页
第5页 / 共36页
点击查看更多>>
资源描述

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

1、电子科技大学成都学院计算机系实践类核心课程设计报告课 程 名 称:程序设计实践2设 计 题 目:学生信息管理系统指导 教师 组:周舸组长学号姓名:1540610103 何金城组员学号姓名:1540610105 唐震计算机系制2016年6月31.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,实现获取系统时间,并保存。2

5、.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 *HEAD

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

8、则打印普通功能,为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调试及解决方案在动画函数的运行时,由于采用的是二维数组,以随机数方式打印“.”,达到动画效果,发生了堆栈溢出的情况,随后百度以及检查代码,发现是数组的使用越界 在输入数据时,发现会自动跳过,于是采用了scanf_s( %d),的方式(在%前方加空格),但是发现效果不如人意,随后便在scanf_s前面加fflush(stdin);清除标准输入输出缓冲区 在用scanf_s接收字符数组时,会出现失败的现象,后采用get_s解决此问题 在文件的写入时,开始

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 其它相关文档

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