在線考試系統(tǒng)C語言課程設計_第1頁
在線考試系統(tǒng)C語言課程設計_第2頁
在線考試系統(tǒng)C語言課程設計_第3頁
在線考試系統(tǒng)C語言課程設計_第4頁
在線考試系統(tǒng)C語言課程設計_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課 程 報 告課 程 名 稱: 程序設計實踐 專 業(yè) 班 級 : 計算機1306 學 生 姓 名 : 王永森 學 號 : 20131692* 任 課 教 師 : 徐振強 學 期 : 2013-2014學年第二學期 課程報告任務書題 目標準化考試系統(tǒng)主要內容開發(fā)出一個標準化考試系統(tǒng),所謂標準化考試系統(tǒng)即僅支持選擇題型的考試系統(tǒng),要求實現以下基本功能:(1)提供給教師添加試題的功能(試題信息用文件保存)-輸入(2)試題的瀏覽功能(可以按照不同的知識點或者難度系數進行查看)(3)能夠抽取試題組合成一套試卷(組卷的策略:可以是隨機的,亦可以實現按照一定的組卷策略實現出題:如每個知識點抽取若干題目,最終

2、組合一套試卷)(4)教師可以實現題庫的管理,比如刪除、修改等(5)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式,比如按照難度系數排序)擴展功能:可以按照自己的程度進行擴展。比如(1)簡單的權限處理(教師登錄、學生登錄)(2)可以加上學生信息和考試成績信息的管理,并擴充為廣義的考試系統(tǒng)。即學生輸入賬號密碼登陸,進行考試,交卷后顯示成績;(3)成績報表打印功能(4)模糊查詢 (5)綜合查詢 (6)統(tǒng)計、分析等功能 總之,可以根據自己需求進行分析功能。特別說明:盡可能地運用自己已經學習過的數據結構的知識去展現。任務要求一、提交材料應包括:(1)系統(tǒng)源代碼 (2)課程報告二、整個設計過程具

3、體要求(1)需求分析 要求學生對案例系統(tǒng)進行分析,設計出需要完成的功能,完善各個模塊的調用關系;(2)設計過程 要求學生進一步明確各模塊調用關系,進一步完善模塊函數細節(jié)(函數名、參數、返回值等)(3)實現過程 要求學生養(yǎng)成良好的編碼習慣、完成各個模塊并進行測試,最終完成系統(tǒng)整體測試;(4)總結階段 按照要求完成系統(tǒng)設計和實現報告,并進行總結、答辯。成績評定報告撰寫情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分內容20分規(guī)范程度5分程序測試5分基本功能20分擴展功能10分自述情況10分答辯情況30分成績評定教師: 1 需求分析標準化考試系統(tǒng)僅支持選擇題,可以在學生做題之后進行自動批改

4、試卷。主要包括以下幾個基本功能: (1)提供給教師添加試題的功能(試題信息用文件保存)-輸入(2)試題的整體瀏覽功能(3)能夠抽取試題組合成一套試卷(組卷的策略:可以是隨機的,當然若教師添加的試題時有知識點、章節(jié)等信息,亦可以實現按照一定的組卷策略實現出題:如每個知識點抽取若干題目,最終組合一套試卷)(4)教師實現題目信息的管理,比如刪除、修改等(5)查詢功能(至少一種查詢方式)、排序功能(至少一種排序方式) 2 概要設計圖 1程序概要圖如圖(1)所示,此程序中學生信息使用單向鏈表存儲,題庫中的試題采用結構體數組存儲,主要流程分為兩部分,一部分為學生登錄進行操作,另一部分為老師登錄進行操作。程

5、序中自定義了大量的功能函數,包括學生密碼的修改,登錄權限的確定,個人資料的修改;老師對試題的查找、添加、修改、刪除、排序,對學生信息的查找、添加、修改、刪除,以及自動隨機生成一套試卷。各個功能函數都是獨立的,可以相互調用,最終構成一個完整的系統(tǒng)。3 詳細設計頭文件my_head.h# include # include # include # include typedef struct student /學生信息采用鏈表char num20;char name20;char pass20;int score;struct student *next; stu;struct teacherch

6、ar account20;char password20; *admin;struct tests /試題庫采用數組char maintest500; char a30;char b30;char c30;char d30;char ans30;int zhangjie;char nandu20; tests100;int ts10020;int i, j, tt;stu *head, *tail, *pm;主函數my_main.c# include my_head.hint main(void)system (color 1e);printf ( -nn);printf ( - 歡迎進入 -

7、nn);printf ( - 標準化考試系統(tǒng) -nn);printf ( - 王永森 制作 -nn);printf ( -nn);printf (n 輕敲回車鍵開始);getchar();i = 0;j = 0;tt = 0;head = (stu *)malloc(sizeof(stu); / 頭結點申請空間head-next = null;my_read();my_menu();return 0;添加試題new_tests.c# include my_head.hvoid new_tests() /添加試題static int n, l;system(cls);printf (請輸入個數:

8、);n = my_natural();for (l = 1; l i)printf (n無此題!n回車鍵返回);getchar();return ;elseprintf (請輸入題干:%d., n);gets(testsn.maintest);printf (請輸入a:);gets(testsn.a);printf (請輸入b:);gets(testsn.b);printf (請輸入c:);gets(testsn.c);printf (請輸入d:);gets(testsn.d);printf (請輸入答案:);gets(testsn.ans);printf (請輸入章節(jié)(數字):);tests

9、n.zhangjie = my_natural();printf (請輸入難度(*號表示):);gets(testsn.nandu);save_tests();printf (n修改成功!n);printf (回車鍵返回);getchar();return ;刪除學生信息del_stu.c# include my_head.hvoid del_stu() /刪除學生static stu *p, *q; static char num20;system(cls); /清屏函數 printf (請輸入你要刪除的學號:);gets(num);p = head; while (p-next != nu

10、ll) /查找對應節(jié)點 if (strcmp(p-next-num, num) = 0) break; p = p-next; if (p-next != null) /找到則刪除 q = p-next; p-next = q-next; free(q); /釋放空間 save_stu(); /保存刪除后的到文件 printf(n刪除成功。n回車鍵返回); getchar();return ; else /沒找到則返回信息printf(n你所要刪除的的賬號不存在!n回車鍵返回);getchar();return ;刪除試題del_tests.c# include my_head.hvoid d

11、el_tests() /刪除試題static int n;system(cls);printf (請輸入題號:);n = my_natural();if (n = 0 | n i) / 判斷是否存在printf (n無此題!n回車鍵返回);getchar();return ;elsefor (; n next;system(cls);if (p = null) /判斷是否為空printf (數據空!n回車鍵返回);getchar();return;printf (學號 姓名 密碼 分數n); while (p != null) / 不空則輸出 printf (%-17s%-10s%-17s%d

12、n, p-num, p-name, p-pass, p-score); p=p-next; printf (n顯示完畢!n);printf (按回車鍵返回);getchar();return ;顯示主菜單my_menu.cvoid my_menu() /顯示主菜單static int n;while (1)system (cls);printf (請選擇您的身份: 【1】學生n);printf ( 【2】老師n);printf ( 【0】退出n);printf (請輸入選項:);n = my_natural();switch(n)case 1:stu_menu();break; case 2:

13、tea_menu();break;case 0:return; default:system(cls);printf (輸入錯誤!n);printf (回車鍵返回); getchar();break;讀取文件my_read.c# include my_head.hvoid my_read() /讀取文件中的數據到程序static file *fp; static stu *p;static stu *s;if(fp = fopen(admin.dat,rb+) = null) /讀取管理員密碼 admin = (struct teacher *)malloc(sizeof(struct tea

14、cher);strcpy(admin-account, admin);strcpy(admin-password, admin);fp = fopen(admin.dat,wb+);if (fwrite(admin, sizeof(stu), 1, fp) != 1)printf (file write errorn); fclose(fp); else / printf (數據加載成功.1.n);admin = (struct teacher *)malloc(sizeof(struct teacher);fread(admin,sizeof(struct teacher),1,fp);fc

15、lose(fp); if(fp = fopen(student.dat,rb) = null) /讀取學生信息 /printf (can not open.n);fp = fopen(student.dat,wb+); fclose(fp); else / printf (數據加載成功.2.n);s = (stu *)malloc(sizeof(stu);s-next = null;while (fread(s,sizeof(stu),1,fp) != 0) if (head-next = null)head-next = s;tail = s; elsetail-next = s;tail

16、= s; s = (stu *)malloc( sizeof(stu) );s-next = null;fclose(fp);if (fp = fopen(tests.dat,rb) = null) /讀取試題信息 / printf (can not open.n);fp = fopen(tests.dat,wb+);fclose(fp); else / printf (數據加載成功.3.n);while (fread( (tests+i+1),sizeof(struct tests),1,fp) != 0)i+;fclose(fp);return ;保存學生數據到文件save_stu.c#

17、include my_head.hvoid save_stu() /保存學生數據到文件static file *fp;static stu *p; fp = fopen(student.dat,wb); p = head-next; while (p != null) if (fwrite(p,sizeof(stu),1,fp) != 1) printf (file write errorn); p = p-next; fclose(fp);保存試題到文件save_tests.c# include my_head.hvoid save_tests() /保存試題到文件static file *

18、fp;static int l; fp = fopen(tests.dat,wb); for (l = 1; l = i; l +) if (fwrite( (tests + l),sizeof(struct tests), 1, fp ) != 1) printf (file write errorn); fclose(fp);隨機數組題take_tests.c# include my_head.hvoid take_tests() /隨機數組題static int n, l, m, c, l;srand( (unsigned)time( null ) ); /產生不同的隨機數system(

19、cls);printf (請輸入需要幾套試卷:);n = my_natural();if (i = 10)printf (題目不足!n回車鍵返回);getchar();return ;for (j = 1; j = n; j +)l = 1;dom = 0;c = rand()%i + 1; /生成隨機數for(l = 1; l l; l +)if(c = tsjl)m +;if(m = 0)tsjl = c;l+;while(l != 11);j -= 1;printf (n已生成%d套試卷!n回車鍵返回,n);getchar();return ;4 調試分析 試題個數的同步問題。為了讓每個

20、函數都能隨時讀取利用試題以及不超過試題的最大數量,定義全局的變量并在程序開始運行時讀取文件中的內容,這樣,成功的做到了試題的修改、刪除、查找、組題。 文件的讀取及保存問題。此程序的一個最大難題就是在文件的運用上,因為要存取的是試題及答案,其中含有大量的空格,其長度又是變化不一的,如果使用文本文件也就是asc碼的話,十分困難,所以我采用了二進制文件的形式進行存取,二進制文件的存取優(yōu)點是可以模塊化的存取,十分方便,而且存取之后無法用文本打開顯示在電腦上,也就起到了加密的作用,但同時又給存入信息增加了難度,不能直接通過打開復制信息進去,而要通過程序進行輸入。通過不斷努力修改之后,終于可以正確的使用二

21、進制的方法存取文件了。 數據的修改、刪除、增加過程中的問題。很多同學采用隨時讀取隨時處理的方式,但遇到了很多問題,出現了很多錯誤,為了防止這個問題的出現,我采取一次性讀取,多次利用的方式,先在程序運行的開頭進行一次文件數據的讀取,然后進行的相應的操作之后,進行一次文件數據的保存,這樣很方便的對數據進行了處理,而又不容易出現錯誤。 試題查看問題。由于試題過多,題目全部顯示在一頁的話需要往上翻頁,不便于查看,于是,經過努力之后,采用分頁的方式進行顯示,只有當用戶敲擊回車鍵時自動跳到下一頁,這樣,查看起來非常方便。 屏幕清屏問題。由于需要進行過多的操作,所以要在適當的時候進行清屏操作,清屏函數的適當運用也是個問題,既不能清除掉需要顯示的數據,又要及時的在菜單顯示前清空屏幕,所以,我就采用回車鍵返回的功能,不敲回車鍵就不能返回,這一創(chuàng)意完美的解決了清屏問題。 程序健壯性問題。為了增加程序的健壯性,避免用戶錯誤輸入數據導致程序的崩潰,我將數據輸入方式全部采用字符輸入,

溫馨提示

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

評論

0/150

提交評論