版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、. . 陽 航 空 航 天 大 學課程設計學號 153402010417班級電信 1504 姓名指導教師鶴 丹2016 年 9 月 18 日. . 航 空 航 天 大 學課 程 設 計 任 務 書學院:電子信息工程學院專業(yè):電子信息工程班級:電子學號:題目:隨機點名系統(tǒng)一、課程設計時間二、課程設計容用 c語言編寫軟件完成以下任務:教師在每次上課時,需要對學生隨機點名提問;學生信息應事先保存到文件 myfile.dat中。學生共有8 人,如下:20013011001 杜永寧 20013011002 王傳華20013011003 殷泳 20013011004 柳青20013011005 王麗200
2、13011006 華20013011007 白雪 20013011008 薛峰所謂點名,是指將某位同學的和學號打印到屏幕上,則表示該同學被點名 1 次;注意點名的隨機性,即公正性。三、課程設計要求程序質量:貫徹結構化的程序設計思想。用戶界面友好,功能明確,操作方便。用戶界面中的菜單至少應包括“開始點名” 、 “顯示所有同學點名情況” 、 “保存點名” 、 “退出” 4 項。代碼應適當縮進,并給出必要的注釋,以增強程序的可讀性。課程設計說明書:課程結束后, 上交課程設計說明書和源程序。課程設計說明書的容參見提供的模板。四、指導教師和學生簽字指導教師: _ 學生簽名: _ 五、成績六、教師評語.
3、. 目錄一、需求分析 . 1 二、設計分析 . 2 三、主要界面截圖 . 9 四、技術要點 . . 12 五、個人總結 . . 18 六、參考文獻 . . 18 七、源程序 . . 19 . . . . 一、需求分析此程序是為點名而設計,經分析可知,整個程序的設計實現(xiàn)大致分為四個模塊,其中每一個模塊對應一個功能,他們的功能分別是:程序界面設計模塊,文件讀寫模塊,顯示點名情況模塊,隨機算法模塊。1、程序界面設計模塊主要實現(xiàn)程序最初運行時程序界面友好、美觀的的構型以及簡明的操作提示;2、文件讀寫模塊實現(xiàn)的功能是對file20.txt文件數據的讀取和存儲,將文件中的數據保存到結構體student 中
4、,并將點名次數通過 save 函數保存到文件中;3、顯示點名情況模塊按照題目的要求將數據文件中所有學生的學號、 、是否缺席打印到屏幕上;4、點名算法模塊通過調用自定義函數open() 和 rew() 實現(xiàn)點名,并將被點到的學號、 、是否缺席打印到屏幕上;除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運行當中循環(huán)執(zhí)行所有的功能,并根據需要終止程序的執(zhí)行。. . 二、設計分析1、整體框架圖隨機點名系統(tǒng)菜單模塊創(chuàng)建名單模塊點名模塊顯示信息模塊保存模塊. . 圖 1:整體框架圖2、流程圖 2.1. 保存函數流程圖如圖所示,通過rb+的方式打開文件,通. . 過 for 循環(huán),將結構體中的保
5、存的學生信息保存到文件當中。yes if(fp=fopen(file20.txt,rb+)=null) no printf(文件打開失敗 n for(i=0;i8;i+) if(fwrite(&stdi,sizeof(struct student),1,fp)!=1) yes no printf(文件保存失敗 n); 文件保存成功關閉文件. . 圖 2 sa ve 函數進行保存的流程圖2.2 、菜單函數流程圖如圖3 所示,通過 switch 語句進行選擇,調用不同的功能函數,從而達到實現(xiàn)各部分功能的作用。if(fp=fopen(file20.txt,ab+)=null) . . yes
6、 no 文件打開失敗 exit(0) for(i=0;i8;i+) scanf(%d,&c);switch(c);while(1) 真case 1 否開始點名真 case 2 否信息統(tǒng)計真case 3; 否學生信息添加 case 4 退出圖 3:菜單模塊的流程圖. . 2.3 、點名函數流程圖4 所示,通過采用隨機數語句隨機出數字 0-7,然后運用 switch 語句,通過 strcmp 函數,將結構體中保存的學生編號同固定編號比較,如果相同則輸出該編號對應的學生的信息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:點名函數流程圖三、主要界面截圖圖 5. 主界面. . 圖 6 開始點名圖 7 顯示所有同學的點名情況. . 圖 8 保存點名圖 9 保存點名. . 四、技術要點1、結構體的定義并把原始信息一同定義在結構體成員中,是程序的核心容之一void main() int i,n; int c; file *fp; if(fp=f
8、open(f:myfile.txt,r)=null)/文件不存在的時候 / 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); 從上面的定義中可以看出, 結構體類型定義中成員項都有確定的類型和名字,而要使用結構體類型的數據,必須經過兩個步驟:先由關鍵字struct和用戶定義的結構體名來說明類型,然后在由它們說明變量。
9、2、void write()是自定義函數它的主要用途是打開預存的學生的信息,并把它顯示在屏幕上給老師點名。程序如下:void write() file *fp;/定義文件指針 / int n,i; if(fp=fopen(f:myfile.txt,a)=null) /如果文件已經存在,可以追加學生信息. . if(fp=fopen(f:myfile.txt,w)=null) / 文件不存在時,創(chuàng)建新文件,輸入學生信息 printf(文件打開失敗! n); return; for(i=0;in;i+) fprintf(fp,%st%st%dtn,sti.num,,sti.data
10、); /把學生信息存放到文件中/ 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(文件打開失敗 n); exit(0); printf(*學 生 缺 席 請 按 a進 行 修 改*n); printf(*輸入b 跳出修改 *n); while(h) scanf(%c,&j); . . switch(j) case a:printf(缺席學生學號 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() 是保存學生信息的自定義函數,主要將修改后的學生信息保存到file20.txt文檔中去,實現(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); 在上面的程序段中,用到了三個調用函數語句進行操作,盡管在程序化設計中有些重復,但其很方便,應用及操作比較簡單。比如 void open() 語句是為了打開 file20.txt文件并輸出學生情況進行點名, void rew()語句點名是進行信息統(tǒng)計,void save()是保存功能的函數,通過它實現(xiàn)了學生信息的添加及保存。五、個人總結在此次課設之前我c語言學的一般,只能勉強應付考試,很多概念都非常模糊記不清楚。雖然,我的編程題目并不算難,但是,. . 在這一周的時間里,經過不斷
14、的學習與努力及與同學進行探討,還有老師的指導,我的c語言編程終于能圓滿完成。雖然程序還有一定的瑕漬,但我以盡力完成了。我感到c語言程序設計確實是一門很有用的學科,所以這次課設并不是一個結束,而是一個開始,一個對c語言更深入學習的開始。六、參考文獻1 譚浩強 c 程序設計:清華大學, 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(*歡迎使用教師上課點名系統(tǒng)*n); printf(* 輸 入1 : 開 始 點 名*n); printf(* 輸入2:顯示所有同學點名情況*n); printf(* 輸 入3 : 保 存 點 名*n); printf(* 輸
16、 入4: 退 出*n); printf(*n); void write() file *fp;/定義文件指針 / int n,i; if(fp=fopen(f:myfile.txt,a)=null) /如果文件已經存在,可以追加學生信息 if(fp=fopen(f:myfile.txt,w)=null) / 文 件 不 存 在時,創(chuàng)建新文件,輸入學生信息 printf(文件打開失敗!n); return; for(i=0;in;i+) . . fprintf(fp,%st%st%dtn,sti.num,,sti.data); /把學生信息存放到文件中/ fclose(fp);
17、int reads(struct student peon) / 讀取學生文件中數據存到結構體中并返回結構體數組元素個數/ file *fp; int i=0; if(fp=fopen(f:myfile.txt,r)=null)/文件不存在的時候/ printf(文件打開失敗!n); return 0; else/文件存在時 / for(i=0;!feof(fp);i+)/用循環(huán)將文件中的數據讀入到結構體中/ fscanf(fp,%s %s %d n,peoi.num,,&peoi.data); fclose(fp); return i;/返回結構體數組元素個數/ 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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年節(jié)日裝飾燈飾工程合同3篇
- 服裝行業(yè)購房合同樣板
- 商業(yè)大廈地塊租賃合同
- 旅游業(yè)發(fā)展支持辦法
- 化工項目招投標違規(guī)處理辦法
- 2024年跨境電商項目股權融資及市場開拓合作協(xié)議書3篇
- 醫(yī)療器械企業(yè)市場推廣費用分析
- 藥品安全風險監(jiān)測程序
- 環(huán)保行業(yè)收入管理辦法
- 2025版生物質能項目結算合同規(guī)范文本3篇
- 2024年城市更新項目回遷安置合同
- 2024-2030年中國水果行業(yè)盈利態(tài)勢及營銷動態(tài)分析研究報告
- 初一《皇帝的新裝》課本劇劇本
- 汽車發(fā)動機構造與維修任務工單
- 食品安全自查、從業(yè)人員健康管理、進貨查驗記錄、食品安全事故處置等保證食品安全規(guī)章制度
- 液化氣充裝站安全培訓
- 鉆井隊安全管理年終工作總結
- 腰椎感染護理查房
- 2024秋期國家開放大學??啤斗勺稍兣c調解》一平臺在線形考(形考任務1至4)試題及答案
- 七年級全冊語文古詩詞
- 銷售業(yè)務拓展外包協(xié)議模板2024版版
評論
0/150
提交評論