教師上課點名系統(tǒng)_c語言_第1頁
教師上課點名系統(tǒng)_c語言_第2頁
教師上課點名系統(tǒng)_c語言_第3頁
教師上課點名系統(tǒng)_c語言_第4頁
教師上課點名系統(tǒng)_c語言_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 課程設(shè)計班 級 :學(xué) 號 :姓 名 : 指導(dǎo)教師 :2010年09月09日課程設(shè)計任務(wù)書院系:電子信息工程學(xué)院 專業(yè):電子信息工程 班級:學(xué)號: 題目:教師上課點名系統(tǒng)一、課程設(shè)計時間201011第1學(xué)期第2周,共計1周,20學(xué)時。二、課程設(shè)計內(nèi)容用C語言編寫程序完成以下任務(wù):教師在每次上課時,需要對學(xué)生點名。學(xué)生信息保存在文件file20.txt(由教師提供)中,包括學(xué)號、姓名、是否缺席三項。編寫程序,完成如下功能:1 教師點名:對所有學(xué)生進行點名,并更新file20.txt文件;2 分別統(tǒng)計已到和未到的學(xué)生,并顯示;3 能夠向文件中添加后報到的學(xué)生信息。三、課程設(shè)計要求1. 程序質(zhì)量:&

2、#178; 貫徹結(jié)構(gòu)化的程序設(shè)計思想。² 用戶界面友好,功能明確,操作方便。² 用戶界面中的菜單至少應(yīng)包括“開始點名”、“信息統(tǒng)計”、“學(xué)生信息添加”、“退出”4項。² 代碼應(yīng)適當(dāng)縮進,并給出必要的注釋,以增強程序的可讀性。2. 課程設(shè)計說明書:課程結(jié)束后,上交課程設(shè)計說明書和源程序。課程設(shè)計說明書的格式和內(nèi)容參見提供的模板。四、指導(dǎo)教師和學(xué)生簽字指導(dǎo)教師:_ 學(xué)生簽名:_五、說明書成績六、教師評語目 錄一、程序設(shè)計題目1二、需求分析1.三、程序流程圖2四、核心技術(shù)的實現(xiàn)方法及程序段6五、個人總結(jié)7六、參考文獻7七、源程序8 一、程序設(shè)計題目1 教師點名:對所有學(xué)

3、生進行點名,并更新file20.txt文件;2 分別統(tǒng)計已到和未到的學(xué)生,并顯示;3 能夠向文件中添加后報到的學(xué)生信息。二、需求分析經(jīng)過對程序設(shè)計題目的分析可知,整個程序的設(shè)計實現(xiàn)大致分為七個模塊,其中每一個模塊對應(yīng)一個功能,他們的功能分別是:程序界面設(shè)計模塊,文件讀寫模塊,文件更新模塊,教師點名模塊,學(xué)生信息添加模塊,學(xué)生缺席情況統(tǒng)計模塊,學(xué)生信息顯示模塊,。1、程序界面設(shè)計模塊 主要實現(xiàn)程序最初運行時程序界面友好、美觀的的構(gòu)型以及簡明的操作提示;2、文件讀寫模塊 實現(xiàn)的功能是對myfile.dat文件數(shù)據(jù)的讀取和存儲,將文件中的數(shù)據(jù)保存到結(jié)構(gòu)體student中,并將點名次數(shù)通過save函數(shù)

4、保存到文件中;3、顯示點名情況模塊 按照題目的要求將數(shù)據(jù)文件中所有學(xué)生的學(xué)號、姓名、被點名次數(shù)打印到屏幕上;4、隨機點名算法模塊 通過調(diào)用數(shù)學(xué)函數(shù)庫中的隨機數(shù)生成函數(shù)rand實現(xiàn)點名的隨機性,并將被點到的學(xué)號、姓名打印到屏幕上;除上面介紹的功能之外,程序還具有退出功能,可以在程序的一次運行當(dāng)中循環(huán)執(zhí)行所有的功能,并根據(jù)需要終止程序的執(zhí)行。三、程序流程圖總體框架圖:開始讀取數(shù)據(jù)開始點名保存點名結(jié)束 int iFILE *fpfp=fopen("myfile.txt","ab+")i=0;i<SIZE;i+Fread(&stdi;sizeof(

5、struct student),1,fp)printf("讀取成功!n")模塊設(shè)計: 讀取數(shù)據(jù)模塊(圖一) 點名模塊(圖二)Int j 調(diào)用隨即生成函數(shù)rand進行點名 J=rand()/1000If(j=0) if(j=2)std0.time+; std2.time+;printf("tt%stt%sn", printf(“tt%stt%sn”, stdj.num, stdj.num,); ); if(j =1) std1.time+; printf("tt%stt%sn",stdj.num,st

6、); 保存模塊 保存模塊 int iFILE *fpfp=fopen("myfile.txt","rb+")i=0;i<SIZE;i+Fwrite(&stdi;sizeof(struct student),1,fp)printf("保存成功!n") 保存模塊(圖三): 程序運行結(jié)果如圖: (圖一) (圖二) (圖三)四、核心技術(shù)的實現(xiàn)方法及程序段1結(jié)構(gòu)體定義:struct studentchar num20; char name10; int time;stdSIZE;2將fp所指向的文件中的數(shù)據(jù)存儲到數(shù)組

7、std中FILE *fp;if(fp=fopen("myfile.dat","ab+")=NULL)printf("文件打開失敗n");exit(0);for(i=0;i<SIZE;i+)fread(&stdi,sizeof(struct student),1,fp);3調(diào)用rand的函數(shù)進行點名loop:j=rand()/1000;if(j=0)std0.time+; printf("tt%stt%sn",stdj.num,);else if(j=1)std1.time+;prin

8、tf("tt%stt%sn",stdj.num,);else if(j=2)std2.time+;printf("tt%stt%sn",stdj.num,);else if(j=3)std3.time+;printf("tt%stt%sn",stdj.num,); else goto loop;break;fclose(fp);4保存點名void save()int i;FILE *fp;if(fp=fopen("myfile.dat","rb+&qu

9、ot;)=NULL)printf("文件打開失敗n"); exit(0); for(i=0;i<SIZE;i+) if(fwrite(&stdi,sizeof(struct student),1,fp)!=1) printf("文件保存失敗n");/*將內(nèi)存中的數(shù)據(jù)輸出到磁盤文件中*/五、個人總結(jié)之前的C語言學(xué)的不是很好,基本處于一知半解的階段,甚至對有些概念都還很模糊,但是,在這一周的時間里,通過自己查找資料與同學(xué)之間進行探討,還有老師和學(xué)長的指導(dǎo),使我的C語言編程能力有了質(zhì)的飛躍。雖然我們學(xué)的是電子專業(yè),但C語言程序設(shè)計確實是一門很有用

10、的學(xué)科,像我的題目教師點名系統(tǒng),就與我們的生活緊密聯(lián)系在一起,所以這次課設(shè)并不是一個結(jié)束,而是一個開始,一個對C語言更深入學(xué)習(xí)的開始。六、參考文獻1 譚浩強C程序設(shè)計北京:清華大學(xué)出版社,20052 劉成等C語言程序設(shè)計實驗指導(dǎo)與習(xí)題集北京:中國鐵道出版社,2006七、源程序#include <stdlib.h>#include <stdio.h>#include <math.h>#define SIZE 4struct studentchar num20; char name10; int time;stdSIZE;void save()int i;FIL

11、E *fp; if(fp=fopen("myfile.dat","rb+")=NULL) printf("文件打開失敗n"); exit(0); for(i=0;i<SIZE;i+) if(fwrite(&stdi,sizeof(struct student),1,fp)!=1) /*將內(nèi)存中的數(shù)據(jù)輸出到磁盤文件中*/ printf("文件保存失敗n");void main()int j,i;char c;FILE *fp;if(fp=fopen("myfile.dat",&quo

12、t;ab+")=NULL)printf("文件打開失敗n");exit(0);for(i=0;i<SIZE;i+)fread(&stdi,sizeof(struct student),1,fp);/*將fp所指向的文件中的數(shù)據(jù)存儲到數(shù)組std中*/ printf("*歡迎使用上課隨機點名程序*n");printf("*輸入a:顯示所有同學(xué)名情況 *n");printf("*輸入d: 開始點名 *n");printf("*輸入s:保存點名 *n");printf("

13、;*輸入b: 點名次數(shù)歸零 *n");printf("*輸入q: 退出 *n");printf("*n");while(1)c=getchar();switch(c)case 'a':for(i=0;i<SIZE;i+)printf("tt%stt%stt被點名%d次n",stdi.num,,stdi.time); break;case 's': save();printf("*文件保存成功!退出請輸入q*n"); break;case 'b': for(i=0;i<SIZE;i+) stdi.time=0;printf("點名次數(shù)歸%dn",stdi.time);break;case 'q': exit(0);case 'd':loop:j=rand()/1000; /*調(diào)用rand的函數(shù)進行點名*/if(j=0)std0.time+; printf("tt%stt%sn",stdj.num,);else if(j=1)std1.time+;printf(&

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論