




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)目的和要求(一).課程設(shè)計(jì)目的本課程設(shè)計(jì)是重要的實(shí)踐性環(huán)節(jié)之一,是在學(xué)生學(xué)習(xí)完《程序設(shè)計(jì)語(yǔ)言(C)》課程后進(jìn)行的一次全面的綜合練習(xí)。本課程設(shè)計(jì)的目的和任務(wù):鞏固和加深學(xué)生對(duì)C語(yǔ)言課程的基本知識(shí)的理解和掌握掌握C語(yǔ)言編程和程序調(diào)試的基本技能利用C語(yǔ)言進(jìn)行基本的軟件設(shè)計(jì)掌握書(shū)寫(xiě)程序設(shè)計(jì)說(shuō)明文檔的能力提高運(yùn)用C語(yǔ)言解決實(shí)際問(wèn)題的能力(二).課程設(shè)計(jì)要求分析課程設(shè)計(jì)題目的要求寫(xiě)出詳細(xì)設(shè)計(jì)說(shuō)明編寫(xiě)程序代碼,調(diào)試程序使其能正確運(yùn)行設(shè)計(jì)完成的軟件要便于操作和使用4.設(shè)計(jì)完成后提交課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)任務(wù)內(nèi)容設(shè)計(jì)一個(gè)學(xué)生成績(jī)管理系統(tǒng)。系統(tǒng)功能:1) 具備對(duì)學(xué)生基礎(chǔ)數(shù)據(jù)的維護(hù)功能(添加、刪除、修改)2) 具備對(duì)課程基礎(chǔ)數(shù)據(jù)的維護(hù)功能(添加、刪除、修改)3) 具備對(duì)學(xué)生成績(jī)數(shù)據(jù)的維護(hù)功能(添加、刪除、修改)4) 具備對(duì)成績(jī)的查詢(xún)功能(按學(xué)號(hào)、姓名、或課程名查詢(xún)成績(jī),排序等)5) 具備對(duì)成績(jī)的統(tǒng)計(jì)功能(最高分,最低分,平均分,及格率等)6) 采用菜單界面總體設(shè)計(jì)說(shuō)明工程設(shè)計(jì)說(shuō)明(工程中有哪些文件組成,各有什么作用)該工程文件中有student.h,studentmain.c,student.c,course.c,scgrade.cquery.c#c。student.h是頭文件,主要存放一些其他函數(shù)共用的東西,比如結(jié)構(gòu)體之類(lèi)的。Studentmain.c存放main函數(shù)主菜單程序。其他幾個(gè)是存放的實(shí)現(xiàn)各個(gè)功能的函數(shù)。另外,還有STUDENT.DAT,COURSE.DAT,GRADE.DAT三個(gè)文件,主要存放學(xué)生,課程,成績(jī)的信息的。還有一個(gè)TEMP.DAT文件,用于暫時(shí)存放數(shù)據(jù)。菜單結(jié)構(gòu)設(shè)計(jì)(列出各級(jí)菜單)C-C■U:\STUDEMT\pebug\STUDENT.eKe"請(qǐng)輸」.數(shù)字選擇,加改除霍刪M栗據(jù)裾糞主數(shù)數(shù)數(shù)系..筑三戶(hù)蘭出1230汎'D:\STUDEIVT\pebug\STUDENT.exe'|n|1230請(qǐng)輸」.數(shù)字選擇,C-C■U:\STUDEMT\pebug\STUDENT.eKe"1230加改除霍刪M栗據(jù)裾糞
主數(shù)數(shù)數(shù)系|n|I簪鸚成成成成查單詢(xún)?cè)冊(cè)冊(cè)儾嗣鞑椴椴椴檎T統(tǒng)七萬(wàn)名名名汎'D:\STUDEIVT\pebug\STUDENT.exe'1234501224請(qǐng)輸a^T選擇=B'c-c■U:\STUDEMT\pebug\STUDENT.eKe"皴A咸中績(jī)績(jī)績(jī)1-良成成成統(tǒng)藝m-算名名平主統(tǒng)經(jīng)班班爰統(tǒng)衍P名名名各系一糸課班課葬出按按.3數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)(三個(gè)數(shù)據(jù)文件用到的的結(jié)構(gòu)定義)學(xué)生結(jié)構(gòu)體:structstudent{longsno;charsname[20];charsclass[20];};課程結(jié)構(gòu)體:structcourse{intcno;charcname[30];};成績(jī)結(jié)構(gòu)體:structscgrade{longsno;intcno;floatgrade;};詳細(xì)設(shè)計(jì)說(shuō)明1學(xué)生數(shù)據(jù)維護(hù)子系統(tǒng)設(shè)計(jì)說(shuō)明(每個(gè)功能模塊的設(shè)計(jì)思路,哪些功能是自己增強(qiáng)的,加注釋的源代碼)#include<stdio.h>#include"STUDENT.H"http://該部分為學(xué)生主菜單程序,分別調(diào)用添加,修改,刪除三個(gè)函數(shù)。voidstudentmenu(){voidaddstudent();voidmodistudent();voiddeletestudent();chara;while(1){puts("\n");puts("系統(tǒng)主菜單");puts("1:學(xué)生數(shù)據(jù)添加");puts("2:學(xué)生數(shù)據(jù)修改");puts("3:學(xué)生數(shù)據(jù)刪除");puts("0:退出系統(tǒng)");printf("請(qǐng)輸入數(shù)字選擇:”);a=getche();switch(a){case'1':addstudent();break;case'2':modistudent();break;case'3':deletestudent();break;case'0':system("cls");return;default:return;}}}//添加數(shù)據(jù)voidaddstudent(){FILE*fp;structstudents;structstudentsw;charch;intflag=0;//打開(kāi)文件。fp=fopen("d:\\STUDENT\\STUDENT.dat","ab+");if(!fp){printf("Createfileerror!\n");return;}do{do{/*輸入一條學(xué)生信息,另外,增加了檢驗(yàn)數(shù)據(jù)是否重復(fù)的功能*/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("數(shù)據(jù)輸入重復(fù),請(qǐng)重新輸入??!”);break;}}}while(flag);fwrite(&s,sizeof(s),1,fp);//提示是否繼續(xù)輸入。printf("Inputanotherstudent?[y/n]");ch=getche();}while(ch=='y');fclose(fp);}//修改數(shù)據(jù)voidmodistudent(){FILE*fp;charch;structstudents,modis;intfound=0;fp=fopen("D:\\STUDENT\\STUDENT.dat","rb+");if(!fp){printf("Createfileerror!\n");return;}/*顯示文件中的所有學(xué)生信息*/fread(&s,sizeof(s),1,fp);PRINT1;while(!feof(fp)){PRINT2;PRINT1;fread(&s,sizeof(s),1,fp);}/*提示輸入要修改的學(xué)生號(hào),存入modis.sno*/printf("pleaseenterthenoofthemodify");scanf("%ld",&modis.sno);/*找到要修改的學(xué)生并顯示*/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("未找到你要找的數(shù)據(jù)?。?);return;}elsePRINT2;printf("\n你確實(shí)要修改該學(xué)生的其他信息嗎?(Y/N)");ch=getche();if(ch=='Y'||ch=='y'){/*提示輸入要修改的學(xué)生姓名,存入modis.sname*/printf("\npleaseenterthenameofthemodify\n");scanf("%s",modis.sname);printf("\npleaseentertheclassofthemodify\n");scanf("%s",modis.sclass);fseek(fp,-(int)sizeof(s),SEEK_CUR); /*從當(dāng)前位置向前移動(dòng)一個(gè)s的長(zhǎng)度*//*將modis寫(xiě)到文件(覆蓋原數(shù)據(jù))*/fwrite(&modis,sizeof(s),1,fp);}fclose(fp);}//刪除數(shù)據(jù)。voiddeletestudent(){FILE*fp,*fp1;charch;intfound=0,num;structstudents;fp=fopen("D:\\student\\student.dat","rb");if(!fp){printf("Createfileerror!!");return;}/*顯示文件中的所有學(xué)生信息*/fread(&s,sizeof(s),1,fp);PRINT1;while(!feof(fp)){PRINT2;PRINT1;fread(&s,sizeof(s),1,fp);}printf("pleaseenterthenoofthedelete");scanf("%d",&num);//找到要修改的學(xué)生信息,顯示!rewind(fp);while(1){fread(&s,sizeof(s),1,fp);if(feof(fp))break;if(s.sno==num){found=1;break;}}if(!found){printf("未找到你要找的數(shù)據(jù)!!");return;}elsePRINT2;printf("\n你確實(shí)要?jiǎng)h除該學(xué)生的信息嗎?(Y/N)");ch=getche();〃將刪除后的信息復(fù)制到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文件的信息再重新覆蓋掉原來(lái)的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課程數(shù)據(jù)維護(hù)子系統(tǒng)設(shè)計(jì)說(shuō)明#include<stdio.h>#include"STUDENT.H"voidcoursemenu(){voidaddcourse();voidmodicourse();voiddeletecourse();chara;while(1){puts("\n");puts("系統(tǒng)主菜單");puts("1:課程數(shù)據(jù)添加");puts("2:課程數(shù)據(jù)修改");puts("3:課程數(shù)據(jù)刪除");puts("0:退出系統(tǒng)");printf("請(qǐng)輸入數(shù)字選擇:”);a=getche();switch(a){case'1':addcourse();break;case'2':modicourse();break;case'3':deletecourse();break;case'0':system("cls");return;default:return;}}}//添加數(shù)據(jù)。voidaddcourse(){FILE*fp;structcoursec,cw;charch;intflag=0;fp=fopen("d:\\STUDENT\\COURSE.dat","ab+");if(!fp){printf("Createfileerror!\n");return;}//輸入一條課程信息,提示是否重新輸入,另外增加檢驗(yàn)數(shù)據(jù)是否重復(fù)的功能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("數(shù)據(jù)輸入重復(fù),請(qǐng)重新輸入??!”);break;}}}while(flag);fwrite(&c,sizeof(c),1,fp);printf("Inputanothercourse?[y/n]");ch=getche();}while(ch=='y');fclose(fp);}//修改數(shù)據(jù)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);}/*提示輸入要修改的課程號(hào),存入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("未找到你要找的數(shù)據(jù)!!");return;}elsePRINT3;printf("\n你確實(shí)要修改該課程的其他信息嗎?(Y/N)");ch=getche();if(ch=='Y'||ch=='y'){/*提示輸入要修改的課程名,存入ame*/printf("\npleaseenterthenameofthemodify\n");scanf("%s",ame);}fseek(fp,-sizeof(c),SEEK_CUR); /*從當(dāng)前位置向前移動(dòng)一個(gè)s的長(zhǎng)度*//*將modis寫(xiě)到文件(覆蓋原數(shù)據(jù))*/fwrite(&modis,sizeof(c),1,fp);fclose(fp);}//刪除數(shù)據(jù)。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);}/*提示輸入要修改的課程號(hào),存入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("未找到你要找的數(shù)據(jù)?。?);return;}elsePRINT3;printf("\n你確實(shí)要?jiǎng)h除該學(xué)生的信息嗎?(Y/N)");ch=getche();〃將刪除后的文件復(fù)制到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文件中的信息覆蓋掉原來(lái)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成績(jī)數(shù)據(jù)維護(hù)子系統(tǒng)設(shè)計(jì)說(shuō)明#include<stdio.h>#include"STUDENT.H"voidgrademenu(){voidaddgrade();voidmodigrade();voiddeletegrade();chara;while(l){puts("\n");puts("系統(tǒng)主菜單");puts("l:成績(jī)數(shù)據(jù)添加");puts("2:成績(jī)數(shù)據(jù)修改");puts("3:成績(jī)數(shù)據(jù)刪除");puts("0:退出系統(tǒng)");printf("請(qǐng)輸入數(shù)字選擇:");a=getche();switch(a){case'l':addgrade();break;case'2':modigrade();break;case'3':deletegrade();break;case'0':system("cls");return;default:return;}}}//添加成績(jī)!voidaddgrade(){FILE*fp;structscgradesc;structscgradescw;charch;intflag=0;fp=fopen("d:\\STUDENT\\GRADE.dat","ab+");if(!fp){printf("Createfileerror!\n");return;}//輸入一條成績(jī)信息,提示是否重新輸入,另外增加檢驗(yàn)數(shù)據(jù)是否重復(fù)的功能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輸入成績(jī)格式不正確,請(qǐng)重新輸入");}rewind(fp);while(!feof(fp)){fread(&scw,sizeof(scw),1,fp);if(o==o&&scw.sno==sc.sno){flag=1;printf("\n數(shù)據(jù)輸入重復(fù),請(qǐng)重新輸入?。?);break;}}while(flag);fwrite(&sc,sizeof(sc),1,fp);printf("Inputanotherstudent'sgrade?[y/n]");ch=getche();}while(ch=='y');fclose(fp);}//修改數(shù)據(jù)voidmodigrade(){FILE*fp;charch;structscgradesc,modis;intfound=0;fp=fopen("D:\\STUDENT\\GRADE.dat","rb+");if(!fp){printf("Createfileerror!\n");return;}/*顯示文件中的所有成績(jī)信息*/fread(&sc,sizeof(sc),1,fp);PRINT1;while(!feof(fp)){PRINT4;PRINT1;fread(&sc,sizeof(sc),1,fp);}/*提示輸入要修改的學(xué)生號(hào),存入modis.sno*/printf("pleaseenterthenoofthemodify");scanf("%ld",&modis.sno);/*找到要修改的學(xué)生成績(jī)并顯示*/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("未找到你要找的數(shù)據(jù)?。?);return;}elsePRINT4;printf("\n你確實(shí)要修改該學(xué)生的其他信息嗎?(Y/N)");ch=getche();if(ch=='Y'||ch=='y'){/*提示輸入要修改的學(xué)生課程名和成績(jī),存入o和modis.grade*/printf("\npleaseenterthecoursenumberofthemodify\n");scanf("%d",&o);printf("\npleaseenterthegradeofthemodify\n");scanf("%f",&modis.grade);}fseek(fp,-(int)sizeof(sc),SEEK_CUR); /*從當(dāng)前位置向前移動(dòng)一個(gè)sc的長(zhǎng)度*//*將modis寫(xiě)到文件(覆蓋原數(shù)據(jù))*/fwrite(&modis,sizeof(sc),1,fp);fclose(fp);}//刪除數(shù)據(jù)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);}/*提示輸入要?jiǎng)h除的學(xué)號(hào),存入num*/printf("pleaseenterthenoofthedelete");scanf("%d",&num);/*找到要?jiǎng)h除的成績(jī)并顯示*/rewind(fp);while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno==num){found=1;break;}}if(!found){printf("未找到你要找的數(shù)據(jù)!!");return;}elsePRINT4;printf("\n你確實(shí)要?jiǎng)h除該學(xué)生的信息嗎?(Y/N)");ch=getche();〃將刪除后的文件復(fù)制到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文件中的信息覆蓋掉原來(lái)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查詢(xún)數(shù)據(jù)維護(hù)子系統(tǒng)設(shè)計(jì)說(shuō)明#include<stdio.h>#include<string.h>#include"STUDENT.H"voidquery(){voidsnoquery();voidsnamequery();voidcnamequery();voidcnamequeryson();voidclassandcnamequery();chara;while(1){puts("\n");puts("系統(tǒng)主菜單");puts("1:按學(xué)號(hào)查詢(xún)成績(jī)");puts("2:按姓名查詢(xún)成績(jī)");puts("3:按課名查詢(xún)成績(jī)");puts("4:按課名查詢(xún)成績(jī)(子函數(shù))");puts("5:按班名課名查詢(xún)成績(jī)");puts("0:退出系統(tǒng)");printf("請(qǐng)輸入數(shù)字選擇:”);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;}}}//按學(xué)號(hào)查詢(xún)voidsnoquery(){FILE*fp;structscgradesc;charch;longno;intfound=0;fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//提示要查詢(xún)成績(jī)的學(xué)號(hào)。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("未找到你要找的數(shù)據(jù)??!");return;}fclose(fp);//按姓名查詢(xún)voidsnamequery(){FILE*fp;structstudents;structscgradesc;charch,name[20];longno;intfound=0;fp=fopen("d:\\STUDENT\\STUDENT.dat","rb");if(!fp){printf("Createfileerror!\n");return;}//提示輸入要查詢(xún)成績(jī)的姓名。printf("\nEnterastudentnameofthequery:");scanf("%s",name);//找到該生的的學(xué)號(hào)。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("未找到你要找的數(shù)據(jù)?。?);return;}fclose(fp);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");found=0;if(!fp){printf("Createfileerror!\n");return;}//找到該生成績(jī),并顯示。while(1){fread(&sc,sizeof(sc),1,fp);if(feof(fp))break;if(sc.sno==no){found=1;PRINT1;PRINT4;}PRINT1;if(!found){printf("未找到你要找的數(shù)據(jù)?。?);return;}fclose(fp);}//按課名查詢(xún)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;}//提示輸入要查詢(xún)的課程名printf("\nEnteracoursenameofthequery:");scanf("%s",name);//找到該課程的課稱(chēng)號(hào)。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("未找到你要找的數(shù)據(jù)!!");return;fp=fopen("d:\\STUDENT\\GRADE.dat","rb");found=0;if(!fp){printf("Createfileerror!\n");return;}//在成績(jī)信息中找到該課程號(hào)的成績(jī)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("未找到你要找的數(shù)據(jù)??!");return;}fclose(fp);}//按課程名,用子函數(shù)查詢(xún)。voidcnamequeryson(){intgetcno(charname[]);//獲取課程號(hào)。intgetgrade(intcno,structscgradegrades]]);/獲取成績(jī)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;}//獲取課程號(hào)。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("未找到你要找的數(shù)據(jù)??!");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;}//通過(guò)課程號(hào),找到成績(jī)。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("未找到你要找的數(shù)據(jù)??!");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;}//按班名和課名查詢(xún)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是調(diào)用函數(shù)后的符合條件學(xué)生號(hào)cno=andgetcno(name2);//獲取課程號(hào)。if(cno==-1) {puts("Nosuchcourse!");return;}m=andgetgrades(cno,n,snos,grades);//grades是調(diào)用函數(shù)后的符合條件的成績(jī)。m是個(gè)數(shù)。sort(grades,m);〃扌非序display(grades,m);顯示}//獲取學(xué)號(hào)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("未找到你要找的數(shù)據(jù)??!");return;}fclose(fp);}//獲取課程號(hào)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("未找到你要找的數(shù)據(jù)!!");return-1;}fclose(fp);
}//獲取成績(jī)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統(tǒng)計(jì)數(shù)據(jù)維護(hù)子系統(tǒng)設(shè)計(jì)說(shuō)明#include<stdio.h>#include<string.h>#include"STUDENT.H"voidtongji(){voidcnametongji();voidclasstongji();voidclassandcnametongji();voidclassandcnametongjifour();voidclassesaverage();chara;while(1){系統(tǒng)主菜單");系統(tǒng)主菜單");puts("puts("1:按課名統(tǒng)計(jì)成績(jī)");puts("2:按班名統(tǒng)計(jì)成績(jī)");puts("3:按課名班名統(tǒng)計(jì)成績(jī)");puts("4:按課名班名優(yōu)良中差人數(shù)");puts("5:統(tǒng)計(jì)各班平均成績(jī)");puts("0:退出系統(tǒng)");printf("請(qǐng)輸入數(shù)字選擇:”);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;}}}//按課名統(tǒng)計(jì)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;}//提示輸入要統(tǒng)計(jì)的課程名。printf("\nEnteracoursenameofthetongji:");scanf("%s",name);//找到該課程的課程號(hào)。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("未找到你要找的數(shù)據(jù)!!");return;}fclose(fp);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");found=0;if(!fp){printf("Createfileerror!\n");return;}//找到該課程的相關(guān)成績(jī)。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("未找到你要找的數(shù)據(jù)??!");return;}fclose(fp);}//按班名統(tǒng)計(jì)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;//提示要統(tǒng)計(jì)的班名。printf("\nEnteraclassnameofthetongji:");scanf("%s",name);fp=fopen("d:\\STUDENT\\GRADE.dat","rb");if(!fp){printf("Createfileerror!\n");return;}n=andgetsno(name,snos);〃通過(guò)調(diào)用函數(shù),獲取學(xué)生號(hào)//取得這些學(xué)生的成績(jī)。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;}//按班名,課名統(tǒng)計(jì)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);〃調(diào)用函數(shù)獲得學(xué)生號(hào)cno=andgetcno(name2);〃調(diào)用函數(shù)獲得課號(hào)。if(cno==-l){puts("Nosuchcourse!");return;}m=andgetgrades(cno,n,snos,grades);〃求得成績(jī)和個(gè)數(shù)//求最大值,最小值,平均值,及格率。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;}//按課名,班名統(tǒng)計(jì)優(yōu)良中差。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);//調(diào)用函數(shù)獲得學(xué)生號(hào)cno=andgetcno(name2);//調(diào)用函數(shù)獲得課號(hào)if(cno==-1){puts("Nosuchcourse!");return;}m=andgetgrades(cno,n,snos,grades);//獲取成績(jī),及個(gè)數(shù)。//比較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優(yōu) 良 中 及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;〃獲取有多少班級(jí)}}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]);//獲取學(xué)生號(hào),人數(shù)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]的所有成績(jī)}}}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);}四.軟件使用說(shuō)明
(軟件操作說(shuō)明,注意事項(xiàng),讓用戶(hù)會(huì)使用,主要操作界面用截圖)運(yùn)行程序進(jìn)入到如下界面:vl>.從鍵盤(pán)輸入數(shù)字1得:■t:\STUDEHT\pebug\STUDENT.eKe"加改除
霍刪M采據(jù)據(jù)墓主數(shù)數(shù)數(shù)系.凱匕HT匕一出J盂千學(xué)遑.12301?鍵入數(shù)字1,添加數(shù)據(jù),如圖:1230加改除單主數(shù)數(shù)數(shù)系統(tǒng)4注4岀astudentnumriermaneclass:9500&kk98anothei*student?astudentnuinlieranothei*student?Ly/nJynaneclass=95007ff89[jj/nlni]r改除單主數(shù)數(shù)數(shù)系統(tǒng)蘭匕一蘭出2?鍵入數(shù)字22?鍵入數(shù)字2,修改數(shù)據(jù),如圖:95006V5M07pleaseenterthenoofthemodif^9500695006 kk 98你確實(shí)要修咬該學(xué)邙笊耳依信黒北S)ypleaseentsrthenaneofthemodifyPPplcaeccrtei*theclasso£themodify99FTi,D:\5TUDENT\Debug\STUDENT.eae11classl95003ccclassl95004class295005eeclass295001aaclassl95007pleaseeritei*therhnofthedel
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 成都理工大學(xué)工程技術(shù)學(xué)院《社會(huì)工作服務(wù)項(xiàng)目管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 醫(yī)院護(hù)理制度改革
- 紅色資源在大學(xué)生社會(huì)責(zé)任感培養(yǎng)中的獨(dú)特作用
- 電子科技大學(xué)中山學(xué)院《品牌策劃與創(chuàng)新設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 漯河職業(yè)技術(shù)學(xué)院《植物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 煙臺(tái)幼兒師范高等專(zhuān)科學(xué)?!洞髮W(xué)物理D》2023-2024學(xué)年第一學(xué)期期末試卷
- 機(jī)關(guān)工作總結(jié)匯報(bào)
- 推進(jìn)人工智能治理法治化研究
- 廣東海洋大學(xué)《英語(yǔ)翻譯技巧》2023-2024學(xué)年第一學(xué)期期末試卷
- 滿(mǎn)洲里俄語(yǔ)職業(yè)學(xué)院《測(cè)量學(xué)C》2023-2024學(xué)年第一學(xué)期期末試卷
- 2024高校院長(zhǎng)述職報(bào)告
- 酒店升級(jí)改造方案
- 高一新生分班考試英語(yǔ)試卷(含答案)
- 軍工行業(yè)產(chǎn)業(yè)分析
- 《地震和地震災(zāi)害》課件
- 《古典主義文學(xué)》課件
- 腎病科膜增生性腎小球腎炎診療規(guī)范2023版
- 人工智能引論智慧樹(shù)知到課后章節(jié)答案2023年下浙江大學(xué)
- 衛(wèi)浴行業(yè)和水龍頭知識(shí)培訓(xùn)教材課件
- 裝飾工程項(xiàng)目管理組織機(jī)構(gòu)
- 金庫(kù)安全門(mén)采購(gòu)合同范本
評(píng)論
0/150
提交評(píng)論