学生管理系统设计C语言程序设计_第1页
学生管理系统设计C语言程序设计_第2页
学生管理系统设计C语言程序设计_第3页
学生管理系统设计C语言程序设计_第4页
学生管理系统设计C语言程序设计_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

中南民族大学工商学院计算机科学与技术系中南民族大学工商学院计算机科学与技术系目录实验目的和意义 2目的 2意义 2系统功能描述及设计 3系统化功能描述 3系统功能设计 3系统存储结构设计与描述 6系统功能实现及算法描述 7查询函数VOIDCHAXUN(); 7删除函数VOIDSHANCHU(); 8修改功能VOIDXIUGAI(); 9系统性能测试 10菜单功能测试 10录入、添加功能测试 10浏览功能测试 11学生信息查询功能测试 12学生成绩排序功能测试 12学生信息统计功能测试 12学生信息修改功能测试 13学生信息删除功能测试 13设计小结 15致谢 16参考文献 17附录:源代码清单 18中南民族大学工商学院计算机科学与技术系中南民族大学工商学院计算机科学与技术系PAGEPAGE10实验目的和意义目的C并能够自己编写程序实现对际问题的处理,掌握程序项目开发的一般步骤。意义在写程序的过程中要养成良好的习惯为自己省掉很多麻烦。总体上复习了这一学期学到的大部分程序并把它们系统的连串起来。学会调试一个程序,知道错在哪里,为什么错。了解报告的写法,写一个程序的步骤。能够检查出别人的程序,从别人的程序了解到别人的想法。系统功能描述及设计系统化功能描述学生成绩管理学生信息至少包括学号(系统随机生成,范围在内,且学号不得相等系统以菜单方式工作学生信息录入功能(学生信息用文件保存)(能查看所有同学的记录)学生信息查询功能,查询方式:按学号查询按姓名查询成绩排序统计功能:按照指定的要求对学生记录进行排序平均分、及格率及在五个分数段的学生人数比率([0,59],[60,69],[70,79],[80,89],[90,100])学生信息删除,修改功能。退出系统。系统功能设计程序运行以后就会显示菜单界面:1.学生信息录入,2.学生信息浏览,3.学生信息查询,4.5.,670(图—1。录浏查学统修删退入览询生计改除出学学学成学学学管生生生绩生生生理信信信排信信信系息息息序息息息统按按按按按按英学姓学语号名号成查查排绩询询序排序按按按数英数学语学成成成绩绩绩排统统序计计学生成绩管理系统按计算机成绩排序按计算机成绩统计学生成绩管理系统按计算机成绩排序按计算机成绩统计按总分统计,,显示出随机学号,顺次依照提示录入学生姓名、性别、数学成绩、英语成绩、计算,会有个提示返回主菜单。,,那么则.回主菜单。根据提示选择按学号查询或按姓名查询,(或姓名若学号(或姓名),则会提示没有该学生,,,会把该生的信息展示出来。会显示所输入学生的最高分、最低分、平均分、及格率及各接下来按提示选择是返回上级菜单还是返回主菜单。学生信息修改功能:在主菜单中选择该功能,输入需要修改的学生号,若不存在该学号改,再根据提示输入该学生的信息,接下来系统提示结束或返回主菜单。若不存在该否删除,若是则提示该学生的信息已删除,接下来系统提示结束或返回主菜单。结束程序:根据主菜单界面的提示,输入对应的数字,则结束整个程序。系统存储结构设计与描述子函数如下:voidlist(); //显示出菜单voiddaoru(); //把数据从磁盘导入内voidsave(); //把数据从内存导入磁voidluru(); //录入、添加学生信voidsuiji(intn); //生成随机数voidliulan(); //浏览已存学生的信息voidpaixu(); //排列学生的信voidpaixu_num(); //按学号排序voidpaixu_eng(); //按英语成绩排序voidpaixu_math(); //按数学成绩排voidpaixu_com(); //按计算机成绩排voidpaixu_sum(); //按总分排序voidchaxun(); 查询学生的信voidchaxun_num(); //按学号查询voidchaxun_name(); //按姓名查询voidshanchu(); 删除学生信息voidxiugai(); //修改学生的信息voidend(); //结束程序voidtongji(); //统计学生的各科成绩voidtongji_eng(); //统计学生的英语成绩voidtongji_math(); //统计学生的数学成绩voidtongji_com(); //统计学生的计算机成voidtongji_sum(); //统计学生的总分voidprint(); 只输入一位学生信息voidprint_pai_sheng(); 按升序输出学生的信voidprint_pai_jiang(); //按降序输入学生的信息voidprint_tong(floatmin,floatmax,floataverage,floatpass,floatpoint1,floatpoint2,floatpoint3,floatpoint4,floatpoint5); //输出统计后学生的信息结构体如下:staticstructstudent 定义结构体的类型名{longnum; //学号charname[10]; //姓名charsex; //性别floatscore_eng; //英floatscore_math; //数学成绩floatscore_com; //计算机成floatsum; //总分}stu[M]; //结构体的个数系统功能实现及算法描述查询函数voidchaxun()选择所需的功能(图—1。开始开始根据输入的n选择查询方式按学号查询按姓名查询For循环查找是否存在该学生For循环查找是否存在该学生NNY Yn=1重新选择查找方式重新选择查找方式n=1输出该学生的信息是否继续查找YN结束图4—1查询函数流程图数会调用查询方式的函数,输入查找的学号(或姓名,函数运用fo()循环找出该学生的信提示“不存在这个学号(或姓名1”则按另一方式查找。直到找出该学生为止。删除函数voidshanchu()学生信息删除:根据提示进入删除功能(图—。开始开始输入需删除的学生的学号N用for循环查找是否存在该学生Y输出该学生的信息N确定是否为该学生Y删除结束4—2删除函数流程图否则,重新输入需删除的学生的学号。根据提示输入,选择继续删除或返回主菜单。修改功能voidxiugai()学生信息修改:根据提示进入修改功能(图—。开始开始学生的学号N用for循环查找是否存在该学生Y输出该学生的信息N确定是否为该学生Y输入新的信息并保存结束4—3修改程序流程图系统性能测试菜单功能测试调试好程序以后,系统自动会显示出以下界面(图5-系统功能多对应的数字,就会显示出你所需运行的子函数,在按界面提示出入信息。图5—1主菜单录入、添加功能测试的界面,然后根据系统提示依次输入信息(图5-。图5—2录入学生的信息浏览功能测试调用daoru()函数以后,将磁盘中的信息读取到内存,清屏之后显示所有学生的信息(图—3。图5—3学生信息浏览学生信息查询功能测试调用daoru()的信息之后显示查询出的信息(图—。图5—4查询出的信息学生成绩排序功能测试在主菜单中输入操作序号,清屏之后输入排序科目和排序方式之后显示出排序后的信息(图—5。图5—5排序之后显示出的信息学生信息统计功能测试在主菜单中输入操作序号,输入统计科目之后显示出统计后的信息(图5。图5—6统计之后显示出的信息学生信息修改功能测试修改,输入修改的信息并确定是否返回主菜单(图5—。图5—7修改功能显示学生信息删除功能测试定是否删除,删除后确定是否返回主菜单(图5。图5—8删除功能显示设计小结指针是C语言的升级版,会用的话绝对会减少好多麻烦还可以节约纸张。在输入字符串时要记得回车键时要被接收的。逻辑错误是麻烦的,它会让你把程序重新写一遍。要学会调试能帮你找到逻辑错误。耐心和细心是些C才发现原来如此简单。了要输入的时候还以为是那些错了呢,现在养成良好的习惯以后就会省掉很多麻烦。但是翻上去一看发现有一打的错误,其实不用怕,也许只是犯了个很小白的错误。致谢你帮助下我才完成了课程设计。参考文献.C语言课程设计(第三版,[2].C.[3].C.附录:源代码清单#include"stdio.h"#include"stdlib.h"#include"time.h"#include"string.h"#defineM50voidlist();voiddaoru(); //把数据从磁盘导入内voidsave(); //把数据从内存导入磁voidluru();voidsuiji(intn);voidliulan();voidpaixu();voidpaixu_num();voidpaixu_eng();voidpaixu_math();voidpaixu_com();voidpaixu_sum();voidchaxun();voidchaxun_num();voidchaxun_name();voidshanchu();voidxiugai();voidend();voidtongji();voidtongji_eng();voidtongji_math();voidtongji_com();voidtongji_sum();voidprint();voidprint_pai_sheng();voidprint_pai_jiang();voidprint_tong(floatmin,floatmax,floataverage,floatpass,floatpoint1,floatpoint2,floatpoint3,floatpoint4,floatpoint5);inti,j,N=0;staticstructstudent{longnum;charname[10];charsex;floatscore_eng;floatscore_math;floatscore_com;floatsum;}stu[M];voidmain(){intn;charloop:list();scanf("%d",&n);while(n<0||n>7){printf("选择错误请重新输入:");scanf("%d",&n);}if(n==0)end();else{

switch(n){case1:luru();break;case2:liulan();break;case3:chaxun();break;case4:paixu();break;case5:tongji();break;case6:xiugai();break;case7:shanchu();break;}printf("\n(Y/其它getchar();a=getchar();system("cls");if(a=='Y'||a=='y')gotoloop;else}}

end();voidend(){system("cls");printf("\n\t※※※※※※※※※※※※※※\n");printf("\n\t\t谢谢您的光临!");printf("\n\t\t(^_^)/~~拜拜!\n");printf("\n\t※※※※※※※※※※※※※※\n");}voiddaoru() //将文件从磁盘导入内存{FILE*fp;intlength;if((fp=fopen("stu_list.txt","rb"))==NULL){printf("cannotopenthefile\n");return;}fseek(fp,0L,SEEK_END); //使文件指针移向末尾length=ftell(fp); //求出该文件的字节数长度rewind(fp); //是文件指针移向文件开头N=length/sizeof(structstudent); //求出文件中以保存学生的个for(i=0;i<N;i++)fread(&stu[i],sizeof(structstudent),1,fp);fclose(fp);}voidsave() //把数据从内存导入磁盘{FILE*fp;if((fp=fopen("stu_list.txt","wb"))==NULL){printf("cannotopenfile\n");return;}}voidlist(){

for(i=0;i<N;i++)if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("filewriteerror\n");fclose(fp);printf("\n☆☆☆☆☆☆☆☆学生成绩管理系统☆☆☆☆☆☆☆☆☆\n");printf("\n1.学生信息录入\t\t2.学生信息浏览");printf("\n3.学生信息查询\t\t4.学生成绩排序");printf("\n5.学生信息统计\t\t6.学生信息修改");printf("\n7.学生信息删除\t\t0.退出\n");printf("\n☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");printf("\n\t请输入您需操作的功能的序号:");}voidluru(){intn,flag=0;printf("需要输入学生信息的个数:");scanf("%d",&n);daoru();suiji(n);for(i=0;i<n;i++){printf("\n第%d:%ld\n",i+1,stu[N+i].num);stu[N+i].sum=0;printf("\n%dscanf("%s",stu[N+i].name);printf("\n%dgetchar();scanf("%c",&stu[N+i].sex);printf("\n%d:",i+1);scanf("%f",&stu[N+i].score_eng);printf("\n%d:",i+1);scanf("%f",&stu[N+i].score_math);printf("\n请输入第%d个学生的计算机成绩:",i+1);scanf("%f",&stu[N+i].score_com);stu[N+i].sum=stu[N+i].score_eng+stu[N+i].score_math+stu[N+i].score_com;}N+=n;save();}voidsuiji(intn){longid;system("cls");srand(time(NULL));for(i=0;i<n;i++){id=(rand()%8889+20091111);stu[N+i].num=id;for(j=0;j<i;j++)if(stu[j].num==stu[i].num){i--;break;}}}voidliulan(){daoru();system("cls");print_pai_sheng();}voidchaxun(){intn;system("cls");printf("1.按学号查询\t2.按姓名查询\n");printf("请输入查询方式:");scanf("%d",&n);while(n>2||n<1){printf("请选择正确的序号:");scanf("%d",&n);}daoru();switch(n){case1:chaxun_num();break;case2:chaxun_name();break;}}voidprint(){printf("学号姓名性别英语数学 计算机 总分printf(" \n");printf("%5ld%9s %5c %5.1f %5.1f %5.1f me,stu[i].sex,stu[i].score_eng,stu[i].score_math,stu[i].score_com,stu[i].sum);printf(" \n");}voidchaxun_num(){longnum,flag;inta;charch;save();loop:printf("\n请输入被查找人的学号:");scanf("%ld",&num);for(i=0;i<N;i++){flag=num-stu[i].num;if(flag==0)break;}if(flag==0){}else{

print();printf("是否继续查询(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y')gotoloop;printf("不存在这个学号\n");printf("1.继续按学号查找\t2.按姓名查找\n");printf("请选择:");scanf("%d",&a);while(a>3||a<1){printf("请选择正确的序号:");scanf("%d",&a);}if(a==1)gotoif(a==2)chaxun_name();}}voidchaxun_name(){intflag=1,a;charname[10],ch;save();printf("请输入被查找人的姓名:");scanf("%s",name);for(i=0;i<N;i++){flag=strcmp(name,stu[i].name);if(flag==0)break;}if(flag==0){print();printf("是否继续查询(Y/其它):");getchar();ch=getchar();}else{

if(ch=='Y'||ch=='y')chaxun_name();printf("不存在这个姓名\n");printf("1.继续按姓名查找\t2.按学号查找\n");printf("请选择:");scanf("%d",&a);do{if(a==1)chaxun_name();if(a==2)chaxun_num();else{}

printf("请选择正确的序号:");scanf("%d",&a);}while(a!=1&&a!=2);}}voidpaixu(){intn;system("cls");printf("排列科目:1.学号2.英语3.数学4.计算机5.总分\n");printf("\n");printf("请选择:");scanf("%d",&n);while(n<1||n>5){printf("\nscanf("%d",&n);}switch(n){case1:paixu_num();break;case2:paixu_eng();break;case3:paixu_math();break;case4:paixu_com();break;case5:paixu_sum();break;}}voidprint_pai_sheng(){printf("学号姓名性别英语数学 计算机 总分printf(" \n");for(i=0;i<N;i++)printf("%5ld%9s %5c %5.1f %5.1f %5.1f me,stu[i].sex,stu[i].score_eng,stu[i].score_math,stu[i].score_com,stu[i].sum);printf(" \n");}voidprint_pai_jiang(){printf("学号姓名性别英语数学 计算机 总分printf(" \n");for(i=N-1;i>=0;i--)printf("%5ld%9s %5c %5.1f %5.1f %5.1f me,stu[i].sex,stu[i].score_eng,stu[i].score_math,stu[i].score_com,stu[i].sum);printf(" \n");}voidpaixu_num(){daoru();intn;structstudenttemp;charch;printf("排序方式: 1.升序 2.降\n");printf("\n");printf("请选择:");scanf("%d",&n);while(n<1||n>2){printf("\nscanf("%d",&n);}for(i=0;i<N;i++)for(j=i+1;j<N;j++)if(stu[i].num>stu[j].num){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}switch(n){case1:print_pai_sheng();break;case2:print_pai_jiang();break;}putchar('\n');printf("是否继续(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y'){}}voidpaixu_eng(){

system("cls");paixu();daoru();intn;structstudenttemp;charch;printf("排序方式: 1.升序 2.降\n");printf("\n");printf("请选择:");scanf("%d",&n);while(n<1||n>2){printf("\nscanf("%d",&n);}for(i=0;i<N-1;i++)for(j=i+1;j<N-1;j++)if(stu[i].score_eng>stu[j].score_eng){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}switch(n){case1:print_pai_sheng();break;case2:print_pai_jiang();break;}putchar('\n');printf("是否继续(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y')paixu();}voidpaixu_math(){daoru();intn;structstudenttemp;charch;printf("排序方式: 1.升序 2.降\n");printf("\n");printf("请选择:");scanf("%d",&n);while(n<1||n>2){printf("\nscanf("%d",&n);}for(i=0;i<N;i++)for(j=i+1;j<N;j++)if(stu[i].score_math>stu[j].score_math){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}switch(n){case1:print_pai_sheng();break;case2:print_pai_jiang();break;}}voidpaixu_com(){

putchar('\n');printf("是否继续(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y')paixu();daoru();intn;structstudenttemp;charch;printf("排序方式: 1.升序 2.降\n");printf("\n");printf("请选择:");scanf("%d",&n);while(2<n||n<1){printf("\nscanf("%d",&n);}for(i=0;i<N;i++)for(j=i+1;j<N;j++)if(stu[i].score_com>stu[j].score_com){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}switch(n){case1:print_pai_sheng();break;case2:print_pai_jiang();break;}printf("\n(Y/其它getchar();ch=getchar();if(ch=='Y'||ch=='y')paixu();}voidpaixu_sum(){daoru();intn;structstudenttemp;charch;printf("排序方式:printf("\n");1.升序2.降序\n");printf("请选择:");scanf("%d",&n);while(n<1||n>2){printf("\nscanf("%d",&n);}for(i=0;i<N;i++)for(j=i+1;j<N;j++)if(stu[i].sum>stu[j].sum){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}switch(n){case1:print_pai_sheng();break;case2:print_pai_jiang();break;}}voidtongji(){

printf("\n(Y/其它getchar();ch=getchar();if(ch=='Y'||ch=='y')paixu();intf;printf("\n统计方式:1.英语2.数学3.计算机4.总分");printf("\n请选择:");scanf("%d",&f);while(f>4||f<1){printf("请重新输入:");scanf("%d",&f);}switch(f){case1:tongji_eng();break;case2:tongji_math();break;case3:tongji_com();break;case4:tongji_sum();break;}}voidprint_tong(floatmin,floatmax,floataverage,floatpass,floatpoint1,floatpoint3,floatpoint4,floatpoint5){printf("最高分:%.2f\n",max);printf("最低分:%.2f\n",min);printf("平均分:%.2f\n",average);printf("及格率:%.2f%%\n",pass);printf("各分数段统计如下:[0,59][60,69][70,79][80,89][90,100]\n");printf("\t\t %.2f%% %.2f%% %.2f%% %.2f%% nt2/N*100,point3/N*100,point4/N*100,point5/N*100);putchar('\n');}voidtongji_eng(){floatmax=stu[0].score_eng,min=stu[0].score_eng,average=0,pass=0;floatpoint1=0,point2=0,point3=0,point4=0,point5=0;daoru();system("cls");charch;for(i=0;i<N;i++){if(max<stu[i].score_eng)max=stu[i].score_eng;if(min>stu[i].score_eng)min=stu[i].score_eng;average+=stu[i].score_eng;if(stu[i].score_eng>59)pass++;if(stu[i].score_eng<60&&stu[i].score_eng>=0)point1++;if(stu[i].score_eng<70&&stu[i].score_eng>59)point2++;if(stu[i].score_eng<80&&stu[i].score_eng>69)point3++;if(stu[i].score_eng<90&&stu[i].score_eng>79)point4++;if(stu[i].score_eng<=100&&stu[i].score_eng>90)point5++;}average=average/N;pass=pass/N*100;printf("英语分数统计如下:\n");print_tong(min,max,average,pass,point1,point2,point3,point4,point5);printf("是否返回上级菜单(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y')tongji();}voidtongji_math(){floatmax=stu[0].score_math,min=stu[0].score_math,average=0,pass=0;floatpoint1=0,point2=0,point3=0,point4=0,point5=0;system("cls");daoru();charch;for(i=0;i<N;i++){if(max<stu[i].score_math)max=stu[i].score_math;if(min>stu[i].score_math)min=stu[i].score_math;average+=stu[i].score_math;if(stu[i].score_math>59)pass++;if(stu[i].score_math<60&&stu[i].score_math>0)point1++;if(stu[i].score_math<70&&stu[i].score_math>59)point2++;if(stu[i].score_math<80&&stu[i].score_math>69)point3++;if(stu[i].score_math<90&&stu[i].score_math>79)point4++;if(stu[i].score_math<=100&&stu[i].score_math>89)point5++;}average=average/N;pass=pass/N*100;printf("数学分数统计如下:\n");print_tong(min,max,average,pass,point1,point2,point3,point4,point5);printf("是否返回上级菜单(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y')tongji();}voidtongji_com(){floatmax=stu[0].score_com,min=stu[0].score_com,average=0,pass=0;floatpoint1=0,point2=0,point3=0,point4=0,point5=0;system("cls");daoru();charch;for(i=0;i<N;i++){if(max<stu[i].score_com)max=stu[i].score_com;if(min>stu[i].score_com)min=stu[i].score_com;average+=stu[i].score_com;if(stu[i].score_com>59)pass++;if(stu[i].score_com<60&&stu[i].score_com>0)point1++;if(stu[i].score_com<70&&stu[i].score_com>59)point2++;if(stu[i].score_com<80&&stu[i].score_com>69)point3++;if(stu[i].score_com<90&&stu[i].score_com>79)point4++;if(stu[i].score_com<=100&&stu[i].score_com>89)point5++;}average=average/N;pass=pass/N*100;printf("计算机分数统计如下:\n");print_tong(min,max,average,pass,point1,point2,point3,point4,point5);printf("是否返回上级菜单(Y/其它):");getchar();ch=getchar();if(ch=='Y'||ch=='y')tongji();}voidtongji_sum(){floatmax=stu[0].sum,min=stu[0].sum,average=0,pass=0;system("cls");daoru();charch;for(i=0;i<N;i++){if(max<stu[i].sum)max=stu[i].sum;if(min>stu[i].sum)min=stu[i].sum;average+=stu[i].sum;if(stu[i]

温馨提示

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

评论

0/150

提交评论