当前位置:文档之家› 学生成绩管理系统设计毕业论文

学生成绩管理系统设计毕业论文

学生成绩管理系统设计毕业论文目录一、系统功能简介------------------------------------------------------------------2二、小组成员完成的工作--------------------------------------------------------3三、系统设计分析------------------------------------------------------------------3四、系统的调试过程---------------------------------------------------------------6五、工程总结-------------------------------------------------------------------------12六、附录(源程序代码)--------------------------------------------------------13共22页一、系统功能简介1、进入主界面按系统提示选择相应的功能。

2、输入功能:将学生的、学号、性别、联系方式以及本学期各门课的成绩都输入进系统。

3、排序功能:所有学生的本学期成绩进行比较,然后按照分数从高到低进行排序。

4、查询功能:可以分为按学号和按两种方式进行查询出学生本学期的成绩以及其他有关的信息。

5、修改功能:可以根据学生学号查找到需要修改的学生的所有信息,然后可以对学生的信息做一个重置。

6、删除功能:通过学号定位,然后删除该学生的所有信息。

7、成绩保存:将学生的成绩信息以文件的形式保存下来。

8、成绩统计:统计每门课的最高、最低成绩以及不及格人数。

二、工作三、系统设计分析1、系统功能模块结构图:本系统是由成绩输入、成绩排序、成绩查询、信息修改、信息删除、成绩保存、成绩统计以及退出程序这8个功能模块组成,其总体结构图如下:学生成绩管理系统2、核心数据结构设计1)头文件说明:#include<stdio.h>#include<string.h>#include<conio.h>#include<process.h> 2)函数的编写:定义结构类型;定义全局变量;定义、编写输入函数;定义、编写排序函数;定义、编写查询函数;定义、编写修改函数;定义、编写删除函数;定义、编写保存函数;定义、编写统计函数;+3)算法描述(主函数流程图)四、系统调试过程(包括截图)1.1 进入选择菜单图1. 根据要求选择相应功能后的数字 1.2输入信息图2. 输入学生信息1.3、成绩排序图3、将学生信息按照学生的课程平均分排序1.4、成绩查寻图4、按两种方式查找图5、按学号查找图6、按查找1.5、信息修改图7、信息重新录入1.6、信息删除图8、删除信息1.7、成绩保存图9、信息保存1.8成绩统计图10、统计成绩情况五、工程总结通过这次的工程设实践让我加深了对C语言的了解,而不仅仅局限于课本上的那些知识,平时乏味的课程,通过自己亲自的动手编写,变得生动有趣,而在自己动手的过程中,也出现的问题很多,比理论要难的多,当一个函数写完以后,会出现很多问题无法解决。

不过,通过自己在网上查找资料,有很多问题也就引刃而解了。

逐渐积累了一些经验,有些问题也能一眼找到并解决。

通过本次的工程实践,我初步学会了程序设计的基本方法,学会了怎样去鉴别别人的方法和经验,指导了如何去查资料去整合处理这些资料的能力,这为以后的大学毕业设计论文打下了一个初步的基础,使我收益最大的是享受到了一种成功的喜悦。

系统的编写再到调试,其中调试是最枯燥的,出现过大量的逻辑错误,常常会因为一点小小的逻辑错误而在编译失败和再次修改的漫漫循环之路中。

但失败越多,对人的考验也就越多,在编译运行成功后获得的喜悦也就会越多,另外在调试程序的过程中不断的运用和思考学过的知识,对自己也是有很大的提高的。

最后我想总结的是,以后不管写什么程序都需要先对程序即将完成什么功能而思考它的运行流程,然后再编写,这样有目的地去做会事半功倍,当然,有不懂得地方就需要及时的去查。

六、附录#include<stdio.h>#include<string.h>#include<conio.h>#include<process.h>#define N 100 //定义学生个数围#define M 3 //定义学科门typedef struct student{char name[20];char number[100];char sex[20];char tel[10];float score[M];float aver;float total;}STU;STU stu[N];int p;void menu(void);void inputscore(void);void statistic(void);void order(void);void scoresearch(void);void modify(void);void del(void);void aver(void);void savescore(void);void numbersearch(void);void namesearch(void);void main(){short int flag=1;menu();while(flag!=0){switch(getch()){case '1':inputscore();break;/*成绩输入*/case '2':order();break;/*成绩排序*/case '3':scoresearch();break;/*成绩查询*/case '4':modify();break;/*修改信息*/case '5':del();break;/*删除信息*/case '6':savescore();break;/*成绩保存*/case '7':statistic();break;/*成绩统计*/case '8':exit(0);/*退出程序*/default:printf("输入错误!");}printf("按任意键继续\n");getch();menu();}}void menu(){system("cls");printf("************************欢迎进入学生成绩管理系统********************\n");printf("\n");printf("\t成绩输入---------------------------------------1\n");printf("\t成绩排序---------------------------------------2\n");printf("\t成绩查询---------------------------------------3\n");printf("\t修改信息---------------------------------------4\n");printf("\t删除信息---------------------------------------5\n");printf("\t成绩保存---------------------------------------6\n");printf("\t成绩统计---------------------------------------7\n");printf("\t退出程序---------------------------------------8\n");printf("\n");printf("************************************ *******************************\n");printf("请输入相应功能后的序号\n");}void inputscore(void){int i,j;system("cls");printf("请输入学生数:");scanf("%d",&p);printf("请输入相关学生信息:\n");for(i=0;i<p;i++){printf("请输入第%d个学生的:\n",i+1);scanf("%s",&stu[i].name);printf("请输入该学生的性别:\n");scanf("%s",&stu[i].sex);printf("请输入该学生的学号:\n");scanf("%s",&stu[i].number);printf("请输入该学生的联系方式:\n");scanf("%s",&stu[i].tel);printf("高数\t大物\tC语言(请以小数形式输入!)\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);/*请以小数形式输入。

这里要注意是%f因为结构体申明的是float型之后输入需要注意*/}printf("成功输入!\n");}void statistic(void){int i,j,n;float s,k,max,min,t;system("cls");printf("\t\t高数\t大物\tC语言\n");printf("\n不及格人数\t");for(j=0;j<M;j++){n=0;for(i=0;i<p;i++){if(stu[i].score[j]<60){n+=1;}else{continue;}}printf("%d\t",n);}printf("\n课程平均分\t");for(j=0;j<M;j++){k=0;for(i=0;i<p;i++){k+=stu[i].score[j];}s=k/p;printf("%4.2f\t",s);}printf("\n课程最高分\t");for(j=0;j<M;j++){max=stu[0].score[j];//stu[0].score[j]for(i=0;i<p-1;i++){if(max<stu[i+1].score[j])//stu[i+1].score[j] {t=max;max=stu[i+1].score[j];stu[i+1].score[j]=t;}}printf("%4.2f\t",max);}printf("\n课程最低分\t");for(j=0;j<M;j++){min=stu[0].score[j];for(i=0;i<p-1;i++)if(min>stu[i+1].score[j]){t=min;min=stu[i+1].score[j];stu[i+1].score[j]=t;}printf("%4.2f\t",min);}printf("\n\n");}void aver(){int i,j;for(i=0;i<p;i++){stu[i].aver=0;for(j=0;j<M;j++){stu[i].aver+=stu[i].score[j];}stu[i].aver=stu[i].aver/M;}}void order(){int i,j,k;STU t;aver();system("cls");for(i=0;i<p-1;i++){for(k=i,j=i+1;j<p;j++){if(stu[j].aver>stu[k].aver)k=j;}if(k!=j){t=stu[k];stu[k]=stu[i];stu[i]=t;}}printf("名次\t\t性别\t学号\t\t联系方式\t\t 高数\t大物\tC语言\t平均分\n");for(i=0;i<p;i++){printf("%d\t%s\t%s\t%s\t%s\t\t",i+1,stu[i].n ame,stu[i].sex,stu[i].number,stu[i].tel);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].aver);printf("\n");}}void numbersearch(){int i,j;char a[100];aver();order();system("cls");printf("请输入学号:");scanf("%s",&a);for(i=0;i<p;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t\t性别\t学号\t\t联系方式\t\t高数\t大物\tC语言\t平均分\n");printf("%d\t%s\t%s\t%s\t%s\t\t",i+1,stu[i].n ame,stu[i].sex,stu[i].number,stu[i].tel);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].aver);printf("\n");break;}}if(i==p)printf("未找到该学生信息!\n");}void namesearch(){int i,j;char a[100];aver();order();system("cls");printf("请输入:");scanf("%s",&a);for(i=0;i<p;i++){if(strcmp(a,stu[i].name)==0){printf("名次\t\t性别\t学号\t\t联系方式\t\t高数\t大物\tC语言\t平均分\n");printf("%d\t%s\t%s\t%s\t%s\t\t",i+1,stu[i].n ame,stu[i].sex,stu[i].number,stu[i].tel);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].aver);printf("\n");break;}}if(i==p)printf("未找到该学生信息!\n");}void scoresearch(){system("cls");printf("请选择按学号查找或按查找:\n");printf("学号查找---------1\n");printf("查找---------2\n");switch(getch()){case '1':numbersearch();break;case '2':namesearch();break;default:printf("请输入1或2\n");}}void modify(){char a[100];int i,j;system("cls");printf("请输入你要修改的学生的学号:");scanf("%s",a);for(i=0;i<p;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t\t性别\t学号\t\t联系方式\t\t高数\t大物\tC语言\t平均分\n");printf("%d\t%s\t%s\t%s\t%s\t\t",i+1,stu[i].n ame,stu[i].sex,stu[i].number,stu[i].tel);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].aver);printf("\n");printf("请重新输入该学生信息:\n");printf("请输入该学生的:\n");scanf("%s",&stu[i].name);printf("请输入该学生的性别:\n");scanf("%s",&stu[i].sex);printf("请输入该学生的学号:\n");scanf("%s",&stu[i].number);printf("请输入该学生的联系方式:\n");scanf("%s",&stu[i].tel);printf("高数\t大物\tC语言(请以小数形式输入!)\n");for(j=0;j<M;j++)scanf("%f",&stu[i].score[j]);printf("修改成功!");break;}elseprintf("系统无该学生信息!\n");}}void del(){int i,j,c;char a[100],m;system("cls");printf("请输入需要删除的学生信息的学生学号:\n");scanf("%s",&a);for(i=0;i<p;i++){if(strcmp(a,stu[i].number)==0){printf("名次\t\t性别\t学号\t\t联系方式\t\t高数\t大物\tC语言\t平均分\n");printf("%d\t%s\t%s\t%s\t%s\t\t",i+1,stu[i].n ame,stu[i].sex,stu[i].number,stu[i].tel);for(j=0;j<M;j++)printf("%4.2f\t",stu[i].score[j]);printf("%4.2f\t",stu[i].aver);printf("\n");c=i;break;}elseprintf("未找到该学生信息!\n");}printf("是否删除该学生信息?(y/n)\n");scanf("%s",&m);if(m=='y'){for(i=c;i<p-1;i++)stu[i]=stu[i+1];p=p-1;printf("删除成功!");}elseprintf("删除失败!");}void savescore(){FILE *fp;int i,flag=1;char m;system("cls");puts("是否保存成绩?(y/n)");scanf("%s",&m);if(m=='y'){if((fp=fopen("score.dat","wb"))==NULL){printf("文件打开失败!\n");return ;}for(i=0;i<p;i++){if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1){printf("保存失败!\n");flag=0;}if(flag==1)printf("保存成功!\n");fclose(fp);}}elsereturn;}。

相关主题