數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告書-單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第1頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告書-單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第2頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告書-單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第3頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告書-單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第4頁
數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告書-單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

-.z.----.-word資料-"數(shù)據(jù)構(gòu)造與算法I"課程設(shè)計(jì)報(bào)告課設(shè)題目:單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)學(xué)生**:**:同組同學(xué):完成日期:成績:目錄TOC\o"1-3"\u一、設(shè)計(jì)流程1二、需求分析1三、總體設(shè)計(jì)2四、詳細(xì)設(shè)計(jì)3五、系統(tǒng)測試14六、總結(jié)19七、參考文獻(xiàn)19一本次課程設(shè)計(jì)的流程需求分析試題的錄入試題的抽取試題的刪除答題自動(dòng)判卷系統(tǒng)測試退出系統(tǒng)二需求分析1.課程設(shè)計(jì)名稱及內(nèi)容設(shè)計(jì)一單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng),實(shí)現(xiàn)考試的標(biāo)準(zhǔn)化管理。2.設(shè)計(jì)方案提示(1)用文件保存試題庫?!裁總€(gè)試題包括題干、4個(gè)備選答案、標(biāo)準(zhǔn)答案〕;(2)試題錄入:可隨時(shí)增加試題到試題庫中;(3)試題抽?。好看螐脑囶}庫中可以隨機(jī)抽出N道題〔N由鍵盤輸入〕;(4)答題:用戶可實(shí)現(xiàn)輸入自己的答案;(5)自動(dòng)判卷:系統(tǒng)可根據(jù)用戶答案與標(biāo)準(zhǔn)答案的比照實(shí)現(xiàn)判卷并給出成績。三總體設(shè)計(jì)1.總的表達(dá)1、用來保存試題庫,可以用到〞StructTestNodeTestquestions〞構(gòu)造體數(shù)組,將試題一一對應(yīng)的保存下來,放在相應(yīng)的文件里;2、試題的錄入,可以定義一個(gè)〞StatusInsertNode(int&N)〞函數(shù)將試題錄入;3、試題的抽取,可以定義一個(gè)〞voidprintNode(TestNodep,intn)〞的函數(shù),用到〞Rand〞函數(shù)進(jìn)展隨機(jī)抽取;4、答題方面,,則定義一個(gè)〞voidanswer(intsum)〞函數(shù)用于答題者的輸入答案;5、自動(dòng)判卷,則可以定義一個(gè)〞StatusMatch(TestNodep,charm)〞函數(shù),用來比照答題者答案和正確答案,給出判斷正確與否;6、存儲(chǔ)方面每次插入和刪除操作都能自動(dòng)存儲(chǔ)試題至文檔。7、用一個(gè)main函數(shù)將上述各個(gè)函數(shù)功能塊連接起來,實(shí)現(xiàn)〞單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)〞的各個(gè)方面的功能,完成設(shè)計(jì)單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)進(jìn)展答題并判卷顯示整*試卷內(nèi)容插入試題刪除試題退出系統(tǒng)四詳細(xì)設(shè)計(jì)1.模塊流程〔1〕答題功能模塊進(jìn)入函數(shù)進(jìn)入函數(shù)answer(intsum)i=0,i<sumi=0,i<sumNum=rand()%sumNum=rand()%sum題目是否重復(fù)題目是否重復(fù)輸出數(shù)據(jù)輸出數(shù)據(jù)從鍵盤獲得數(shù)據(jù)從鍵盤獲得數(shù)據(jù)I=0,i<sum,I=0,i<sum,答案是否正答案是否正確輸出〞輸出〞錯(cuò)誤〞輸出〞正確〞輸出總成績輸出總成績函數(shù)完畢函數(shù)完畢顯示功能構(gòu)造功能開場功能開場I=0,i<N,I=0,i<N,進(jìn)入函數(shù)printNode(TestNodep,intn)進(jìn)入函數(shù)printNode(TestNodep,intn)輸出一道題目輸出一道題目離開函數(shù)離開函數(shù)printNode(TestNodep,intn)功能完畢功能完畢輸入功能構(gòu)造函數(shù)InsertNode(int&n)函數(shù)InsertNode(int&n)開場翻開并讀取文件翻開并讀取文件輸入題目內(nèi)容輸入題目內(nèi)容將題目插入到題庫末尾將題目插入到題庫末尾將題庫存儲(chǔ)至文件將題庫存儲(chǔ)至文件函數(shù)函數(shù)InsertNode(int&n)完畢刪除功能構(gòu)造函數(shù)函數(shù)DeleteTitle(int*n)開場翻開并讀取文件翻開并讀取文件輸入刪除題目編號輸入刪除題目編號將從題庫中刪除將從題庫中刪除將題庫存儲(chǔ)至文件將題庫存儲(chǔ)至文件函數(shù)函數(shù)DeleteNode(int*n)完畢〔4〕構(gòu)造體程序中主要用到了構(gòu)造體數(shù)組,定義類型,如typedefintStatus等,用構(gòu)造體數(shù)組可以使得程序比較簡便,易于讀懂,免去頻繁的賦值,而用定義類型,可以使得程序具有移植性。功能模塊試題的錄入模塊StatusInsertNode(int&n){//printf("%d",n);inti=0,j;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}//printf("%d",n);while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//printf("%d",n);//printf("%d",n);printf("請輸入題目:");gets(Testquestions[n].subject);gets(Testquestions[n].subject);printf("請輸入選項(xiàng)A:");gets(Testquestions[n].option1);printf("請輸入選項(xiàng)B:");gets(Testquestions[n].option2);printf("請輸入選項(xiàng)C:");gets(Testquestions[n].option3);printf("請輸入選項(xiàng)D:");gets(Testquestions[n].option4);printf("請輸入答案:");scanf("%c",&Testquestions[n].result);getchar();//printf("%d",n);n++;//printf("%d",n);for(j=0;j<n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}〔2〕試題的輸出模塊voidprintNode(TestNodep,intn){//inti=0;printf("(%d)",n);printf("%s\n",p.subject);printf("A%s",p.option1);printf("B%s",p.option2);printf("C%s",p.option3);printf("D%s",p.option4);}StatusMatch(TestNodep,charm){if(m==p.result)returnTRUE;elsereturnERROR;}答題判卷模塊voidanswer(intsum){inta,Num,s[100];floatscore=0;charr;for(inti=0;i<sum;i++){key:Num=rand()%sum;for(a=0;a<i;a++)if(s[a]==Num)gotokey;s[i]=Num;}for(inti=0;i<sum;i++){printNode(Testquestions[s[i]],s[i]+1);printf("\n請輸入答案:");scanf("%c",&r);getchar();if(Match(Testquestions[s[i]],r)){printf("\n答案正確!\a\n");score++;}elseprintf("\n答案錯(cuò)誤!\a\n");}printf("\n你的總成績?yōu)?%f\n",score/sum*100);}試題的刪除模塊StatusDeleteTitle(int*n){inti=0,k,temp;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}while(!feof(fp)){ fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//n=i-1;printf("請輸入所要?jiǎng)h除的題目的題號:\n");scanf("%d",&k);getchar();for(;k<=*n;k++){//Testquestions[i]=Testquestions[i+1];Testquestions[k-1]=Testquestions[k];}//Testquestions[*n]=Testquestions[0];temp=*n;*n=temp-1;for(intj=0;j<*n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}界面主函數(shù)模塊intmain(void){charflag='N';inti,sum,choice;intN=0,*p;p=&N;FILE*fp;if((fp=fopen("e*am.t*t","rb+"))==NULL){printf("Cannotopenfile!");getchar();e*it(1);}while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}N=i-1;fclose(fp);while(flag=='N'||flag=='n'){printf("\t\t\t單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)\n");printf("\n");printf("\t\t\t題庫數(shù)量:%d\n",N);printf("\t\t\t1進(jìn)展答題并判卷\n");//answer()printf("\t\t\t2顯示整*試卷內(nèi)容\n");//printNode()printf("\t\t\t3插入試題\n");//InsertNode)()printf("\t\t\t4刪除試題\n");//DeleteTitle()printf("\t\t\t5退出系統(tǒng)\n");printf("\t\t\t請選擇:");scanf("%d",&choice);switch(choice){case1:system("cls");//answerprintf("請輸入你想要的答題數(shù)目:");scanf("%d",&sum);getchar();while(sum>N||sum<=0){printf("請輸入你想要的答題數(shù)目");scanf("%d",&sum);}answer(sum);break;case2:system("cls");//printNodefor(i=1;i<=N;i++){printNode(Testquestions[i-1],i);printf("\n");}break;case3:system("cls");//InsertNodeInsertNode(N);break;case4:system("cls");//DeleteTitleDeleteTitle(p);printf("刪除成功!\n");break;case5:printf("你將退出系統(tǒng)(Y/N)");//e*itscanf("%c",&flag);getchar();if(flag=='Y'||flag=='y')returnTRUE;system("cls");break;default:printf("請輸入正確選擇!\n");}}return0;}五系統(tǒng)測試運(yùn)行系統(tǒng),進(jìn)入界面開場插入試題進(jìn)展插入試題連續(xù)插入兩道題顯示整*試卷內(nèi)容進(jìn)展答題進(jìn)展答題退出系統(tǒng)退出系統(tǒng)5.檢查文件六總結(jié)通過這次課程設(shè)計(jì),增加了我學(xué)習(xí)軟件技術(shù)的興趣,讓我對于程序設(shè)計(jì)的流程更加了解,對程序本身的構(gòu)造印象深刻。在此次課程設(shè)計(jì)過程總我們團(tuán)結(jié)協(xié)作,輪流架構(gòu),體會(huì)到了合作的樂趣,同時(shí)廣泛搜尋資料,從網(wǎng)上和書上找到了大量的相關(guān)資料和教程,豐富了我們自身的知識儲(chǔ)藏,對數(shù)據(jù)構(gòu)造的性質(zhì)有了更深的體會(huì)??傮w來說通過這次課程設(shè)計(jì)收獲的不只是知識,還有合作的樂趣,以及對程序藝術(shù)的一點(diǎn)體會(huì)。七參考文獻(xiàn)[1]譚浩強(qiáng).C程序設(shè)計(jì)(第二版).:清華大學(xué),1999,12[2][美]HMDeitel,PJDeitel著,薛萬鵬等譯.C語言程序設(shè)計(jì)教程.:機(jī)械工業(yè),2000.07[3]嚴(yán)蔚敏吳偉民編著數(shù)據(jù)構(gòu)造〔C語言版〕,:清華大學(xué),2007八程序源代碼:////function.c//課程設(shè)計(jì)////CreatedbyEutialon6/27/16.//Copyright"2021Eutial.Allrightsreserved.//*include<stdio.h>*include<stdlib.h>*include<string.h>*defineTRUE1*defineERROR0*defineMA*30typedefintStatus;typedefstruct{charsubject[200],option1[30],option2[30],option3[30],option4[30];charresult;}TestNode;TestNodeTestquestions[MA*];StatusInsertNode(int&n){//printf("%d",n);inti=0,j;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}//printf("%d",n);while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//printf("%d",n);//printf("%d",n);printf("請輸入題目:");gets(Testquestions[n].subject);gets(Testquestions[n].subject);printf("請輸入選項(xiàng)A:");gets(Testquestions[n].option1);printf("請輸入選項(xiàng)B:");gets(Testquestions[n].option2);printf("請輸入選項(xiàng)C:");gets(Testquestions[n].option3);printf("請輸入選項(xiàng)D:");gets(Testquestions[n].option4);printf("請輸入答案:");scanf("%c",&Testquestions[n].result);getchar();//printf("%d",n);n++;//printf("%d",n);for(j=0;j<n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}StatusDeleteTitle(int*n){inti=0,k,temp;FILE*fp;if((fp=fopen("e*am.t*t","wb+"))==NULL){printf("Cannotopenfile.");getchar();e*it(1);}while(!feof(fp)){ fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}//n=i-1;printf("請輸入所要?jiǎng)h除的題目的題號:\n");scanf("%d",&k);getchar();for(;k<=*n;k++){//Testquestions[i]=Testquestions[i+1];Testquestions[k-1]=Testquestions[k];}//Testquestions[*n]=Testquestions[0];temp=*n;*n=temp-1;for(intj=0;j<*n;j++){fwrite(&Testquestions[j],sizeof(TestNode),1,fp);}fclose(fp);system("cls");returnTRUE;}voidprintNode(TestNodep,intn){//inti=0;printf("(%d)",n);printf("%s\n",p.subject);printf("A%s",p.option1);printf("B%s",p.option2);printf("C%s",p.option3);printf("D%s",p.option4);}StatusMatch(TestNodep,charm){if(m==p.result)returnTRUE;elsereturnERROR;}voidanswer(intsum){inta,Num,s[100];floatscore=0;charr;for(inti=0;i<sum;i++){key:Num=rand()%sum;for(a=0;a<i;a++)if(s[a]==Num)gotokey;s[i]=Num;}for(inti=0;i<sum;i++){printNode(Testquestions[s[i]],s[i]+1);printf("\n請輸入答案:");scanf("%c",&r);getchar();if(Match(Testquestions[s[i]],r)){printf("\n答案正確!\a\n");score++;}elseprintf("\n答案錯(cuò)誤!\a\n");}printf("\n你的總成績?yōu)?%f\n",score/sum*100);}intmain(void){charflag='N';inti,sum,choice;intN=0,*p;p=&N;FILE*fp;if((fp=fopen("e*am.t*t","rb+"))==NULL){printf("Cannotopenfile!");getchar();e*it(1);}while(!feof(fp)){fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}N=i-1;fclose(fp);while(flag=='N'||flag=='n'){printf("\t\t\t單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)\n");printf("\n");printf("\t\t\t題庫數(shù)量:%d\n",N);printf("\t\t\t1進(jìn)展答題并判卷\n");//answer()printf("\t\t\t2顯示整*試卷內(nèi)容\n");//printNode()printf("\t\t\t3插入試題\n");//InsertNode)()printf("\t\t\t4刪除試題\n");//DeleteTitle()printf("\t\t\t5退出系統(tǒng)\n");printf("\t\t\t請選擇:");

溫馨提示

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

評論

0/150

提交評論