1、 学生成绩管理系统学生成绩管理系统 课程设计报告课程设计报告 2010-7-9 2 一、一、程序整体规划:程序整体规划: 1.系统的基本功能 数据的录入:如录入学生的基本信息,以及该学生选修课程的基本信息; 数据的修改:如修改指定学号、或者指定姓名的学生信息,或者修改其 选修课程信息; 数据的插入:插入某个学生信息; 数据的查询:如按学号查询、按姓名查询等; 数据的删除:如删除指定学号、或者指定姓名的学生及其选修课程信息; 平均成绩的计算:计算每个学生各门功课的平均成绩,并按平均成绩从 高到低的次序输出学生信息; 考虑用文件把数据保存起来 2、首先是结构体的定义: typedef struct
2、 message_student char number6; char name20; char sex4; float subjectnumsubs; float score; float average; int index; student; int numstus; 定义学生数目 student *pointer; 指向结构体数组 int lens; 次迟到时候分配内存 3 3、部分重要函数声明部分重要函数声明: : int menu_select(); 决定主界面的函数 int openfile(student stu); 打开文件的函数 int findrecord(student
3、 stud); 查找信息的函数 int writetotext(student stud); 保存文件的函数 3 void sort(student stu); 查找信息的函数 void deleterecord(student stu,int i); 删除信息的函数 void addrecord(student stud); 增加学生信息的函数 void display(student stud,int n1,int n2); 数据的显示函数 void sortnum(student stud); 以下几个均为排序函数 void sortnum2(student stud); void so
4、rtname(student stud); void sortname2(student stud); void sortcount(student stud); void sortcount2(student stud); 4 4、设计思路设计思路 1、主函数以 switch 和 case 语句引出其他子函数。然后进行其他子函数的调用。 2、定义结构体 student,让其包含如姓名性别等基本信息。同时定义结构体指 针,以便后面子函数对某一项排序后输出该学生的全部信息。LENS 给结构体 数组分配内存。 3、各个函数运行并相互调用其他子函数,例如几个排序函数全部被其它函数调 用并输出结果。具
5、体各子函数之间的关系见源代码。 4、student stui表示的是一个结构体,内填大于等于 0 的数,这可以解释 各个子函数中出现此类情况: 例如 strcmp(str,studi.name)=0 是该结构体 内的第 i+1 个学生满足上述条件。由 Studi.变量来引用各结构体中的变量, 然后用输出函数相应输出该结构体内的信息。 4 二二 程序程序模板模板细致细致分析:分析: 1.程序涉及的模板程序涉及的模板: 主程序模板. 查询模块.删除模板. 将所有记录写入文件.输出模板.修改信息模板.录入 信息模板. 和排序模板. 排序模板可按如下进行分类: 按学号:按学号降序排序模块.按学号升序排
6、序模块. 按姓名:按姓名降序排序模块. 按姓名升序排序模块. 按名次:按名次降序排序模块. 按名次升序排序模块. 2.功能结构联系图如下图所示功能结构联系图如下图所示: 现对各个功能的实现及个人认为每个功能中所用到的程序的闪光点现对各个功能的实现及个人认为每个功能中所用到的程序的闪光点 和难点和难点: 主函数 模板 增加 学生 记录 查询 学生 记录 修改 学生 记录 学生 纪录 排序 保存 文件 打开 文件 统计 信息 5 1.增加学生记录增加学生记录 2已有记录是否覆盖已有记录是否覆盖: if(numstus!=0) printf(“已有记录存在是否覆盖?(y/n)n“); fflush(stdin); gets(str); i