学生成绩管理系统高质量C语言程序_第1页
学生成绩管理系统高质量C语言程序_第2页
学生成绩管理系统高质量C语言程序_第3页
学生成绩管理系统高质量C语言程序_第4页
学生成绩管理系统高质量C语言程序_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 学生成绩管理系统摘要:学生成绩管理系统是学校不可或缺的一个组成部分,随着计算机技术的逐渐发展,计算机在教育系统中的应用得到了巨大的发展。教务管理正在逐步迈向管理信息现代化。但是我国的教务管理信息化水平还处在初级阶段,主要表现在对学生的成绩管理、学生的课程管理还是采用原有的人工管理方式。学校的规模不断扩大,学生数量急剧增加,有关学生的各种数据也成倍增长。面对庞大的信息量, 这时的人工管理几乎无法实现,在这种情况下用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有教务管理系统来提高学生成绩管理工作的效率。过这样的系统,可以做到信息的规范管理,科学统计和快速的查询,从而减少管理方面的工

2、作量和减少人为的错误。 本次我们组选的就是学生成绩管理系统,要实现对学生成绩、课程的相关管理。关键词:成绩管理、C语言项目、程序设计、程序分析目 录1.设计目的和要求1.1目的1.2要求2.总体设计2.1模块设计2.2类的分析与设计3.详细设计3.1修改数据功能模块设计3.1.1详细功能描述3.1.2设计思想3.1.3主要代码3.2删除数据功能模块设计3.2.1详细功能描述3.2.2设计思想3.2.3主要代码3.3增加数据功能模块设计3.3.1详细功能描述3.3.2设计思想3.3.3主要代码4.调试分析4.1修改数据功能4.2删除数据功能4.3增加数据功能5.总结6.答辩记录7.教师意见1、设

3、计目的和要求1.1目的以本班同学的高等数学、大学物理、C语言、大学英语的成绩为基础,建立一个可以实现以下功能的学生成绩管理系统。1.2要求A信息维护信息数据以文件形式保存,要求能够实现对学生信息数据的维护,其中包括增加、删除以及修改学生信息。B信息查询要求能够能够实现按学生姓名和学号两种方式查询学生各课成绩。C成绩统计输入任意课程名和一个分数段,统计该课程在该分数段的学生信息。D成绩排序对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果。2、总体设计2.1模块设计根据设计目的和要求,我们首先将程序分成四个模块,分别为信息维护、信息查询、成绩统计及成绩排序。而在各个主模块中,我们

4、又将其分成若干个小模块,从而实现程序设计的要求。其中,模块设计如下:信息维护1、增加学生信息2、删除学生信息3、修改学生信息;信息查询-1、按学号查询2、按姓名查询;成绩统计;成绩排序1、按高数排序2、按大物排序3、按C语言排序4、按英语排序。所以最终实现的功能有:1、增加学生信息2、删除学生信息3、修改学生信息4、按学号查询成绩5、按姓名查询成绩6、成绩按某门课程某个分数段统计7、成绩按某门课程排序。一个方便学校使用的学生成绩管理系统,这个系统的功能比较完善。使用类内函数和主函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。该系统能实现7项功能。设计本次实验所用到的知识点

5、有:类、指针、数组,构造函数,动态内存分配,switch语句、if语句、while()语句等。2.2类的分析与设计student类中的构造函数是来实现当类生成对象时用于对数据的初始化。例如是对学生姓名的初始化,stud.math是对学生高等数学成绩的初始化,而stud.Clanguage是对学生c语言成绩的初始化。而student类将有内在联系的,成组出现的学生姓名,学号,各科成绩结合在一起,形成一种组合型数据结构。 3详细设计3.1修改数据功能模块设计3.1.1详细功能描述该部分是用来修改已录入的学生的数据信息。3.1.2设计思想我们采用通过学号修改的方法来修改已录入的学生

6、的数据信息。当输入学生学号后,系统会提示“请选择您要修改的内容:”同时给出要修改的选项,包括姓名高数、大物、c语言、英语、及退出供您选择。当做出选择后,会得到“请输入新数据”的提示。该部分通过if语句、switch语句和while语句实现其功能。3.1.3主要代码void xiugai(struct Student_type stud) /*修改*/ int i=0,choice; int u; printf("请输入您要修改的学生的学号:n"); scanf("%s",&u); for(i=0;i<SIZE;i+) printf(&quo

7、t;请选择您要修改的内容:n"); printf(" - n"); printf("| 姓名 请按 1 |n"); printf("| 高数 请按 2 |n"); printf("| 大物 请按 3 |n"); printf("| c语言 请按 4 |n"); printf("| 英语 请按 5 |n"); printf("| 退出 请按 0|n"); printf("+-+n"); printf("请输入您的选择:

8、"); scanf("%d", &choice);switch(choice)case 0:break; case 1: printf("请输入新姓名:"); scanf("%s", ); break; case 2: printf("请输入新的高数分数:"); scanf("%d", &studi.math); break;case 3: printf("请输入新的大物分数:"); scanf("%d",&a

9、mp;studi.physic); break;case 4: printf("请输入新的c语言分数:"); scanf("%d", &studi.Clanguage); break; case 5: printf("请输入新的英语分数:"); scanf("%d", &studi.English); break; default: printf("n无效选项!"); break;break; printf("修改成功n");for(i=0;i<SIZE

10、;i+)printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);3.2删除数据功能模块设计3.2.1详细功能描述该部分是用来删除已录入的学生的数据信息。3.2.2设计思想我们采用按姓名查找,删除一条记录的方法实现删除功能。首先,输入要删除记录的名字,然后通过if语句和strcmp函数找到对应的数据,最后借用strcpy函数一一将下一数据的值覆盖到上一个数据,从而实现删除数据的的功能。该部分通过if语句和strcmp函数

11、以及strcpy函数实现其功能。3.2.3主要代码void shanchu() /*按姓名查找,删除一条记录*/ char s10; int j,i=0; printf("输入要删除记录的姓名:"); scanf("%s",s);for(i=0;i<SIZE-1;i+)if(strcmp(,s)=0)for(j=i;j<SIZE;j+) /*删除操作*/ studj.num=studj+1.num;strcpy(,studj+1.name); studj.physic=studj+1.physic; s

12、tudj.math=studj+1.math; studj.Clanguage=studj+1.Clanguage; studj.English=studj+1.English;printf("Delete Successed!n");saved();for(i=0;i<SIZE;i+)printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);3.3增加数据功能模块设计3.3.1详细功能描述 该

13、部分是用来新增学生的数据信息。3.3.2设计思想首先设计一个save函数,先打开文件数据库,能够实现保存并关闭文件后,通过fread写入一组数据,从而达到新增数据的目的。3.3.3主要代码void save()FILE *fp;int i;if(fp=fopen("chengjidan.dat","ab")=NULL)printf("can open filen");return;if(fwrite(&studSIZE,sizeof(struct Student_type),1,fp)!=1)printf("file

14、 write errorn");fclose(fp);printf("添加成功n");for(i=0;i<SIZE+1;i+)fread (&studi,sizeof(struct Student_type),1,fp);printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void zengjia()printf("请输入新学生信息n");scanf(

15、"%s%d%d%d%d%d",studSIZE.name,&studSIZE.num,&studSIZE.math,&studSIZE.physic,&studSIZE.Clanguage,&studSIZE.English);save();4、调试分析4.1修改数据功能修改数据功能如下图:4.2删除数据功能删除数据功能如下图:4.3增加数据功能增加数据功能如下图:5、总结本学生成绩管理系统能够实现增加,修改,删除记录的信息维护功能、按姓名,学号查询学生成绩信息功能、某一课程在某一分数段的统计功能及某一课程的排序功能。编好程序,运行完

16、毕后,我们也发现了一些缺陷。比如,修改只能通过输入学号对该记录数据组进行修改,而删除也只做了输入学号删除记录的设定。当然,缺憾是补课避免的。总体上来讲,计算机综合课程设计上完了,完成了一个基本的学生成绩管理系统,从系统需求分析、数据库设计开始到系统的设计实施,逐步熟悉了c语言程序设计。 在组长的带领下我们经过了好几周的时间反复编写和调试程序,从课本和网上查阅相关资料,终于完成了整个课程设计。过程中,也遇到不少困难,如编程逻辑把握不住,经验太少,不太善于调试程序等。不过我们还是一步一步的自己动手做,不会的地方参考别人的程序自己再试着写或请教老师,在此过程中收获多多。6、答辩记录7、教师意见附录:

17、#include <stdio.h>#include <stdlib.h>#include<string.h>#define SIZE 5struct Student_typechar name10;int num;int math;int physic;int Clanguage;int English;studSIZE;int weihuxuanze()int i;printf("*1.增加学生信息*");printf("t*2.删除学生信息*n");printf("*3.修改学生信息*");p

18、rintf("*请选择你所需的功能的序号*n");scanf("%d",&i);return i;void saved()FILE *fp;int i;if(fp=fopen("chengjidan.dat","wb")=NULL)printf("can open filen");return;for(i=0;i<SIZE;i+)if(fwrite(&studi,sizeof(struct Student_type),1,fp)!=1)printf("file w

19、rite errorn");fclose(fp);void save()FILE *fp;int i;if(fp=fopen("chengjidan.dat","ab")=NULL)printf("can open filen");return;if(fwrite(&studSIZE,sizeof(struct Student_type),1,fp)!=1)printf("file write errorn");fclose(fp);printf("添加成功n");for(i=

20、0;i<SIZE+1;i+)fread (&studi,sizeof(struct Student_type),1,fp);printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void zengjia()printf("请输入新学生信息n");scanf("%s%d%d%d%d%d",studSIZE.name,&studSIZE.num,&st

21、udSIZE.math,&studSIZE.physic,&studSIZE.Clanguage,&studSIZE.English);save();void xiugai(struct Student_type stud) /*修改*/ int i=0,choice; int u; printf("请输入您要修改的学生的学号:n"); scanf("%s",&u); for(i=0;i<SIZE;i+) printf("请选择您要修改的内容:n"); printf(" - n"

22、;); printf("| 姓名 请按 1 |n"); printf("| 高数 请按 2 |n"); printf("| 大物 请按 3 |n"); printf("| c语言 请按 4 |n"); printf("| 英语 请按 5 |n"); printf("| 退出 请按 0|n"); printf("+-+n"); printf("请输入您的选择:"); scanf("%d", &choice);s

23、witch(choice)case 0:break; case 1: printf("请输入新姓名:"); scanf("%s", ); break; case 2: printf("请输入新的高数分数:"); scanf("%d", &studi.math); break;case 3: printf("请输入新的大物分数:"); scanf("%d",&studi.physic); break;case 4: printf("

24、请输入新的c语言分数:"); scanf("%d", &studi.Clanguage); break; case 5: printf("请输入新的英语分数:"); scanf("%d", &studi.English); break; default: printf("n无效选项!"); break;break; printf("修改成功n");for(i=0;i<SIZE;i+)printf("%-10s%8d%4d%4d%4d%4dn",

25、,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void shanchu() /*按姓名查找,删除一条记录*/ char s10; int j,i=0; printf("输入要删除记录的姓名:"); scanf("%s",s);for(i=0;i<SIZE-1;i+)if(strcmp(,s)=0)for(j=i;j<SIZE;j+) /*删除操作*/ studj.num=studj+1.num;strcpy(studj

26、.name,studj+1.name); studj.physic=studj+1.physic; studj.math=studj+1.math; studj.Clanguage=studj+1.Clanguage; studj.English=studj+1.English;printf("Delete Successed!n");saved();for(i=0;i<SIZE;i+)printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.

27、Clanguage,studi.English);void paixu_math(struct Student_type stud) /*按高树成绩排序*/ int i,j,k=0,p,q,r,w;double y;char x10;int t;for(i=0;i<SIZE-1;i+)/*选择法法排序*/ k=i;for(j=i+1;j<SIZE;j+) if(studj.math>studk.math)k=j;p=studi.physic;studi.physic=studk.physic;studk.physic=p;q=studi.math;studi.math=stu

28、dk.math;studk.math=q;r=studi.English;studi.English=studk.English;studk.English=r;w=studi.Clanguage;studi.Clanguage=studk.Clanguage;studk.Clanguage=w;t=studi.num;studi.num=studk.num;studk.num=t;strcpy(x,);strcpy(,);strcpy(,x);for(i=0;i<SIZE;i+)printf("%

29、-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void paixu_physic(struct Student_type stud) /*按大物成绩排序*/ int i,j,k=0,p,q,r,w;double y;char x10;int t;for(i=0;i<SIZE-1;i+)/*选择法法排序*/ k=i;for(j=i+1;j<SIZE;j+) if(studj.physic>studk.physic)k=j

30、;p=studi.physic;studi.physic=studk.physic;studk.physic=p;q=studi.math;studi.math=studk.math;studk.math=q;r=studi.English;studi.English=studk.English;studk.English=r;w=studi.Clanguage;studi.Clanguage=studk.Clanguage;studk.Clanguage=w;t=studi.num;studi.num=studk.num;studk.num=t;strcpy(x,);st

31、rcpy(,);strcpy(,x);for(i=0;i<SIZE;i+)printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void paixu_Clanguage(struct Student_type stud) /*按C语言成绩排序*/ int i,j,k=0,p,q,r,w;double y;char x10;int t;for(i=0;i

32、<SIZE-1;i+)/*选择法法排序*/ k=i;for(j=i+1;j<SIZE;j+) if(studj.Clanguage>studk.Clanguage)k=j;p=studi.physic;studi.physic=studk.physic;studk.physic=p;q=studi.math;studi.math=studk.math;studk.math=q;r=studi.English;studi.English=studk.English;studk.English=r;w=studi.Clanguage;studi.Clanguage=studk.C

33、language;studk.Clanguage=w;t=studi.num;studi.num=studk.num;studk.num=t;strcpy(x,);strcpy(,);strcpy(,x);for(i=0;i<SIZE;i+)printf("%-10s%8d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void paixu_English(

34、struct Student_type stud) /*按英语成绩排序*/ int i,j,k=0,p,q,r,w;double y;char x10;int t;for(i=0;i<SIZE-1;i+)/*选择法法排序*/ k=i;for(j=i+1;j<SIZE;j+) if(studj.English>studk.English)k=j;p=studi.physic;studi.physic=studk.physic;studk.physic=p;q=studi.math;studi.math=studk.math;studk.math=q;r=studi.Englis

35、h;studi.English=studk.English;studk.English=r;w=studi.Clanguage;studi.Clanguage=studk.Clanguage;studk.Clanguage=w;t=studi.num;studi.num=studk.num;studk.num=t;strcpy(x,);strcpy(,);strcpy(,x);for(i=0;i<SIZE;i+)printf("%-10s%8d%4d%4d%4d%4dn",studi.na

36、me,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English);void tongji(struct Student_type stud) /按分数段统计人数 int i,j,a,max,min,k,l,q,p,w; k=0,l=0,p=0,q=0,w=0; printf("你想统计哪科成绩: 1高数 2大物 3C语言 4英语 n"); scanf("%d",&j); printf("请输入两个分数:n"); scanf("%d%d",

37、&max,&min); if(max<min) a=max;max=min;min=a; if(j=1)for(i=0;i<SIZE;i+) if(studi.math>min&&studi.math<max)k+;printf("%-8s%4d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English); else if(j=2)for(i=0;i<SIZE;i+) if(studi.phys

38、ic>min&&studi.physic<max)l+;printf("%-8s%4d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English); else if(j=3)for(i=0;i<SIZE;i+) if(studi.Clanguage>min&&studi.Clanguage<max)p+;printf("%-8s%4d%4d%4d%4d%4dn",studi.

39、name,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English); else if(j=4) for(i=0;i<SIZE;i+) if(studi.English>min&&studi.English<max) q+;printf("%-8s%4d%4d%4d%4d%4dn",,studi.num,studi.math,studi.physic,studi.Clanguage,studi.English); printf("分数段的人数

40、为 :%d",w);int paixuxuanze()int i;printf("*1.按高数排序*");printf("t*2.按大物排序*n");printf("*3.按C语言排序*");printf("t*4.按英语排序*n");printf("*请选择你所需的功能的序号*n");scanf("%d",&i);return i;int zhucaidan()int i;printf("t*学生成绩管理系统*n");printf(&q

41、uot;*1.学生信息维护*");printf("t*2.学生成绩查询*n");printf("*3.学生成绩统计*");printf("t*4.学生成绩排序*n");printf("*请选择你所需的功能的序号*n");scanf("%d",&i);return i;int chaxunxuanze()int i; printf("tt1. 按学号查询n"); printf("tt2 .按姓名查询n"); printf("tt按其它数字键退出 n"); scanf("%d",&i)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论