收藏 分销(赏)

学生成绩标准管理系统高质量C语言程序样本(共25页).docx

上传人:二*** 文档编号:4509918 上传时间:2024-09-26 格式:DOCX 页数:20 大小:80.49KB 下载积分:5 金币
下载 相关 举报
学生成绩标准管理系统高质量C语言程序样本(共25页).docx_第1页
第1页 / 共20页
本文档共20页,全文阅读请下载到手机保存,查看更方便
资源描述
学生成绩标准管理系统高质量C语1=1 mi言程序 5、总结 本学生成绩管理系统能够实现增加,修改,删除记录的信息维护功能、按姓名,学号查 询学生成绩信息功能、某一课程在某一分数段的统计功能及某一课程的排序功能。编好程序, 运行完毕后,我们也发现了一些缺陷。比如,修改只能通过输入学号对该记录数据组进行修 改,而删除也只做了输入学号删除记录的设定。 当然,缺憾是补课避免的。总体上来讲,计算机综合课程设计上完了,完成了一个基本 的学生成绩管理系统,从系统需求分析、数据库设计开始到系统的设计实施,逐步熟悉了 c 语言程序设计。在组长的带领下我们经过了好几周的时间反复编写和调试程序,从课本和网 上查阅相关资料,终于完成了整个课程设计。过程中,也遇到不少困难,如编程逻辑把握不 住,经验太少,不太善于调试程序等。不过我们还是一步一步的自己动手做,不会的地方参 考别人的程序自己再试着写或请教老师,在此过程中收获多多。 6、答辩记录7、教师意见 附录:^include <>^include <> #include<>#define SIZE 5 struct Student_type( char name[10]; int num; int math; int physic; int Clanguage; int English;) stud[SIZE];int weihuxuanze () ( int i; printf("**”); printf("\t**\n"); printf("**”); printf (〃*请选择你所需的功能的序号*\n"); scanf &i); return i;}void saved () FILE *fp; int i: if ((fp=fopen"wb")) ==NULL) printf(*can open file\n"); return; ) for(i=0;i<SIZE;i++) if(fwrite(&stud[i], sizeof(struct Student_type), 1, fp)!=1)printf(*file write error\n"); fclose(fp);) void save (){ FILE *fp;int i; if ((fp=fopen "ab")) =NULL) ( printf("can open file\n"); return; ) if(fwrite(&stud[SIZE], sizeof(struct Student_type), 1, fp)!=1)printf("file write error'n"); fclose(fp); printf ("添加成功\n");for(i=0;i<SIZE+l;i++) { fread (&stud[i], sizeof(struct Student_type), 1, fp); printf(*%-10s%8d%4d%4d%4d%4d\n*, stud[i]. name, stud[i]. num, stud[i]. math, stud[i].physic, stud[i]. Clanguage, stud[i]. English); )void zengjiaO ( printf (〃请输入新学生信息\n"); scanf ("%s%d%d%d%%d%d”, stud [SIZE], name, &stud [SIZE]. num, &stud [SIZE], math, &stud [SIZE], physic, &stud[SIZE]. Clanguage, &stud[SIZE]. English); save ();} voidxiugai(struct /*修改*/ ( Student_typestud[]) int i=0, choice;int u; printf C请输入您要修改的学生的学号:\n"); scanf("%s”, &u);for(i=0;i<SIZE;i++) ( printf (*请选择您要修改的内容:\n〃); printfC printfCl 姓名 printf C| 高数 ——\n〃); 请按 1 1 \rT); 请按2 | \n); printf C | 大物请按 3 |\n〃);printf (" | c 语言请按 4 | \n“); printf (* | 英语 printf("| 退出 printf( + 请按 5 | \n"); 请按 0|\n"); +\n ); printf C请输入您的选择:”); scanf("%d”, &choice): switch(choice)case 0:break; case 1: printfC请输入新姓名:〃); scanf("%s", stud[i]. name); break;case 2: printfC请输入新的高数分数:〃); scanf&stud[i]. math);break; case 3: printfC请输入新的大物分数:"); scanf("%d”, &stud[i]. physic);break; case 4: printfC请输入新的c语言分数:〃); scanf&stud[i]. Clanguage); break;case 5: printfC请输入新的英语分数:〃); scanf("%d”, &stud[i]. English);break; default: printf ("\n 无效选项!”); break;}break; }printf C修改成功\n"); for(i=0;i<SIZE;i++) printf (/"%-10s%8d%4d%4d%4d%4d\n*, stud[i]. name, stud[i]. num, stud[i]. math, stud[i ]・ physic, stud[i]. Clanguage, stud[i]. English);}) void shanchu () /*按姓名查找,删除一条记录*/ ( char s[10]; int j,i=0; printf C输入要删除记录的姓名:”); scanf s); for(i=0;i<SIZE-l;i++) (if(strcmp(stud[i]. name, s)==0) ( /*删除操作*/ for(j=i;j<SIZE;j++) { { stud[j]. num=stud[j+l]. num; strcpy(stud[j]. name, stud[j+1]. name); stud[j], physic=stud[j+1]. physic; stud[j]. math=stud[j+1]. math; stud[j]. Clanguage=stud[j+1]. Clanguage; stud[j], English=stud[j+1]. English; ) ) ) ) printf("Delete Successed!\n"); saved (); for(i=0;i<SIZE;i++) )voidpaixu_math(structStudent_typestud[]) /*按高树成绩排序*/( int i, j,k=O, p, q, r,w; double y;char x[10]; int t;for (i=0; i<SIZE-l; i++) /* 选择法法排序*/ {k=i;for(j=i+l;j<SIZE;j++) if(stud[j]. math>stud[k]. math)( k=j; p=stud[i]. physic;stud[i]. physic=stud[k]. physic;stud[k]. physic=p;q=stud[i]. math;stud[i]. math=stud[k]. math;stud[k]. math=q: r=stud[i]. English;stud[i]. English=stud[k]. English;stud[k], English=r; w=stud[i]. Clanguage;stud[i]. Clanguage=stud[k]. Clanguage;stud[k], Clanguage=w;t=stud[i]. num;stud[i]. num=stud[k]. num;stud[k]. num=t; strcpy(x, stud[i]. name);strcpy (stud[i]. name, studfk]. name); strcpy (stud[k]. name, x);} }for(i=0;i<SIZE;i++) )voidpaixu_physic(structStudent_typestud[]) /*按大物成绩排序*/( int i, j,k=O, p, q, r,w; double y;char x[10]; int t;for (i=0; i<SIZE-l; i++) /* 选择法法排序*/ {k=i;for(j=i+l;j<SIZE;j++) if(stud[j]. physic>stud[k]. physic)( k=j; p=stud[i]. physic;stud[i]. physic=stud[k]. physic:stud[k]. physic=p;q=stud[i]. math;stud[i]. math=stud[k]. math;stud[k]. math=q: r=stud[i]. English;stud[i]. English=stud[k], English;stud[k]. English=r; w=stud[i]. Clanguage;stud[i]. Clanguage=stud[k]. Clanguage;stud[k], Clanguage=w;t=stud[i]. num;stud[i]. num=stud[k]. num;stud[k]. num=t; strcpy(x, stud[i]. name);strcpy (stud[i]. name, studfk]. name); strcpy (stud[k]. name, x);} }for(i=0;i<SIZE;i++) )voidpaixu_Clanguage(structStudent_type stud[]) /*按C语言成绩排序*/( int i, j,k=O, p, q, r,w; double y;char x[10]; int t;for (i=0; i<SIZE-l; i++) /* 选择法法排序*/ {k=i;for(j=i+l;j<SIZE;j++) if(stud[j]. Clanguage>stud[k]. Clanguage)( k=j; p=stud[i]. physic;stud[i]. physic=stud[k]. physic;stud[k]. physic=p;q=stud[i]. math;stud[i]. math=stud[k]. math;stud[k]. math=q: r=stud[i]. English;stud[i]. English=stud[k]. English;stud[k]. English=r; w=stud[i]. Clanguage;stud[i]. Clanguage=stud[k]. Clanguage;stud[k], Clanguage=w;t=stud[i]. num;stud[i]. num=stud[k]. num;stud[k]. num=t; strcpy(x, stud[i]. name);strcpy (stud[i]. name, studfk]. name); strcpy(stud[k]. name, x);} }for(i=0;i<SIZE;i++) )voidpaixu_English(structStudent_typestud[]) /*按英语成绩排序*/( int i, j,k=O, p, q, r,w; double y;char x[10]; int t;for (i=0; i<SIZE-l; i++) /* 选择法法排序*/ {k=i;for(j=i+l;j<SIZE;j++) if(stud[j]. English>stud[k]. English)( k=j; p=stud[i]. physic;stud[i]. physic=stud[k]. physic;stud[k]. physic=p;q=stud[i]. math;stud[i]. math=stud[k]. math;stud[k]. math=q: r=stud[i]. English;stud[i]. English=stud[k], English;stud[k]. English=r; w=stud[i]. Clanguage;stud[i]. Clanguage=stud[k]. Clanguage;stud[k], Clanguage=w;t=stud[i], num;stud[i]. num=stud[k]. num:stud[k]. num=t; strcpy(x, stud[i]. name);strcpy (stud[i]. name, studfk]. name); strcpy (stud[k]. name, x);} }for(i=0;i<SIZE;i++) 学生成绩管理系统 摘要:学生成绩管理系统是学校不可或缺的一个组成部分,随着计算机技术的逐渐发 展,计算机在教育系统中的应用得到了巨大的发展。教务管理正在逐步迈向管理信息现代化。 但是我国的教务管理信息化水平还处在初级阶段,主要表现在对学生的成绩管理、学生的课 程管理还是采用原有的人工管理方式。学校的规模不断扩大,学生数量急剧增加,有关学生 的各种数据也成倍增长。面对庞大的信息量,这时的人工管理几乎无法实现,在这种情况下 用数据库进行管理变的尤为必要,这可以发挥计算机的优势,就需要有教务管理系统来提高 学生成绩管理工作的效率。过这样的系统,可以做到信息的规范管理,科学统计和快速的查 询,从而减少管理方面的工作量和减少人为的错误。本次我们组选的就是学生成绩管理系统, 要实现对学生成绩、课程的相关管理。 关键词:成绩管理、C语言项目、程序设计、程序分析 ].physic, stud[i]. Clanguage, stud[i]. English):}} voidtongji(structStudent_typestud[])〃按分数段统计人数 ( int i, j, a, max, min, k, 1, q, p, w;k=0,1=0, p=0, q=0, w=0; printfC你想统计哪科成绩:1高数2大物3C语言4英语\n"); scanf ("%d", &j); printf ("请输入两个分数:\n"); scanf ("%d%d”, &max, &min); if(max<min) ( a=max;max=min;min=a; }if(j=l) (for(i=0;i<SIZE;i++) (if(stud[i]. math>min&&stud[i]. math<max) (k++; printf-8s%4d%4d%4d%4d%4d\n", stud[i]. name, stud[i]. num, stud[i]. math, stud[i]・ physic, stud[i]. Clanguage, stud[i]. English); }} }else if(j==2) for(i=0;i<SIZE;i++)if (stud[i]. physic>min&&stud[i]. physic<max) 1++; printf (z,%-8s%4d%4d%4d%4d%4d\n*, stud[i]. name, studfi]. num, stud[i]. math, stud[i] .physic, stud[i]. Clanguage, studfi]. English);} )) else if(j==3)( for(i=0;i<SIZE;i++)( if(stud[i]. Clanguage>min&&stud[i]. Clanguage<max)(p++; printf ("%-8s%4d%4d%4d%4d%4d\n”, stud[i]. name, stud[i]. num, stud[i]. math, stud[i] .physic, stud[i]. Clanguage, stud[i]. English);}) )else if(j==4) {for(i=0;i<SIZE;i++) (if(stud[i]. English>min&&stud[i]. English<max) ( q++; printf-8s%4d%4d%4d%4d%4d\n", stud[i]. name, stud[i]. num, stud[i]. math, stud[i]・ physic, stud[i]. Clanguage, stud[i]. English);} )printf(〃分数段的人数为:%d”,w); )int paixuxuanzeO (int i; printf("**”); printf("\t**\n"); printf("**”); printf("\t**\n"); printf C*请选择你所需的功能的序号*\n〃); scanf &i); return i;) int zhucaidanO(int i; printf ("\t******学生成绩管理系统*****\n"); printf("**”); printf("\t**\n"); printf("**”); printf("\t**\n"); printf C*请选择你所需的功能的序号松n〃); scanf &i); return i;} int chaxunxuanze()( int i; printf ("\t\tl.按学号查询\n"); printf C\t\t2 .按姓名查询\n"); printf ("\t\t按其它数字键退出\n"); scanf ("%d",&i); return i;Student_type Student_type stud[]) voidchaxun_xuehao(struct〃按学号查找并显示一个记录 ( int u;int i=0; printfC输入要查询学生的学号:");scanf ("%d", &u); for(i=0;i<SIZE;i++)( if(u==stud[i]. num)printf("%-8s%4d%4d%4d%4d%4d\n”, stud[i]. name, stud[i]. num, stud[i]. math, stud[i]. ph ysic, stud[i]. Clanguage, stud[i]. English); ) 〃输出该学生信息) voidchaxun_xingming(structStudent_typestud[])〃按姓名查找并显示一个记录 ( char s[10];int i=0; printfC输入要查询学生的姓名:〃);scanf ("%s”, s); for(i=0;i<SIZE;i++)( if(strcmp(stud[i]. name, s)==0)printf(*%-8s%4d%4d%4d%4d%4d\n*, stud[i]. name, stud[i]. num, stud[i]. math, stud[i].ph ysic, stud[i]. Clanguage, stud[i]. English); ) 〃输出该学生信息) intmainO//主函数 int i: int number; void chaxun_xingming(struct Student_type stud[]); FILE*fp; if((fp=fopen"rb"))==NULL) (printf("cannot open file'n"); exit (0); ) for(i=0;i<SIZE;i++) (fread (&stud[i], sizeof(struct Student_type),1,fp); } fclose(fp); for(;;) {for(;;) (switch (zhucaidan ()) (case 1: switch (weihuxuanzeO)( case 1: zengjiaO ; break;case 2:shanchu(stud); break; case 3:xiugai(stud); break;);break; case 2: switch(chaxunxuanze()) case 1:chaxun_xuehao(stud);break; case 2:chaxun_xingming(stud):break;) break: case 3:tongji(stud);break;case 4:switch(paixuxuanze()) (case l:paixu_math(stud);break; case 2:paixu_physic(stud);break;case 3:paixu_Clanguage(stud);break; );break;default :printf(*对不起,无此功能”);break; }) ) return 0; 1、设计目的和要求 以本班同学的高等数学、大学物理、C语言、大学英语的成绩为基础,建立一个可以实 现以下功能的学生成绩管理系统。 A. 信息维护 信息数据以文件形式保存,要求能够实现对学生信息数据的维护,其中包括增加、删除 以及修改学生信息。 B. 信息查询 要求能够能够实现按学生姓名和学号两种方式查询学生各课成绩。 C. 成绩统计 输入任意课程名和一个分数段,统计该课程在该分数段的学生信息。 D. 成绩排序 对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果。 2、总体设计 根据设计目的和要求,我们首先将程序分成四个模块,分别为信息维护、信息查询、成 绩统计及成绩排序。而在各个主模块中,我们又将其分成若干个小模块,从而实现程序设计 的要求。其中,模块设计如下:信息维护一1、增加学生信息2、删除学生信息3、修改学生 信息;信息查询一1、按学号查询2、按姓名查询;成绩统计;成绩排序一1、按高数排序2、 按大物排序3、按C语言排序4、按英语排序。所以最终实现的功能有:1、增加学生信息2、 删除学生信息3、修改学生信息4、按学号查询成绩5、按姓名查询成绩6、成绩按某门课程 某个分数段统计7、成绩按某门课程排序。 一个方便学校使用的学生成绩管理系统,这个系统的功能比较完善。使用类内函数和主 函数中的switch语句实现多分支选择结构,进而实现该系统的各项功能。该系统能实现7 项功能。设计本次实验所用到的知识点有:类、指针、数组,构造函数,动态内存分配,switch 语句、if语句、while ()语句等。 student类中的构造函数是来实现当类生成对象时用于对数据的初始化。例如 stud[].name是对学生姓名的初始化,stud[].math是对学生高等数学成绩的初始化,而 stud[]. Clanguage是对学生c语言成绩的初始化。而student类将有内在联系的,成组出现 的学生姓名,学号,各科成绩结合在一起,形成一种组合型数据结构。 3. 详细设计 该部分是用来修改己录入的学生的数据信息。 我们采用通过学号修改的方法来修改已录入的学生的数据信息。当输入学生学号后,系 统会提示“请选择您要修改的内容:”同时给出要修改的选项,包括姓名高数、大物、c语言、 英语、及退出供您选择。当做出选择后,会得到“请输入新数据”的提示。该部分通过if 语句、switch语句和while语句实现其功能。 voidxiugai(structStudent_typestud[])/*修改*/ int i=0,choice; int u; printfC请输入您要修改的学生的学号:\n〃); scanf &u); for(i=0;i<SIZE;i++) (printff请选择您要修改的内容:\n"); printf( \n ); printfC| 姓名 请按 1 1 \n〃); printf C| 高数 请按 2 | \n〃); printf C| 大物 请按 3 | \n〃); printf (* | c 语言 请按 4 | \n"); printf (* | 英语 请按 5 | \n"); printf("| 退出 请按 0|\n〃); printf( + +\n ); printfC请输入您的选择:〃);scanf&choice); switch(choice)( case 0:break: case 1: printfC请输入新姓名:");scanf("%s”, stud[i]. name); break; case 2: printfC请输入新的高数分数:〃); scanf ("%d”, &stud [i]. math);break; case 3: printfC请输入新的大物分数:");scanf&stud[i]. physic); break;case 4: printf ("请输入新的c语言分数:”); scanf&stud[i]. Clanguage); break;case 5: printfC请输入新的英语分数:”); scanf("%d”, &stud[i]. English); break: default: printf (*\n 无效选项!”);break; }break; ) printf C修改成功\n");for(i=0;i<SIZE;i++) ( printf (/z%-10s%8d%4d%4d%4d%4d\n*, stud[i]. name, stud[i]. num, stud[i]. math, stud[i ].physic, stud[i], Clanguage, stud[i], English);} ) 该部分是用来删除已录入的学生的数据信息。 我们采用按姓名查找,删除一条记录的方法实现删除功能。首先,输入要删除记录的名 字,然后通过if语句和strcmp函数找到对应的数据,最后借用strcpy函数一一将下一数 据的值覆盖到上一个数据,从而实现删除数据的的功能。该部分通过if语句和strcmp函数 以及strcpy函数实现其功能。 void shanchu () /*按姓名查找,删除一条记录*/ char s[10]; int j,i=0; printfC输入要删除记录的姓名:"); scanf s); for(i=0;i<SIZE-l;i++) (if (strcmp(stud[i]. name, s) ==0) (for(j=i; j<SIZE;j++)/* 删除操作*/ ( (stud[j]. num=stud[j+l]. num; strcpy (stud[j]. name, stud[j+l]. name);stud[j]. physic=stud[j+l]. physic; stud[j]. math=stud[j+l]. math;stud[j]. Clanguage=stud[j+1]. Clanguage; stud[j]・ English=stud[j+1]. English; ) } } ) printf (""Delete Successed! \n"); saved (); for(i=0;i<SIZE;i++)( printf Cz%-10s%8d%4d%4d%4d%4d\n/z, stud[i], name, stud[i], num, stud[i], math, stud[i ].physic, stud[i]. Clanguage, stud[i]. English);} } 该部分是用来新增学生的数据信息。 首先设计一个save函数,先打开文件数据库,能够实现保存并关闭文件后,通过fread 写入一组数据,从而达到新增数据的目的。 void save () ( FILE *fp;int i; if ((fp=fopen("", "ab"))=NULL) (printf("can open file\n"); return; )if (fwrite(&stud[SIZE], sizeof(struct Student_type), 1, fp)!=1) printf("file write error\n"); fclose(fp);printf C添加成功\n"); for(i=0;i<SIZE+l;i++) (fread (&stud[i], sizeof(struct Student_type), 1, fp); printf ("%T0s%8d%4d%4d%4d%4d\n", stud[i]. name, stud[i]. num, stud[i]. math, stud[i ].physic, stud[i]. Clanguage, stud[i]. English); ) ) void zengjiaO ( printfC请输入新学生信息\n"); scanf (z,%s%d%d%d%%d%dz,, stud [SIZE]. name, &stud[SIZE]. num, &stud [SIZE], math, & stud[SIZE], physic, &stud[SIZE]. Clanguage, &stud[SIZE]. English); save (); } 4、调试分析 修改数据功能如下图: | «3 ,C:\US£R$\M\0€SiarOP\Debug\3.exe,D GJ 以 90 lei 83 82 102 82 83 103 72 83 104 72 83 105 92 84 to cont inue 一羊五Q 翼 入入成wt改n3n 7176 8272 71 删除数据功能如下图: 增加数据功能如下图:
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 开发语言

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服