C语言,关于结构体的大规模程序,思路求解。
题目:实验二 学生成绩管理系统
一、实验目的
使用标准C或C++实现学生成绩管理系统的录入、查询、删除、统计等基本操作。进一步巩固C语言的学习,以提高学生对开发环境的进一步认识和综合编程能力。
二、需要处理的基础数据
学生基本信息:学号(例如2003级12班6号写作20031206)、姓、名、性别、出生年月日、课程名称(外语SCORE[0]、高数SCORE[1]、C语言SCORE[2]、马哲SCORE[3])、考试成绩等。
三、系统功能
1.学生基本情况录入。
2.允许对已经录入的数据进行显示。
3.允许进行数据的插入。
4.删除基本数据的相关信息。
5.基于姓名的查询。如:姓张的所有同学。
6. 对性别、出生年月日的合理性进行判断(如0代表“女”,1代表“男”,输入其他值非法,年龄不能为负,月份不能大于13等)
7.基于各种基本数据的统计计算。如:
①统计每个学生各门功课的平均成绩,并按平均成绩从高到低的次序排名输出每个学生各门功课的综合成绩和平均成绩(名次、学号、姓名、平均成绩、各门功课的考试成绩)。
②列出90分以上(包括90)、80分以上(包括80)、70分以上(包括70)、60分以上(包括60)、不及格学生清单(学号、姓名、不及格的课程和成绩)。
③统计并输出各门功课的平均成绩和总平均成绩。
④按班级统计并输出总成绩。(需要对学号进行解析)
四、数据结构说明
数据结构可参考下面定义
typedef struct St1
{
char IDNumber[16];/*学号*/
char FamilyName[16]; /*姓*/
char GivenName[16]; /*名*/
int sex; /*性别(0代表“女”,1代表“男”)*/
int BirthYear; /*出生年*/
int BirthMonth; /*出生月*/
int BirthDay; /*出生日*/
float score[4]; /*成绩*/
float sum; /*总分*/
float average; /*平均分*/
struct St1 *next;
}StudentNode;
五、任务说明
1.查找相关函数、编写数据结构、算法、代码等;(周二下午)
2.完成菜单以及插入、删除记录过程;(周三)
菜单的样板模式为:
" 1. Enter list" 输入记录
" 2. Delete a record from list" 从表中删除记录
" 3. Print list " 显示链表中所有记录
" 4. Search record on name" 按照姓名查找记录
" 5. Save the file" 将链表中记录保存到文件中
" 6. Load the file" 从文件中读入记录
" 7. Compute the score" 计算所有学生的总分和均分
" 8. Query by class" 按班级查询显示学生总分
" 9. Insert record to list " 插入记录到表中
" 10. Quit" 退出