题目:班级成绩管理系统
提交内容:
一、设计任务与目标
对一个有N个学生的班级,每个学生有3门课程。该系统实现对班级成绩的录入、显示、修改、排序、保存等操作的管理。功能要求:
数据导入及显示:提供从外部文件导入学生数据的功能,以便快速填充系统。同时,能够显示已导入数据的功能,以便核对和验证。需要改进已导入后再次导入相同的文件,会有提示并且不导入,避免二次导入。
新记录输入:允许用户输入新的学生成绩记录,包括学号、姓名和课程成绩。在输入之前,为了确保每个学生都有唯一的身份标识。要求了学号的唯一性,学号重复,则会要求重新输入。
删除记录:提供删除指定学生记录的功能,根据学号进行匹配并删除。删除操作进行必要的验证,若查找不到要删除的学号,会显示该学生是否存在,若查到到要删除的学号,会显示删除成功,并且显示出删除后所有学生的信息界面。有利于查找程序运行是否正确。改进可以有删除ID和姓名选项,并且ID唯一
成绩查询:允许用户查询指定学生的ID,根据学号进行匹配并显示学生的基本信息和成绩。改进有,查询指定学生的姓名,根据学生姓名进行匹配并显示学生的基本信息和成绩。并且可以实现多次查找,有退出功能。
成绩修改:提供修改学生成绩的功能,但要求用户输入密码进行身份验证,以确保只有授权用户才能进行修改操作。改进可以有修改学生名字和学号,学号修改时重复,会提示重复并询问是否继续修改。
成绩排序:提供按照学号从小到大排序,按照单科成绩或平均分进行排序的功能,方便用户对学生的成绩进行排名和比较。
成绩保存:提供将当前学生成绩数据保存到外部文件的功能,以便将数据持久化和备份。
成绩统计:提供各种成绩统计功能,包括每门课程成绩最高的学生基本信息、每门课程的平均成绩以及超过某门课程平均成绩的学生人数等。改进可以是重新选择想要选择另外一种功能时,界面不会跳到总菜单那边。
二、程序框图或流程图,程序清单与调用关系
学生成绩管理系统主界面模块:
成绩文件模块:
成绩输入模块:
成绩删除:。。。
三、全部源程序清单
#include<stdio.h>
#include<stdlib.h> //用于system("pause")
#include<string.h>
#include<Windows.h>//用于爱心
//定义结构体类型
typedef struct
{
int num; //学号
char name[20]; //姓名
int score1; //语文成绩
int score2; //数学成绩
int score3; //英语成绩
float aver; //平均分
} STU;
STU stu[80];
//Menu函数
// 功能 提供菜单选项
//参数 无
//返回值 数字字符
int Menu(void)
{
char c;
do{
system("cls"); //清屏函数
printf(" ************************************************************\n");
printf(" *** 学生成绩管理系统 ***\n");
printf(" *** 1,数据导入及显示 *** \n");
printf(" *** 2,新纪录输入 *** \n");
printf(" *** 3,删除记录 *** \n");
printf(" *** 4,成绩查询 *** \n");
printf(" *** 5,成绩修改 *** \n");
printf(" *** 6,成绩排序 *** \n");
printf(" *** 7,成绩保存 *** \n");
printf(" *** 8,成绩统计 *** \n");
printf(" *** 0,退出系统 *** \n");
printf(" ************************************************************\n");
printf(" 请输入你的选择\n");
c=getchar();
}while(c<'0'||c>'8');//若输入的不是数字,就重新输入
return(c);
}
//Read_from_file函数
//功能 从文件中读取数据
//参数 从数组元素stu[n]开始输入
//返回值 记录数
int Read_from_file(STU stu[],int n){}
//Write_to_file函数
//功能 将记录写进文件
//参数 将数据结构体stu的前n条记录写进文件
//返回值 无
void Write_to_file(STU stu[],int n)
{}。。。
。。。
四、程序运行的测试与分析
文件导入与显示:
Students.txt文件中的数据:
-
-
。。。。
五、结论与心得
(主要说明程序调试中发现的问题和解决办法,包括你学到了什么,哪里遇到了困难,解决的办法,可能但因时间关系没有来得及完成的想法,今后的目标等。)
学生成绩管理系统的编写,看似杂乱无序,实际上并非如此。它的每一个功能都能分为模块。有句话说的好,大事化小,小事化大。c语言程序也是如此,把一个大的程序分成了若干相互独立的模块,这样使得完成每个模块的工作变得单纯而明确,这样不仅降低了难度,还使得思路清晰,很容易写出要做的程序,从而设计一些较大的软件打下良好的基础。在这个过程中,我学到了:
- 自项而上:现有全局,在进行整体设计,然后再进行下层设计,逐步实现精细化。采用这种方法能够做到胸有全局,不至于顾此失彼。
- 不求速度,但求质量,一步一个质量,编写程序时候速度宁可慢点也要保证质量。。。。