200504061284教師上課隨機點名_第1頁
200504061284教師上課隨機點名_第2頁
200504061284教師上課隨機點名_第3頁
已閱讀5頁,還剩16頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、沈陽航空工業(yè)學院課程設計學 號班 級姓 名指導教師年 月 日沈陽航空工業(yè)學院課程設計任務書機械與汽車 學院 機械設計制造及其自動化 專業(yè)5406108 班 學號200504061284一、課程設計題目:教師上課隨機點名二、課程設計工作自2007年7月9日起至2007年7月14日止三、課程設計內(nèi)容:運用所學的C語言知識,編制和調(diào)試程序,具有如下功能:教師在每次上課時,需要對學生隨機點名提問。每次只提問1名同學,對于任何一位同學的提問次數(shù)不可超過3次。如果所有的同學都被提問了 3次,則次數(shù)歸 0,重新開始。學生信息應事先保存到文件 myfile.dat 中。學生共有 4人,名單如下:2001301

2、1001杜永寧20013011002王傳華20013011003殷泳20013011004楊柳青所謂點名,是指計算器將某位同學的姓名和學號打印到屏幕上,則表示該同學被點名1次。四、課程設計要求:程序質(zhì)量:貫徹結(jié)構(gòu)化程序設計思想。用戶界面友好,功能明確,操作方便;可以加以其它功能或修飾。用戶界面中的菜單至少應包括“開始點名”、“顯示所有同學點名情況”、“保存點名”、“退出” 4項。代碼應適當縮進,并給出必要的注釋,以增強程序的可讀性。課程設計說明書:課程結(jié)束后,上交課程設計說明書(打印稿和電子稿),其內(nèi)容如下:封面需求分析(分析題目的要課程設計任務書求)目錄程序流程圖(總體流程圖和主要功能模塊流

3、程圖)核心技術的實現(xiàn)說明及相應程序段個人總結(jié)參考資料源程序及適當?shù)淖⑨?指導教師:學生簽名:目錄一、程序設計題目 1二、需求分析1三、程序流程圖 2四、核心技術的實現(xiàn)方法、程序段及注釋5五、 個人總結(jié) 7六、 參考文獻 8七、 完整源程序代碼 8一、程序設計題目教師上課隨機點名,具體要求如下:1、開始點名2、顯示所有同學點名情況3、保存點名4、退出注:每個學生數(shù)據(jù)至少應該包括學號、姓名、被點到的次數(shù),學生數(shù)據(jù)要保存在you.txt文件中。二、需求分析經(jīng)過對程序設計題目的嚴格分析大體得知,整個程序的設計實現(xiàn)分為四個模塊,其中每一個模塊對應一個函 數(shù),他們的功能分別是:教師開始點名函數(shù)(start

4、(),顯示點名情況函數(shù)(display。),保存點名記錄函數(shù)(save(), 退出點名系統(tǒng)函數(shù)(exit(O)。所有函數(shù)的實現(xiàn)嚴格按照題 目的要求。1、教師開始點名函數(shù)實現(xiàn)的功能是隨機抽取結(jié)構(gòu)體數(shù)組里存儲的一個學生信息,并打印到計算機屏幕上,稱之 為一次點名,連續(xù)調(diào)用就是多次隨機點名。根據(jù)學生是否 在席的情況,教師選擇“確認”使學生被點到的次數(shù)加一, 選擇“取消”則表示此次點名無效。2、顯示點名情況函數(shù)實現(xiàn)的功能是將學生學號和姓名 連并被點到的次數(shù)打印到用戶屏幕上;3、 保存點名記錄函數(shù)實現(xiàn)的功能是將點名完畢后的存 儲于計算機內(nèi)存的學生數(shù)據(jù)傳遞到一個程序自動新建的外存文件里面,這個文件的文件名

5、及路徑是D:you.txt ;4、 退出點名系統(tǒng)函數(shù)該函數(shù)實現(xiàn)的功能是結(jié)束本次點 名,退出點名系統(tǒng);每一個學生記錄都包含學號、姓名,以及被點到的次 數(shù),學生信息的類型定義為結(jié)構(gòu)體數(shù)組類型, 系統(tǒng)剛開始 調(diào)用的學生信息均來自于 D:myfile.dat , D:myfile.dat 中的被點到的次數(shù)均為零,并將點完名的 學生信息保存到D:you.txt 中。三、程序流程1、 程序總體框圖輸出菜單項圖1.程序總體框圖2、具體功能框圖(1)教師開始點名函數(shù)start();圖2.教師開始點名函數(shù)start()(2)顯示點名情況函數(shù)display。;0=>k輸出“ stuk.num ”,“stuk

6、.namek+1=>k直到k<8圖3.顯示點名情況函數(shù)display()D:you程序打開txt0=>i輸出“文件打開失??!” 名把stu里存儲的點信息保存you.txti+1=>i直到i<4關閉D:you.txt 文件輸出“保存點名成功!”圖4保存點名記錄函數(shù)save()(4)退出點名系統(tǒng)函數(shù)exit(O);此函數(shù)為c語言標準庫函數(shù),只需在源程序開頭加一個#in cludevco nio.h>申明即可調(diào)用。四、核心技術的實現(xiàn)方法、程序段及注釋本程序主要由三個自定義函數(shù)、一個標準庫函數(shù)和一個主函數(shù)組成,其中主函數(shù)以菜單的形式調(diào)用其他函數(shù)來 實現(xiàn)要求的所有功能

7、。,其中三個自定義的函數(shù)是程序中 較為核心的部分,下面分別進行說明。1、教師開始點名函數(shù)start()此函數(shù)首先是從結(jié)構(gòu)體數(shù)組 stu的四個成員里面隨 機抽取一個成員并打印到計算機屏幕上。這里要用到 rand()這個標準庫函數(shù),rand() % n(n是整數(shù))可產(chǎn)生0到 n-1之間的一個隨機整數(shù),如果誰被抽到了一次,在其點 名次數(shù)小于3次的情況下,被點到的次數(shù)就加一。待所有 的同學被點到三次后,則將被點到的次數(shù)都歸零。具體的 程序段如下:void start() /*開始點名 */int i,j;i=rand()%8; /*產(chǎn)生一個0-7范圍內(nèi)的一個隨機整數(shù)*/printf("n 選

8、擇“確認點名”或“取消點名”");prin tf("n%s%s",stui. nu m,stui. name);if(stui.t<3)switch(getch()/*實現(xiàn)確認或者取消一次點名的功能*/確認成功!");stui.t+;break;取消成功!");break;出錯!");case'1': prin tf("ncase'2': prin tf("ndefault: prin tf("n if(stu0.t=3)&&(stu1.t=3)&am

9、p;&(stu2.t=3)&&(stu3.t=3)for(j=0;j<8;j+)stuj.t=0; /*所有的學生被點了三次后,點名次數(shù)重新歸零*/2、顯示點名情況函數(shù)display。該函數(shù)的核心功能是將教師點名過程中每個同學被 點到的次數(shù)連同他本人的學號及姓名一起打印到計算機 屏幕上顯示,以便判斷某位同學被點到次數(shù)是否超過了三 次,如果哪位同學被隨機抽取的次數(shù)超過了三次,則這位同學被點到的次數(shù)就不會再增加了。具體程序段如下:void display() /*將點名情況顯示到屏幕上*/int k;for(k=0;k<8;k+)prin tf("n%

10、s %s %d次",stuk. num,stuk. name,stuk.t);3、保存點名記錄函數(shù)save()教師點名完畢以后將點名的結(jié)果要保存起來,save() 函數(shù)就是要實現(xiàn)這個功能的。此函數(shù)需要先定義一個文件 指針,然后用“ w+ ”的形式為讀寫新建一個名為you.txt 的文本文檔,然后將計算機內(nèi)存中(即結(jié)構(gòu)體數(shù)組stu中)存儲的點名結(jié)果傳遞到計算機外存D:you.txt文本文檔中。此文檔保存在根目錄下。具體的程序段如下:void save() /*將點名完畢后的內(nèi)存點名信息保存到外存 D:you.txt 文本文檔中*/int i;FILE *fp1;if(fp仁 fope

11、n( "D:you.txt","w+")=NULL)printf("文件打開失敗!");else for(i=0;i<8;i+)fprin tf(fp1,"%s %s %d次n",stui. nu m,stui. name,stui.t);fclose(fp1);printf("n保存點名成功!");4、主函數(shù)main()主函數(shù)的功能主要是將保存學生點名原始數(shù)據(jù)的外存文件myfile.dat中的學生信息傳遞到內(nèi)存結(jié)構(gòu)體數(shù)組stu中,并調(diào)用各個自定義的函數(shù),四個菜單項功能主要 是憑switc

12、h語句來實現(xiàn)的,并加一個goto循環(huán),以實 現(xiàn)連續(xù)多次點名。注意:myfile.dat應預先保存到下,才能成功地將外存數(shù)據(jù)傳遞到內(nèi)存結(jié)構(gòu)體數(shù)組中。五、個人總結(jié)本次的C語言課程設計時間短,工作強度大,通過這次 學習對我的邏輯思維能力,學習效率很有益處,是一次難 得的鍛煉機會。由于課設的題目富有挑戰(zhàn)性,大大開拓了 我過去學習C語言那種相對局限的認知能力,并大致掌握 了如何實現(xiàn)軟件設計中將各個功能模塊化這一重要設計 知識。這次課設讓我大體掌握了 Visual C+的基本功能, 突破了那種以往以TC環(huán)境為主要設計媒介的思想束縛。 通過一周的課設使我的 VC功能大大增強,設計起來得心 應手,待全部源代碼

13、設計完畢后不禁有一種意猶未盡、行 云流水的暢感,我決定以后繼續(xù)進修VC+,熟悉它的每 一項功能,達到一個初級程序編程員的水平。課設的上機期間,輔導老師也給予了我們莫大的幫助,攻克了設計過程中一個又一個問題, 核心問題的成功 有很大一部分來自于教師的熱心輔導, 在此我深切的感謝 你們,感謝你們那種無私的奉獻。六、參考文獻1譚浩強.C程序設計.北京:清華大學出版社,2005 2劉成等.C語言程序設計實驗指導與習題集.北京: 中國鐵道出版社,2006七、完整源程序代碼#i nclude<stdio.h>#i ncludevstri ng.h>#i nclude<stdlib.

14、h>#in clude<c oni o.h>struct stude ntchar num20; /* 存儲學生學號*/char name30; /*存儲學生姓名*/int t; /*點名次數(shù)*/stu8;void start() /* 開始點名 */int i,j;i=rand()%8; /*產(chǎn)生一個0-7范圍內(nèi)的一個隨機整數(shù)*/printf("nxuan zhe“que ren dian ming ” huo “que xiaodian mi ng ” ");prin tf("n%s%s",stui. nu m,stui. name

15、);if(stui.t<3)switch(getch()/*實現(xiàn)確認或者取消一次點名的功能*/case'1':prin tf("nquerenche nggon g!");stui.t+;break;case'2': prin tf("nque xiao che ng gon g!");break;default: prin tf("nchu cuo!");if(stu0.t=3)&&(stu1.t=3)&&(stu2.t=3)&&(stu3.t=3

16、)for(j=0;j<8;j+)stuj.t=0; /*所有的學生被點了三次后,點名次數(shù)重新歸零*/void display。/*將點名情況顯示到屏幕上*/int k;for(k=0;k<8;k+)prin tf("n%s%s %d次",stuk. num,stuk. name,stuk.t);void save() /*將點名完畢后的內(nèi)存點名信息保存到外存D:you.txt文本文檔中*/int i;FILE *fp1;if(fp仁 fope n( "D:you.txt","w+")=NULL)prin tf("

17、we n jia n da kai shi bai!");else for(i=0;i<8;i+)fprin tf(fp1,"%s%s %d次n",stui. nu m,stui. name,stui.t);fclose(fp1);prin tf("nbao chun dia n ming che ng gon g!");mai n() FILE *fp2;int i;printf('*n");printf(" a.kai shi dianming (l.que ren qu xiao2.que xiao)nn

18、");prin tf("b.xia n shi suo you xue she ng dia n ming qingkua ngnn ”);prin tf("c.bao cun dia n mingnn ”);prin tf("d.tui chu dia n ming xi tongnn ”);printf("*n");prin tf(" qing xua n zhe yi ge cai dan xia ng:");if(fp2=fope n( "D:myfile.dat","w+")=NULL)prin tf("da kai wen jia n shi bai!");else for(i=0;i<8;i+)fscan f(fp2,"%s %s%d&qu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論