1、C语言学生成绩管理系统设计 沈阳航空航天大学课 程 设 计 报 告大作业名称:C语言课程设计大作业题目:学生成绩管理系统设计院(系):计算机学院专 业:计算机科学与技术班 级:学 号:姓 名:指导教师:完成日期:2016年12月24日第1章 概要设计1.1题目的内容与要求内容: 学生成绩信息包括:姓名、学号、语文、数学、英语。 实现的主要功能有: 1)信息维护。包括学生成绩的输入、按学号删除、按学号修改等。 2) 信息查询。输入学号或姓名,显示出该生三个科目的成绩,计算出三科总分 并显示,按总分将所有学生成绩排序,显示出该生的名次。 3)成绩统计。先输入任意一个科目,接着选择a或b来分别显示平
2、均分或统计 分数段学生,若选择a,则直接显示出该科目的平均分;若选择b,则提示 用户输入一个分数段,显示所有该科目属于该分数段内的学生信息,并给出 学生总数。要求: 1)系统以菜单方式工作。在不同的界面为用户给出具体提示。 2)系统利用C语言实现,源程序要有适当的注释。 3)采用VC环境进行运行调试。1.2总体结构本程序主要分为七个模块(功能模块图见图1.1):结构体模块,输入模块,显示模块,修改模块,删除模块,查询模块,统计模块。结构体模块:建立一个结构体模块,为链表存信息用。输入模块:键盘输入每个学生的信息,并保存在文件中。显示模块:显示全部学生的具体信息。修改模块:修改某个学生的成绩信息
3、。删除模块:删除某个学生的全部信息。查询模块:查询某个学生的具体信息。统计模块:通过功能选择,统计并显示某一科目的平均分或某分数段学生的具体信息。 图1.1 功能模块图第2章 详细设计2.1主模块控制整个程序的运行,控制菜单操作,通过主函数模块分别调用各个模块,实现各项功能,流程如图2.1所示。 Y N N Y 图2.1 主模块流程图注释:1. 显示主菜单;2. 选择不同序号执行不同功能;2.2输入模块输入所有学生信息并保存,流程如图2.2所示。图2.2 输入模块流程图注释:1.循环输入每个学生的信息;2.保存所有信息2.3显示模块 显示所有学生的具体信息,流程图如2.3所示。 图2.3 显示
4、模块流程图 注释:1. 选择号好功能;2. 显示全部学生的具体信息。2.4修改模块修改某个学生各个科目的成绩,流程图如2.4所示。 Y N 图2.4 修改模块流程图注释:1. 输入要修改学生的学号;2. 输入要修改的科目信息;3. 修改成功,是否要继续修改。是,继续;否,回到主菜单。2.5删除模块 按学号删除某学生的全部信息,流程图如图2.5所示。 Y NN 图2.5 删除模块流程图注释:1. 输入要删除的学生的学号;2. 显示该生信息,是否删除。是,删除;否,是否继续操作。3. 是否继续删除。是,重复上述操作;否,退出回到主菜单。2.6查询模块 输入要查询学生的学号,显示该生具体信息,流程图
5、如图2.6所示。 Y N 图2.6 查询模块流程图注释:1. 输入要查询的学生的学号;2. 显示该生的具体信息;3. 是否继续查询。是,继续查询下一位;否,回到主菜单。2.7统计模块 通过选择不同功能,显示某个科目的平均分或某分数段学生的具体信息,流程图如图2.7所示。 case a: case b: Y N 图2.7 统计模块流程图注释:1. 通过菜单选择科目;2. 通过菜单选择a或b功能,分别显示该科目平均分或某分数段学生信息;3. 是否继续查询?是,继续;否,回到主菜单。第3章 调试分析在这次课程设计中,程序编写的过程中遇到了很多问题,主要是函数实现方面问题较多。问题1:查询函数chax
6、un( )中,会造成数据混乱,原因是for循环中某行代码运用错误,如下: for(i=0;in;i+) if(stui.num=x) k=i;/*找到要查询的同学学号,并用k记下其下标*/ OutputOneStudent(k); 将OutputOneStudent(k);拿出后,查询功能正常实现。正确编写如下: for(i=0;in;i+) if(stui.num=x) k=i;/*找到要查询的同学学号,并用k记下其下标*/ OutputOneStudent(k); 问题2:统计函数tongji(),功能实现完后不能回到主菜单。解决方法是,把功能函数gongneng()其中的while循环删
7、掉。 第4章 使用说明运行截图如下:1.输入成绩2.信息显示3.修改信息4.删除信息5.查询信息6.1统计信息-科目平均分6.2统计信息-科目某分数段学生信息7.退出系统参考文献1. 王敬华,C语言程序设计教程(第二版),清华大学出版社,2009年8月2. 谭浩强,C语言程序设计教程(第二版),清华大学出版社,1999年12月3. 谭浩强,C语言程序设计题解与上机指导,清华大学出版社,2000年11月4. 田淑清,C语言程序设计辅导与习题集,中国铁道出版社,2000年1月5. 张荣梅、梁晓林,Visual C+实用教程,冶金工业出版社,2004年附 录(程序清单)程序代码:#include#i
8、nclude#include#define N 3struct student int num; /学号 char name20; /姓名 float score3; /三门课成绩 float sum; /总分 float aver; /平均分stuN;void menu(); /主菜单功能void input(); /输入信息到结构体中void save(int x); /保存stud.dat文件函数void print(); /输出显示所有学生信息void SaveAllStudent(int n); /保存全部学生信息void xiugai(int n); /按学号修改成绩int sha
9、nchu(int n); /按学号删除void OutputOneStudent(int i); /查询一个学生的信息void chaxun(int n); /按学号查询成绩void tongji(); /统计科目信息void gongneng(int x); /a或b功能分别显示科目平均分或分数段学生信息int main() printf(*n); printf(* *n); printf(* Hwadee &学生成绩管理系统& Hwadee *n); printf(* *n); printf(*nnn); printf(*欢迎使用*n); while(1) menu(); return 0
10、;/*主菜单*/void menu() int choice; int n=N; printf(n请选择功能:n); printf(n1:输入成绩n2:显示信息n3:修改成绩n4:删除信息n5:查询成绩n6:成绩统计n0:退出系统nn); printf(n请选择序号:n); scanf(%d,&choice); switch(choice) case 1: input(); save(N); break; case 2: print(); break; case 3: xiugai(n); break; case 4: shanchu(n); break; case 5: chaxun(n);
11、 break; case 6: tongji(); break; case 0: printf (n谢谢使用,再见!nn); exit (-1); break; default: printf(输入错误!n); break; /*写入函数*/void input() int i,j; printf(n输入信息n); for(i=0;iN;i+) printf(输入学号:); scanf(%d,&stui.num); printf(输入姓名:); scanf(%s,&stui.name); for(j=0;jN;j+) printf(第%d门成绩的分数:,j+1); scanf(%f,&stui
12、.scorej); stui.sum=stui.score0+stui.score1+stui.score2; stui.aver=stui.sum/3; printf(n); /*写入文件*/void save(int x) FILE *fp;/*定义文件指针用于向文件读入数据*/ int i; if(fp=fopen(student.dat,rb+)=NULL)/*以二进制读,写方式打开文件*/ printf(cannot open filen); exit(1); for(i=0;iN;i+) if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn); fclose(fp); printf(nn信息保存成功!恭喜!nn);/*显示全部学生信息*/void print() int i; printf(学号 姓名 语文 数学 英语 总分 平均分n); fo
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1