版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 《C語言程序設(shè)計》課程設(shè)計</p><p> 題 目: 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng) </p><p> 專 業(yè): 計算機(jī)科學(xué)與技術(shù) </p><p> 班 級: </p><p><b&g
2、t; 目錄</b></p><p> 《C語言程序設(shè)計》課程設(shè)計1</p><p> 1. 程序分析與設(shè)計3</p><p><b> 2.流程圖3</b></p><p> 3. 源程序清單3</p><p><b> 4.調(diào)試過程4</b>
3、;</p><p><b> 參考文獻(xiàn)5</b></p><p><b> 附錄5</b></p><p> 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)</p><p> 1. 程序分析與設(shè)計</p><p> 系統(tǒng)給用戶提供一個簡單的人機(jī)界面,使用戶可以根據(jù)提示輸入操作項,
4、調(diào)用相關(guān)的函數(shù)實現(xiàn)對應(yīng)的功能,主要功能描述如下:</p><p> 用文件保存試題庫:每個試題包括題干、4個備選答案、標(biāo)準(zhǔn)答案,本模塊的功能是將單鏈表中的信息存儲到文本文件中,系統(tǒng)將提示用戶輸入文本文件名,確認(rèn)后單鏈表中的信息存儲到文本文件中;</p><p> 試題抽?。簭拇疟P讀取文本文件,可以隨機(jī)的從中選取N個題目并顯示出來給用戶進(jìn)行測驗,每次從試題庫中可以隨機(jī)抽出N道題(N由鍵盤
5、輸入);</p><p> 自動判卷:用戶答完所選的題目后,系統(tǒng)可根據(jù)用答題戶答案與標(biāo)準(zhǔn)答案的對比實現(xiàn)判卷并給出成績;</p><p> 試題錄入:用戶可以隨時增加試題到試題庫中,根據(jù)提示輸入題目的主干、四個基本選項和一個標(biāo)準(zhǔn)答案;</p><p> 退 出 :退出系統(tǒng);</p><p> 系統(tǒng)主控平臺:顯示該系統(tǒng)可以進(jìn)行的操作選
6、項,允許用戶進(jìn)行其想要進(jìn)行的操作,包括添加試題信息、隨機(jī)抽取試題、保存到文件和退出系統(tǒng)等;</p><p><b> 總體設(shè)計:</b></p><p> 添加試題(add()函數(shù))</p><p> 首先建立單鏈表,調(diào)用input_exam()函數(shù)輸入試題的基本信息,將用戶輸入試題的基本信息儲存到單鏈表中,提示用戶是否繼續(xù)輸入,用戶輸入
7、“Y”或“y”,則調(diào)用add()函數(shù)實現(xiàn)繼續(xù)添加試題的操作;用戶輸入“”或“”,則返回主菜單界面。</p><p> 隨機(jī)抽取試題(ran_choice()函數(shù)) </p><p> 首先用typedef定義試題的結(jié)構(gòu)體類型的全局變量ran及rans,從鍵盤輸入,將該數(shù)及單鏈表的頭指針傳給ran_choice()函數(shù),調(diào)用rand()隨機(jī)數(shù)產(chǎn)生函數(shù)及srand(seed)設(shè)置一個
8、獨(dú)特的隨機(jī)數(shù)種子,運(yùn)用for()循環(huán)產(chǎn)生N個隨機(jī)數(shù),根據(jù)指針運(yùn)算從單鏈表中取出N個試題的信息并顯示出來。</p><p> 自動判卷系統(tǒng)功能:在自動抽取試題并將其顯示出來后,用一個getchar()函數(shù)從鍵盤接收一個選項的字符,并用if語句,將其與標(biāo)準(zhǔn)答案進(jìn)行比較,若兩者相同,則用計分器自加十分,并顯示當(dāng)前分?jǐn)?shù);</p><p> 保存到文件(save()函數(shù))</p>
9、<p> 首先定義一個exma_book類型的指針p,指向頭結(jié)點(diǎn)head,在定義一個文件類型的指針fp,根據(jù)文件的相關(guān)操作,用函數(shù)fprintf將鏈表中的實體信息逐個保存到文件中;</p><p> 退出系統(tǒng)(quit()函數(shù))</p><p> 首先定義一個exma_book類型的指針pdel,指向頭節(jié)點(diǎn)head,在定義一個exma_book類型的指針p并將其置空,使用i
10、f語句進(jìn)行判斷pdel是否為空,若為空,則使用exit(0)函數(shù)直接退出系統(tǒng);反之,則遍歷鏈表中的所有節(jié)點(diǎn),若不為空,則使用free()函數(shù)將該節(jié)點(diǎn)的內(nèi)存釋放掉。最后,將單鏈表中的數(shù)據(jù)全部釋放掉,防止內(nèi)存泄漏,退出系統(tǒng)。</p><p><b> 功能模塊圖</b></p><p><b> 程序流程圖</b></p><
11、p> 系統(tǒng)的執(zhí)行應(yīng)從選項菜單開始,用戶在輸入1~4后系統(tǒng)將執(zhí)行相應(yīng)的函數(shù)功能,輸入其它字符都是無效的,系統(tǒng)會自動給出錯誤提示。若用戶輸入1,則調(diào)用add()函數(shù),執(zhí)行添加試題的操作;若用戶輸入2,則調(diào)用random()函數(shù);若用戶輸入3,則調(diào)用save()函數(shù);若用戶輸入3,則調(diào)用函數(shù);若用戶輸入4,則調(diào)用exit()函數(shù);</p><p><b> 四、程序源代碼</b><
12、/p><p> #include <stdio.h>/**/</p><p> #include <stdlib.h>/**/</p><p> #include <string.h>/**/</p><p> #include <time.h> //</p><p&g
13、t; #define MAX_TEXT 100</p><p> #define MAX_OPTION 50</p><p> /*數(shù)據(jù)類型的定義*/</p><p> /*定義一個結(jié)構(gòu)體類型_exma,使用typedef語句定義一個新的類型exma,結(jié)構(gòu)體中包括試題的題號、主干信息、四個基本選項、一個標(biāo)</p><p&g
14、t;<b> 準(zhǔn)答案*/</b></p><p> typedef struct _exma</p><p><b> {</b></p><p><b> int num;</b></p><p> char name[MAX_TEXT];</p>&
15、lt;p> char option[MAX_OPTION][4];</p><p> char da_an;</p><p><b> }exma;</b></p><p> /*定義一個結(jié)構(gòu)體類型_exma_book,使用typedef語句定義一個新類型exma_book,結(jié)構(gòu)體中包括一個儲存試題基本信息的結(jié)構(gòu)體變量</p
16、><p> per和指向下一個試題信息的指針變量*/</p><p> typedef struct _exma_book</p><p><b> {</b></p><p><b> exma per;</b></p><p> struct _exma_book
17、*next;</p><p> }exma_book;</p><p> /*定義一個頭節(jié)點(diǎn),將其初始化為空*/</p><p> exma_book * head=NULL;/*exma_book為結(jié)構(gòu)體,鏈表的頭節(jié)點(diǎn),置空*/</p><p> /*主要函數(shù)聲明*/</p><p> void add()
18、; /*添加試題函數(shù)*/</p><p> void random(); /*隨機(jī)抽取試題函數(shù)*/</p><p> void show(); /*顯示被抽題目函數(shù)*/</p><p> void judgment(); /*自動判卷函數(shù)*/</p><p> void save(); /*保存到文件函數(shù)
19、*/</p><p> void quit(); /*退出函數(shù)*/</p><p> /*輔助函數(shù)定義*/</p><p> int print_menu();/*打印主菜單界面*/</p><p> exma_book * get_last(exma_book * from);/*取的鏈表的最后一個值*/</p>
20、<p> void input_exma(exma * p);/*提示輸入一個試題具體信息*/ </p><p><b> /*常量聲明*/</b></p><p> /*以下是主菜單要顯示的字符聲明*/</p><p> char menu[]={"+==============================
21、=================+\n"</p><p> "| 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng) |\n"</p><p> "+-----------------------------------------------+\n"</p><p> "| 1
22、 添加試題 |\n"</p><p> "| 2 隨機(jī)抽取試題 |\n"</p><p> "| 3 保存 |\n"</p><p> "| 4 退出系統(tǒng)|\n"</p><p> "+==========================
23、=====================+\n"</p><p><b> };</b></p><p><b> /*主函數(shù)*/</b></p><p> int main()</p><p><b> {</b></p><p>
24、 int flg=1;</p><p> while(flg)</p><p><b> {</b></p><p> switch(print_menu())</p><p><b> {</b></p><p><b> case 1:{</b
25、></p><p><b> add();</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> case 2:{</b></p><p><b&
26、gt; random();</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> case 3:{</b></p><p><b> save();</b></p
27、><p><b> break;</b></p><p><b> }</b></p><p><b> case 4:{</b></p><p><b> quit();</b></p><p><b> brea
28、k;</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> /*程序
29、清單*/</b></p><p> void add()</p><p><b> {</b></p><p> char input='N';</p><p> exma_book * first;</p><p> exma_book * last=NUL
30、L;</p><p> first=last=(exma_book*)malloc(sizeof(_exma_book));</p><p> memset(first,0,sizeof(_exma_book));</p><p> first->next=NULL;</p><p> if(head==NULL)</p&
31、gt;<p><b> {</b></p><p> head=first;</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p&
32、gt; last=get_last(head);</p><p> last->next=first;</p><p><b> }</b></p><p> input_exma(&(first->per));</p><p> printf(">是否繼續(xù)輸入?(Y 繼續(xù)
33、,N 返回菜單)");</p><p> getchar();</p><p> input=getchar();</p><p> if(input='Y'||'y')</p><p><b> {</b></p><p><b>
34、add();</b></p><p><b> }</b></p><p><b> }</b></p><p> /*隨機(jī)抽取試題*/</p><p> void random()</p><p><b> {</b></p
35、><p> int ran_num;</p><p> exma_book * p;</p><p> char input='n'; </p><p> int N,i,n=0;</p><p> printf("請輸入要隨機(jī)抽取的題目總數(shù)N:");</p>&
36、lt;p> scanf("%d",&N);</p><p> srand((int)time(0));</p><p> for(i=0;i<N;i++)</p><p><b> {</b></p><p> ran_num=(int)rand();</p>
37、<p> if(head==NULL) </p><p><b> {</b></p><p> printf("對不起!");</p><p> printf("此系統(tǒng)中無試題,");</p><p> printf("請回主菜單進(jìn)行試題輸入操作
38、!");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> p=head;</b></p><p> printf(
39、"%d",p->per.num);</p><p> printf(" ");</p><p> printf("%s\n",p->per.name);</p><p> printf("%s\n",p->per.option);</p><
40、p> printf("請輸入你的選項,并按回車鍵確定:");</p><p> getchar();</p><p> if(p->per.da_an==getchar())</p><p><b> {</b></p><p><b> n++;</b>&
41、lt;/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p><b> continue;</b></p><p><b> }<
42、/b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> /*保存*/</b></p><p> void save()<
43、;/p><p><b> {</b></p><p> FILE * fp;</p><p> exma_book * p;</p><p><b> p=head;</b></p><p> char file[100];</p><p>
44、printf("請輸入文件名");</p><p> puts(file);</p><p> fp=fopen(file,"w");</p><p> if(head==NULL) </p><p><b> {</b></p><p> pri
45、ntf("對不起!");</p><p> printf("此系統(tǒng)中無試題,");</p><p> printf("請回主菜單進(jìn)行試題輸入操作!");</p><p><b> }</b></p><p><b> else</b>
46、;</p><p><b> {</b></p><p><b> p=head;</b></p><p> while(p!=NULL)</p><p><b> {</b></p><p> fprintf(fp,"%d,%s,%
47、s,%c\n",</p><p> p->per.num,p->per.name,p->per.option,p->per.da_an);</p><p><b> }</b></p><p> fclose(fp);</p><p> printf("文件保存成功!\
48、n按任意鍵返回主菜單···");</p><p> getchar();</p><p> getchar();</p><p><b> }</b></p><p><b> }</b></p><p><b>
49、/*退出系統(tǒng)*/</b></p><p> void quit()</p><p><b> {</b></p><p> exma_book * pdel=head;</p><p> exma_book * p =NULL;</p><p> if(pdel==NULL)
50、</p><p><b> {</b></p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> else</b></p><p><b> {</
51、b></p><p> while(pdel->next !=NULL)</p><p><b> {</b></p><p> p=pdel->next;</p><p> free(pdel);</p><p><b> pdel=p;</b>
52、</p><p><b> }</b></p><p> free(pdel);</p><p><b> exit(0);</b></p><p><b> }</b></p><p><b> }</b></p&
53、gt;<p><b> /*輔助函數(shù)*/</b></p><p> /*主菜單顯示界面*/</p><p> int print_menu()</p><p><b> {</b></p><p> int selected=0;</p><p>
54、system("cls");</p><p> printf(menu);</p><p> printf(">請選擇【1~4】<:");</p><p> scanf("%d",&selected);</p><p> if(selected<1|
55、|selected>7)</p><p><b> {</b></p><p> printf("錯誤的選擇!(請輸入1~4).按任意鍵繼續(xù)···");</p><p> getchar();</p><p> getchar();</p>&
56、lt;p><b> }</b></p><p> return selected;</p><p><b> }</b></p><p> /*提示輸入試題信息*/</p><p> void input_exma(exma * p)</p><p><
57、b> {</b></p><p> printf("請輸入試題基本信息:");</p><p> printf("輸入試題題號···");</p><p> scanf("%d",p->num);</p><p> pr
58、intf("輸入試題主干信息···");</p><p> scanf("%s",p->name);</p><p> printf("輸入試題四個基本選項···");</p><p> scanf("%s",p-&
59、gt;option);</p><p> printf("輸入試題題號···");</p><p> scanf("%c",p->da_an);</p><p><b> }</b></p><p> /*取得鏈表最夠一個值*/</
60、p><p> exma_book * get_last(exma_book * from)</p><p><b> {</b></p><p> exma_book * p=from;</p><p> while(p->next!=NULL)</p><p><b> {
61、</b></p><p> p=p->next;</p><p><b> }</b></p><p><b> return p;</b></p><p><b> }</b></p><p><b> 參考文獻(xiàn)&
62、lt;/b></p><p> 至少要按報告的格式寫出三個參考文獻(xiàn)如:</p><p> [1] 楊有安. 程序設(shè)計基礎(chǔ)教程(C語言). 人民郵電出版社,2009.</p><p> [2] 譚浩強(qiáng). C程序設(shè)計教程.清華大學(xué)出版社,2009.</p><p> [3] 譚浩強(qiáng). C程序設(shè)計題解與上機(jī)指導(dǎo)(第三版) .清華大學(xué)出
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言課程設(shè)計報告---單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)
- c語言課程設(shè)計單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)
- c語言課程設(shè)計單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)設(shè)計
- 課程設(shè)計--單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)
- 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)
- c語言單項選擇題
- 選擇題考試系統(tǒng)c++課程設(shè)計
- c語言基礎(chǔ)單項選擇題匯總2
- java課程設(shè)計----標(biāo)準(zhǔn)化考試系統(tǒng)
- powerpoint考試單項選擇題
- c語言程序設(shè)計基礎(chǔ)單項選擇題庫 ()
- java課程設(shè)計--標(biāo)準(zhǔn)化在線考試系統(tǒng)
- c語言程序設(shè)計基礎(chǔ)單項選擇題庫 (2)
- 單項選擇題
- 初級基礎(chǔ)考試單項選擇題
- 單項選擇題
- 單項選擇題
- 單項選擇題
- c語言選擇題
- c語言選擇題
評論
0/150
提交評論