C語言單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第1頁
C語言單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第2頁
C語言單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第3頁
C語言單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第4頁
C語言單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、青島理工大學(xué)«C語言程序設(shè)計題目C語言單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)指導(dǎo)教師:姓名:學(xué)號:班級:專業(yè):地點:時間: 2013-7-1 至 2013-7-5一、內(nèi)容【設(shè)計內(nèi)容】試設(shè)計一單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng),實現(xiàn)試題的錄入、抽取、用戶的答題、 系統(tǒng)的自動判卷等功能?!驹O(shè)計要求】1、用文件保存試題庫。(每個試題包括題干、 4個備選答案、標(biāo)準(zhǔn)答案)2、試題錄入:可隨時增加試題到試題庫中3、試題抽取:每次從試題庫中可以隨機抽出N道題(N由鍵盤輸入)4、答題:用戶可實現(xiàn)輸入自己的答案5、自動判卷:系統(tǒng)可根據(jù)用戶答案與標(biāo)準(zhǔn)答案的對比實現(xiàn)判卷并給出成績。二、上機環(huán)境操作系統(tǒng):windows.XP開發(fā)工

2、具:VC6.0三、函數(shù)調(diào)用關(guān)系圖Main()Menu()ReadfromFile()Answer()Output()TorF()I createLinkedList()_JInput()InsertNode()WritetoFile()主函數(shù)菜單函數(shù)答題函數(shù)輸出第 n 道題題目判卷函數(shù)題目錄入函數(shù)從文件中讀取題目信息創(chuàng)建鏈表插入題目函數(shù)保存到文件圖 1 函數(shù)調(diào)用關(guān)系圖四、各函數(shù)功能說明1 main()2 Menu()3 void Answer(int n,TEST * sp)4 void Output(TEST* ,int i)5 int TorF(TEST *sp,char m)6 void

3、 Input(TEST *)7 void ReadfromFile(TEST* sp)8 TEST * createLinkedList(TEST*sp)9 TEST* InsertNode(TEST *head, TEST*s)10 void WritetoFile(TEST* head)五、流程圖開始1Menu()輸入選擇item真< Item=1 ? 率血假:Item=2?J錄入題目 >信息假V< Item=3 ?保存文件假< Item=4 ?>真結(jié)束可注尸左將題目信息>1創(chuàng)建科h氤鏈表中圖2系統(tǒng)總流程圖I開始輸入答 題數(shù)n圖3 Answer。函數(shù)流程

4、圖(開始/輸出題號,輸出選項A/輸出選項B'/輸出選項C輸出選項D /,f(結(jié)束(開始)/輸入答 7/ 案m/ /標(biāo)選答案與Y輸入答案是| 、否相等?真假7輸出/ 輸出/R Right!/"Wrongi ” / Z4r+該題分數(shù)為1該題分數(shù)為0分分*T*結(jié)束 圖4 Ooutput()函數(shù)流程圖圖5 TorF ()函數(shù)流程圖開開A B C D輸入題目輸入選項輸入選項輸入選項輸入選項輸入答案圖6 Input。函數(shù)流程圖圖7 ReadfromFile ()函數(shù)流程圖開始圖 8 createLinkedList()函數(shù)流程圖q=NULL?(q!=NULL&&n!=i+

5、1)?4.】艮出2.隨機抽題*_輸入n圖9 InsertNode()函數(shù)流程圖p, q指針都 指向下一節(jié)點i+六、程序運行效果圖1.初始界面輸出“Notfound!將保存信息 的s桶入p, q之間; 返回頭指針p, q i=0 注* * * M* m M! X* M請輸入選項t統(tǒng)本件 值判題文序 親:殲?zāi)?|.程 化超人存出 準(zhǔn)退 一下 " , 1234 題3.答題并判卷用一:20120"3T傅穎金、單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)設(shè)計'Debug、單項選擇題標(biāo)準(zhǔn)化考試.一n羹件 試判題文序 化題入存出 準(zhǔn)區(qū)退請輸入選項:1請輸入答壑數(shù):3工 C請亙中能手AB 一C衣制、-

6、制、十進 請輸入答集:AEight!2魏源在其C 學(xué)技術(shù),以期富自 A 4四洲志5B海國圖志D 1算窠塞 請輸入答案:4.插入試題-K+表、制整常數(shù)的進制是 六出制提出了叼 ,抵御外國制夷”的思想,主張學(xué)因處國先進的軍事和科 :斤中國近代向西方學(xué)習(xí)的新風(fēng)。網(wǎng)干項項項項差選管要 八入?入入入入入入1 1 1 BA B c D f5.保存到文件前一:20120713T便核金'單項選擇題標(biāo)淮化考試系統(tǒng)設(shè)計Dcbu姑單項選擇建標(biāo)準(zhǔn)化考試.一 1 A'lA'lA'lA'lA'lA. 愉輸八人項項項項差選選選選答要.%的試題信息IA:12B:13C:14D:

7、15瑜個節(jié)點后插入題目信息:6單項選擇題標(biāo)準(zhǔn)化工.睿題3 .保存創(chuàng)文件4 .退出程序請輸入選項:七、總結(jié)通過這短短5天的時間,學(xué)到了許多東西, 尤其是對鏈表及文件的使用。 在這之前對于 鏈表和文件的使用還不是特別明白, 現(xiàn)在已經(jīng)可以較為熟練的應(yīng)用它們。 對結(jié)構(gòu)體數(shù)組的使 用也更加清晰了。V6.0,在做單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)時, 碰到的第一個問題就是如何從文件里讀取數(shù)據(jù), 為 了解決這個問題,我細心的研究了老師給的課件,以及之前寫過的學(xué)生成績管理系統(tǒng)最終解決了這個問題。碰到的第二個問題是,如何讓編譯器隨機抽取的題目不重復(fù),通過認真思考算法,最終得出了一個較為合理的算法。第三個問題是,鏈表的使用

8、,在做“插入試題”這一塊的函數(shù)時,經(jīng)常出現(xiàn)編譯錯誤的提示, 仔細閱讀編譯器提供的錯誤信息,并對程序進行修改,最后也成功解決了這一個問題。這份程序在文件的讀取和保存以及鏈表的使用方面參考了老師給的課件,并進行修改。但是, 我的程序在圖形處理上基本是沒有,所以界面不是特別美觀。通過網(wǎng)絡(luò)資源,學(xué)會了清屏,system(“cls” );通過這次的課程設(shè)計,讓我進一步的了解到C 語言在我們?nèi)粘I钪械闹匾?,體會到編一個對人們現(xiàn)實生活有用處的程序的快樂,更進一步的激發(fā)了我學(xué)習(xí)這門語言的興趣經(jīng)過這次的訓(xùn)練,我相信自己以后會用更多的時間來把這門語言學(xué)好,掌握好這門必修的基礎(chǔ)語言。最后,在此對我的C 語言老師

9、陳老師,表示感謝。感謝她平時認真地幫我調(diào)試程序,并耐心地解答疑點。在她的輔導(dǎo)下我從對C 語言沒有絲毫概念的程度到現(xiàn)在已經(jīng)可以成功地寫出一些比較像樣的程序,是她開啟了我的編程人生。八、參考文獻1 邱建華C 語言程序設(shè)計教程東軟電子出版社,20092 譚浩強C 程序設(shè)計(第三版)清華大學(xué)出版社,20053 邱建華C 語言程序設(shè)計隨堂實訓(xùn)及上機指導(dǎo)東北大學(xué)出版社,2007九、程序清單/* 單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)設(shè)計*/#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<time.h&g

10、t;#include<string.h>#define M 30 typedef struct testchar problem300;char option1100;char option2100;char option3100;char option4100;char key;struct test *next;TEST;/菜單函數(shù)Menu();/答題函數(shù)/輸出第n 道題題目/判卷函數(shù)/錄入題目/從文件中讀取題目信息/創(chuàng)建鏈表/插入函數(shù)/保存到文件void Answer(int n,TEST * sp);void Output(TEST* ,int i);int TorF(TE

11、ST *sp,char m);void Input(TEST *);void ReadfromFile(TEST* sp);TEST * createLinkedList(TEST*sp);TEST* InsertNode(TEST *head, TEST*s); void WritetoFile(TEST* head);int main(void)TEST testM;TEST s;TEST * head;int item,n;while(1)Menu();scanf("%d",&item);ReadfromFile(&test);switch(item)

12、case 1:printf(" 請輸入答題數(shù):");scanf(" %d",&n);Answer(n,&test);break;case 2: system("cls");Input(&s);head=createLinkedList(&test);head=InsertNode(head,&s);break;case 3:system("cls");WritetoFile(head);break;case 4:exit(0);break;default:printf(&qu

13、ot; 輸入有誤!請重新輸入。n");/菜單函數(shù)Menu() printf("nt*printf("t* printf("t* printf("t* printf("t* printf("t*單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)*n");1 .答題并判卷2 .插入試題3 .保存到文件4 .退出程序*n");printf("tt 請輸入選項:");/答題函數(shù)void Answer(int n,TEST* sp)int i,j,score=0,numM;char m;srand(time(NULL);

14、num0=rand()%(M-1)+0;for(i=0;i<n;i+)loop:srand(time(NULL);numi=rand()%(M-1)+0;for(j=i;j>=0;j-)/產(chǎn)生真隨機數(shù)/保證不出現(xiàn)重復(fù)的題目if(numj=numj-1)goto loop;/若抽中的題重復(fù)則重新抽題*n");*n");*n");*n");Output(&spnumi,i+1);printf(" 請輸入答案:");scanf(" %c",&m);score+=TorF(&spnumi

15、,m);printf("n 你的總成績?yōu)?%dn",score);/輸出抽中的題目/輸出總成績/判段用戶輸入的答案與標(biāo)準(zhǔn)答案是否一致/輸出第n 道題題目函數(shù)void Output(TEST *sp,int i)printf("(%d) ",i);printf(" %sn",sp->problem);printf(" A %s n",sp->option1);printf("B %sn",sp->option2);printf("C %sn",sp->o

16、ption3);printf("D %sn",sp->option4);/判卷函數(shù)int TorF(TEST *sp,char m) if(sp->key=m)/若用戶輸入的答案與標(biāo)準(zhǔn)答案一致,返回1printf("Right!n");return 1;elseprintf("Wrong!n");/若用戶輸入的答案與標(biāo)準(zhǔn)答案不一致,返回0return 0;/試題錄入函數(shù)n");void Input(TEST *sp)printf(" 請輸入要插入的試題信息:printf(" 請輸入題干:n&q

17、uot;);scanf(" %s",sp->problem);printf(" 請輸入選項A:");scanf("%s",sp->option1);printf(" 請輸入選項B:");scanf("%s",sp->option2);printf(" 請輸入選項C:");scanf("%s",sp->option3);printf(" 請輸入選項D:");scanf("%s",sp->o

18、ption4);printf(" 請輸入答案:");scanf(" %c",&sp->key);void ReadfromFile(TEST* sp)/文件讀取函數(shù)FILE * fp;int i;if(fp=fopen("test.txt","r") = NULL )/文件打開失敗printf("Failure to open test.txt!n"); exit(0); for(i=0;!feof(fp); i+)/文件打開成功fscanf(fp," %s",

19、 blem);/將讀出的數(shù)據(jù)保存在sp 變量里fscanf(fp,"%s", spi.option1); fscanf(fp,"%s", spi.option2);fscanf(fp,"%s", spi.option3);fscanf(fp,"%s", spi.option4); fscanf(fp," %c", &spi.key); fclose(fp);/關(guān)閉文件TEST * createLinkedList(TEST*sp)/創(chuàng)建鏈表 int i;TEST*head=

20、NULL,*q=NULL,*p=NULL;/定義三個變量for(i=0;i<M;i+) p= (TEST*)malloc(sizeof(TEST);/申請內(nèi)存p=&spi; p->next=NULL; if(i=0) head=p;/鏈表的表頭 else q->next=p; q=p; return head;TEST* InsertNode(TEST *head, TEST*s)/插入函數(shù) int n,i;TEST*p,*q;p=head;q=p->next;printf(" 請輸入要在哪個節(jié)點后插入題目信息:");scanf(" %d

溫馨提示

  • 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

提交評論