《C语言课程设计-成绩管理系统(20页).docx》由会员分享,可在线阅读,更多相关《C语言课程设计-成绩管理系统(20页).docx(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-C语言课程设计-成绩管理系统-第 20 页成绩管理系统课程设计报告学院:信息科学与技术学院专业:信息管理与信息系统班级:3班指导老师:学号:姓名:目录1.课程设计题目与要求31.1设计题目:31.2设计要求:32.总体设计32.1总体功能框架32.2数据结构概要设计53.详细设计53.1数据结构详细设计53.2系统功能详细设计54.运行结果155.课程设计总结195.1编程中的问题及解决方法195.2小结195.3心得体会205.4程序设计方法20参考文献20附录 源程序211.课程设计题目与要求1.1设计题目:成绩管理系统1.2设计要求:编写一系统,实现学生信息管理,软件的入口界面应包括如
2、下几个方面:(1)信息维护:要求:学生信息数据要以文件的形式保存,能实现学生信息数据维护,此模块包括子模块有,增加学生信息,修改学生信息,删除学生信息。(2)信息查询:要求:查询时可实现按姓名查询,按学号查询。(3)成绩统计:要求:输入任意的一个课程名(如数学)和一个分数段(如60-70),统计出在此分数段的学生情况。(4)排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)。(5)至少采用文本菜单界面(如果能采用图形菜单界面更好)。2.总体设计2.1总体功能框架1:新增学生信息 2:输出学生信息 3:修改学生信息 4:删除学生信息
3、5:按学号查询学生信息 6:按姓名查询学生信息 7:成绩排序 8:成绩统计 0:退出菜单流程图成绩管理系统成绩统计成绩排序按姓名查找学生信息按学号查找学生信息删除学生信息修改学生信息输出学生信息新建学生信息选择要统计的科目输入分数段输出这个科目在这个分数段内的人数选择要排序的科目输出排序后的结果输入要查找学生的姓名,输出要查找学生的信息输入要查找学生的学号,输出要查找学生的信息输入要删除学生的学号,输出删除后的学生信息输入要修改学生的学号,选择要修改的科目,输入修改后的分数输出学生的学号姓名,语文,数学和英语成绩输入学生的学号姓名,语文,数学和英语成绩2.2数据结构概要设计struct stu
4、dent /*学生信息结构类型定义*/studentsMaxsize;3.详细设计3.1数据结构详细设计struct student /*学生信息结构类型定义*/int num; /*学号*/char name10; /*姓名*/int chinese,math,english; /*三门课程成绩*/studentsMaxsize; /*结构变量名表*/变量说明:num 整型变量用来存放学号 name10 字符型变量用来存放学生姓名 Chinese math English 整型变量用来存放三门课成绩 3.2系统功能详细设计void new_student(struct student stu
5、dents) /*新增学生信息*/void output_student(struct student students) /*输出学生信息*/void update_student(struct student students,int num)/*修改学生信息*/ void delect_student(struct student students,int num)/*删除学生信息*/void search1_student(struct student students,int num) /*按学号查找*/void search2_student(struct student stud
6、ents,char name/*按姓名查找*/void sort_student(struct student students) /*成绩排序*/void statistics_student(struct student students) /*成绩统计*/开始 主函数流程图输出主菜单输入选项代号SS=0? YES新建学生信息S=1? NO YES输出学生信息S=2? NO YES NO修改学生信息S=3? YES NOS=4? 删除学生信息 YES NOS=5? 按学号查找学生信息 YES NOS=6? 按姓名学生信息 YES NOS=7? 成绩排序 YES结束 成绩统计 NO 新增学生
7、信息函数流程图开始输入学号输入姓名输入语文成绩输入数学成绩输入英语成绩Count=count+1结束 输出学生信息流程图开始输出没有学生信息Count=0? YES NOFor(i=0;icount;i+)输出学号输出姓名输出语文成绩输出数学成绩输出英语成绩结束 修改学生信息流程图开始输入要修改学生学号选择要修改的科目S输入修改后的分数M输出Not Found!Studentsi.num=num? NO语文成绩=MS=1? YES数学成绩=MS=2? NO YES NO输出修改后的学生信息英语成绩=M结束 删除学生信息函数流程图开始输入要删除学生学号输出No Found!Studentsi.n
8、um=num? NO YES输出删除成功输出删除后学生信息结束 按学号查询学生信息函数流程图开始输入要查询学生学号输出没有学生信息Count=0? YES NO输出No Found!Studentsi.num=num? NO YES输出要查询的学生信息结束 按姓名查找学生信息函数流程图开始Count=0? 输出No Found!输入要查询学生姓名 YES输出没有学生信息Strcmp(s1,s2)=0? NO NO YES输出要查询的学生信息结束 成绩排序函数流程图开始选择排序科目S语文成绩排序S=1? YES YES NO数学成绩排序S=2? YES YES输出所选课程排序后的信息英语成绩排序
9、 NO结束 成绩统计函数流程图开始选择要统计的科目输入要统计的分数段MN统计语文成绩在MN中的人数S=1? YES统计数学成绩在MN中的人数S=2? NO YES NO统计英语成绩在MN中的人数输出统计后的结果结束4.运行结果图1 菜单界面图2 新增学生信息图3 输出学生信息图4 修改学生信息图5 删除学生信息图6 按学号查询学生信息图7 按姓名查询学生信息图8 成绩排序图9 成绩统计5.课程设计总结5.1编程中的问题及解决方法 在制作按学生姓名查询学生信息时采用“=”对两字符串进行比较而使程序不能正常运行经过改正调用字符串比较函数strcmp(s1,s2)对字符串进行比较从而解决了这个问题。
10、5.2小结 这次的课程设计是对我们这一学期C语言程序设计的一个总结与检验,对我来说还是有比较大难度的,在设计的过程中也遇到了许多的问题,这跟平时的知识积累不够,实践不够是有很大的关系的,许多知识都是一知半解,一些定义也不是很清楚,总感觉就是那样的可是一做起来却总是出错。但是通过翻阅书籍,请教别人等方法最终完成了这次的课程设计,同时也锻炼了自己综合所学知识,解决实际问题的能力,达到了学以致用的目的。随着科学技术的不断发展,计算机技术在我们生活中的应用更是无处不在,因此我们更应该学好这门课程掌握好这门课程。5.3心得体会 通过这次的C语言课程设计,我觉的对自己的能力有了很大的提高,不仅培养了自己综
11、合运用所学知识发现,提出,分析和解决实际问题的能力更加增强了自己实践的能力,虽然在编写程序的过程中也遇到了很多的问题有时会因一小点错误而使编译失败重新修改。但是失败的次数越多我们积累的经验就越多。不论在编译过程中经历了多少次的失败但在成功的那一刻我们的心中是喜悦的。不懂就问,多多实践,能够把平时所学的知识拼凑起来完成一个完整的程序,使自己思考问题更加的周密,也使自己更加的有耐心。但是我们对C语言的理解和使用还在一个初级阶段,我们要想掌握它要学习的还有很多,同时要懂得创新而不能一味的模仿别人,许多编程方法都是人们一步一步总结出来的,所以我们也要努力拓展自己的思维,在以后的学习中不断的提高和改进努
12、力去寻求新的方法,以创造出更为完善的应用程序。5.4程序设计方法 采用自顶向下,逐步细化的程序设计方法,以模块化设计为中心。参考文献C语言程序设计基础(第二版) 高等教育出版社附录 源程序#include#include#include#define Maxsize 50struct studentint num;char name10;int chinese,math,english;studentsMaxsize;int count=0;void new_student(struct student students);void output_student(struct student
13、students);void update_student(struct student students,int num);void delect_student(struct student students,int num);void search1_student(struct student students,int num);void search2_student(struct student students,char name10);void sort_student(struct student students);void statistics_student(struc
14、t student students);int main(void) int choice,num; char name10; struct student studntsMaxsize; do 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);
15、 scanf(%d,&choice); switch(choice) case 1:new_student(students); break; case 2:output_student(students); break; case 3:printf(please input the number of update student:); scanf(%d,&num); update_student(students,num); break; case 4:printf(please input the number of delect student:); scanf(%d,&num); d
16、elect_student(students,num); break; case 5:printf(please input the students number:); scanf(%d,&num); search1_student(students,num); break; case 6:printf(please input the students name:); scanf(%s,name); getchar(); search2_student(students,name); break; case 7:sort_student(students); break; case 8:s
17、tatistics_student(students); break; case 0:break; while(choice!=0); printf(END!n); return 0;void new_student(struct student students) struct student s; if(count=Maxsize) printf(The array is full!n); return; printf(Input the students name:); scanf(%s,s.name); printf(Input the students num:); scanf(%d
18、,&s.num); printf(Input the students chinese score:); scanf(%d,&s.chinese); printf(Input the students math score:); scanf(%d,&s.math); printf(Input the students english score:); scanf(%d,&s.english); studentscount=s; count+;void output_student(struct student students) int i; if(count=0) printf(count
19、of students is zero!n); return; printf(nametnumtchinesetmathtenglishn); for(i=0;icount;i+) printf(%st,studentsi.name); printf(%dt,studentsi.num); printf(%dt,studentsi.chinese); printf(%dt,studentsi.math); printf(%dn,studentsi.english);void update_student(struct student students,int num) int i,course
20、,score,flag=0; printf(choice the course:1.chinese 2.math 3.english:); scanf(%d,&course); printf(input the new score:); scanf(%d,&score); for(i=0;icount;i+) if(studentsi.num=num) flag=1; break; if(flag) switch(course) case 1:studentsi.chinese=score;break; case 2:studentsi.math=score;break; case 3:stu
21、dentsi.english=score;break; printf(After update:n); printf(numtnametchinesetmathtenglishn); printf(%dt %st %dt %dt %dn,studentsi.num,studentsi.name,studentsi.chinese,studentsi.math,studentsi.english); else printf(No Found!n);void delect_student(struct student students,int num) int i,j,flag=1; while(
22、flag) for(i=0;icount;i+) if(studentsi.num=num) for(j=i;jcount;j+) studentsj=studentsj+1; printf(删除成功!n); printf(After delect:n); printf(numtchinesetmathtenglishn); for(i=0;icount;i+) printf(%dt %st %dt %dt %dn,studentsi.num,studentsi.name,studentsi.chinese,studentsi.math,studentsi.english); else fla
23、g=0;void search1_student(struct student students,int num) int i,flag=0; if(count=0) printf(count of students is zero!n); return; for(i=0;icount;i+) if(studentsi.num=num) flag=1; break; if(flag) printf(num:%d,studentsi.num); printf(name:%s,studentsi.name); printf(chinese:%d,studentsi.chinese); printf
24、(math:%d,studentsi.math); printf(english:%dn,studentsi.english); else printf(Not Found!);void search2_student(struct student students,char name10) int i,flag=1; if(count=0) printf(count of students is zero!n); return; while(flag) for(i=0;icount;i+) if(strcmp(studentsi.name,name)=0) printf(num:%d,stu
25、dentsi.num); printf(name:%s,studentsi.name); printf(chinese:%d,studentsi.chinese); printf(math:%d,studentsi.math); printf(english:%dn,studentsi.english); else flag=0;void sort_student(struct student students) int i,index,j,select; struct student temp; printf(please input the subject:); printf(select
26、:1.chinese 2.math 3.english:); scanf(%d,&select); switch(select) case 1:for(i=0;icount-1;i+) index=i; for(j=i+1;jstudentsi.chinese) index=j; temp=studentsindex; studentsindex=studentsi; studentsi=temp; printf(numtnametchinesen); for(i=0;icount;i+) printf(%dt%st%dn,studentsi.num,studentsi.name,studen
27、tsi.chinese); break; case 2:for(i=0;icount-1;i+) index=i; for(j=i+1;jstudentsi.math) index=j; temp=studentsindex; studentsindex=studentsi; studentsi=temp; printf(numtnametmathn); for(i=0;icount;i+) printf(%dt%st%dn,studentsi.num,studentsi.name,studentsi.math); break; case 3:for(i=0;icount-1;i+) inde
28、x=i; for(j=i+1;jstudentsi.english) index=j; temp=studentsindex; studentsindex=studentsi; studentsi=temp; printf(numtnametenglishn); for(i=0;icount;i+) printf(%dt%st%dn,studentsi.num,studentsi.name,studentsi.english); break;void statistics_student(struct student students) int m,n,i,select,total=0; pr
29、intf(please input the subject:); printf(select:1.chinese 2.math 3.english:); scanf(%d,&select); printf(please input the score from m to n:); scanf(%d%d,&m,&n); switch(select) case 1:for(i=0;i=m&studentsi.chinese=n) total+; break; case 2:for(i=0;i=m&studentsi.math=n) total+; break; case 3:for(i=0;i=m
30、&studentsi.english=n) total+; break; printf(total=%dn,total);void fileopen(struct student students) int i,chinese,math,english,num; char name10; FILE *fp; if(fp=fopen(学生成绩信息.txt,r+)=NULL) fp=fopen(学生信息.txt,w+); printf(file open error!n); exit(0); for(i=1;i=5;i+) fscanf(fp,%s%d%d%d%d,&name,num,&chine
31、se,&math,&english); printf(%s %d %d %d %d %dn,name,num,chinese,math,english); if(fclose(fp) printf(Can not close the file!n); exit(0);void filesave(struct student students) int i,chinese,math,english,num; char name10; FILE *fp; if(fp=fopen(学生成绩信息.txt,r+)=NULL) printf(file open error!n); exit(0); for(i=1;i=5;i+) fprintf(fp,%d%S%d%d%d,name,num,chinese,math,english); printf(%s %d %d %d %d %dn,name,num,chinese,math,english); if(fclose(fp) printf(Can not close the file!n); exit(0);
限制150内