c語言課程設(shè)計(jì)網(wǎng)_學(xué)生成績管理系統(tǒng)4_第1頁
c語言課程設(shè)計(jì)網(wǎng)_學(xué)生成績管理系統(tǒng)4_第2頁
c語言課程設(shè)計(jì)網(wǎng)_學(xué)生成績管理系統(tǒng)4_第3頁
c語言課程設(shè)計(jì)網(wǎng)_學(xué)生成績管理系統(tǒng)4_第4頁
c語言課程設(shè)計(jì)網(wǎng)_學(xué)生成績管理系統(tǒng)4_第5頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、-作者xxxx-日期xxxxc語言課程設(shè)計(jì)網(wǎng)_學(xué)生成績管理系統(tǒng)4【精品文檔】(一)、 課程設(shè)計(jì)題目學(xué)生成績管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(二)、 課程設(shè)計(jì)目的1、 進(jìn)一步掌握和利用C語言進(jìn)行程設(shè)計(jì)的能力;2、 進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法;3、 初步掌握開發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;4、 學(xué)會調(diào)試一個(gè)較長程序的基本方法;5、 學(xué)會利用流程圖或N-S圖表示算法;6、 掌握書寫程設(shè)計(jì)開發(fā)文檔的能力(書寫課程設(shè)計(jì)報(bào)告);(三)、 設(shè)計(jì)內(nèi)容1、每一條記錄包括一個(gè)學(xué)生的學(xué)號、姓名、3門課成績、平均成績。2、輸入功能:可以一次完成若干條記錄的輸入。3、顯示功能:完成全部學(xué)生記錄的顯示。4、查找功能:完

2、成按姓名查找學(xué)生記錄,并顯示。5、排序功能:按學(xué)生平均成績進(jìn)行排序。6、插入功能:按平均成績高低插入一條學(xué)生記錄。7、將學(xué)生記錄存在文件score中。8、應(yīng)提供一個(gè)界面來調(diào)用各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀!(四)、 設(shè)計(jì)要求1、 用C語言實(shí)現(xiàn)系統(tǒng);2、 利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、 系統(tǒng)具有增加,查詢,插入,排序等基本功能;4、 系統(tǒng)的各個(gè)功能模塊要求用函數(shù)的形式實(shí)現(xiàn);5、 完成設(shè)計(jì)任務(wù)并書寫課程設(shè)計(jì)報(bào)告。6、 將學(xué)生成績信息存在文件中。(五)、提交材料1、課程設(shè)計(jì)報(bào)告1)課程設(shè)計(jì)題目、內(nèi)容、要求。2)總體設(shè)計(jì)(包含幾大功能模塊)。3)詳細(xì)設(shè)計(jì)(各功能

3、模塊的具體實(shí)現(xiàn)算法流程圖)4)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述,各模塊(函數(shù))的功能介紹,參數(shù)說明等。5)調(diào)試分析(包含各模塊的測試用例,及測試結(jié)果。)6)總結(jié)(課程設(shè)計(jì)完成了哪些功能,還有哪些地方需要改進(jìn),及通過一周的課程設(shè)計(jì)有何收獲,調(diào)試程序的體會等)二:本程序共有八個(gè)功能與數(shù)據(jù)結(jié)構(gòu)說明:學(xué)生記錄的輸入(一次性輸入,輸入個(gè)數(shù)由用戶決定,最大可容納80記錄,最大數(shù)可以在源程序中改) 。追加學(xué)生記錄。(追加后不能超過最在值80)。修改記錄。刪除記錄。瀏覽全部記錄。查找記錄(按姓名查找)。插入記錄。對記錄進(jìn)行排序(按平均成績排序)。退出。10數(shù)據(jù)結(jié)構(gòu)是這樣的:學(xué)號只能由數(shù)字字符組成,最大可以個(gè)字符;姓名由字符組

4、成,最大可以個(gè)字符;三門科目分?jǐn)?shù)都是整型;平均成績是實(shí)型。11程序中定義了學(xué)生的容量為個(gè)。容量可以在源程序宏定義中改,本程序宏定義#define N 50#include#include/*控制學(xué)生記錄的容量*/#define N 50struct studentchar num11;char name20;int score3;float ave;stuN;/*全新保存函數(shù)*/save(int n) /*保存函數(shù),保存n個(gè)記錄*/FILE *fp;int i;if(fp=fopen(score.txt,wb)=NULL) /*以輸出打開方式,在此前的記錄被覆蓋*/ printf(nCanno

5、t open filen); return NULL; for(i=0;in;i+) if(stui.ave!=0) /*stui.ave=0表此記錄已刪除*/ if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn);fclose(fp);/*加載記錄或可以計(jì)算記錄個(gè)數(shù)的函數(shù)*/load() /*加載記錄或可以計(jì)算記錄個(gè)數(shù)的函數(shù)*/FILE *fp;int i;if(fp=fopen(score.txt,rb)=NULL) /*以輸出打開方式,在此前的記錄被覆蓋*/ printf(nCannot op

6、en filen); return NULL; for(i=0;!feof(fp);i+) fread(&stui,sizeof(struct student),1,fp);fclose(fp);return(i-1); /*返回記錄個(gè)數(shù)*/*一個(gè)任務(wù)結(jié)束時(shí)的選擇瀏覽還是返回的函數(shù)*/void printf_back() /*一個(gè)任務(wù)結(jié)束時(shí)的選擇瀏覽還是返回*/int k,w;printf(nntSuccessful. _nn);printf(What do you want to do? nnt1).Browse all nowt2).Back: bb);scanf(%d,&w);if(w=

7、1) browse();else menu();/*顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/void printf_face() /*顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目*/printf(ntNO. name score1 score2 score3 averagen);average(int i) /*對第i個(gè)記錄的分?jǐn)?shù)求平均值*/int j,sum;for(sum=0,j=0;j3;j+) sum+=stui.scorej;stui.ave=sum/3.0;/*學(xué)號輸入函數(shù)*/no_input(int i,int n) /*i表示第i個(gè)的學(xué)生信息,n表示比較到第n個(gè)學(xué)生*/int j,k,w1; do w1=0; print

8、f(NO.:); scanf(%s,stui.num); for(j=0;stui.numj!=0;j+) /*學(xué)號輸入函數(shù),作了嚴(yán)格規(guī)定*/ if(stui.numj9) /*判斷學(xué)號是否為數(shù)字*/ puts(Input error! Only be made up of (0-9).Please reinput!n); w1=1;break; if(w1!=1) for(k=0;kn;k+) /*比較到第n個(gè)學(xué)生*/ /*排除第i個(gè)學(xué)生記錄即你要修改的*/ if(k!=i&strcmp(stuk.num,stui.num)=0) /*判斷學(xué)號是否有雷同*/ puts(This record

9、 is exist. please reinput!n); w1=1;break; while(w1=1);/*對分?jǐn)?shù)輸入*/score_input(int i)int j;for(j=0;j3;j+) printf(score %d:,j+1); scanf(%d,&stui.scorej); /*輸入一個(gè)記錄函數(shù)*/input(int i) /*輸入一個(gè)記錄函數(shù)*/no_input(i,i); /*調(diào)用學(xué)號輸入函數(shù)*/printf(name:);scanf(%s,);score_input(i); /*調(diào)用分?jǐn)?shù)輸入函數(shù)*/average(i); /*調(diào)用求平均值函數(shù)*/*

10、顯示一個(gè)記錄的函數(shù)*/printf_one(int i) /*顯示一個(gè)記錄的函數(shù)*/int j;printf(%11s %-17s,stui.num,);for(j=0;jnn 1).NO. 2.name 3).score1 4).score2n 5).score3 6).all score 7).all data 8).cancel and back); printf(Which you needed?: bb); scanf(%d,&c); if(c8|c8|c2&c7) average(i); /*調(diào)用求平均值函數(shù)*/ puts(nNow:n); printf_face

11、(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ printf_one(i); /*修改后的記錄讓用戶確認(rèn)*/ printf(nAre you sure?nnt1).Sure 2).No and remodify 3).Back without save in this time bb); /*是否確定*/ scanf(%d,&w1); /*選擇2則表示這次修改錯誤要重新修改*/ while(w1=2); return(w1); /*返回控制值*/*輸入模塊*/enter() /*輸入模塊*/int i,n;printf(How many students(0-%d)?:,N);scanf(%d,&n

12、); /*要輸入的記錄個(gè)數(shù)*/printf(nEnter data nownn);for(i=0;in;i+) printf(nInput %dth student record.n,i+1); input(i); /*調(diào)用輸入函數(shù)*/ if(i!=0) save(n); /*調(diào)用保存函數(shù)*/printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)讓用戶選擇是瀏覽還是返回*/*追加模塊*/add() /*追加模塊*/int i,n,m,k;FILE *fp;n=load();printf(How many students are you want to add(0-%d)?:,N-n);scanf(

13、%d,&m); /*輸入要追加的記錄個(gè)數(shù)*/k=m+n;for(i=n;ik;i+) printf(nInput %dth student record.n,i-n+1); input(i); /*調(diào)用輸入函數(shù)*/ if(fp=fopen(score.txt,ab)=NULL) /*以ab方式打開文件,追加保存*/ printf(cannot open filen); return; for(i=n;ik;i+) /*輸入出到文件*/ if(fwrite(&stui,sizeof(struct student),1,fp)!=1) printf(file write errorn);fclos

14、e(fp);printf_back(); /*一個(gè)任務(wù)結(jié)束時(shí)的選擇瀏覽還是返回*/*修改模塊*/modify() /*修改模塊*/struct student s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();doclrscr(); k=-1; /*給用戶看全部記錄以便確認(rèn)要修改的記錄*/ puts_(); /*顯示-*/ printf_face(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ for(i=0;in;i+) if(i!=0)&(i%10=0) /*目的是分屏顯示*/ printf(nnRemember NO.which needed modify.

15、pass any key to contiune . . .); getch(); puts(nn); printf_one(i); /*調(diào)用顯示一個(gè)記錄的函數(shù)*/ puts_(); do printf(nnEnter NO. that you want to modify! NO.:); scanf(%s,s.num); /*輸入要修改的數(shù)據(jù)的學(xué)號*/ for(i=0;in;i+) /*查找要修改的數(shù)據(jù)*/ if(strcmp(s.num,stui.num)=0) k=i; /*找到要修改的記錄*/ s=stui; /*把stui(即當(dāng)次修改的學(xué)生記錄)備份給s,以便用戶反悔時(shí)恢復(fù)名譽(yù)*/

16、if(k=-1) printf(nnNO exist! please again); while(k=-1); /*當(dāng)K=-1表示沒有找到*/ printf_face(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ printf_one(k); /*調(diào)用顯示一個(gè)記錄的函數(shù)*/ w1=modify_data(k,n); /*修改學(xué)生記錄并且返回保存控制值w1,w1=1則表示用戶已確認(rèn)修改*/ if(w1=1) /*W1等于1時(shí)則表示用戶確定這次修改*/ printf(nSuccessful _.nnAre you modify another?nnt1).Yes 2).Back with savet b

17、b); scanf(%d,&w0); w2=1; /*來控制保存,使w2=1是標(biāo)記已有過修改*/ else w0=0; if(w2=1) stuk=s; /*走到這里是由于用戶沒有確認(rèn)這次修改(在調(diào)用修改函數(shù)w1=modify_data(k,n);時(shí)沒有確認(rèn)). 使W0=0,為了讓終止循環(huán), stuk=s,則把備份的s恢復(fù)給stuk(即當(dāng)次修改的),這樣的好處是確保在此之前修改過的成功保存,而本次(用戶沒有確認(rèn)的)不修改*/ if(w0!=1&w2=1) /*W0不等于1則表示正常返回,w2=1表示在此之前有過修改,這時(shí)就保存用戶已確認(rèn)修改的并返回*/ save(n); /*w2不等于1表示在

18、此次之前沒有修改過(即:第一次),而又反悔這次修改,則不保存返回*/ while(w0=1);menu();/*刪除模塊*/del() /*刪除模塊*/struct student s;FILE *fp;int i,j,n,k,c,w0=1;n=load();doclrscr(); k=-1; /*給用戶看全部記錄以便確認(rèn)要刪除的記錄*/ puts_(); printf_face(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ for(i=0;in;i+) if(stui.ave!=0) if(i!=0)&(i%10=0) /*目的是分屏顯示,每10個(gè)一屏*/ printf(nnRemember NO

19、. which needed del. pass any key to contiune . . .); getch(); puts(nn); printf_one(i); /*調(diào)用顯示一個(gè)記錄的函數(shù)*/ puts_(); do printf(nnEnter NO. that you want to Delete! NO.:); scanf(%s,s.num); /*輸入要修改的數(shù)據(jù)的學(xué)號*/ for(i=0;in;i+) /*查找要修改的數(shù)據(jù)*/ if(strcmp(s.num,stui.num)=0) k=i; /*找到要修改的記錄的下標(biāo)賦給K*/ s=stui; if(k=-1) pri

20、ntf(nnNO exist! please again); /*K=-1,表示沒有找到相同之的*/ while(k=-1); puts(n); printf_face(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ printf_one(k); /*調(diào)用顯示一個(gè)記錄的函數(shù)*/ printf(nAre you sure?nt1).sure 2).no and del another 3).back without save all bb); scanf(%d,&c); if(c=1) stuk.ave=0; /*stuk.ave=0用來標(biāo)識這個(gè)記錄是要刪除的.保存時(shí)則不保存stuk.ave=0的數(shù)據(jù)*

21、/ printf(nnSuccessful _.nnAre you again?nt1).again 2).back to menut bb); /*問是否繼續(xù)*/ scanf(%d,&w0); if(c=3) w0=0; /*w0=0不刪除直接返回*/ if(w0!=1&c!=3) /*只有當(dāng)確認(rèn)刪除后返回才保存,不刪除直接返回則不保存,且不保存在此之前刪除過的記錄*/ save(n); while(w0=1);menu(); /*返回主介面*/*瀏覽(全部)模塊*/browse() /*瀏覽(全部)模塊*/int i,j,n;n=load(); /*加載記錄*/clrscr();puts_

22、();printf_face(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/for(i=0;in;i+) if(i!=0)&(i%10=0) /*目的是分屏顯示*/ printf(nnPass any key to contiune . . .); getch(); puts(nn); printf_one(i); /*調(diào)用顯示一個(gè)記錄的函數(shù)*/ puts_(); printf(tThere are %d record.n,n);printf(nPass any key to back . . .);getch(); /*按任意健*/menu();/*查找模塊*/search() /*查找模塊*/in

23、t i,n,k,w1=1,w2,w3,w4;struct student s;n=load();do do k=-1; printf(nnEnter name that you want to search! name:); scanf(%s,); /*輸入要修改的數(shù)據(jù)的學(xué)號*/ printf_face(); /*調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/ for(i=0;in;i+) /*查找要修改的數(shù)據(jù)*/ if(strcmp(,)=0) k=i; /*找到要修改的記錄*/ printf_one(k);break; /*調(diào)用顯示一個(gè)記錄的函數(shù)*/ if(k=-1

24、) printf(nnNO exist! please); printf(nnAre you again?nt1).again 2).NO and back bb); scanf(%d,&w1); while(k=-1&w1=1); /*如果w1不等于1則直接返回*/ w4=0;w3=0; if(k!=-1) /*k不等于-1表示找到,如果找到則選擇操作*/ printf(nnWhat do you want to do?nt1).Search another 2).Modify 3).Delete 4).Back menu bb); scanf(%d,&w2); switch(w2) cas

25、e 2:w3=modify_data(k,n);break; /*調(diào)用修改數(shù)據(jù)函數(shù)*/ case 3:printf(nAre you sure?nt1).Sure 2).No and back bb); scanf(%d,&w4); if(w4=1) stuk.ave=0; /*表示刪除*/ break; if(w3=1|w4=1) save(n); printf(nnSuccessful. _.); printf(nnWhat do you want to do?nt1).Search another 2).Back bb); scanf(%d,&w2); while(w2=1);menu(

26、);/*插入模塊*/insert() /*插入模塊*/int i,j,n,c;struct student s;n=load();puts(nInput one data.n);do input(n); /*輸入到第n個(gè)記錄,即插入到最后*/ printf_face(); printf_one(n); printf(nnAre you sure?nnt1).Suret2).cancel snd againt3).Back withuot save bb); scanf(%d,&c); if(c=1) for(j=0;jj;i-) if(stui.avestui-1.ave) s=stui-1;stui-1=stui;stui=s; save(n+1); printf_back(); else if(c!=2) menu(); while(c=2);/*排序模塊(按平均成績)*/order() /*排序模塊(按平均成績)*/int i,j,k,n;struct student s;n=load();for(i=0;in-1;i+) /*選擇法排序*/ k=i; for(j=

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論