学生成绩管理系统 课程设计报告
编写人:
同组成员:(课程设计负责人)
完成日期: 辅导教师: 批阅日期: 分数:
第 1 页 共 18 页
学生成绩管理系统——课程设计报告
一、功能描述
此成绩管理系统主要利用结构体数组实现,由如下六个功能模块实现 1、输入模块。主要完成将学生信息存入结构体数组的工作。
2、删除、修改模块。主要完成对结构体数组中数据的删除、修改工作。 3、查询、排序模块。主要完成对结构体数组中数据的查询、排序工作。 4、输出模块。主要完成对结构体数组中数据输出的工作。 二、总体设计 1、功能模块设计
(1)主函数main()执行流程
开始 输出菜单 根据表达式m m=9 的值选择程序 m=1 m=2 m=3 m=4 m=5 m=6 m=7 m=8 输入 查看 查询 成绩修改添加删除
退出系统 结束 保存
(2)输入学生信息函数inputscore ()流程
第 2 页 共 18 页
学生成绩管理系统——课程设计报告
开始1 Y fp=fopen(\"score.dat\
N for循环
将数据保存到 score.dat文件中 结束 (3)添加学生信息函数add()流程
开始2 Y fp=fopen(\"score.dat\
N for循环
将数据保存到 Sorce.dat文件中 结束
第 3 页 共 18 页
学生成绩管理系统——课程设计报告
(4)删除学生信息函数delscore ()流程
开始3 在sorce.dat文件中读入数据 输入学生的姓名或学号
查找要删除的学生
输出学生的信息 确定删除该学生信息 并执行 结束
(5) 修改学生信息函数modify流程
第 4 页 共 18 页
学生成绩管理系统——课程设计报告
开始4 在sorce.dat文件中读入数据 输入学生的姓名或学号
查找要修改的学生
输出学生的信息 确定修改该学生信息 并执行 结束
(6)学生信息查询函数searchscore()流程
开始5 在sorce.dat文件中读入数据 输入要查找学生的信息
查找要需要的学生
输出学生的信息
结束 (7)学生成绩排序函数avergescore()流程
第 5 页 共 18 页
学生成绩管理系统——课程设计报告
开始6 调出sorce.dat文件 中的数据 Y 排序 stu[j].aver>stu[k].aver N t=stu[j];stu[j]=stu[i]; stu[i]=t; 输出学生信息 结束
(8)成绩不及格查询函数statistic()流程
开始7 调出score.dat文件数据 N stu[i].aver<60 Y 输出 结束 (9)输出学生成绩函数lookscore()流程 开始8 第 6 页 共 18 页
学生成绩管理系统——课程设计报告
在score.dat文件中读入数据 确定有几个学生信息 输出学生的信息
结束 三、数据结构设计 学生信息结构体数组
struct student {
char number[10]; 学号 char name[20]; 姓名 float score[M]; 分数 float aver; 平均成绩 float 数学; 数学成绩 float英语; 英语成绩 float 计算机; 计算机成绩 四、函数功能描述 主要函数的函数原型 void inputscore(void); void savescore(void); void avergescore(void); void modifyscore(void); void lookscore(void); void searchscore(void); void statistic(void); void add(void); void modify(void); void delscore(void); void menu(void);
i. 在菜单界面输入1,调用函数inputscore( )实现输入学生成绩信息功能。 ii. 在菜单界面2,调用函数lookscore( )实现学生成绩按平均分高低排序输。
出,同时lookscore()函数调用avergescore()函数实现各个学生平均分的计算。
iii. 在菜单界面输入3,调用searchscore()函数实现通过学号查找学生成绩信
息功能。
iv. 在菜单界面输入4,调用statistic()函数输出班级及格率,优秀率,学生
成绩方差,不及格学生名单。
第 7 页 共 18 页
学生成绩管理系统——课程设计报告
v. 在菜单界面输入5,调用modify()函数实现通过学号修改学生成绩的功能 vi. 在菜单界面输入6,调用add()函数实现添加学生成绩。
vii. 在菜单界面输入7,调用delscore()函数实现删除指定学生成绩。 viii. 在菜单界面输入8,调用savescore()函数将学生成绩信息保存。 ix. 在菜单界面输入9,退出成绩管理系统。
五、程序实现 1、源代码分析 ⑴程序预处理
包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。 #include #include #include #include if(strcmp(a,stu[i].number)==0) #include #define N 30 #define M 3 typedef struct student { char number[10]; char name[20]; float score[M]; float aver; #include ⑵主函数main() 六、运行结果 1、显示主界面(学生成绩管理系统主菜单) 第 8 页 共 18 页 学生成绩管理系统——课程设计报告 2、输入学生信息 3、删除学生信息 4、修改学生信息 第 9 页 共 18 页 学生成绩管理系统——课程设计报告 5、学生信息查询 6、成绩情况 7、显示不及格名单 8、添加学生信息 9、保存程序界面 第 10 页 共 18 页 学生成绩管理系统——课程设计报告 10、退出程序 七、设计小结 1、优点:简洁明了、界面整洁、使用了汉字的菜单、使用比较方便、经过很多次调试后解决了很多漏洞。 2、缺点:不够人性化、很多功能的缺失、存在很多漏洞(比如:没有班级;如果学号太长的话就不能够对齐;只允许输入30个学生信息;在某些输出函数中没有对学生按学号排序输出;)、界面还是不够美观、程序确实可以做得更好,但是由于时间原因存在很多缺陷。 八、附带源程序 #include typedef struct student { char number[10]; char name[20]; float score[M]; float aver; }STU; STU stu[N]; int n; void inputscore(void); void savescore(void); void avergescore(void); void modifyscore(void); void lookscore(void); void searchscore(void); void statistic(void); void add(void); void modify(void); void delscore(void); 第 11 页 共 18 页 学生成绩管理系统——课程设计报告 void menu(void); void main() { short int flag=0; menu(); do { flag=1; switch(getch()) { case '1' : inputscore();break; /*输入成绩*/ case '2' : lookscore();break; /*查看成绩*/ case '3' : searchscore();break; /*查找成绩*/ case '4' : statistic();break; /*成绩统计*/ case '5' : modify();break; /*修改成绩*/ case '6' : add();break; /*添加成绩*/ case '7' : delscore();break; /*删除成绩*/ case '8' : savescore();break; /*保存成绩*/ case '9' :exit(0); /*退出程序*/ default : printf(\"输入有误\\n\"); } printf(\"按任意键继续\\n\"); getch(); menu(); }while (flag==1); } void menu(void) { system(\"cls\"); printf(\"\\n\"); 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(\"退出系统-------------------------------------9\\n\"); printf(\"**********************************************\\n\"); printf(\"请输入您的选择\\n\"); 第 12 页 共 18 页 学生成绩管理系统——课程设计报告 } /***************输入各个同学的学生信息******************************/ void inputscore(void) { int i,j; system(\"cls\"); printf(\"请输入学生总数:\\n\"); scanf(\"%d\ printf(\"提示:*输入学号时请输入位数为8位的数字*\\n\"); /*因二维表上下需对正故有此要求*/ for(i=0;i 第 13 页 共 18 页 学生成绩管理系统——课程设计报告 STU t; avergescore(); system(\"cls\"); for(i=0;i 第 14 页 共 18 页 学生成绩管理系统——课程设计报告 } /*******统计学生成绩信息,平均分及格率,优秀率,成绩方差****************/ void statistic(void) { STU *p=stu; int i,j; float count=0.0,sum=0.0; system(\"cls\"); for(i=0;i /***************修改学生成绩*****************/ void modify(void) { char a[10]; int i,j; system(\"cls\"); printf(\"请输入需要修改成绩的学生学号\\n\"); 第 15 页 共 18 页 学生成绩管理系统——课程设计报告 scanf(\"%s\ for(i=0;i /*****************添加学生成绩********************/ void add(void) { int a,i,j; system(\"cls\"); printf(\"请输入新增加的学生人数:\\n\"); scanf(\"%d\ n=n+a; for(i=n-a;i 第 16 页 共 18 页 学生成绩管理系统——课程设计报告 char m,a[10]; system(\"cls\"); printf(\"请输入学生学号\\n\"); scanf(\"%s\ for(i=0;i printf(\"删除成绩成功\\n\"); } else printf(\"删除成绩失败\\n\"); } /******************保存学生成绩************************/ void savescore(void) { FILE *fp; int i,flag=1; char m; system(\"cls\"); puts(\"是否保存学生成绩(y/n)\"); scanf(\"%s\ if(m=='y') { if((fp=fopen(\"score.dat\ { printf(\"文件打开失败\\n\"); return; 第 17 页 共 18 页 学生成绩管理系统——课程设计报告 } for(i=0;i 第 18 页 共 18 页 因篇幅问题不能全部显示,请点此查看更多更全内容