一、题目的内容及要求
1.1 问题描述
录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。
1.2 基本要求
- 通过键盘输入个学生的多门课程的成绩,建立相应的文件input.dat。
- 对文件input.dat中的数据进行处理,要求具有以下功能:
- 按各门课程成绩排序,并生成相应的文件输出。
- 计算每人的平均成绩,按平均成绩排序,并生成文件。
- 求出各门课程的平均成绩、最高分、最低分、不及格人数、60~69分人数、70~79分人数、80~89分人数、90分以上人数。
- 根据姓名或学号查询某人的各门课成绩,重名情况也能处理。
- 界面美观。
二、程序设计思路
2.1 需求分析
为了方便管理者对学生成绩的处理,该设计设有录入、显示、查找、修改、排序、删除、保存、读取、退出等九大功能。为了可以永久性保存学生信息,该系统才用以文件存储数据的形式进行设计,系统功能尚算齐全。学生信息暂时设有姓名、学号、性别、年龄、民族、数学、计算机以及总分。
由于要录入、读取、保存学生成绩信息,因而要实现文件的输入输出功能;要求用户可以查询各个学生的成绩,并且可以添加学生成绩信息等,因而要提供查找和添加功能;另外还应该提供键盘式选择菜单以实现功能选择。
2.2 总体设计
可以将这个系统的设计分为数据输入、数据显示、数据查找、成绩排序、保存数据、读取数据、数据插入7个模块。
2.3 数据结构设计
把学生的学号、姓名、科目成绩、平均成绩作为结构体成员,存放若干学生信息用结构体数组。用while循环控制功能菜单的选择,swith中设置相应的功能模块函数调用,调用完一个函数后然后返回while进行判断,结果为真则进行功能菜单的选择,如果条件为假则终止函数。
三、系统功能
3.1 系统功能及描述
该课程设计要求的几个功能在程序里面都能实现,有学生信息的输入、浏览、排序、统计、修改、删除、查询、添加,退出等。根据用户的需求来执行程序。
程序总体结构如图(2-1)所示:
学生信息输入负责将学生的信息存储到对应的文本文件中,对学生的信息排序就包括按总分排序和按计算机成绩排序。统计也包括对计算机成绩的统计和对数学和英语成绩的统计。删除就负责对学生信息的删除。查询就可实现对学号的查询。
进入主菜单由函数print();实现。里面有九个功能供其选择:
- 菜单一:信息录入功能,输入选项一进入该功能,根据系统提示输入相应的数据。
- 菜单二:为学生信息浏览功能,当用户输入二选项时,系统自动用户输入的数据调入内存在输出到显示器上,供用户浏览。
- 菜单三:为学生信息查询功能,当用户选择第三个功能后是按学号查询。
- 菜单四:对学生成绩进行排序,当用户进入该功能后有两个选项供其选择,分别是:按计算机和总分排序。
- 菜单五:学生信息的删除,一般删除学生信息的时候是非常小心的,故当用户选择该功能后为了防止误删,只有按学号查找出要删除信息的同学的信息进行删除操作,操作成功后,系统会给出相应的提示说明操作成功。
- 菜单六:学生信息的修改,用户在主菜单里里面可选择此功能,进入功能后,会将所有的同学的信息输出供用户参考,当用户输入要查找的同学的学好后可进入选择界面,提示用户是要修改的项目,当用户选择完毕后,直接输入新的数据即可,最后将数据保存到文件中。
- 菜单七:学生信息的添加,用户可以根据自己的需要来选择添加学生的信息,此功能会调用学生信息的输入来完成,事后给出提示添加成功!
- 菜单八:学生信息的统计,此选项可以根据用户的不同需要进行统计,可按计算机成绩统计,按英语分数排序和数学分数统计。统计的项目包括:平均分、最高分、最低分、及格率和六十分以下的,还有各个分数段的人数。
- 菜单九:用户选择此操作后可直接退出界面。
3.2 系统存储结构设计与描述
此存储结构包括学生的姓名、学生的性别、学生的学号及学生给门功课的成绩,并且记录下该学生的总分。这些都用结构体变量数组来存储。
1、此外还有文件中数据的读取,此功能用load()函数来实现;此函数会将文件中的数据读取到内存中,并将有多少个学生多为函数的返回值;
2、此外还用到save()函数对数据的存储。
3、文件中数据的连续输出,此功能用and()函数来实现。
4、每执行完