一、设计题目
学生成绩管理系统
二、程序功能简介
1、录入学生信息功能
对学生的成绩进行输入,包含学生学号、姓名、性别、成绩等几项;可连续输入学生信息,输入完毕选择“N”会自动退出界面,返回主界面。
2、显示学生信息功能
显示所有录入的学生的信息,默认按学号排列;若没有记录可显示,给出提示信息;按任意键可退出界面,返回主界面。
3、学生成绩排序功能
可以按学号、姓名中的一个进行升序和降序排序;如果选择有错,可立即退出排序;按任意键可退出界面,返回主界面。
4、添加学生信息功能
可在原有学生记录后追加新记录;如果没有记录存在,则给出提示信息;学生信息输入完成后,选择“N”会自动退出界面,返回主界面。
5、删除学生信息功能
可以按学号或姓名方式删除记录;给出将被删除的记录,可取消标志,经确认后删除已经标志的记录;若是空表,删除时给出提示信息并返回主菜单;如果没有要删除的记录,输出提示信息“没找到”;可按任意键退出界面,返回主界面。
6、修改学生信息功能
可以按或学号姓名查询记录;给出将被修改的记录信息,确认后进行修改;如果没找到需要修改的记录,给出提示信息;如果是空表,会给出提示信息并返回主界面。
7、查询学生信息功能
可以按学号或姓名方式查询记录;给出查询记录的信息;如果查询的记录不存在,输出提示信息;可按任意键退出界面,返回主界面。
8、从文件读入学生信息功能
进入界面后会提示要读入的学生信息所在文件的文件路径,输入路径完成后会进入要进入的文件,进入后可根据学生的学号或姓名查找所要读入的信息;如果没有要查找的记录,输出提示信息“没找到”;可按任意键退出界面,返回主界面。
9、删除文件中学生信息功能
进入界面后会提示要删除的学生信息所在文件的文件路径,输入路径完成后会进入要进入的文件,进入后可根据学生的学号或姓名查找所要删除的信息;如果没有要删除的记录,输出提示信息“没找到”;可按任意键退出界面,返回主界面。
10、保存学生信息功能
进入界后会提示输入要保存的文件路径,输入路径完成后会自动把录入的学生信息保存到该路径下;按任意键可退出界面,返回主界面。
11、成绩统计分析功能
将学生的成绩按等级划分,显示统计后各个等级的人数;可按任意键退出界面,返回主界面。
三、主要内容
1、程序设计思想
(1)根据学生成绩表特点,决定选用链表这种数据结构来作为组成成绩数据库的基本框架。链表是最简单也是最常用的一种动态数据结构。它是对动态获得的内存进行组织的一种结构。与定长数据结构数组相比,链表能更好地利用内存,按需分配和释放存储空间,不会造成内存空间的浪费;在链表中插入或删除一个节点,只需改变某节点“链节”成员的指向,而不需要移动其它节点,相对数组元素的插入和删除效率高,便于数据的添加及删除;数据之间既有独立性,又便于数据的相互连系。所以,对于大线性表频繁插入和删除元素、或成员数目不定的数据结构,链表特别适合选用。
(2)用模块化程序设计理念,对各个功能定义不同函数,分块处理,这样有利于后期调试及今后对功能的完善。模块化设计具有相对独立性,可以对模块单独进行设计、制造、调试、修改和储存,便于由不同的模块分别进行调试。
2、特色算法
(1)功能
定义菜单函数,通过输出函数显示系统功能。利用switch语句实现多分支选择结构。
(2)算法思路
Switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break
语句就退出switch语句。
(3)模块
①主函数模块
用函数void main()来实现。主要是来显示主菜单,使用户选择操作。首先定义一个指针数组(全局使用)struct student stu[MAX],*p在这里应用了do-while和switch-case语句来进行选择,是个比较简单实现的模块。最后若选择“11”则是保存学员信息记录。
②录入学员信息模块
用函数void input()来实现。主要功能用来对学生的成绩进行收集和输入。首先会有个提示“选择功能选项”,选择“1”,进入输入模块输入所需学生的学生信息,比如学号,姓名,性别,成绩等。输完之后会提示“是否继续输入?(Y/N)”如果选择“Y”,则继续录入学员信息;如果选择“N”,则自动跳出主菜单,根据主菜单来在此基础上进行操作。期间会有一些提示语,按此操作即可。根据if和for语句来判定期间是否有重复学号输入,在本操作中,允许有重复学生姓名出现。在此模块中,用到了文件操作的指针FILE *fp;同时也用到了一个控制变量t,它是用来判定的条件变量,
c语言学生成绩管理系统课程设计 来自淘豆网m.daumloan.com转载请标明出处.