版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课程设计目的和要求(一).课程设计目的本课程设计是重要的实践性环节之一,是在学生学习完《程序设计语言(C)》课程后进行的一次全面的综合练习。本课程设计的目的和任务:巩固和加深学生对C语言课程的基本知识的理解和掌握掌握C语言编程和程序调试的基本技能利用C语言进行基本的软件设计掌握书写程序设计说明文档的能力提高运用C语言解决实际问题的能力(二).课程设计要求分析课程设计题目的要求写出详细设计说明编写程序代码,调试程序使其能正确运行设计完成的软件要便于操作和使用4.设计完成后提交课程设计报告课程设计任务内容设计一个学生成绩管理系统。系统功能:1) 具备对学生基础数据的维护功能(添加、删除、修改)2) 具备对课程基础数据的维护功能(添加、删除、修改)3) 具备对学生成绩数据的维护功能(添加、删除、修改)4) 具备对成绩的查询功能(按学号、姓名、或课程名查询成绩,排序等)5) 具备对成绩的统计功能(最高分,最低分,平均分,及格率等)6) 采用菜单界面总体设计说明工程设计说明(工程中有哪些文件组成,各有什么作用)该工程文件中有student.h,studentmain.c,student.c,course.c,scgrade.cquery.ctongji.c。student.h是头文件,主要存放一些其他函数共用的东西,比如结构体之类的。Studentmain.c存放main函数主菜单程序。其他几个是存放的实现各个功能的函数。另外,还有STUDENT.DAT,COURSE.DAT,GRADE.DAT三个文件,主要存放学生,课程,成绩的信息的。还有一个TEMP.DAT文件,用于暂时存放数据。菜单结构设计(列出各级菜单)C-C■U:\STUDEMT\pebug\STUDENT.eKe"请输」.数字选择,加改除霍删M栗据裾糞主数数数系..筑三戶兰出1230汎'D:\STUDEIVT\pebug\STUDENT.exe'|n|1230请输」.数字选择,C-C■U:\STUDEMT\pebug\STUDENT.eKe"1230加改除霍删M栗据裾糞
主数数数系|n|I簪鹦成成成成查单询询询询菜名主查查查查诱统七万名名名汎'D:\STUDEIVT\pebug\STUDENT.exe'1234501224请输a^T选择=B'c-c■U:\STUDEMT\pebug\STUDENT.eKe"皴A咸中绩绩绩1-良成成成统藝m-算名名平主统经班班爰统衍P名名名各系一糸课班课葬出按按.3数据结构设计(三个数据文件用到的的结构定义)学生结构体:structstudent{longsno;charsname[20];charsclass[20];};课程结构体:structcourse{intcno;charcname[30];};成绩结构体:structscgrade{longsno;intcno;floatgrade;};详细设计说明1学生数据维护子系统设计说明(每个功能模块的设计思路,哪些功能是自己增强的,加注释的源代码)#include<stdio.h>#include"STUDENT.H"//该部分为学生主菜单程序,分别调用添加,修改,删除三个函数。voidstudentmenu(){voidaddstudent();voidmodistudent();voiddeletestudent();chara;while(1){puts("\n");puts("系统主菜单");puts("1:学生数据添加");puts("2:学生数据修改");puts("3:学生数据删除");puts("0:退出系统");printf("请输入数字选择:”);a=getche();switch(a){case'1':addstudent();break;case'2':modistudent();break;case'3':deletestudent();break;case'0':system("cls");return;default:return;}}}//添加数据voidaddstudent(){FILE*fp;structstudents;structstudentsw;charch;intflag=0;//打开文件。fp=fopen("d:\\STUDENT\\STUDENT.dat","ab+");if(!fp){printf("Createfileerror!\n");return;}do{do{/*输入一条学生信息,另外,增加了检验数据是否重复的功能*/printf("\nEnterastudentnumbernameclass:");fflush(stdin);scanf("%ld%s%s",&s.sno,s.sname,s.sclass);rewind(fp);while(!feof(fp)){fread(&sw,sizeof(sw),1,fp);if(sw.sno==s.sno){flag=1;printf("数据输入重复,请重新输入!!”);break;}}}while(flag);fwrite(&s,sizeof(s),1,fp);//提示是否继续输入。printf("Inputanotherstudent?[y/n]");ch=getche();}while(ch=='y');fclose(fp);}//修改数据voidmodistudent(){FILE*fp;charch;structstudents,modis;intfound=0;fp=fopen("D:\\STUDENT\\STUDENT.dat","rb+");if(!fp){printf("Createfileerror!\n");return;}/*显示文件中的所有学生信息*/fread(&s,sizeof(s),1,fp);PRINT1;while(!feof(fp)){PRINT2;PRINT1;fread(&s,sizeof(s),1,fp);}/*提示输入要修改的学生号,存入modis.sno*/printf("pleaseenterthenoofthemodify");scanf("%ld",&modis.sno);/*找到要修改的学生并显示*/rewind(fp);while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;if(s.sno==modis.sno){found=1;break;}}if(!found){printf("未找到你要找的数据!!");return;}elsePRINT2;printf("\n你确实要修改该学生的其他信息吗?(Y/N)");ch=getche();if(ch=='Y'||ch=='y'){/*提示输入要修改的学生姓名,存入modis.sname*/printf("\npleaseenterthenameofthemodify\n");scanf("%s",modis.sname);printf("\npleaseentertheclassofthemodify\n");scanf("%s",modis.sclass);fseek(fp,-(int)sizeof(s),SEEK_CUR); /*从当前位置向前移动一个s的长度*//*将modis写到文件(覆盖原数据)*/fwrite(&modis,sizeof(s),1,fp);}fclose(fp);}//删除数据。voiddeletestudent(){FILE*fp,*fp1;charch;intfound=0,num;structstudents;fp=fopen("D:\\student\\student.dat","rb");if(!fp){printf("Createfileerror!!");return;}/*显示文件中的所有学生信息*/fread(&s,sizeof(s),1,fp);PRINT1;while(!feof(fp)){PRINT2;PRINT1;fread(&s,sizeof(s),1,fp);}printf("pleaseenterthenoofthedelete");scanf("%d",&num);//找到要修改的学生信息,显示!rewind(fp);while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;if(s.sno==num){found=1;break;}}if(!found){printf("未找到你要找的数据!!");return;}elsePRINT2;printf("\n你确实要删除该学生的信息吗?(Y/N)");ch=getche();〃将删除后的信息复制到temp文件中。if(ch=='Y'||ch=='y'){fp1=fopen("D:\\student\\temp.dat","wb");rewind(fp);while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;if(s.sno!=num){fwrite(&s,sizeof(s),1,fp1);}}}fclose(fp1);fclose(fp);将temp文件的信息再重新覆盖掉原来的student文件。fp=fopen("D:\\student\\student.dat","wb");fp1=fopen("D:\\student\\temp.dat","rb");while(1){fread(&s,sizeof(s),1,fp1);if(feof(fp1))break;fwrite(&s,sizeof(s),1,fp);}fclose(fp1);fclose(fp);}2课程数据维护子系统设计说明#include<stdio.h>#include"STUDENT.H"voidcoursemenu(){voidaddcourse();voidmodicourse();voiddeletecourse();chara;while(1){puts("\n");puts("系统主菜单");puts("1:课程数据添加");puts("2:课程数据修改");puts("3:课程数据删除");puts("0:退出系统");printf("请输入数字选择:”);a=getche();switch(a){case'1':addcourse();break;case'2':modicourse();break;case'3':deletecourse();break;case'0':system("cls");return;default:return;}}}//添加数据。voidaddcourse(){FILE*fp;structcoursec,cw;charch;intflag=0;fp=fopen("d:\\STUDENT\\COURSE.dat","ab+");if(!fp){printf("Createfileerror!\n");return;}//输入一条课程信息,提示是否重新输入,另外增加检验数据是否重复的功能do{do{printf("\nEnteracoursenumbername:");fflush(stdin);scanf("%d%s",&o,ame);rewind(fp);while(!feof(fp)){fread(&cw,sizeof(cw),1,fp);if(o==o){flag=1;printf("数据输入重复,请重新输入!!”);break;}}}while(flag);fwrite(&c,sizeof(c),1,fp);printf("Inputanothercourse?[y/n]");ch=getche();}while(ch=='y');fclose(fp);}//修改数据voidmodicourse(){FILE*fp;charch;structcoursec,modis;intfound=0;fp=fopen("D:\\STUDENT\\COURSE.dat","rb+");if(!fp){printf("Createfileerror!\n");return;}/*显示文件中的所有课程信息*/fread(&c,sizeof(c),1,fp);PRINT1;while(!feof(fp)){PRINT3;PRINT1;fread(&c,sizeof(c),1,fp);}/*提示输入要修改的课程号,存入modis.sno*/printf("pleaseenterthenoofthemodify");scanf("%d",&o);/*找到要修改的课程并显示*/rewind(fp);while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(o==o){found=1;break;}}if(!found){printf("未找到你要找的数据!!");return;}elsePRINT3;printf("\n你确实要修改该课程的其他信息吗?(Y/N)");ch=getche();if(ch=='Y'||ch=='y'){/*提示输入要修改的课程名,存入ame*/printf("\npleaseenterthenameofthemodify\n");scanf("%s",ame);}fseek(fp,-sizeof(c),SEEK_CUR); /*从当前位置向前移动一个s的长度*//*将modis写到文件(覆盖原数据)*/fwrite(&modis,sizeof(c),1,fp);fclose(fp);}//删除数据。voiddeletecourse(){FILE*fp,*fp1;charch;intfound=0,num;structcoursec;fp=fopen("D:\\student\\COURSE.dat","rb");if(!fp){printf("Createfileerror!!");return;}//显示文件中的信息。fread(&c,sizeof(c),1,fp);PRINT1;while(!feof(fp)){PRINT3;PRINT1;fread(&c,sizeof(c),1,fp);}/*提示输入要修改的课程号,存入num*/printf("pleaseenterthenoofthedelete");scanf("%d",&num);/*找到要修改的课程并显示*/rewind(fp);while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(o==num){found=1;break;}}if(!found){printf("未找到你要找的数据!!");return;}elsePRINT3;printf("\n你确实要删除该学生的信息吗?(Y/N)");ch=getche();〃将删除后的文件复制到temp文件中。if(ch=='Y'||ch=='y'){fp1=fopen("D:\\student\\temp.dat","wb");rewind(fp);while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(o!=num){fwrite(&c,sizeof(c),1,fp1);}fclose(fp1);fclose(fp);〃将temp文件中的信息覆盖掉原来course的文件中。fp=fopen("D:\\student\\COURSE.dat","wb");fp1=fopen("D:\\student\\temp.dat","rb");while(l){fread(&c,sizeof(c),1,fp1);if(feof(fpl))break;fwrite(&c,sizeof(c),l,fp);}fclose(fpl);fclose(fp);}3成绩数据维护子系统设计说明#include<stdio.h>#include"STUDENT.H"voidgrademenu(){voidaddgrade();voidmodigrade();voiddeletegrade();chara;while(l){puts("\n");puts("系统主菜单");puts("l:成绩数据添加");puts("2:成绩数据修改");puts("3:成绩数据删除");puts("0:退出系统");printf("请输入数字选择:");a=getche();switch(a){case'l':addgrade();break;case'2':modigrade();break;case'3':deletegrade();break;case'0':system("cls");return;default:return;}}}//添加成绩!voidaddgrade(){FILE*fp;structscgradesc;structscgradescw;charch;intflag=0;fp=fopen("d:\\STUDENT\\GRADE.dat","ab+");if(!fp){printf("Createfileerror!\n");return;}//输入一条成绩信息,提示是否重新输入,另外增加检验数据是否重复的功能do{do{printf("\nEnterastudentnumber,acoursenumber,grade:");fflush(stdin);scanf("%ld%d%f",&sc.sno,&o,&sc.grade);if(sc.grade<0||sc.grade>100){flag=1;printf("\n输入成绩格式不正确,请重新输入");}rewind(fp);while(!feof(fp)){fread(&scw,sizeof(scw),1,fp);if(o==o&&scw.sno==sc.sno){flag=1;printf("\n数据输入重复,请重新输入!!");break;}}while(flag);fwrite(&sc,sizeof(sc),1,fp);printf("Inputanotherstudent'sgrade?[y/n]");ch=getche();}while(ch=='y');fclose(fp);}//修改数据voidmodigrade(){FILE*fp;charch;structscgradesc,modis;intfound=0;fp=fopen("D:\\STUDENT\\GRADE.dat","rb+");if(!fp){printf("Createfileerror!\n");return;}/*显示文件中的所有成绩信息*/fread(&sc,sizeof(sc),1,fp);PRINT1;while(!feof(fp)){PRINT4;PRINT1;fread(&sc,sizeof(sc),1,fp);}/*提示输入要修改的学生号,存入modis.sno*/printf("pleaseenterthenoofthemodify");scanf("%ld",&modis.sno);/*找到要修改的学生成绩并显示*/rewind(fp);while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno==modis.sno){found=1;break;}}if(!found){printf("未找到你要找的数据!!");return;}elsePRINT4;printf("\n你确实要修改该学生的其他信息吗?(Y/N)");ch=getche();if(ch=='Y'||ch=='y'){/*提示输入要修改的学生课程名和成绩,存入o和modis.grade*/printf("\npleaseenterthecoursenumberofthemodify\n");scanf("%d",&o);printf("\npleaseenterthegradeofthemodify\n");scanf("%f",&modis.grade);}fseek(fp,-(int)sizeof(sc),SEEK_CUR); /*从当前位置向前移动一个sc的长度*//*将modis写到文件(覆盖原数据)*/fwrite(&modis,sizeof(sc),1,fp);fclose(fp);}//删除数据voiddeletegrade(){FILE*fp,*fp1;charch;intfound=0,num;structscgradesc;fp=fopen("D:\\student\\GRADE.dat","rb");if(!fp){printf("Createfileerror!!");return;}//显示文件中的信息fread(&sc,sizeof(sc),1,fp);PRINT1;while(!feof(fp)){PRINT4;PRINT1;fread(&sc,sizeof(sc),1,fp);}/*提示输入要删除的学号,存入num*/printf("pleaseenterthenoofthedelete");scanf("%d",&num);/*找到要删除的成绩并显示*/rewind(fp);while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno==num){found=1;break;}}if(!found){printf("未找到你要找的数据!!");return;}elsePRINT4;printf("\n你确实要删除该学生的信息吗?(Y/N)");ch=getche();〃将删除后的文件复制到temp文件中。if(ch=='Y'||ch=='y'){fp1=fopen("D:\\student\\temp.dat","wb");rewind(fp);while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno!=num){fwrite(&sc,sizeof(sc),1,fp1);}}}fclose(fp1);fclose(fp);〃将temp文件中的信息覆盖掉原来course的文件中。fp=fopen("D:\\student\\GRADE.dat","wb");fp1=fopen("D:\\student\\temp.dat","rb");while(l){fread(&sc,sizeof(sc),1,fp1);if(feof(fpl))break;fwrite(&sc,sizeof(sc),l,fp);}fclose(fpl);fclose(fp);4查询数据维护子系统设计说明#include<stdio.h>#include<string.h>#include"STUDENT.H"voidquery(){voidsnoquery();voidsnamequery();voidcnamequery();voidcnamequeryson();voidclassandcnamequery();chara;while(1){puts("\n");puts("系统主菜单");puts("1:按学号查询成绩");puts("2:按姓名查询成绩");puts("3:按课名查询成绩");puts("4:按课名查询成绩(子函数)");puts("5:按班名课名查询成绩");puts("0:退出系统");printf("请输入数字选择:”);a=getche();switch(a){case'1':snoquery();break;case'2':snamequery();break;case'3':cnamequery();break;case'4':cnamequeryson();break;case'5':classandcnamequery();break;case'0':system("cls");return;default:return;}}}//按学号查询voidsnoquery(){FILE*fp;structscgradesc;charch;longno;intfound=0;fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//提示要查询成绩的学号。printf("\nEnterastudentnumberofthequery:");scanf("%ld",&no);//显示并输出。while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno==no){found=1;PRINT1;PRINT4;}}PRINT1;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);//按姓名查询voidsnamequery(){FILE*fp;structstudents;structscgradesc;charch,name[20];longno;intfound=0;fp=fopen("d:\\STUDENT\\STUDENT.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//提示输入要查询成绩的姓名。printf("\nEnterastudentnameofthequery:");scanf("%s",name);//找到该生的的学号。while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;if(strcmp(s.sname,name)==0){found=1;no=s.sno;//PRINT1;//PRINT2;}}//PRINT1;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");found=0;if(!fp){printf("Createfileerror!\n");return;}//找到该生成绩,并显示。while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno==no){found=1;PRINT1;PRINT4;}PRINT1;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);}//按课名查询voidcnamequery(){FILE*fp;structcoursec;structscgradesc,temp;structscgradegrades[80];charname[20];intno,i,j,n=0;intfound=0;fp=fopen("d:\\STUDENT\\COURSE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//提示输入要查询的课程名printf("\nEnteracoursenameofthequery:");scanf("%s",name);//找到该课程的课称号。while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(strcmp(ame,name)==0){found=1;no=o;//PRINT1;//PRINT3;}}//PRINT1;if(!found){printf("未找到你要找的数据!!");return;fp=fopen("d:\\STUDENT\\GRADE.dat","rb");found=0;if(!fp){printf("Createfileerror!\n");return;}//在成绩信息中找到该课程号的成绩while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(o==no){found=1;grades[n]=sc;n=n+1;//PRINT1;//PRINT4;}}//排序for(i=0;i<n;i++){for(j=i+1;j<=n;j++){if(grades[i].grade<grades[j].grade){temp=grades[i];grades[i]=grades[j];grades[j]=temp;}}}//显示for(i=0;i<n;i++){PRINT1;printf("%-5ld%5d%15f",grades[i].sno,grades[i].cno,grades[i].grade);}PRINT1;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);}//按课程名,用子函数查询。voidcnamequeryson(){intgetcno(charname[]);//获取课程号。intgetgrade(intcno,structscgradegrades]]);/获取成绩voidsort(structscgradegrades[],intn);//排序voiddisplay(structscgradegrades[],intn);//显示structscgradegrades[80];charname[20];intcno,n;printf("\nEnteracoursenameofthequery:");scanf("%s",name);cno=getcno(name);if(cno==-1) {puts("Nosuchcourse!");return;}n=getgrade(cno,grades);sort(grades,n);display(grades,n);}intgetcno(charname[]){FILE*fp;structcoursec;intfound=0,no;fp=fopen("d:\\STUDENT\\COURSE.dat","rb");if(!fp){printf("Createfileerror!\n");return-1;}//获取课程号。while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(strcmp(ame,name)==0){found=1;no=o;//PRINT1;//PRINT3;}}//PRINT1;returnno;if(!found){printf("未找到你要找的数据!!");return-1;intgetgrade(intcno,structscgradegrades[]){FILE*fp;structscgradesc;intn=0,found=0;fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//通过课程号,找到成绩。while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(o==cno){found=1;grades[n]=sc;n=n+1;//PRINT1;//PRINT4;}}returnn;if(!found){printf("未找到你要找的数据!!");return;}}//排序voidsort(structscgradegrades[],intn){inti,j;structscgradetemp;for(i=0;i<n;i++){for(j=i+1;j<=n;j++){if(grades[i].grade<grades[j].grade){temp=grades[i];grades[i]=grades[j];grades[j]=temp;}}}}//显示voiddisplay(structscgradegrades[],intn){inti;for(i=0;i<n;i++){PRINT1;printf("%-5ld%5d%15f",grades[i].sno,grades[i].cno,grades[i].grade);}PRINT1;}//按班名和课名查询voidclassandcnamequery(){intandgetsno(charname[],longsnos[]);intandgetcno(charname[]);intandgetgrades(intcno,intn,longsnos[],structscgradegrades[]);voidsort(structscgradegrades[],intn);voiddisplay(structscgradegrades[],intn);structscgradegrades[80];charname1[20],name2[20];longsnos[80];intcno,n,m;//提示输入班名和课名。printf("\nEnteraclassandacoursenameofthequery:");scanf("%s%s",name1,name2);n=andgetsno(name1,snos);//snos是调用函数后的符合条件学生号cno=andgetcno(name2);//获取课程号。if(cno==-1) {puts("Nosuchcourse!");return;}m=andgetgrades(cno,n,snos,grades);//grades是调用函数后的符合条件的成绩。m是个数。sort(grades,m);〃扌非序display(grades,m);显示}//获取学号intandgetsno(charname[],longsnos[]){FILE*fp;intfound=0,n=0;structstudents;fp=fopen("d:\\STUDENT\\STUDENT.dat","rb");if(!fp){printf("Createfileerror!\n");return;}rewind(fp);while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;if(strcmp(s.sclass,name)==0){found=1;snos[n]=s.sno;n=n+1;//PRINT1;//PRINT2;}}//PRINT1;returnn;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);}//获取课程号intandgetcno(charname[]){FILE*fp;structcoursec;intfound=0,no;fp=fopen("d:\\STUDENT\\COURSE.dat","rb");if(!fp){printf("Createfileerror!\n");return-1;}while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(strcmp(ame,name)==0){found=1;no=o;//PRINT1;//PRINT3;}}//PRINT1;returnno;if(!found){printf("未找到你要找的数据!!");return-1;}fclose(fp);
}//获取成绩intandgetgrades(intcno,intn,longsnos[],structscgradegrades[]){FILE*fp;intfound=0,i,m=0;structscgradesc;fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(o==cno){for(i=0;i<n;i++){if(sc.sno==snos[i]){grades[m]=sc;m=m+1;}}}}returnm;fclose(fp);}5统计数据维护子系统设计说明#include<stdio.h>#include<string.h>#include"STUDENT.H"voidtongji(){voidcnametongji();voidclasstongji();voidclassandcnametongji();voidclassandcnametongjifour();voidclassesaverage();chara;while(1){系统主菜单");系统主菜单");puts("puts("1:按课名统计成绩");puts("2:按班名统计成绩");puts("3:按课名班名统计成绩");puts("4:按课名班名优良中差人数");puts("5:统计各班平均成绩");puts("0:退出系统");printf("请输入数字选择:”);a=getche();switch(a){case'1':cnametongji();break;case'2':classtongji();break;case'3':classandcnametongji();break;case'4':classandcnametongjifour();break;case'5':classesaverage();break;case'0':system("cls");return;default:return;}}}//按课名统计voidcnametongji(){FILE*fp;structcoursec;structscgradesc;structscgradegrades[80];charname[20];intno,i,p=0,n=0;intfound=0;floatmax=0,min=0,sum=0,average,peng;fp=fopen("d:\\STUDENT\\COURSE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//提示输入要统计的课程名。printf("\nEnteracoursenameofthetongji:");scanf("%s",name);//找到该课程的课程号。while(1){fread(&c,sizeof(c),1,fp);if(feof(fp))break;if(strcmp(ame,name)==0){found=1;no=o;//PRINT1;//PRINT3;}}//PRINT1;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");found=0;if(!fp){printf("Createfileerror!\n");return;}//找到该课程的相关成绩。while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(o==no){found=1;grades[n]=sc;n=n+1;//PRINT1;//PRINT4;}}//求最大值,最小值,平均值,及格率。max=grades[1].grade;min=grades[1].grade;for(i=0;i<n;i++){if(max<grades[i].grade){max=grades[i].grade;}if(min>grades[i].grade){min=grades[i].grade;}if(grades[i].grade>=60)p=p+1;sum=sum+grades[i].grade;}average=sum/n;peng=p/n;PRINT5;PRINT6;if(!found){printf("未找到你要找的数据!!");return;}fclose(fp);}//按班名统计voidclasstongji(){intandgetsno(charname[],longsnos[]);FILE*fp;structscgradegrades[80],sc;charname[20];intfound=0,i,n=0,m=0,p=0;longsnos[80];floatmax=0,min=0,sum=0,average,peng;//提示要统计的班名。printf("\nEnteraclassnameofthetongji:");scanf("%s",name);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}n=andgetsno(name,snos);〃通过调用函数,获取学生号//取得这些学生的成绩。while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;for(i=0;i<n;i++){if(sc.sno==snos[i]){grades[m]=sc;m=m+1;}}}//求最大值,最小值,平均值,及格率。max=grades[1].grade;min=grades[1].grade;for(i=0;i<m;i++){if(max<grades[i].grade){max=grades[i].grade;}if(min>grades[i].grade){min=grades[i].grade;}if(grades[i].grade>=60)p=p+1;sum=sum+grades[i].grade;}average=sum/m;peng=p/m;PRINT5;PRINT6;}//按班名,课名统计voidclassandcnametongji(){intandgetsno(charname[],longsnos[]);intandgetcno(charname[]);intandgetgrades(intcno,intn,longsnos[],structscgradegrades[]);structscgradegrades[80];charname1[20],name2[20];longsnos[80];intcno,n,m,i,p=0;floatmax=0,min=0,sum=0,average,peng;//提示要输入的班名和课名printf("\nEnteraclassandacoursenameofthetongji:");scanf("%s%s",name1,name2);n=andgetsno(namel,snos);〃调用函数获得学生号cno=andgetcno(name2);〃调用函数获得课号。if(cno==-l){puts("Nosuchcourse!");return;}m=andgetgrades(cno,n,snos,grades);〃求得成绩和个数//求最大值,最小值,平均值,及格率。max=grades[l].grade;min=grades[l].grade;for(i=0;i<m;i++){if(max<grades[i].grade){max=grades[i].grade;}if(min>grades[i].grade){min=grades[i].grade;}if(grades[i].grade>=60)p=p+l;sum=sum+grades[i].grade;}average=sum/m;peng=p/m;PRINT5;PRINT6;}//按课名,班名统计优良中差。voidclassandcnametongjifour(){intandgetsno(charname[],longsnos[]);intandgetcno(charname[]);intandgetgrades(intcno,intn,longsnos[],structscgradegrades[]);structscgradegrades[80];charnamel[20],name2[20];longsnos[80];intcno,n,m,i,p=0,q=0,r=0,s=0,t=0;floatmax=0,min=0,sum=0,average,peng;
printf("\nEnteraclassandacoursenameofthetongji:");scanf("%s%s",name1,name2);n=andgetsno(name1,snos);//调用函数获得学生号cno=andgetcno(name2);//调用函数获得课号if(cno==-1){puts("Nosuchcourse!");return;}m=andgetgrades(cno,n,snos,grades);//获取成绩,及个数。//比较for(i=0;i<m;i++){if(grades[i].grade>=90)p+=1;elseif(grades[i].grade>=80)q+=1;elseif(grades[i].grade>=70)r+=1;elseif(grades[i].grade>=60)s+=1;elset+=1;不及格");不及格");%d",p,q,rprintf("\n优 良 中 及printf("\n%d %d %d %d,s,t);}//求各班的平均分voidclassesaverage(){FILE*fp;inti,j,n=1,flag=1,m=0,w=0;structstudents;structscgradesc,grades[80];charclasses[80][20];longsnos[80][80];floatsum=0,average[80];fp=fopen("d:\\STUDENT\\STUDENT.dat","rb");if(!fp){printf("Createfileerror!\n");return;}fread(&s,sizeof(s),1,fp);strcpy(classes[0],s.sclass);while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;for(i=0;i<n;i++){flag=strcmp(classes[i],s.sclass);if(flag==0)break;}if(flag!=0){strcpy(classes[n],s.sclass);n=n+l;〃获取有多少班级}}fclose(fp);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}for(i=0;i<n;i++){sum=0;w=0;m=andgetsno(classes[i],snos[i]);//获取学生号,人数rewind(fp);while(l){fread(&sc,sizeof(sc),l,fp);if(feof(fp))break;for(j=0;j<m;j++){if(sc.sno==snos[i][j]){grades[w]=sc;w=w+1;〃找到class[i]的所有成绩}}}for(j=0;j<w;j++){sum=sum+grades[j].grade;}average[i]=sum/w;〃求均,打印。printf("\n%s班平均分: %f",classes[i],average[i]);}fclose(fp);}四.软件使用说明
(软件操作说明,注意事项,让用户会使用,主要操作界面用截图)运行程序进入到如下界面:vl>.从键盘输入数字1得:■t:\STUDEHT\pebug\STUDENT.eKe"加改除
霍删M采据据墓主数数数系.凱匕HT匕一出J盂千学遑.12301•键入数字1,添加数据,如图:1230加改除单主数数数系统4注4岀astudentnumriermaneclass:9500&kk98anothei*student?astudentnuinlieranothei*student?Ly/nJynaneclass=95007ff89[jj/nlni]r改除单主数数数系统兰匕一兰出2•键入数字22•键入数字2,修改数据,如图:95006V5M07pleaseenterthenoofthemodif^9500695006 kk 98你确实要修咬该学邙笊耳依信黒北S)ypleaseentsrthenaneofthemodifyPPplcaeccrtei*theclasso£themodify99FTi,D:\5TUDENT\Debug\STUDENT.eae11classl95003ccclassl95004class295005eeclass295001aaclassl95007pleaseeritei*therhnofthedel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿园教学总结10篇
- 最美中学生主题演讲稿(11篇)
- 金融员工试用期工作总结(34篇)
- 幼儿园自检自查报告
- 考试作弊的批评通报(3篇)
- 新教材高考地理二轮复习二7类选择题技法专项训练技法1排除法含答案
- 江西省上饶市广丰横山中学2024-2025学年度八年级上学期十一月物理测试卷
- 甘肃省永昌县第一高级中学2024-2025学年高一上学期期中考试化学试卷(含解析)
- 2023年高考语文二轮复习试题:压缩语段与扩展语句(新高考专用)含解析
- 2024年河北省公务员考试《行测》真题及答案解析
- 静配中心差错预防
- 高夫品牌市场分析报告
- 国家临床重点专科建设项目申报书
- 成语故事一叶障目
- 美术培训幼儿园课件
- 《中小学书法教育指导纲要》解读
- 煤炭检验培训课件
- 印刷设计行业档案管理制度完善
- 少年科普经典:从一到无穷大
- 社会学职业生涯规划书
- 5G网络设备-5G基站硬件更换
评论
0/150
提交评论