C語言課程設計單項選擇題標準化考試系統(tǒng)設計_第1頁
C語言課程設計單項選擇題標準化考試系統(tǒng)設計_第2頁
C語言課程設計單項選擇題標準化考試系統(tǒng)設計_第3頁
C語言課程設計單項選擇題標準化考試系統(tǒng)設計_第4頁
C語言課程設計單項選擇題標準化考試系統(tǒng)設計_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、沈陽航空航天大學沈陽航空航天大學 課課 程程 設設 計計 報報 告告 課程設計名稱:c 語言課程設計語言課程設計 課程設計題目:單項選擇題標準化考試系統(tǒng)設 計 院(系): 計算機學院 專 業(yè): 計算機科學與技術 班 級: 學 號: 姓 名: 指導教師: 完成日期: 2014年03月1日 沈陽航空航天大學課程設計報告 目目 錄錄 第第 1 章章 概要設計概要設計.- 1 - 1.1 題目的內容與要求題目的內容與要求.- 1 - 內容:內容:設計并實現(xiàn)一個單項選擇題標準化考試系統(tǒng)。該系統(tǒng)可以完成試題錄入、設計并實現(xiàn)一個單項選擇題標準化考試系統(tǒng)。該系統(tǒng)可以完成試題錄入、 試題抽取、自動判卷等功能。試

2、題抽取、自動判卷等功能。.- 1 - 1.2 總體結構.- 1 - 第第 2 章章 詳細設計詳細設計.- 2 - 2.1 菜單操作模塊.- 2 - 2.2 將題目裝入內存模塊.- 4- 2.3 開始答題模塊.- 5 - 2.4 添加試題模塊.- 9 - 第第 3 章章 調試分析調試分析.- 13 - 第第 4 章章 使用說明使用說明.- 14 - 附附 錄(程序清單)錄(程序清單).- 17 - 沈陽航空航天大學課程設計報告 第 1 章 概要設計 - 1 - 第 1 章 概要設計 1.1 題目的內容與要求題目的內容與要求 內容:設計并實現(xiàn)一個單項選擇題標準化考試系統(tǒng)。該系統(tǒng)可以完成試題錄入、

3、試題抽取、自動判卷等功能。 要求: (1) 用文件保存試題庫。(每個試題包括題干、4 個備選答案、標準答 案) (2) 試題錄入:可隨時增加試題到試題庫中 (3) 試題抽?。好看螐脑囶}庫中可以隨機抽出 n 道題(n 由鍵盤輸入) (4) 答題:用戶可實現(xiàn)輸入自己的答案 (5) 自動判卷:系統(tǒng)可根據(jù)用戶答案與標準答案的對比實現(xiàn)判卷并給 出成績。 1.2 總體結構總體結構 本程序主要分為四個模塊(功能模塊圖見下圖功能模塊圖見下圖):(1)模塊一:菜單操作模塊 該模塊實現(xiàn)程序的菜單操作。2)模塊二:將題目裝入內存模塊函數(shù)開辟內存空間將試題文件 中題目裝入內存中。(3)模塊三:開始答題模塊函數(shù)會讓用戶

4、輸入要答的題目數(shù),在屏幕上輸 出題干和選項并讓用戶輸入答案。判斷用戶輸入答案是否正確。4)模塊四:添加試題模塊 打開儲存試題的文件進行試題信息輸入。 菜單操作模塊 將題目裝入內存 模塊 開始答題模塊 添加試題模塊 單項選擇題標準化考試系統(tǒng) 圖圖 1.1 功能模塊圖功能模塊圖 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 2 - 第 2 章 詳細設計 2.1 菜單操作模塊:菜單操作模塊: 控制整個程序的運行,控制菜單操作,通過主函數(shù)模塊分別調用各個模塊, 實現(xiàn)各項功能,流程如圖 2.1 所示。 systcm(“cls”); n=1 exe1( );break; 9 n=2 n=3 ex

5、e2( );break; printf(“goodbycln” ); 1 1 n n y y n y 開始 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 3 - 圖圖 2.1 該模塊實現(xiàn)程序的菜單操作。 實現(xiàn)算法如下: 在屏幕上輸出菜單選項。 1 接受用戶輸入。 2 1 n!=3n!=3 結結 束束 y n 輸入錯誤,請重新輸: 入: 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 4 - 2.2. .將題目裝入內存模塊:將題目裝入內存模塊: 將題目裝入內存模塊函數(shù)開辟內存空間將試題文件中題目裝入內存中 流程如圖 2.2 所示 圖圖. side by side fclose(

6、fp); 結結 束束 !feof(fp) (fp=fopen(“test.txt , printf(“文件打開失文件打開失 敗敗 file”fp”; n y y n 開始 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 5 - 函數(shù)開辟內存空間將試題文件中題目裝入內存中。 實現(xiàn)算法如下: 遍歷文件判斷回車符個數(shù)(計算題目數(shù)) 。 1 根據(jù)提供參數(shù)判斷是否將當前題目裝入內存。 2 開辟內存空間,將題目信息裝入內存。 3 關閉文件返回題目總數(shù)。 4 2.3 開始答題模塊:開始答題模塊: 開始答題模塊函數(shù)會讓用戶輸入要答的題目數(shù),在屏幕上輸出題干和選項并讓用戶輸入答案。 判斷用戶輸入答案是否

7、正確。 流程圖如圖 2.3 vold main( ) 0n|ntm printf(“答題數(shù)應小于總數(shù). i=0 2 n y 開始 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 6 - ets( m ) m=rand( ); touppor(ans0)= printf(“恭喜你答對了. i+ p1=head; head=p1-next; p1=null !(0m i=1 exe1( ); i=2 exe2( ); main( ); n y n y 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 8 - 判斷用戶輸入的答案是否正確,輸出答題結果統(tǒng)計。 5 2.42.4 添加試題模

8、塊:添加試題模塊: 流程圖如圖 2.4 viod main( ); fp=fopen(“test.txt. . printf(“文件打開失敗請檢查. struct test “p1=null; printf(“請輸入題目:” ) ; p-que0=“0” n y y n 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 9 - printf(“請輸入選項 a:” ) ; p1- answer1=0 y n printf(“請輸入選項 b:” ) ; p1- answer2=0 y n printf(“請輸入選項 c:” ) ; p1- answer3=“0” 6 沈陽航空航天大學課程設計

9、報告 第 2 章 詳細設計 - 10 - scanf(“%c”, p1- ture 7 n= =1 fputc(“n”,fp); n= =1 exe2( ); free(fp1); 0) 結結 束束 n y n y 沈陽航空航天大學課程設計報告 第 2 章 詳細設計 - 12 - 開辟內存空間,接受用戶輸入題目信息。 2 判斷用戶輸入是否合法。 3 寫到文件并保存。 4 沈陽航空航天大學課程設計報告 第 3 章 調試分析 - 13 - 第第 3 章章 調試分析調試分析 問題問題 1:文本文件無法刪除指定的一行 方法:方法:所以要用類似于進棧出棧的方法,把要刪的信息過濾出去 問題問題 2:程序不

10、能運行 方法:方法:解決辦法就是不斷的按 f10 進行調試,最終找到錯誤的地方。 問題問題 3:打開的文件沒有關閉,最終導致一部分源代碼被無意休改 方法:方法:問了成績好的同學,最后加了個關閉文件的函數(shù)。 沈陽航空航天大學課程設計報告 第 4 章 使用說明 - 14 - 第第 4 章章 使用說明使用說明 運行操作及結果:該程序可以進行單項選擇題標準化考試的系統(tǒng),實現(xiàn)輸入 不同的指令數(shù)字實現(xiàn)不同的功能;實現(xiàn)選擇答題增加題目以及直接退出系統(tǒng)。 單項選擇題標準化考試系統(tǒng) 。 請輸入你要的操作:1 請輸入你要的操作:2 沈陽航空航天大學課程設計報告 第 4 章 使用說明 - 15 - 圖為進行單項選擇

11、題標準化考試系統(tǒng)設計的情形圖為進行單項選擇題標準化考試系統(tǒng)設計的情形 使用時根據(jù)提示選擇想要的查找方式。 沈陽航空航天大學課程設計報告 參考文獻 - 16 - 參考文獻:參考文獻: 1 張長海.c 語言程設計m.北京:高等教育出版社,2006 2 譚浩強 c 程序設計解題與上機指導(第三版) 北京 清華大學出版社 2009 3 范輝 等編著visual c+6.0 程序設計簡明教程 高等教育出版社 4 嚴蔚敏等 數(shù)據(jù)結構(c 語言版) 北京:清華大學出版社,1997 年 4 月 第 1 版。 5 胡學鋼等數(shù)據(jù)結構算法設計指導北京:清華大學出版社,1999 年 第 1 版。 沈陽航空航天大學課程

12、設計報告 課程設計總結 - 17 - 附附 錄(程序清單)錄(程序清單) #include #include #define len sizeof(struct test) struct test char que81; char answer181; char answer281; char answer381; char answer481; char ture; struct test *next; ; struct test *head;/全局變量儲存第一個結構體的指針 int zts(int m)/將第 m 道題裝入內存,輸入-1 時將返回總題數(shù) file *fp; struct t

13、est *p1=null; char ch,ch15; int i,n=0,wz,py; if(fp=fopen(c:test.txt,r)=null)/只讀方式打開文件 printf(文件打開失敗請檢查 c 盤下的 test.txt 文件。n); exit(0); do py=1; ch=fgetc(fp); for(i=0;ch!=ni+)/循環(huán)判斷回車符個數(shù) 沈陽航空航天大學課程設計報告 課程設計總結 - 18 - py+; ch=fgetc(fp); n+; /儲存行數(shù)的變量 if(n=m)/如果當前行數(shù)與傳入?yún)?shù)相等 if(p1=null)/判斷是否是第一次開辟內存空間 p1=(st

14、ruct test *)malloc(len); head=p1; p1-next=null; else p1-next=p1; p1=(struct test *)malloc(len); p1-next=null; wz=ftell(fp);/記錄指針當前位置 fseek(fp,(wz-py-1),0);/調整指針位置到行首 fscanf(fp,%s%s%s%s%s%s, fseek(fp,wz+1,0);/調整指針位置到行末 p1-ture=ch10; break;/將數(shù)據(jù)裝入內存后跳出循環(huán) while(!feof(fp);/文件結束跳出循環(huán) fclose(fp); return n;/

15、返回題目總數(shù) n void exe1() 沈陽航空航天大學課程設計報告 課程設計總結 - 19 - void main(); void exe2(); int n,m=0,tm,i,t=0,f=0; char ans2; struct test *p1; system(cls); printf(請輸入要答題數(shù):); scanf(%d, tm=zts(-1); if(0n|ntm) printf(答題數(shù)應小于總數(shù)!); exe1(); for(i=0;in;i+)/n 為用戶要答題數(shù) do m=rand();/置隨機數(shù) while(!(0m scanf(%s, if(toupper(ans0)=

16、p1-ture)/判斷用戶輸入答案是否正確 printf(恭喜你答對了!nn); t+;/回答正確統(tǒng)計 else 沈陽航空航天大學課程設計報告 課程設計總結 - 20 - printf(對不起,你答錯了。 。 。n 正確答案是:%cnn,p1-ture); f+;/回答錯誤統(tǒng)計 p1=head; do head=p1-next; free(p1); p1=head; while(p1!=null);/釋放結構體占用內存 printf(*n); printf(n 已完成測試!n 共做%d 道題:%d 錯誤,%d 正確。n 正確率: %5.2f%nn,n,f,t,(float)t/n*100);

17、printf(*n); printf(nn1.繼續(xù)答題;2.添加題目;3.返回主菜單;n 請選擇:); i=0; scanf(%d, if(i=1) exe1();/繼續(xù)答題 else if(i=2) exe2();/添加題目 else main();/返回主菜單 void exe2()/實現(xiàn)用戶自主輸入題目 void main(); system(cls); int n; file *fp; if(fp=fopen(c:test.txt,a)=null) 沈陽航空航天大學課程設計報告 課程設計總結 - 21 - printf(文件打開失敗請檢查 c 盤下的 test.txt 文件。n); e

18、xit(0); struct test *p1=null; p1=(struct test *)malloc(len);/開辟內存空間 do printf(請輸入題目:); scanf(%s, while(p1-que0=0); do printf(請輸入選項 a:); scanf(%s, while(p1-answer1=0); do printf(請輸入選項 b:); scanf(%s, while(p1-answer2=0); do printf(請輸入選項 c:); scanf(%s, while(p1-answer3=0); do printf(請輸入選項 d:); scanf(%s

19、, while(p1-answer4=0); printf(請輸入答案:); do 沈陽航空航天大學課程設計報告 課程設計總結 - 22 - scanf(%c, p1-ture=toupper(p1-ture); while(p1-ture!=a printf(n 確認輸入題目?n1.是。 2.否。n); scanf(%d, if(n=1) fputc(n,fp); fputs(p1-que,fp); fputc( ,fp); fputs(a.,fp); fputs(p1-answer1,fp); fputc( ,fp); fputs(b.,fp); fputs(p1-answer2,fp);

20、 fputc( ,fp); fputs(c.,fp); fputs(p1-answer3,fp); fputc( ,fp); fputs(d.,fp); fputs(p1-answer4,fp); fputc( ,fp); fputc(p1-ture,fp); fclose(fp); printf(保存成功!); system(cls); free(p1); printf(是否繼續(xù)添加?n1.繼續(xù)添加 2.返回主菜單n); scanf(%d, if(n=1) exe2(); else 沈陽航空航天大學課程設計報告 課程設計總結 - 23 - main(); else free(p1); exe2(); void main() int n,temp=1; while(1) system(cls); printf(*n); printf(歡迎使用單項選擇題標準化考試系統(tǒng)n); printf(*n); printf(t1.開始答題。n); printf(t2.添加試題。n); printf(t3.退出系統(tǒng)。n)

溫馨提示

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

評論

0/150

提交評論