版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、. . 陽(yáng) 航 空 航 天 大 學(xué)課程設(shè)計(jì)學(xué)號(hào) 153402010417班級(jí)電信 1504 姓名指導(dǎo)教師鶴 丹2016 年 9 月 18 日. . 航 空 航 天 大 學(xué)課 程 設(shè) 計(jì) 任 務(wù) 書(shū)學(xué)院:電子信息工程學(xué)院專業(yè):電子信息工程班級(jí):電子學(xué)號(hào):題目:隨機(jī)點(diǎn)名系統(tǒng)一、課程設(shè)計(jì)時(shí)間二、課程設(shè)計(jì)容用 c語(yǔ)言編寫(xiě)軟件完成以下任務(wù):教師在每次上課時(shí),需要對(duì)學(xué)生隨機(jī)點(diǎn)名提問(wèn);學(xué)生信息應(yīng)事先保存到文件 myfile.dat中。學(xué)生共有8 人,如下:20013011001 杜永寧 20013011002 王傳華20013011003 殷泳 20013011004 柳青20013011005 王麗200
2、13011006 華20013011007 白雪 20013011008 薛峰所謂點(diǎn)名,是指將某位同學(xué)的和學(xué)號(hào)打印到屏幕上,則表示該同學(xué)被點(diǎn)名 1 次;注意點(diǎn)名的隨機(jī)性,即公正性。三、課程設(shè)計(jì)要求程序質(zhì)量:貫徹結(jié)構(gòu)化的程序設(shè)計(jì)思想。用戶界面友好,功能明確,操作方便。用戶界面中的菜單至少應(yīng)包括“開(kāi)始點(diǎn)名” 、 “顯示所有同學(xué)點(diǎn)名情況” 、 “保存點(diǎn)名” 、 “退出” 4 項(xiàng)。代碼應(yīng)適當(dāng)縮進(jìn),并給出必要的注釋,以增強(qiáng)程序的可讀性。課程設(shè)計(jì)說(shuō)明書(shū):課程結(jié)束后, 上交課程設(shè)計(jì)說(shuō)明書(shū)和源程序。課程設(shè)計(jì)說(shuō)明書(shū)的容參見(jiàn)提供的模板。四、指導(dǎo)教師和學(xué)生簽字指導(dǎo)教師: _ 學(xué)生簽名: _ 五、成績(jī)六、教師評(píng)語(yǔ).
3、. 目錄一、需求分析 . 1 二、設(shè)計(jì)分析 . 2 三、主要界面截圖 . 9 四、技術(shù)要點(diǎn) . . 12 五、個(gè)人總結(jié) . . 18 六、參考文獻(xiàn) . . 18 七、源程序 . . 19 . . . . 一、需求分析此程序是為點(diǎn)名而設(shè)計(jì),經(jīng)分析可知,整個(gè)程序的設(shè)計(jì)實(shí)現(xiàn)大致分為四個(gè)模塊,其中每一個(gè)模塊對(duì)應(yīng)一個(gè)功能,他們的功能分別是:程序界面設(shè)計(jì)模塊,文件讀寫(xiě)模塊,顯示點(diǎn)名情況模塊,隨機(jī)算法模塊。1、程序界面設(shè)計(jì)模塊主要實(shí)現(xiàn)程序最初運(yùn)行時(shí)程序界面友好、美觀的的構(gòu)型以及簡(jiǎn)明的操作提示;2、文件讀寫(xiě)模塊實(shí)現(xiàn)的功能是對(duì)file20.txt文件數(shù)據(jù)的讀取和存儲(chǔ),將文件中的數(shù)據(jù)保存到結(jié)構(gòu)體student 中
4、,并將點(diǎn)名次數(shù)通過(guò) save 函數(shù)保存到文件中;3、顯示點(diǎn)名情況模塊按照題目的要求將數(shù)據(jù)文件中所有學(xué)生的學(xué)號(hào)、 、是否缺席打印到屏幕上;4、點(diǎn)名算法模塊通過(guò)調(diào)用自定義函數(shù)open() 和 rew() 實(shí)現(xiàn)點(diǎn)名,并將被點(diǎn)到的學(xué)號(hào)、 、是否缺席打印到屏幕上;除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運(yùn)行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。. . 二、設(shè)計(jì)分析1、整體框架圖隨機(jī)點(diǎn)名系統(tǒng)菜單模塊創(chuàng)建名單模塊點(diǎn)名模塊顯示信息模塊保存模塊. . 圖 1:整體框架圖2、流程圖 2.1. 保存函數(shù)流程圖如圖所示,通過(guò)rb+的方式打開(kāi)文件,通. . 過(guò) for 循環(huán),將結(jié)構(gòu)體中的保
5、存的學(xué)生信息保存到文件當(dāng)中。yes if(fp=fopen(file20.txt,rb+)=null) no printf(文件打開(kāi)失敗 n for(i=0;i8;i+) if(fwrite(&stdi,sizeof(struct student),1,fp)!=1) yes no printf(文件保存失敗 n); 文件保存成功關(guān)閉文件. . 圖 2 sa ve 函數(shù)進(jìn)行保存的流程圖2.2 、菜單函數(shù)流程圖如圖3 所示,通過(guò) switch 語(yǔ)句進(jìn)行選擇,調(diào)用不同的功能函數(shù),從而達(dá)到實(shí)現(xiàn)各部分功能的作用。if(fp=fopen(file20.txt,ab+)=null) . . yes
6、 no 文件打開(kāi)失敗 exit(0) for(i=0;i8;i+) scanf(%d,&c);switch(c);while(1) 真case 1 否開(kāi)始點(diǎn)名真 case 2 否信息統(tǒng)計(jì)真case 3; 否學(xué)生信息添加 case 4 退出圖 3:菜單模塊的流程圖. . 2.3 、點(diǎn)名函數(shù)流程圖4 所示,通過(guò)采用隨機(jī)數(shù)語(yǔ)句隨機(jī)出數(shù)字 0-7,然后運(yùn)用 switch 語(yǔ)句,通過(guò) strcmp 函數(shù),將結(jié)構(gòu)體中保存的學(xué)生編號(hào)同固定編號(hào)比較,如果相同則輸出該編號(hào)對(duì)應(yīng)的學(xué)生的信息numb=rand()%8+1switch(numb) 真case case1 否. . strcpy(temp,20
7、013011001)真case2 strcpy(temp,20013011002)真case3 trcpy(temp,20013011003). . . . . 真case8 否 for(i=0,in,i+)yes no 輸出 peoi.num,. . 圖 4:點(diǎn)名函數(shù)流程圖三、主要界面截圖圖 5. 主界面. . 圖 6 開(kāi)始點(diǎn)名圖 7 顯示所有同學(xué)的點(diǎn)名情況. . 圖 8 保存點(diǎn)名圖 9 保存點(diǎn)名. . 四、技術(shù)要點(diǎn)1、結(jié)構(gòu)體的定義并把原始信息一同定義在結(jié)構(gòu)體成員中,是程序的核心容之一void main() int i,n; int c; file *fp; if(fp=f
8、open(f:myfile.txt,r)=null)/文件不存在的時(shí)候 / write(); else n=reads(st); menu(); while(1) scanf(%d,&c); switch(c) case 1:rank_name(st);break; case 2:show(st);break; . . case 3: save(st);break; case 4:exit(0); 從上面的定義中可以看出, 結(jié)構(gòu)體類型定義中成員項(xiàng)都有確定的類型和名字,而要使用結(jié)構(gòu)體類型的數(shù)據(jù),必須經(jīng)過(guò)兩個(gè)步驟:先由關(guān)鍵字struct和用戶定義的結(jié)構(gòu)體名來(lái)說(shuō)明類型,然后在由它們說(shuō)明變量。
9、2、void write()是自定義函數(shù)它的主要用途是打開(kāi)預(yù)存的學(xué)生的信息,并把它顯示在屏幕上給老師點(diǎn)名。程序如下:void write() file *fp;/定義文件指針 / int n,i; if(fp=fopen(f:myfile.txt,a)=null) /如果文件已經(jīng)存在,可以追加學(xué)生信息. . if(fp=fopen(f:myfile.txt,w)=null) / 文件不存在時(shí),創(chuàng)建新文件,輸入學(xué)生信息 printf(文件打開(kāi)失??! n); return; for(i=0;in;i+) fprintf(fp,%st%st%dtn,sti.num,,sti.data
10、); /把學(xué)生信息存放到文件中/ fclose(fp); 3 、void save(student peo) . . file *fp; fp=fopen(f:myfile.txt,r+); int i,n; for(i=0;in;i+) fprintf(fp,%st%st%dtn,peoi.num,,peoi.data); fclose(fp); void save(student peo) file *fp; fp=fopen(f:myfile.txt,r+); int i,n; for(i=0;in;i+) fprintf(fp,%st%st%dtn,peoi.num,
11、,peoi.data); . . fclose(fp); 。如下:void rew() int i; int h=1; int k; char j; file *fp; if(fp=fopen(file20.txt,r)=null) printf(文件打開(kāi)失敗 n); exit(0); printf(*學(xué) 生 缺 席 請(qǐng) 按 a進(jìn) 行 修 改*n); printf(*輸入b 跳出修改 *n); while(h) scanf(%c,&j); . . switch(j) case a:printf(缺席學(xué)生學(xué)號(hào) n); scanf(%d,&k); k=k-101;
12、 stk.data=y; break; case b:h=0; for(i=0;i7;i+) fread(&sti,sizeof(struct student),1,fp); printf(%dt%st%cn,sti.num,,sti.data); 4、void save() 是保存學(xué)生信息的自定義函數(shù),主要將修改后的學(xué)生信息保存到file20.txt文檔中去,實(shí)現(xiàn)保存功能。程序如下:void save(student peo) . . file *fp; fp=fopen(f:myfile.txt,r+); int i,n; for(i=0;in;i+) fprint
13、f(fp,%st%st%dtn,peoi.num,,peoi.data); fclose(fp); 在上面的程序段中,用到了三個(gè)調(diào)用函數(shù)語(yǔ)句進(jìn)行操作,盡管在程序化設(shè)計(jì)中有些重復(fù),但其很方便,應(yīng)用及操作比較簡(jiǎn)單。比如 void open() 語(yǔ)句是為了打開(kāi) file20.txt文件并輸出學(xué)生情況進(jìn)行點(diǎn)名, void rew()語(yǔ)句點(diǎn)名是進(jìn)行信息統(tǒng)計(jì),void save()是保存功能的函數(shù),通過(guò)它實(shí)現(xiàn)了學(xué)生信息的添加及保存。五、個(gè)人總結(jié)在此次課設(shè)之前我c語(yǔ)言學(xué)的一般,只能勉強(qiáng)應(yīng)付考試,很多概念都非常模糊記不清楚。雖然,我的編程題目并不算難,但是,. . 在這一周的時(shí)間里,經(jīng)過(guò)不斷
14、的學(xué)習(xí)與努力及與同學(xué)進(jìn)行探討,還有老師的指導(dǎo),我的c語(yǔ)言編程終于能圓滿完成。雖然程序還有一定的瑕漬,但我以盡力完成了。我感到c語(yǔ)言程序設(shè)計(jì)確實(shí)是一門很有用的學(xué)科,所以這次課設(shè)并不是一個(gè)結(jié)束,而是一個(gè)開(kāi)始,一個(gè)對(duì)c語(yǔ)言更深入學(xué)習(xí)的開(kāi)始。六、參考文獻(xiàn)1 譚浩強(qiáng) c 程序設(shè)計(jì):清華大學(xué), 2005 2 prata,s. c primer plus. :人民郵電, 2005 七、源程序#include #include #include #include #define n 8 struct student char num20; char name10; int data; st8=20013011
15、001,杜永寧,0,20013011002,王傳華,0,20013011003,殷泳,0,20013011004,柳青,0,20013011005,王麗 ,0, 20013011006,華 ,0,20013011007,白雪 ,0,20013011008, 薛峰 ,0; . . void menu() printf(*n); printf(*menu*n); printf(*歡迎使用教師上課點(diǎn)名系統(tǒng)*n); printf(* 輸 入1 : 開(kāi) 始 點(diǎn) 名*n); printf(* 輸入2:顯示所有同學(xué)點(diǎn)名情況*n); printf(* 輸 入3 : 保 存 點(diǎn) 名*n); printf(* 輸
16、 入4: 退 出*n); printf(*n); void write() file *fp;/定義文件指針 / int n,i; if(fp=fopen(f:myfile.txt,a)=null) /如果文件已經(jīng)存在,可以追加學(xué)生信息 if(fp=fopen(f:myfile.txt,w)=null) / 文 件 不 存 在時(shí),創(chuàng)建新文件,輸入學(xué)生信息 printf(文件打開(kāi)失?。); return; for(i=0;in;i+) . . fprintf(fp,%st%st%dtn,sti.num,,sti.data); /把學(xué)生信息存放到文件中/ fclose(fp);
17、int reads(struct student peon) / 讀取學(xué)生文件中數(shù)據(jù)存到結(jié)構(gòu)體中并返回結(jié)構(gòu)體數(shù)組元素個(gè)數(shù)/ file *fp; int i=0; if(fp=fopen(f:myfile.txt,r)=null)/文件不存在的時(shí)候/ printf(文件打開(kāi)失??!n); return 0; else/文件存在時(shí) / for(i=0;!feof(fp);i+)/用循環(huán)將文件中的數(shù)據(jù)讀入到結(jié)構(gòu)體中/ fscanf(fp,%s %s %d n,peoi.num,,&peoi.data); fclose(fp); return i;/返回結(jié)構(gòu)體數(shù)組元素個(gè)數(shù)/ v
18、oid rank_name(student peo) int numb,n,i; char temp20; numb=rand()%8+1; switch(numb) . . case 1:strcpy(temp,20013011001);break; case 2:strcpy(temp,20013011002);break; case 3:strcpy(temp,20013011003);break; case 4:strcpy(temp,20013011004);break; case 5:strcpy(temp,20013011005);break; case 6:strcpy(temp,20013011006);break; case 7:strcpy(temp,20013011007);break; case 8:strcpy(temp,20013011008
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《客房服務(wù)管理》課件
- 《孟非的激勵(lì)人生》課件
- 《實(shí)驗(yàn)室管理》課件
- 2024-2025學(xué)年浙江省9+1聯(lián)考高一上學(xué)期期中考試歷史試題(解析版)
- 單位管理制度集合大合集【人事管理】十篇
- 單位管理制度集粹匯編【人力資源管理篇】
- 單位管理制度匯編大合集職員管理篇
- 單位管理制度合并匯編人力資源管理篇十篇
- 《漢字的結(jié)構(gòu)特點(diǎn)》課件
- 單位管理制度范例選集【員工管理篇】
- 江西省上饒市2023-2024學(xué)年高一上學(xué)期期末教學(xué)質(zhì)量測(cè)試物理試題(解析版)
- 2024年財(cái)務(wù)風(fēng)險(xiǎn)評(píng)估和控制培訓(xùn)資料
- 2024建筑消防設(shè)施檢測(cè)報(bào)告書(shū)模板
- 兒童流行性感冒的護(hù)理
- 萬(wàn)科保安公司測(cè)評(píng)題及答案
- 揭露煤層、貫通老空專項(xiàng)安全技術(shù)措施
- 醫(yī)美項(xiàng)目水光培訓(xùn)課件
- 個(gè)人在工作中的服務(wù)態(tài)度和客戶滿意度
- 部長(zhǎng)述職答辯報(bào)告
- 2024年中國(guó)航空油料集團(tuán)公司招聘筆試參考題庫(kù)含答案解析
- 中央廣播電視大學(xué)畢業(yè)生登記表-8
評(píng)論
0/150
提交評(píng)論