当前位置:
文档之家› C语言编写方案学生成绩管理系统
C语言编写方案学生成绩管理系统
6.保存信息至文件:将所有的学生成绩信息保存到磁盘文件中,以方便用户管理。
7.读文件:将磁盘文件中的数据读到内存以供用户进行查询、修改、删除、添加、排序等操作。
8.学生成绩排序:根据学生成绩的总分进行降序排列,并将排序结果显示给用户。
9.计算学生总分和平均分:计算每位学生的总分和平均分,并计算所有学生的总分和平均分。
二
直接利用输出函数输出字符串,在屏幕上显示一个菜单,并显示一个提示输入选项,输入0-12之间的数字,将此数字作为菜单函数的返回值返回主函数,主函数根据这个数字调用相应的功能函数。制作简便,操作简单,界面如图3-3所示。
图3-3主菜单界面
三
1.从键盘输入
输入学生信息的同时,创建链表。按照提示信息输入学号、姓名、三门课程成绩,每输入一个数就按一下回车键,当输入学号首字符为@时结束输入,返回主函数,单链表创建完毕。
3.
一、
处理器:166或更高
内存:32
硬盘空间:1
显卡:显示适配器
二、
操作系统:982000
3.
1.输入学生信息:用户根据提示输入学生的学号、姓名、各科成绩,并由系统计算总分和平均分,并设置名次的初始值为0。可一次性输入多条学生记录。
2.查找学生信息:按照学生姓名查找学生信息,如果存在,则提示用户找到并输出查找结果。
3.删除记录
删除指定学号的学生记录。首先输入要删除结点的学号,输入后根据学号顺序查找结点,如果没找到,则输出没找到信息;;否则,显示找到的结点信息,按任意键后显示已删除信息。注意删除结点时的操作,如果该结点是首结点,则要修改头指针,如图3-4所示;否则,将该结点的前趋指针的后继指向其后继结点,如图3-5所示,然后释放该结点。
4.插入记录
插入结点需要输入插入位置和新结点信息。输入某个结点的学号,新结点将插入在这个指定结点之前。申请空间得到指针,输入新结点信息,存放到新申请的空间中。设链表头指针为h,p为指定结点的指针,q为p的前趋指针。从头结点开始循环移动指针p查找指定结点,查找和插入时分以下几种情况处理:
[10];学号
[20];姓名
[N];各门课成绩
;总分
平均分
名次
*指向后继结点的指针
}结构体类型名
3.
一
程序采用模块化设计,主函数是程序的入口,主函数不宜复杂,功能尽量在各模块中实现。()函数执行流程图如图3-2所示。
首先声明一些必要的变量,然后作一无限循环程序,循环体为一个开关语句,该语句的条件值是通过调用主菜单函数得到的返回值,根据该值,调用相应的各功能函数,同时设置一个断点,即当返回值为一定条件时运行()函数结束程序,以免造成死循环。
四
1.查询记录
按照姓名查找结点,从头结点开始顺序查找,成功显示记录信息,失败,显示没找到。姓名是字符串,比较功能利用字符串比较函数()实现。
2.修改记录
输入要进行修改的学生学号,从头结点开始顺序查找该学号是否存在,成功则允许修改该学生的姓名、学科成绩等主要内容,并重新计算总分和平均分;失败,显示没找到。
在生成链表时,每次新输入的结点放在表头,这样最先输入的结点存放在最后。
对于数据库管理,为避免数据出错或减少数据出错的概率,应考虑数据完整性的验证。该功能由两个函数()和()完成。设置头指针为空,申请内存空间,如果申请不到,则内存空间满,无法保存数据,则返回主程序;否则输入数据,并进行相应的校验(学号和姓名调用函数输入和校验),成绩就在()中边输入边验证,以保证输入合法数据。当成绩输入后,计算该生的总分和平均分,并将名次数据先置0,待排序后再赋予新值。数据输入后,将其后继结点指针指向当前头结点,新头指针指向新输入结点,这样新插入结点总在头。数据输入结束后返回链表的头指针到主函数。
操作系统:或更高
开发平台:6.0
《
——
3.
在对学生成绩管理系统进行需求分析的过程中,需要确定系统的主要功能,对软件开发的主要目的、软件的使用领域和有关该软件开发的软硬件环境进行详细的分析。
3.
学生成绩管理系统主要用于对学生的学号、姓名及各项学科成绩进行增、删、改、查等操作。系统给用户提供了一个简单的人机界面,使用户可以根据提示输入操作项,调用系统提供的管理功能。
10.文件备份:将磁盘文件做一个备份文件,以防止数据意外丢失。
3.
3.
程序设计一般由两部分组成:算法和数据结构,合理地选择和实现一个数据结构和处理这些数据结构具有同样的重要性。在管理程序中,若使用静态数组保存数据,则会占用连续的存储空间。它的缺点是需要预先估计记录大小,如果估计得过大,则浪费空间,如果小了,不容易扩充。特别是当需要动态变化时,例如插入数据和删除数据等操作需要移动数据,容易出错。所以我们使用单链表结构来管理学生成绩,这样,不用事先估计学生人数,方便随时插入和删除学生记录,且不必移动数据,实现动态管理。代价是牺牲一部分空间用来存放表示结点关系的指针。当然,链表的灵活性也带来了管理的复杂性。
3.
本程序利用单链表存储结构完成对学生成绩的动态管理,其基本功能模块如图3-1所示。
3.
将一个学生当作一个结点,这个结点的类型为结构体,结构体中的域表示学生的属性,每个结点除了存放属性外,还存放结点之间的关系,即存放指向后继结点的指针。结点结构如下:
N 3定义课程门数,可以根据情况设定
定义数据结构
{
3.插入学生信息:插入在指定学号的记录前,先查找指定学号是否存在,若存在,直接插入在此记录前,若不存在,则插入在所有记录最后。
4.修改学生信息:提示用户输入要修改的学生学号,查找该学号是否存在,成功则允许修改该学生的姓名、学科成绩等主要内容,并重新计算总分和平均分;失败,显示没找到。
5.删除学生信息:提示用户输入要删除的学生学号,如在,则删除,若没有,则提示相应信息。
2.从文件读入
按照文件的读写要求,先定义一个指向文件的指针,输入读入数据的磁盘文件名,然后确定文件的打开方式。如果文件打不开,则退出函数,否则选择一种读文件方式,从文件头开始,将记录读入内存,直到文件尾。文件打开方式和读入方式的确定要依据输出文件的打开方式和写入方式,以免数据读入错误。如果输出文件是二进制文件,块写操作,读入也应设置为二进制打开方式,块读取方式。每读入一条记录,都要做好指针链接关系,本模块将新结点链接到当前链表的尾部,链表的顺序和文件保存的顺序一致。