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

下載本文檔

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

文檔簡介

※力7次次摩

課程報告

課程名稱:程序設(shè)計實踐

專業(yè)班級:計算機類1304班

學(xué)生姓名:唐林

學(xué)號:2013號920403

任課教師:唐建國

學(xué)期:2013-2014學(xué)年第二學(xué)期

課程報告任務(wù)書

標(biāo)準(zhǔn)化考試系統(tǒng)

1.建立一個InsertNode函數(shù)來實現(xiàn)插入試題的功能。2.建立一個AddNode函數(shù)

來實現(xiàn)添加試題的功能。3.建立一個Change函數(shù)來實現(xiàn)對試題進行修改的功能。4.

主要

新建一個DeleteNode函數(shù)來實現(xiàn)對試題的刪除。5.建立個printNode函數(shù)實現(xiàn)對試題

的輸出功能.6.建立一個Match函數(shù)來判斷答案是否正確.7.建立answer函數(shù)實現(xiàn)隨

內(nèi)容

機選題并進行答題和統(tǒng)計得分功能。8.在主函數(shù)main中,使用switch函數(shù)讓用戶進

行選擇。

一、對該考試系統(tǒng)進行需求分析,找出該系統(tǒng)需要哪些功能來實現(xiàn),在每個功能

中運用學(xué)過的算法來實現(xiàn),每個功能用不同的函數(shù)來實現(xiàn),確定函數(shù)之間調(diào)用的關(guān)系。

二、整個設(shè)計過程具體要求

任務(wù)(1)需求分析對案例系統(tǒng)進行分析,設(shè)計出需要完成的功能,完善各個模塊

的調(diào)用關(guān)系;

要求

(2)設(shè)計過程進一步明確各模塊調(diào)用關(guān)系,進一步完善模塊函數(shù)細(xì)節(jié)(函數(shù)

名、參數(shù)、返回值等)

(3)實現(xiàn)過程養(yǎng)成良好的編碼習(xí)慣、完成各個模塊并進行測試,最終完成系

統(tǒng)整體測試;

(4)總結(jié)階段按照要求完成系統(tǒng)設(shè)計和實現(xiàn)報告,并進行總結(jié)、答辯。

報告撰寫情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)

內(nèi)容規(guī)范程度程序測試基本功能擴展功能自述情況答辯情況

成績20分5分5分20分10分10分30分總分

評定

成績評定教師:

1需求分析

該系統(tǒng)包括以下功能:

1.進行隨機答題并判卷

2.顯示試題所有內(nèi)容

3.插入試題

4.添加試題

5.自主選題并判卷

6.修改試題

7.刪除試題

8.退出系統(tǒng)

2概要設(shè)計

2.1整體框架圖

圖2-1-1

2.2.2修改試題功能圖

進入Change(int

N

圖222

2.2.3刪除試題功能圖

N

圖2-2-3

2.3自定義函數(shù)

返回值函數(shù)名參數(shù)表函數(shù)功能

StatusSaveNodeint&N將試題存入文件中

StatusReadNodeint&N從文件中讀取試題

StatusInsertNodeint&N向試題庫中插入試題

StatusChangeint&N修改試題

StatusDeleteNodeint&N刪除試題

voidprintNode(TestNodep,intn)輸出試題

StatusMatch(TestNodep,charm)檢查答案

voidanswer(intsum,intN)隨機進行答題并判卷

voidOtheranswer(intN,ints)自主選題作答并判卷

StatusAddNodeint&N向題庫中添加試題

3詳細(xì)設(shè)計

3.1添加試題

將想要輸入的是試題,從鍵盤輸入,題庫中總的題數(shù)作為結(jié)構(gòu)數(shù)組的下標(biāo),存入一道題就將

結(jié)構(gòu)數(shù)組的下標(biāo)向后移動一位,最后將存入最后一道題的下標(biāo)返回,作為題庫中的總題數(shù)。

StatusAddNode(int&N)〃添加試題內(nèi)容

{

printf(“如果不添加了試題了,在題目輸入””結(jié)束!\n");

while(l){

printf("請輸入所要插入題題目、題干和選項:\n”);

printf("請輸入題目:”);

gets(Testquestions[N].subject);

if(strcmp(Testquestions[N].subject,"*")==0)

break;

printf("請輸入選項A:”);

gets(Testquestions[N].optionl);

printf(“請輸入選項B:“);

gets(Testquestions[N],option2);

printf(”請輸入選項C:");

gets(Testquestions[N].options);

printf(“請輸入選項D:”);

gets(Testquestions[N].option4);

printf("請輸入答案:”);

最新可編輯word文檔

scanf("%c",&Testquestions[N].result);getchar();

N++;//N表示結(jié)構(gòu)體數(shù)組長度,通過加&號使其值能返回

)

returnTRUE;

}

3.2修改試題

先從鍵盤中輸入想要修改第幾道試題,當(dāng)題標(biāo)輸入m時,找到結(jié)構(gòu)數(shù)組niT對應(yīng)的元素就

是要修改的試題,再將修改的試題進行保存,從而實現(xiàn)對試題的修改功能。

StatusChange(int&N){

intm,i;

printf(“請輸入您要修改第幾題?\n");

scanf("%d",&m);

getchar();〃吸收空格字符

for(i=0;i<N;i++)

(

if(i==(m-l)){

printf(”請輸入新的題目:”);

gets(Testquestions?subject);

printf(”請輸入新的選項A:");

gets(Testquestions[m-l].optionl);

printf(”請輸入新的選項B:“);

gets(Testquestions[m-1].option2);

printf(”請輸入新的選項C:");

gets(Testquestions[m-1].options);

printf(”請輸入新的選項D:“);

gets(Testquestions[m-1].option4);

printf(”請輸入新的答案:“);

最新可編輯word文檔

scanf("%c"j&Testquestions[m-l].result);

getchar();

break;

)

)

if(m>N)

printf("修改試題失敗!\n");

else

printf("修改試題成功!\n“);

returnTRUE;

)

3.3刪除試題

先從鍵盤中輸入想要修改第幾道試題,當(dāng)題標(biāo)輸入n時,找到結(jié)構(gòu)數(shù)組n-1對應(yīng)的元素就是

要刪除的試題,在用一個for循環(huán),將n到N7個元素向前移動,從而實現(xiàn)對試題的刪除功

能。

StatusDeleteNode(int&N)〃刪除數(shù)組中的第n道題

{

intn;

printf(“輸入你想是刪除第幾道試題:\n”);

scanf("%d",&n);

if(n>N)

{

printf("刪除不成功\n“);

returnERROR;

}

while(n<=N)

{

Testquestions[n-1]=Testquestions[n];

n++;

最新可編輯word文檔

)

N=N-1;

printf("刪除成功\n“);

returnTRUE;

)

3.4隨機選題并判題

學(xué)生進入考試系統(tǒng),輸入形成試卷的題數(shù),系統(tǒng)將會自動抽取試題,在進行作答之后,立

刻能看到學(xué)生是否做對本道試題,如果作對,將會顯示"答案正確",否者會顯示“答案錯誤”

并且會顯示正確答案。

voidanswer(intsum,intN)〃隨機進行答題

{

intscore=0>Num;

charr;

for(i=l;i<=sum;i++)

(

Num=rand()%N;〃隨機函數(shù),以隨機選定何題進行解答

printNode(Testquestions[Num]?i);

printfC'Xn");

printf("\n請輸入第(%的答案:",i);

scanf("%c",&r);getchar();

if(Match(Testquestions[Num]^r))//調(diào)用函數(shù)Match判斷所輸入的答案與

標(biāo)準(zhǔn)答案是否相同

{printf("\n答案正確!\n”);

score++;

}

else{

printf(“\n答案錯誤!\n”);

printf("正確答案為:%c\rT,Testquestions[Num].result);

最新可編輯word文檔

)

printf("\n你的總成績?yōu)椋海\n”,score);

)

3.5自主選題并判題

通過函數(shù)中傳遞題庫的總數(shù)和要形成試卷的總題數(shù),輸入將要選擇的試題,將輸入的試題

在結(jié)構(gòu)數(shù)組中找到,可以進行作答,當(dāng)輸入的答案不與標(biāo)準(zhǔn)答案匹配時,答卷系統(tǒng)將會自動

報錯,并且輸出正確的答案,如果輸入正確將會顯示“答案正確”,在最后答卷系統(tǒng)將會輸出

總的成績。

voidOtheranswer(intN,ints){

inti,score=0>k;

charm;

for(i=l;i<=s;i++){

printf("輸入要選擇第幾題?\n");

scanf("%d",&k);

while(k<=0||k>N){

printf("輸入的題號在題庫中不存在!\n”);

printf(“\n請重新輸入正確的題號:“);

scanf("%d“,&k);

)

printNode(Testquestions[k-l]i);

printf("\n請輸入(%d)答案:",i);getchar();

scanf("%c",&m);

getchar();

if(m==Testquestions[k-l].result){

printf("答案正確!\n”);

score++;

}

else

(

printf("答案錯誤!\n”);

最新可編輯word文檔

printf("正確答案為;%c\n",Testquestions[k-l].result);

)

)

printf("總分為:%d\n",score);

)

3.6登陸考試系統(tǒng)函數(shù)

屏幕上會顯示教師和學(xué)生兩種端口,如果過選擇學(xué)生端口將會進入登陸和注冊兩個選項,

已經(jīng)注冊過的就可以直接登陸了,反之則進行注冊。進入學(xué)生答題系統(tǒng)后可以選擇隨機答題

或者自主選題進行作答兩種方式。登陸教師窗口后,可以直接查看試題、刪除試題、修改試

題、添加試題的功能。

voidDenglu()

{

FILE*fpl;

inta,CjnumJflag=l;

inti=0;

charMima[20]="\0">b[20];

printf("\t\t\tl進入登錄\n“);

printf("\n\t\t\t2進入注冊\n”);

scanf("%d;&c);

while(flag){

if(c<l||c>2){

printf("\n請輸入壬確的選項!\n”);

scanf(”%d”,&c);

flag=l;}

else

flag=0;

}

if(c==2)

printf("請注冊:\n");

最新可編輯word文檔

Zhuce();

)

else

{

if((fpl=fopen("student.txt"/'rb"))==NULL)

{

printf(“打開文件失敗!”);

exit(0);

)

printf(“請輸入學(xué)號:“);

scanf("%d",&num);

printf(“請輸入密碼”);

while((c=getch())!='\r')

{

Mima[i]=c;

i++;

if(c!='\b,)

else

printf("\b\b");

)

rewind(fpl);

while(!feof(fpl))

{

fscanf(fpl/'%d",&a);

fscanf(fpl/'%s",&b);

if(a==num&&strcmp(b,Mima)==0)

break;

}

最新可編輯word文檔

while(a!=num||strcmp(bjMima)!=0)

{

i=0;

printf(“\n錯誤,重新輸入:\n“);

printf(“請輸入學(xué)號:“);

scanf("%d'\&num);

printf(“請輸入密碼”);

while((c=getch())!='\r')

{

Mima[i]=c;

i++;

if(c!='\b')

else

printf("\b\b");

)

rewind(fpl);

while(!feof(fpl))

{

fscanf(fpl/'%d",&a);

fscanfCfpl/^s'^&b);

if(a==num&&strcmp(bJMima)==0)

break;

}

)

printf("\t\t歡迎登陸單選題標(biāo)準(zhǔn)化考試系統(tǒng)!\n");

system("pausen);

getchar();

printf("\n");

最新可編輯word文檔

if(fclose(fpl))

{

printf("關(guān)閉文件失敗!\n”);

exit(0);

)

)

)

*源代碼

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#defineTRUE1

#defineERROR0

ttdefineMAX30

typedefintStatus;

typedefstruct{

charoptionl[30],option2[30],option3[30],option4[30],subject[150];

charresult;

intq;

}TestNode;

TestNodeTestquestions[MAX];

StatusSaveNode(int&N)〃把結(jié)構(gòu)體數(shù)組保存到文件"cheng”中,如成功保存返回TRUE,否則返回

ERROR

{inti;

FILE*fp;

最新可編輯word文檔

if((fp-fopen("cheng","wb"))—NULL)

returnERROR;

for(i=0;i<N;i++)

fwrite(&Testquestions[i],sizeof(TestNode),l,fp);

fclose(fp);

returnTRUE;

}

StatusReadNode(int&N)〃從文件讀出結(jié)構(gòu)體數(shù)組的內(nèi)容,如成功讀取返回TRUE,

否則返回ERROR

{FILE*fp;

inti=0;

if((fp=fopen("cheng","rb"))==NULL)

returnERROR;

while(!feof(fp))〃用feof檢測文件是否結(jié)束,如果結(jié)束,返回正確

{fread(&Testquestiors[i]3sizeof(TestNode),ljfp);

i++;

}

N=i-1;

returnTRUE;

}

voidZhuce()

(

voidDenglu();

inti,m;

i=0;

charn[20]="\0",c;

最新可編輯word文檔

FILE*fpl;

if((fpl=fopen("student.txt","ab"))==NULL)

{

printf(“打開文件失?。n”);

exit(0);

}

printf(“請注冊學(xué)號:”);

scanf("%d",8m);

fprintf(fpl,"%d",m);

printf("請設(shè)置密碼(20字符以內(nèi)):");

while((c=getch())!='\r')

{

n[i]=c;

i++;

if(c!='\b')

printf("*");

else

printf(H\b\b");

)

fprintf(fpl/'%s\n",n);

if(fclose(fpl))

{

printf("關(guān)閉文件失敗!\n“);

exit(0);

最新可編輯word文檔

)

printf("\n");

printf("\t\t\t注冊完成!\n");

Denglu();

}

voidDenglu()

{

FILE*fpl;

inta,c,numJflag=l;

inti=0;

charMima[20]="\0">b[20];

printf("\t\t\tl進入登錄\n");

printf("\n\t\t\t2進入注冊\n”);

scanf("%d",&c);

while(flag){

if(c<l||c>2){

printf("\n請輸入正確的選項!);

scanf(H%d",&€);

flag=l;}

else

flag=。;

}

if(c==2)

{

printf("請注冊:\n");

Zhuce();

)

else

最新可編輯word文檔

(

if((fpl=fopen("stucent.txt"rb"))==NULL)

{

printf("打開文件失??!”);

exit(0);

)

printf(“請輸入學(xué)號:”);

scanf("%d",&num);

printf("請輸入密碼”);

while((c=getch())!='\r')

{

Mima[i]=c;

i++;

if(c!='\b')

printf("*");

else

printf("\b\b");

}

rewind(fpl);

while(!feof(fpl))

(

fscanf(fpl/%d",&a);

fscanf(fpl/%s",&b);

if(a==num&&strcmp(b,Mima)==0)

break;

)

while(a!=num||strcmp(b,Mima)!=0)

最新可編輯word文檔

(

i=0;

printf(”\n錯誤,重新輸入:\n”);

printf(“請輸入學(xué)號:”);

scanf("%d”,&num);

printf(“請輸入密碼“);

while((c=getch())!='\r')

{

Mima[i]=c;

i++;

if(c!='\b')

printf("*");

else

printf("\b\b");

)

rewind(fpl);

while(Sfeof(fpl))

{

fscanf(fpl/%d",&a);

fscanf(fpl,"%s"4&b);

if(a==num&&strcmp(b>Mima)==0)

break;

}

)

printf("\t\t歡迎登陸單選題標(biāo)準(zhǔn)化考試系統(tǒng)!\n”);

system("pause");

getchar();

printf("\n");

if(fclose(fpl))

最新可編輯word文檔

(

printf("關(guān)閉文件失?。n");

exit(0);

)

}

StatusAddNode(int&N)〃添加試題內(nèi)容

{

printf("如果小添加了試題了,在題目輸入“*”結(jié)束!\n");

while(l){

printf("請輸入所要插入題題目、題干和選項:\n”);

printf("請輸入題目:");

gets(Testquestions[N].subject);

if(strcmp(Testquestions[N].subject,"*")==0)

break;

printf(”請輸入選項A:”);

gets(Testquestions[N].optionl);

printf(”請輸入選項B:”);

gets(Testquestions[N].option2);

printf(”請輸入選項C:");

gets(Testquestions[N].options);

printf(”請輸入選項D:“);

gets(Testquestions[N].option4);

最新可編輯word文檔

printf("請輸入答案;”);

scanf("%€",&Testquestions[N].result);

prin"("請輸入試題難度:”);

scanf("%d",&Testquestions[N].q);

getchar();

N++;//N表示結(jié)構(gòu)為數(shù)組長度,通過加&號使其值能返回

)

returnTRUE;

}

voidprintNode(TestNodep,intn)〃輸出第n道題題目

printf("(%d);n);

printf("%s\n",p.subject);

printf("A%sjp.optionl);

printf(B%s\n",p.option2);

printf(C%s",p.option3);

printf(D%s",p.option4);

printf("試題難度為:%d\n",p.q);

)

StatusChange(int&m){

inti;

printNode(Testquestions[m-l],m);

printf("\n");

printf("修改題目請按l\n");

printf("修改選項A請按2\n");

printf("修改選項B請按3\n");

printf("修改選項C請按4\n");

最新可編輯word文檔

prin訐(”修改選項D請按5\n");

printf("修改標(biāo)準(zhǔn)答案請按6\n");

printf("修改試題難度請按7\n");

scanf("%d",&i);

getchar();〃吸收空格字符

switch(i){

case1:printf("\n請輸入新的題目:“);

gets(Testquestions[m-1].subject);

break;

case2:printf(”請輸入新的選項A:“);

gets(Testquestions[m-1].optionl);

break;

case3:printf(”請輸入新的選項B:“);

gets(Testquestions[m-1].option2);

break;

case4:printf(“請輸入新的選項C:”);

gets(Testquestions[m-1].option3);

break;

case5:printf("請輸入新的選項D:");

gets(Testquestions[m-1].option4);

break;

case6:printf(“請輸入新的答案:");

scanf("%c",&Testquestions[m-l].result);

break;

case7:printf(”請輸入新的試題難度:”);

scanf("%d",&Testquestions[m-1].q);

break;

default:printf(“請輸入匚確的修改選項\n");break;

最新可編輯word文檔

returnTRUE;

StatusInsertNode(int&N){

int

printf("輸入要插入到第幾題?\n");

scanf("%d'\&i);

getchar();

N=N+1;

for(j=N-l;j>=(i-l);j--){

Testquestions[j]=Testquestions[j-1];

)

printf("請輸入題目:");

gets(Testquestions[i-1].subject);

printf(”請輸入選項A:“);

gets(Testquestions[i-1].optionl);

printf(”請輸入選項B:“);

gets(Testquestions[i-1].option?);

printf(”請輸入選項C:“);

gets(Testquestions[i-1].option3);

printf(”請輸入選項D:“);

gets(Testquestions[i-1].option4);

printf("請輸入答案:”);

scanf("%c",&Testquestions[i-1].result);

printf("請輸入試題難度

scanf("%d",&Testquestions[i-l].q);

getchar();

returnTRUE;

}

最新可編輯word文檔

StatusDeleteNode(int&N)〃刪除數(shù)組中的第n道題

{

intn;

printf("輸入你想是刪除第幾道試題:\n”);

scanf("%d“,&n);

if(n>N)

{

printf("刪除不成功\n”);

returnERROR;

}

while(n<=N)

{

Testquestions[n-1]=Testquestions[n];

n++;

}

N=N-1;

printf("刪除成功成“);

returnTRUE;

)

StatusMatch(TestNodep,charm)〃判斷m是否為p題目的答案,若是返I可TRUE,否則

返回ERROR

{

if(m==p.result)

returnTRUE;

最新可編輯word文檔

else

returnERROR;

)

voidanswer(intsum,intN)〃隨機進行答題

(

inti,score=0JNum;

charr;

for(i=l;i<=sum;i++)

{

Num=rand()%N;〃隨機函數(shù),以隨機選定何題進行解答

printNode(Testquestions[Num]i);

printf("\n");

printf("\n請輸入第(%6答案:”,i);

scanf("%c",&r);getchar();

if(Match(Testquestions[Num],r))〃調(diào)用法數(shù)Match判斷所輸入的答案與標(biāo)準(zhǔn)答案是

否相同

{printf(”\n答案正確!\n”);

score++;

)

else

printf("\n答案錯誤!\n”);

printf("正確答案為:%c\rT,Testquestions[Num].result);

)

printf("\n你的總成績?yōu)?%d\n",score);

)

voidOtheranswer(intN?ints){

最新可編輯word文檔

inti,score-0,k,j,y;

charm;

for(i=l;i<=s;i++){

printf("輸入試題難度\n");

scanf("%d",&k);

while(k<0||k>2){

printf(”題庫中沒有該難度的試題!\n”);

printf("\n請重新輸入試題難度:”);

scanf("%d"j&k);

}

for(j=0;j<N;j++){

if(y==j)

continue;

if(Testquestions[j].q==k){

printNode(Testquestions[j]ji);

printf("\n請輸入(%d)答案:",i);getchar();

scanf

getchar();

if(Match(Testquestions[j],m)){

printf("答案正確!\n“);

score++;

)

else

{

printf("答案錯誤!\n");

printf("正確答案為:%c\n",Testquestions[j].result);

)

break;

)

y=j;

)

最新可編輯word文檔

)

printf("總分為:%d\n',score);

)

voidmain()

(

charflag;

intN=0,i,sum,m,s,score=0,chose,Chose=3;

ReadNode(N);

while(Chose<l||Chose>2){

printf("\t\t\t請選擇自己的類型\n”);

printf("\t\t\tl學(xué)生端口\n”);

printf("\t\t\t2教師端口\n”);

scanf("%d",&Chose);

}

system("cls");

switch(Chose){

casel:Denglu();

system("cls");

while(l){

printf("\t\t\t單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)進行答題\n");

printf("\t\t\tl進行隨機答題并判卷\n");

printf("\t\t\t2自主選題并判卷\n");

printf("\t\t\t3退出系統(tǒng)\n“);

scanf("%d",&chose)jgetchar();

switch(chose){

casel:system("cls");

ReadNode(N);

printf(“請輸入試題的總題數(shù)

scanf("%d",&sum);getchar();

最新可編輯word文檔

i-F(N--0){

printf("對不起,題庫中沒有試題!\n”);

printf("按任意鍵回到菜單!\n“);

getchar();)

else

answer(sum,N);

getchar();

break;

case2:system("cls");

ReadNode(N);

printf(“請輸入試卷的總題數(shù):”);

scanf("%d",&s);

Otheranswer(N,s);

getchar();

break;

case3:printf("你將退出系統(tǒng)(丫orN)?");

scanf("%cH,&flag);getchar();

if(flag=='Y'||flag=='y')exit(0);

system("cis");break;

default:printf(”請輸入正確選擇!\n");

}

)

case2:printf("\t\t\t歡迎進入教師題庫管理\n");

while(l){

printf("\t\t\t單項選擇題標(biāo)準(zhǔn)化考試系統(tǒng)\n”);

printf("\n");

printf("\t\t\tl顯示所有試題內(nèi)容\n");

printf("\t\t\t2添加試題\n”);

printf("\t\t\t3修改試題\n”);

最新可編輯word文檔

printf("\t\t\t4刪除試題\n”);

printf("\t\t\t5插入試題\n“);

printf("\t\t\t6退出系統(tǒng)\n");

scanf("%d",&chose);getchar();

switch(chose){

casel:system("cls");

ReadNode(N);

if(N==0){

printf(“題庫中沒有試題!\n");

printf("按任意鍵回到菜單!\n");

getchar();}

for(i=l;i<=N;i++)

{printNode(Testquestions[i-1],i);

printf("\n");

)

break;

case2:system("cls");

ReadNode(N);

AddNode(N);

if(SaveNode(N))

printf("試題添加成功!\n");

else

printf("試題添加失??!\n");

break;

case3:system("cls");

printf(“請輸入您要修改第幾題?\n”);

ReadNode(m);

Change(m);

if(SaveNode(m))

最新可編輯word文檔

printf("修改成功\n”);

else

printf("修改失敗”);

break;

case4:system("cls");

ReadNode(N);

DeleteNode(N);

SaveNode(N);

break;

case5:system("cls");

ReadNode(N);

InsertNode(N);

if(SaveNode(N))

print千("插入試題成功\n");

else

printf("插入試題失敗\n”);

break;

case6:printf("你將退出系統(tǒng)(YorN)?");

scanf("%c",&flag);getchar();

if(flag=='Y'||flag=='y')exit(0);

system("cis");break;

default:printf(“請輸入正確選擇!\n");

)

}

}

)

最新可編輯word文檔

4調(diào)試分析

在添加函數(shù)InserlNode中,在添加試題的過程中,不知道怎么在一個循環(huán)中不斷添加試

題,最后通過在c語言書中,看到用一個作為結(jié)束標(biāo)志來結(jié)束試題的添加,用一個while

循環(huán)實現(xiàn)了添加功能。在Change函數(shù)中,在修改試題的時候,總是修改到要想修改的下一道

題,通過對代碼的不斷測試和分析,因為是數(shù)組,所以是從。開始存儲元素的,所以當(dāng)自己

輸入想要修改的題號時,在結(jié)構(gòu)數(shù)組中應(yīng)該向前面移動一項,通過修改,修改功能己經(jīng)弄好。

在進行自主選題并判題Otheranswer函數(shù)中,通過在試題庫中找到想要的題形成一套試卷

的時,完全能夠形成試題,但是在對試題進行作答時,不管是輸入正確還是錯誤答案,顯示

的結(jié)果都是“答案錯誤”,找了一天原因還是沒有解決這個問題,最后找一個同學(xué)一起討論這

個問題,當(dāng)時他也不知道這是怎么回事,他又通過調(diào)試的手段,發(fā)現(xiàn)輸入的正確答案m與所

選擇試題的標(biāo)準(zhǔn)答案不一致,在這里我們發(fā)現(xiàn)問題,我們又通過討論,發(fā)現(xiàn)是回車符的問題,

我在printf(u\n請輸入(%d)答案:”,i);這條語句后面加了getchar():結(jié)果就能正確判斷答案了,

成功的破解了這個問題。

5測試結(jié)果

5.1調(diào)試數(shù)據(jù)

(1)選擇學(xué)生窗口進行隨機答題并判題:輸入總題數(shù):2

(2)選擇教師窗口

添加試題:2*6T6二?

A:15B:1C:-4D:5正確答案:C

(3)修改試題

輸入題號:18

輸入新題目:23-19-?

A:23B:4C:5D:6正確答案:B

(4)刪除試題

刪除試題:1

(5)插入試題

插入到試題:19

12-1=?A:113:2C:3D:ll正確答案:D

最新可編輯word文檔

5.2調(diào)試結(jié)果

c\MC:\Docu>entsandSettings\Ad?inist宜t0r\桌面\考試系統(tǒng)\考試系統(tǒng)\口61)11

請輸入試題的總題數(shù):2

<1>2*3-1=?

A6B5

C4D7

請輸入第41〉答案:D

正贏咨案為:B

<2>15-14=?

A1B5

C4D3

請輸入第<2)答案"

答案正確?

你的總成績?yōu)殚T

圖5-2T隨機抽題作答

CA*C:\Docu>entsandSettingsUdMinistrator'桌面'考試系統(tǒng)'考試系統(tǒng)'

不需

了在題目輸入“X”結(jié)束!

請入

題、題干和選項;

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論