沈阳师范大学科信软件学院小学期课程设计报告课题名称:学生成绩管理系统设计姓名:杨先勇学号:12008065专业年级:2012级软件工程2班指导教师:张丽娜2014年6月26日课程设计报告:学生成绩管理系统设计编程语言:C一、系统需求学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。
主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单二、要求使用二进制文件方式存储数据,系统以菜单方式工作三、设计目的(1)能完成对学生成绩的录入(2)能按班级统计学生的成绩,求学生的总分及平均分,排序(3)能按班级,学期输出学生的成绩单和不及格科目及学生名单(4)能查询单个学生成绩(5)能修改单个学生信息四、结构图五、程序代码#include <stdlib.h> /*定义结构体*/ #include <stdio.h>#include <string.h>#define NUM 100struct student{ int term;int num;int classes;char name[10];int score[4];int sum;double average;}stu[NUM];void print1();void print2();void zcd();void input() /*输入信息函数*/ {system("cls");int i;char a;for(i=0;i<NUM;i++){ printf(" \n请输入学生的学期:");scanf("%d",&stu[i].term);printf(" \n请输入学生的学号:");fflush(stdin);scanf("%d",&stu[i].num);printf(" \n请输入学生的班级:");scanf("%d",&stu[i].classes);printf("\n请输入学生的姓名:");scanf("%s", stu[i].name) ;printf("\n请输入学生的语文成绩:");scanf("%d",&stu[i].score[0]);printf("\n请输入学生的数学成绩:");scanf("%d", &stu[i].score[1]);printf("\n请输入学生的英语成绩:");scanf("%d", &stu[i].score[2]);printf("\n请输入学生的计算机成绩:");scanf("%d", &stu[i].score[3]);stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].sc ore[3];//算总分和平均stu[i].average=(float)stu[i].sum/4.0;printf("是否要继续添加(按N&n退出)");fflush(stdin);a=getchar();if(a=='n'||a=='N')break;}}void search() /*查找并显示一个记录*/{system("cls");/*清屏*/int number=0,i;printf("\t\t\t 请输入要查找学生的学号:");scanf("%d",&number);printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n");for(i=0;i<NUM;i++)if(number==stu[i].num) break;/*查找判断*/if(i<NUM){printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].n ame,stu[i].classes,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/ }elseprintf("没找到该学生的信息\n");system("pause");}void print() /*按学期、按班级输出成绩函数*/{system("cls");char a;printf("1、按学期输出\n");printf("2、按班级输出\n");printf("3、返回\n");fflush(stdin);a=getchar();switch(a){case '1':print1();case '2':print2();case '3':zcd();default:print();}}void print1()//按学期{int i,m;printf("请输入学期:\n");scanf("%d",&m);printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n");for(i=0;i<NUM;i++){if(m==stu[i].term)printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu [i].classes,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/ }system("pause");system("cls");print();}void print2()//按班级{int i,j,k;printf("请输入班级:\n");scanf("%d",&k);printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n");for(i=0;i<NUM;i++){if(k==stu[i].classes){stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].score[3];stu[i].average=stu[i].sum/4.0;printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu[i].classes,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[i].sum,stu[i].average); /*输出学生信息*/}}printf("输出不及格学生名单及成绩:\n");printf("学号\t姓名\t班级语文数学英语计算机 \n");for(i=0;i<NUM;i++){for(j=0;j<4;j++){if(stu[i].score[j]<60&&k==stu[i].classes) /*输出不及格学生名单及成绩*/printf("%d\t%s\t%d%5d%5d%5d%6d\n",stu[i].num,stu[i].name,stu[i].classes,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3]);break;}}system("pause");system("cls");print();}void modify() /*修改成绩函数*/{system("cls");int number,i;printf("\t\t\t请输入要修改信息的学生学号:");scanf("\t\t\t%d",&number);for(i=0;i<NUM;i++)if(number=stu[i].num) break;/*查找判断*/if(i<NUM)/*查找判断*/{printf("请输入修改后的学生的信息:");printf(" \n请输入学生的学期:");scanf("%d",&stu[i].term);printf(" \n请输入学生的学号:");fflush(stdin);scanf("%d",&stu[i].num);printf(" \n请输入学生的班级:");scanf("%d",&stu[i].classes);printf("\n请输入学生的姓名:");scanf("%s", stu[i].name) ;printf("\n请输入学生的语文成绩:");scanf("%d",&stu[i].score[0]);printf("\n请输入学生的数学成绩:");scanf("%d", &stu[i].score[1]);printf("\n请输入学生的英语成绩:");scanf("%d", &stu[i].score[2]);printf("\n请输入学生的计算机成绩:");scanf("%d", &stu[i].score[3]);}elseprintf("没找到该学生的信息\n");system("paues");system("cls");zcd();}void sort() /*排序并显示函数*/{int i,j=0;int temp;for(i=0;i<NUM;i++){stu[i].sum=stu[i].score[0]+stu[i].score[1]+stu[i].score[2]+stu[i].sc ore[3];stu[i].average=(float)stu[i].sum/4.0;}for(i=0;i<NUM-1;i++){for(j=i+1;j<NUM;j++){if(stu[i].sum<stu[j].sum){temp=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=temp;}}}printf("学号\t姓名\t班级语文数学英语计算机总分平均分\n"); for(i=0;i<NUM;i++)printf("%d\t%s\t%d%5d%5d%5d%6d%7d%8.2f\n",stu[i].num,stu[i].name,stu [i].classes,stu[i].score[0],stu[i].score[1],stu[i].score[2],stu[i].score[3],stu[ i].sum,stu[i].average);/*输出学生信息*/system("pause");system("cls");print();}void zcd(){int n=0;char m;system("cls");/*清屏*/printf("按任一键进入主菜单\n "); /*按任意键进入主菜单*/printf("************************************************************ ********************\n");printf("\t\t沈阳师范大学软件学院欢迎您\n");printf("\n\t\t\t--------- 欢迎您使用学生管理系统\n\n\t\t\t\t\t-----------\n");printf("*************************************MENU******************* ********************\n");printf("\t\t\t1. 输入学生成绩记录 Input the record\n"); /*输入学生成绩记录*/printf("\t\t\t2. 排序并显示 Sort to make new a file\n"); /*排序*/printf("\t\t\t3. 按班级显示成绩单 Print the record\n"); /*显示*/printf("\t\t\t4. 查找个人成绩 Search record on name\n"); /*查找*/printf("\t\t\t5. 修改 Modify a record\n"); /*修改*/printf("\t\t\t6. 退出 Quit\n"); /*退出*/printf("************************************************************ ********************\n");printf("\n\t\t\t输入你的选择Enter your choice(1~7):");fflush(stdin);m=getchar();do{switch(m){case '1':input();zcd();break;case '2':sort();system("pause");zcd();break;case '3':print();system("pause");break;case '4':search();zcd();break;case '5':modify();system("pause");zcd();break;case '6':exit(0); /*如菜单返回值为7则程序结束*/ default:printf("错误命令"); getchar();zcd();}} while(1);}void main(){zcd();}六、调试与运行主菜单成绩录入统计排序输出成绩学号姓名班级语文数学英语计算机总分平均分2 2 2 22 22 22 2 68 17 8 8 8 8 9 9 9 35 8.75 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00 0 0 0 0 0 0 0 0 0.00查找修改请输入要修改信息的学生学号:02请输入修改后的学生的信息请输入学生的学期:2请输入学生的学号:34请输入学生的班级:3请输入学生的姓名:yangyong请输入学生的语文成绩:45请输入学生的数学成绩:56请输入学生的英语成绩:78请输入学生的计算机成绩:66七、设计总结经过几周的课程设计,我学到了很多东西:①巩固和加深了对编程的理解,提高综合运用本课程所学知识的能力。