版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、( 一 ) 、 課程設(shè)計(jì)題目學(xué)生成績(jī)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(二)、 課程設(shè)計(jì)目的1、進(jìn)一步掌握和利用C 語(yǔ)言進(jìn)行程設(shè)計(jì)的能力;2、進(jìn)一步理解和運(yùn)用結(jié)構(gòu)化程設(shè)計(jì)的思想和方法;3、初步掌握開(kāi)發(fā)一個(gè)小型實(shí)用系統(tǒng)的基本方法;4、學(xué)會(huì)調(diào)試一個(gè)較長(zhǎng)程序的基本方法;5、學(xué)會(huì)利用流程圖或N-S 圖表示算法;6、掌握書(shū)寫(xiě)程設(shè)計(jì)開(kāi)發(fā)文檔的能力(書(shū)寫(xiě)課程設(shè)計(jì)報(bào)告);(三 )、 設(shè)計(jì)內(nèi)容1、每一條記錄包括一個(gè)學(xué)生的學(xué)號(hào)、姓名、3 門(mén)課成績(jī)、平均成績(jī)。2、輸入功能:可以一次完成若干條記錄的輸入。3、顯示功能:完成全部學(xué)生記錄的顯示。4、查找功能:完成按姓名查找學(xué)生記錄,并顯示。5、排序功能:按學(xué)生平均成績(jī)進(jìn)行排序。6、插
2、入功能:按平均成績(jī)高低插入一條學(xué)生記錄。7、將學(xué)生記錄存在文件score中。8、應(yīng)提供一個(gè)界面來(lái)調(diào)用各個(gè)功能,調(diào)用界面和各個(gè)功能的操作界面應(yīng)盡可能清晰美觀 !可編輯范本(四)、 設(shè)計(jì)要求1、用 C 語(yǔ)言實(shí)現(xiàn)系統(tǒng);2、利用結(jié)構(gòu)體數(shù)組實(shí)現(xiàn)學(xué)生成績(jī)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì);3、系統(tǒng)具有增加,查詢,插入,排序等基本功能;4、系統(tǒng)的各個(gè)功能模塊要求用函數(shù)的形式實(shí)現(xiàn);5、完成設(shè)計(jì)任務(wù)并書(shū)寫(xiě)課程設(shè)計(jì)報(bào)告。6、將學(xué)生成績(jī)信息存在文件中。(五)、提交材料1、課程設(shè)計(jì)報(bào)告1)課程設(shè)計(jì)題目、內(nèi)容、要求。2)總體設(shè)計(jì)(包含幾大功能模塊)。3)詳細(xì)設(shè)計(jì)(各功能模塊的具體實(shí)現(xiàn)算法流程圖)4)數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)描述,各模塊(函數(shù))的功能介
3、紹,參數(shù)說(shuō)明等。5)調(diào)試分析(包含各模塊的測(cè)試用例,及測(cè)試結(jié)果。)6)總結(jié)(課程設(shè)計(jì)完成了哪些功能,還有哪些地方需要改進(jìn),及通過(guò)一周的課程設(shè)計(jì)有何收獲,調(diào)試程序的體會(huì)等)二:本程序共有八個(gè)功能與數(shù)據(jù)結(jié)構(gòu)說(shuō)明:學(xué)生記錄的輸入 (一次性輸入,輸入個(gè)數(shù)由用戶決定,最大可容納80 記錄,最大數(shù)可以在源程序中改) 。追加學(xué)生記錄。(追加后不能超過(guò)最在值80)??删庉嫹侗拘薷挠涗洝h除記錄。瀏覽全部記錄。查找記錄(按姓名查找)。插入記錄。對(duì)記錄進(jìn)行排序(按平均成績(jī)排序)。退出。10數(shù)據(jù)結(jié)構(gòu)是這樣的:學(xué)號(hào)只能由數(shù)字字符組成,最大可以個(gè)字符;姓名由字符組成,最大可以個(gè)字符;三門(mén)科目分?jǐn)?shù)都是整型;平均成績(jī)是實(shí)型
4、。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)/* 以輸出打開(kāi)方式 ,在此前的記錄被覆蓋 */printf(nCannot open filen)
5、;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)/* 以輸出打開(kāi)方式 ,在此前的記錄被覆蓋 */printf(nCannot open filen);可編輯范本
6、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 allnowt2).Back: bb);scanf(%d,&w);if(w=1) browse();
7、else menu();/* 顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù) */void printf_face()/* 顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目 */printf(ntNO.namescore1 score2score3 averagen);average(int i)/* 對(duì)第 i 個(gè)記錄的分?jǐn)?shù)求平均值 */可編輯范本int j,sum;for(sum=0,j=0;j3;j+)sum+=stui.scorej;stui.ave=sum/3.0;/* 學(xué)號(hào)輸入函數(shù) */no_input(int i,int n)/*i 表示第 i 個(gè)的學(xué)生信息 ,n 表示比較到第 n個(gè)學(xué)生 */int j,k,w1;dow1=0;print
8、f(NO.:);scanf(%s,stui.num);for(j=0;stui.numj!=0;j+)/* 學(xué)號(hào)輸入函數(shù) ,作了嚴(yán)格規(guī)定 */if(stui.numj9)/* 判斷學(xué)號(hào)是否為數(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é)號(hào)是否有雷同可編輯范本*/puts(This rec
9、ord is exist. please reinput!n);w1=1;break;while(w1=1);/* 對(duì)分?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é)號(hào)輸入函數(shù) */printf(name:);scanf(%s,);score_input(i);/* 調(diào)用分?jǐn)?shù)輸入函數(shù) */可編輯范本average(i);/* 調(diào)
10、用求平均值函數(shù) */* 顯示一個(gè)記錄的函數(shù) */printf_one(int i)/* 顯示一個(gè)記錄的函數(shù) */int j;printf(%11s %-17s,stui.num,);for(j=0;jnn1).NO.2.name 3).score1 4).score2n 5).score3 6).allscore 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);
11、printf_face();/* 調(diào)用顯示數(shù)據(jù)結(jié)構(gòu)項(xiàng)目函數(shù)*/可編輯范本printf_one(i);/* 修改后的記錄讓用戶確認(rèn)*/printf(nAre you sure?nnt1).Sure2).No and remodify3).Backwithout save in this time bb);/* 是否確定 */scanf(%d,&w1);/* 選擇 2 則表示這次修改錯(cuò)誤要重新修改*/while(w1=2);return(w1);/* 返回控制值 */*輸入模塊 */enter()/* 輸入模塊 */int i,n;printf(How many students(0-%d)?:,
12、N);scanf(%d,&n);/* 要輸入的記錄個(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 ad
13、d(0-%d)?:,N-n);scanf(%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 方式打開(kāi)文件 ,追加保存*/printf(cannot open filen);return;for(i=n;ik;i+)/* 輸入出到文件 */if(fwrite(&stui,sizeof(struct student),1,fp)!=1)printf(file w
14、rite errorn);fclose(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
15、.which needed modify. pass any key tocontiune . . .);getch();puts(nn);printf_one(i);/* 調(diào)用顯示一個(gè)記錄的函數(shù)*/puts_();可編輯范本doprintf(nnEnter NO. that you want to modify!NO.:);scanf(%s,s.num);/* 輸入要修改的數(shù)據(jù)的學(xué)號(hào)*/for(i=0;in;i+)/* 查找要修改的數(shù)據(jù) */if(strcmp(s.num,stui.num)=0)k=i;/* 找到要修改的記錄 */s=stui;/* 把 stui(即當(dāng)次修改的學(xué)生記錄)備份
16、給 s,以便用戶反悔時(shí)恢復(fù)名譽(yù) */if(k=-1) printf(nnNO exist! please again);while(k=-1);/* 當(dāng) K=-1 表示沒(méi)有找到 */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 modifyanother?nnt1).Yes2).
17、Back with savet bb);scanf(%d,&w0);w2=1;/* 來(lái)控制保存 ,使 w2=1 是標(biāo)記已有過(guò)修改 */可編輯范本elsew0=0;if(w2=1)stuk=s;/* 走到這里是由于用戶沒(méi)有確認(rèn)這次修改 (在調(diào)用修改函數(shù)w1=modify_data(k,n);時(shí)沒(méi)有確認(rèn) ). 使 W0=0,為了讓終止循環(huán) ,stuk=s,則把備份的 s 恢復(fù)給 stuk(即當(dāng)次修改的 ),這樣的好處是確保在此之前修改過(guò)的成功保存,而本次 (用戶沒(méi)有確認(rèn)的 )不修改 */if(w0!=1&w2=1)/*W0 不等于 1則表示正常返回 ,w2=1 表示在此之前有過(guò)修改 ,這時(shí)就保存用
18、戶已確認(rèn)修改的并返回*/save(n);/*w2 不等于 1 表示在此次之前沒(méi)有修改過(guò)(即:第一次 ),而又反悔這次修改 ,則不保存返回 */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)要?jiǎng)h除的記錄*/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)/*
19、目的是分屏顯示,每 10 個(gè)一屏 */printf(nnRemember NO. which needed del. pass any key to contiune. . .);getch();puts(nn);printf_one(i);/*調(diào)用顯示一個(gè)記錄的函數(shù)*/puts_();doprintf(nnEnter NO. that you want to Delete!NO.:);scanf(%s,s.num);/* 輸入要修改的數(shù)據(jù)的學(xué)號(hào)*/for(i=0;in;i+) /* 查找要修改的數(shù)據(jù) if(strcmp(s.num,stui.num)=0)*/k=i;/*找到要修改的記錄的下
20、標(biāo)賦給K*/s=stui;if(k=-1) printf(nnNO exist! please again); /*K=-1,表示沒(méi)有找到相同之的*/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).sure2).no and del another3).back without save all bb);scanf(%d,&c);可編輯范本if(c=1)stuk.ave=0;/*stuk.ave=0 用來(lái)標(biāo)識(shí)這個(gè)記錄是要?jiǎng)h除的.保存
21、時(shí)則不保存stuk.ave=0 的數(shù)據(jù) */printf(nnSuccessful _.nnAre you again?nt1).again2).back to menut bb);/* 問(wèn)是否繼續(xù) */scanf(%d,&w0);if(c=3) w0=0;/*w0=0 不刪除直接返回*/if(w0!=1&c!=3)/* 只有當(dāng)確認(rèn)刪除后返回才保存,不刪除直接返回則不保存,且不保存在此之前刪除過(guò)的記錄 */save(n);while(w0=1);menu();/* 返回主介面 */*瀏覽 (全部 )模塊 */browse()/* 瀏覽 (全部 )模塊 */int i,j,n;n=load();
22、/* 加載記錄 */clrscr();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(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();/*查找模塊
23、 */search()/* 查找模塊 */int i,n,k,w1=1,w2,w3,w4;struct student s;n=load();dodok=-1;printf(nnEnter name that you want to search!name:);scanf(%s,);/* 輸入要修改的數(shù)據(jù)的學(xué)號(hào)*/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è)
24、記錄的函數(shù)*/if(k=-1)可編輯范本printf(nnNO exist! please);printf(nnAre you again?nt1).again2).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).Searchanother2).Modify3).Delete4).Back menu bb);scanf(%d,&w2);
25、switch(w2)case 2:w3=modify_data(k,n);break; /*調(diào)用修改數(shù)據(jù)函數(shù) */case 3:printf(nAre you sure?nt1).Sure2).No andback 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).Searchanother2).Back bb);scanf(%d,&w2);while(w2=1);
26、menu();/*插入模塊 */insert()/* 插入模塊 */int i,j,n,c;struct student s;n=load();puts(nInput one data.n);doinput(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);/*排序模塊 (按平均成績(jī) )*/order()/* 排序模塊 (按平均成績(jī) )*/int i,j,k,n;struct student s;n=load();for(i=0;in-1;i+)/* 選擇法排序 */k=i;for(j=i+1;jstuk.ave) k=j;s=stui;stui
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度智能安防系統(tǒng)設(shè)備維修與升級(jí)合同3篇
- 二零二五年度鄉(xiāng)村旅游開(kāi)發(fā)農(nóng)村房屋買賣合同協(xié)議書(shū)2篇
- 2025年度企業(yè)公務(wù)車借用與車輛保險(xiǎn)理賠協(xié)議范本3篇
- 二零二五年度農(nóng)機(jī)維修配件進(jìn)出口貿(mào)易合同模板3篇
- 二零二五年度農(nóng)村宅基地房屋買賣及農(nóng)村社會(huì)保障體系建設(shè)合同
- 2025年度農(nóng)村農(nóng)業(yè)勞務(wù)用工合同范本(含勞動(dòng)爭(zhēng)議調(diào)解)
- 二零二五年度新能源實(shí)驗(yàn)室儲(chǔ)能技術(shù)研究合同3篇
- 二零二五年度汽車維修兼職技師雇傭合同3篇
- 2025年度XX能源公司二零二五年度綠色貸款合同3篇
- 2025年度商業(yè)綜合體寫(xiě)字樓租賃管理服務(wù)協(xié)議3篇
- 護(hù)理查房深靜脈置管
- 計(jì)算與人工智能概論知到智慧樹(shù)章節(jié)測(cè)試課后答案2024年秋湖南大學(xué)
- 2024年度油漆涂料生產(chǎn)線租賃合同3篇
- 2024-2024年上海市高考英語(yǔ)試題及答案
- 慶祝澳門(mén)回歸25周年主題班會(huì) 課件 (共22張)
- 《藥事管理與法規(guī)》期末考試復(fù)習(xí)題及答案
- 血液病染色體
- 幼兒園膳食管理委員會(huì)組織結(jié)構(gòu)概述
- 介入治療的臨床應(yīng)用
- 第四章 牛頓運(yùn)動(dòng)定律 章末檢測(cè)題(基礎(chǔ)卷)(含答案)2024-2025學(xué)年高一上學(xué)期物理人教版(2019)必修第一冊(cè)
- 華中師范大學(xué)《高等代數(shù)與解析幾何》2023-2024學(xué)年第一學(xué)期期末試卷
評(píng)論
0/150
提交評(píng)論