




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、C語言程序設(shè)計綜合訓(xùn)練課程設(shè)計報告姓名: 華中圓班 級: 12物聯(lián)網(wǎng)1 指導(dǎo)教師: 孫潔成績: 目標(biāo)與內(nèi)容:目標(biāo):學(xué)生成績記錄簿設(shè)計;內(nèi)容:編制一個C語言成績記錄簿,每個學(xué)生信息包括:學(xué)號、姓名、C語言成績。具體功能:(1)創(chuàng)建信息并以磁盤文件保存;(2)讀取磁盤文件并顯示輸出所有學(xué)生的成績;(3)按學(xué)號或姓名查詢成績;(4)添加成績記錄;(5)修改指定姓名或?qū)W號的學(xué)生的成績并可存盤;(6)顯示輸出60分以下、6079、8089、90分以上各分數(shù)段的學(xué)生信息。(7)附加功能:刪除記錄并可存盤;地點與軟件環(huán)境:地點:60#103;環(huán)境:Visual C+ 6.0;課程設(shè)計主要內(nèi)容:問題分析:根據(jù)
2、題目要求,程序應(yīng)當(dāng)記錄下每個學(xué)生的學(xué)號、姓名、C語言成績等成績記錄簿應(yīng)有的全部信息,所以可以定義一個結(jié)構(gòu)體數(shù)組存放每一個學(xué)生的信息。依次錄入學(xué)生成績并存入磁盤文件,并定義一個全局變量用來記錄錄入的總?cè)藬?shù)并寫入磁盤文件,以便下一次打開文件時可以繼續(xù)錄入而不丟失前一次的信息。為了讓程序界面更加簡便易于操作,界面以菜單形式呈現(xiàn),選擇菜單編號,調(diào)用對應(yīng)的子函數(shù),實現(xiàn)程序的錄入并保存、查詢、修改、按分數(shù)段查詢學(xué)生信息、儲存磁盤文件、刪除記錄并保存、退出程序等功能。算法分析:主函數(shù)Switch語句 修改成績信息查詢成績信息讀取磁盤文件按照分數(shù)段查詢學(xué)生信息刪除學(xué)生信息記錄錄入一個學(xué)生成績按學(xué)號查詢按姓名查
3、詢按學(xué)號查詢按姓名查詢退出程序:#include#include#include#define SIZE 200typedef struct grade_listint number; char name10; float grade;GRADE_LIST;GRADE_LIST listSIZE;static int COUNT=0,I=0;void save()FILE *fp;int i;if(fp=fopen(d:LIST.dat,wb)=NULL)/打開磁盤文件printf(cannot open file!n);return;fwrite(&COUNT,sizeof(int),1,f
4、p);for(i=0;iCOUNT;i+) if(fwrite(&listi,sizeof(GRADE_LIST),1,fp)!=1)printf(file write error!);fclose(fp); void input()int i,j;printf(輸入學(xué)生信息,當(dāng)輸入學(xué)號為-1時,結(jié)束成績的輸入!n);while(1)if(COUNT=SIZE) printf(親空間已滿了哦);break; printf(學(xué)號:); scanf(%d,&listI.number); for(j=0;jCOUNT;j+) if(listI.number=listj.number) printf(
5、已有此學(xué)號了哦請重新輸入學(xué)號n學(xué)號:); scanf(%d,&listI.number); break; if(listI.number=-1)return; printf(請輸入姓名:); scanf(%s,listI.name); printf(請輸入C語言成績:); scanf(%f,&listI.grade); I+; COUNT+; save();void search() int choice,i,number;char name10;printf(請輸入查詢類型n1-按學(xué)號查詢n2-按姓名查詢n);doscanf(%d,&choice);if(choice!=1&choice!=
6、2)printf(輸入錯誤!n);while(choice!=1&choice!=2);if(choice=1)printf(請輸入要查詢的學(xué)號: );scanf(%d,&number);else printf(請輸入要查詢的姓名:);scanf(%s,name);switch(choice)case 1: for(i=0;iCOUNT;i+)if(listi.number=number)printf(n學(xué)號:%-10d姓名:%-10sC語言成績:%-10.2fnn,listi.number,,listi.grade);break;if(i=COUNT)printf(啊哦沒
7、有此條記錄哦!n);break;case 2: for(i=0;iCOUNT;i+)if(strcmp(,name)=0)printf(n學(xué)號:%-10d姓名:%-10sC語言成績:%-10.2fnn,listi.number,,listi.grade);break;if(i=COUNT)printf(啊哦沒有此條記錄哦!n);break;void updata()int choice,i,number;char name10;printf(請選擇修改方式:n1-按學(xué)號修改n2-按姓名修改n); doscanf(%d,&choice);if(choice
8、!=1&choice!=2)printf(輸入錯誤!重新輸入!n);while(choice!=1&choice!=2);if(choice=1)printf(請輸入要查詢的學(xué)號: );scanf(%d,&number);else printf(請輸入要查詢的姓名:);scanf(%s,name);switch(choice)case 1: for(i=0;iCOUNT;i+)if(number=listi.number) printf(請輸入姓名:);scanf(%s,);printf(請輸入C語言成績:);scanf(%f,&listi.grade);break;if(
9、i=COUNT)printf(啊哦沒有此條記錄哦!n); break;case 2: for(i=0;iCOUNT;i+)if(strcmp(,name)=0) printf(請輸入學(xué)號);scanf(%d,&listi.number);printf(請輸入C語言成績);scanf(%f,&listi.grade);break; if(i=COUNT)printf(啊哦沒有此條記錄哦!n); break;void DELETE()int i,a,j;printf(請輸入要刪除的學(xué)號n);scanf(%d,&a);for(i=0;iCOUNT;i+)if(listi.numb
10、er=a)for(j=i;jCOUNT-1;j+)listj=listj+1;COUNT-;save();void level()int i,choice;printf(請輸入要查詢的分數(shù)段n1-低于60分2-60793-80894-90分以上n); doscanf(%d,&choice);if(choice!=1&choice!=2&choice!=3&choice!=4)printf(啊哦選擇錯誤咯);while(choice!=1&choice!=2&choice!=3&choice!=4);switch(choice) case 1: for(i=0;iCOUNT;i+)if(list
11、i.grade60)printf(學(xué)號:%-10d姓名:%-10sC語言成績:%-10fn,listi.number,,listi.grade); break;if(i=COUNT)printf(無此類記錄n);break;case 2: for(i=0;i=60&listi.grade80)printf(學(xué)號:%-10d姓名:%-10sC語言成績:%-10fn,listi.number,,listi.grade);break;if(i=COUNT)printf(無此類記錄!n);break;case 3: for(i=0;i=80&listi.grad
12、e90)printf(學(xué)號:%-10d姓名:%-10sC語言成績:%-10fn,listi.number,,listi.grade);break;if(i=COUNT)printf(無此類記錄!n);break;case 4: for(i=0;i=90)printf(學(xué)號:%-10d姓名:%-10sC語言成績:%-10fn,listi.number,,listi.grade);break;if(i=COUNT)printf(無此類記錄!n);break;void read() int i;FILE *fp;if(fp=fopen(d:LIST.dat,r
13、b)=NULL) printf(cannot open filen);return;fread(&COUNT,sizeof(int),1,fp);I=COUNT;printf(C語言成績記錄簿n 學(xué)生成績信息一覽表n);printf(-n);for(i=0;iCOUNT;i+)fread(&listi,sizeof(GRADE_LIST),1,fp); if(listi.number=-1|listi.number=0)break;printf(學(xué)號:%-10d姓名:%-10sC語言成績:%-10.2fn,listi.number,,listi.grade);printf(
14、-n);fclose(fp); int main()int i;printf(n親,歡迎使用on);printf(n);printf( C語言成績錄入系統(tǒng)nn);printf(使用須知:退出后才能保存哦n);printf(親請選擇所需操作on); doprintf(n);printf(1-錄入一個學(xué)生成績n); printf(2-查詢一個學(xué)生成績n);printf(3-修改一個學(xué)生成績n);printf(4-查詢分數(shù)段學(xué)生信息n);printf(5-退出n);printf(6-讀取磁盤文件n);printf(7-刪除n);scanf(%d,&i);switch(i) case 1:input(
15、);save();break; case 2:search();break; case 3:updata();save();break; case 4:level();break; case 5:printf(*謝謝使用*n);break; case 6:read();break; case 7:DELETE();break; default:printf(親請重新選擇!);break;while(i!=5);save(); return 0;調(diào)試運行與結(jié)果分析:一、測試數(shù)據(jù):學(xué)號姓名C語言成績2013313101XIANG782013313102LIU972013313103YANG4920
16、13313104WANG772013313105DENG902013313106CHEN862013313107ZHAO752013313108WU812013313109TAN592013313110ZHUO94 二、運行步驟及結(jié)果:1、打開界面: 輸入-1退出錄入2、開始錄入學(xué)生成績:3、讀取磁盤文件、保存、退出:4、重新打開運行界面并讀取磁盤文件:5、繼續(xù)錄入成績:6、顯示磁盤文件中保存的所有數(shù)據(jù):7、查詢學(xué)生成績信息:8、修改學(xué)生信息:9、讀取磁盤文件,察看修改是否成功:已更改10、查詢分數(shù)段學(xué)生信息:11、刪除學(xué)號為2013313104的學(xué)生成績記錄:不再顯示2013313104的記
17、錄課程設(shè)計的小結(jié): 通過本次C語言程序設(shè)計實訓(xùn),我們能夠利用C語言面向過程的編程思想來完成系統(tǒng)的設(shè)計,熟練掌握C語言的基本知識和技能,利用所學(xué)的基本知識和技能解決簡單的編程問題。 在編程的過程中我不斷遇到各種問題,經(jīng)過老師的指導(dǎo)和自己的獨立思考,逐一解決,最終完成一個可以完成題目要求的簡單程序。在最開始編程時,我用了兩個程序分別用來執(zhí)行操作和讀取磁盤文件,但是由于操作不夠簡便而進一步作了修改。將原本用以讀取磁盤文件的程序?qū)懗勺雍瘮?shù)并在主函數(shù)中調(diào)用,并寫了一個用以保存數(shù)據(jù)的函數(shù),以達到在主函數(shù)內(nèi)保存和讀取的作用。但是由于函數(shù)依然存在一個嚴重缺陷退出程序再次運行時不能接著之前的數(shù)據(jù)繼續(xù)錄入學(xué)生信息,在老師的指導(dǎo)下,我將用以保存數(shù)據(jù)個數(shù)的全局變量值連同各個學(xué)生的信息一起寫入磁盤文件,并在退出程序再次執(zhí)行時一并讀取,以達到所輸入的數(shù)據(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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 精準(zhǔn)掌握計算機二級考試試題及答案
- 上海安全監(jiān)理試題及答案
- 思維導(dǎo)圖式網(wǎng)絡(luò)規(guī)劃設(shè)計師考試試題及答案
- 護理口腔三基試題及答案
- 健康碼面試題及答案
- 司法考試民法試題及答案
- 學(xué)生社區(qū)建設(shè)中的輔導(dǎo)員作用分析試題及答案
- 公共營養(yǎng)師考試知識盲點識別試題及答案
- 綜合分析稅務(wù)師考試試題及答案
- 破解2025年公共營養(yǎng)師考試復(fù)習(xí)障礙措施試題及答案
- 第13課 現(xiàn)代戰(zhàn)爭與不同文化的碰撞和交流 課件(17張PPT)
- 生產(chǎn)安全事故應(yīng)急預(yù)案(含深井鑄造)
- CRRT vs 中毒血液凈化模式選擇
- 《等量代換》ppt(基礎(chǔ)教育)
- 高壓液氧泵原理、結(jié)構(gòu)及檢修、結(jié)構(gòu)及檢修
- 結(jié)核病防治知識培訓(xùn)試題及答案
- 變頻器日常維護及常見故障處理85頁PPT課件
- XX光伏電站項目方案(自投)
- 《長方體正方體》課前小研究
- MIL-STD-105E抽樣計劃表
- 中國聯(lián)通消防安全管理規(guī)定
評論
0/150
提交評論