標(biāo)準(zhǔn)化考試系統(tǒng)_第1頁(yè)
標(biāo)準(zhǔn)化考試系統(tǒng)_第2頁(yè)
標(biāo)準(zhǔn)化考試系統(tǒng)_第3頁(yè)
標(biāo)準(zhǔn)化考試系統(tǒng)_第4頁(yè)
標(biāo)準(zhǔn)化考試系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課 程 報(bào) 告課 程 名 稱: 程序設(shè)計(jì)實(shí)踐 專 業(yè) 班 級(jí) : 物聯(lián)網(wǎng)1502班 學(xué) 生 姓 名 : 楊凱 學(xué) 號(hào) : 201516070207 任 課 教 師 : 張繼新 學(xué) 期 : 2015-2016年第一學(xué)期課程報(bào)告任務(wù)書(shū)題 目標(biāo)準(zhǔn)化考試系統(tǒng)主要內(nèi)容1.建立一個(gè)InsertNode函數(shù)來(lái)實(shí)現(xiàn)插入試題的功能。2.建立一個(gè)AddNode函數(shù)來(lái)實(shí)現(xiàn)添加試題的功能。3.建立一個(gè)Change函數(shù)來(lái)實(shí)現(xiàn)對(duì)試題進(jìn)行修改的功能。4.新建一個(gè)DeleteNode函數(shù)來(lái)實(shí)現(xiàn)對(duì)試題的刪除。5.建立個(gè)printNode函數(shù)實(shí)現(xiàn)對(duì)試題的輸出功能。6.建立一個(gè)Match函數(shù)來(lái)判斷答案是否正確。7.建立answer

2、函數(shù)實(shí)現(xiàn)隨機(jī)選題并進(jìn)行答題和統(tǒng)計(jì)得分功能。8.在主函數(shù)main中,使用switch函數(shù)讓用戶進(jìn)行選擇。任務(wù)要求一、對(duì)該考試系統(tǒng)進(jìn)行需求分析,找出該系統(tǒng)需要哪些功能來(lái)實(shí)現(xiàn),在每個(gè)功能中運(yùn)用學(xué)過(guò)的算法來(lái)實(shí)現(xiàn),每個(gè)功能用不同的函數(shù)來(lái)實(shí)現(xiàn),確定函數(shù)之間調(diào)用的關(guān)系。二、整個(gè)設(shè)計(jì)過(guò)程具體要求(1)需求分析 對(duì)案例系統(tǒng)進(jìn)行分析,設(shè)計(jì)出需要完成的功能,完善各個(gè)模塊的調(diào)用關(guān)系;(2)設(shè)計(jì)過(guò)程 進(jìn)一步明確各模塊調(diào)用關(guān)系,進(jìn)一步完善模塊函數(shù)細(xì)節(jié)(函數(shù)名、參數(shù)、返回值等)(3)實(shí)現(xiàn)過(guò)程 養(yǎng)成良好的編碼習(xí)慣、完成各個(gè)模塊并進(jìn)行測(cè)試,最終完成系統(tǒng)整體測(cè)試;(4)總結(jié)階段 按照要求完成系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)報(bào)告,并進(jìn)行總結(jié)、答辯。

3、成績(jī)?cè)u(píng)定報(bào)告撰寫(xiě)情況(30分)系統(tǒng)完成情況(30分)答辯情況(40分)總分內(nèi)容20分規(guī)范程度5分程序測(cè)試5分基本功能20分?jǐn)U展功能10分自述情況10分答辯情況30分成績(jī)?cè)u(píng)定教師: 1 需求分析該系統(tǒng)包括以下功能:1. 進(jìn)行隨機(jī)答題并判卷2. 顯示試題所有內(nèi)容3. 插入試題4. 添加試題5. 自主選題并判卷6. 修改試題7. 刪除試題8. 退出系統(tǒng)2 概要設(shè)計(jì) 2.1整體框架圖標(biāo)準(zhǔn)化考試系統(tǒng) 退出系統(tǒng) 刪 除 試 題修改試題添加試題顯示試題所有內(nèi)容進(jìn)行隨機(jī)答題并判卷自主選題并判題 圖2-1-2.2 自定義函數(shù)返回值函數(shù)名參數(shù)表函數(shù)功能StatusSaveNodeint &N將試題存入文件

4、中StatusReadNodeint &N 從文件中讀取試題StatusInsertNodeint &N向試題庫(kù)中插入試題StatusChangeint &N修改試題StatusDeleteNodeint &N刪除試題voidprintNode(TestNode p,int n)輸出試題StatusMatch(TestNode p,char m)檢查答案voidanswer(int sum,int N)隨機(jī)進(jìn)行答題并判卷voidOtheranswer(int N,int s)自主選題作答并判卷StatusAddNodeint &N 向題庫(kù)中添加試題 3

5、詳細(xì)設(shè)計(jì) 3.1 添加試題Status AddNode(int &N) /添加試題內(nèi)容printf("如果不添加了試題了,在題目輸入“*”結(jié)束!n");while(1) printf("請(qǐng)輸入所要插入題題目、題干和選項(xiàng):n");printf("請(qǐng)輸入題目:");gets(TestquestionsN.subject);if(strcmp(TestquestionsN.subject,"*")=0)break;printf("請(qǐng)輸入選項(xiàng)A:");gets(TestquestionsN.op

6、tion1);printf("請(qǐng)輸入選項(xiàng)B:");gets(TestquestionsN.option2);printf("請(qǐng)輸入選項(xiàng)C:");gets(TestquestionsN.option3);printf("請(qǐng)輸入選項(xiàng)D:");gets(TestquestionsN.option4);printf("請(qǐng)輸入答案:");scanf("%c",&TestquestionsN.result);getchar();N+; /N表示結(jié)構(gòu)體數(shù)組長(zhǎng)度,通過(guò)加&號(hào)使其值能返回 retu

7、rn TRUE;3.2 修改試題Status Change(int &N)int m,i;printf("請(qǐng)輸入您要修改第幾題?n");scanf("%d",&m);getchar(); /吸收空格字符 for(i=0;i<N;i+)if(i=(m-1) printf("請(qǐng)輸入新的題目:"); gets(Testquestionsm-1.subject); printf("請(qǐng)輸入新的選項(xiàng)A:"); gets(Testquestionsm-1.option1); printf("請(qǐng)輸入

8、新的選項(xiàng)B:"); gets(Testquestionsm-1.option2); printf("請(qǐng)輸入新的選項(xiàng)C:"); gets(Testquestionsm-1.option3); printf("請(qǐng)輸入新的選項(xiàng)D:"); gets(Testquestionsm-1.option4); printf("請(qǐng)輸入新的答案:"); scanf("%c",&Testquestionsm-1.result); getchar();break;if(m>N)printf("修改試題失敗

9、!n");elseprintf("修改試題成功!n");return TRUE;3.3 刪除試題 Status DeleteNode(int &N) /刪除數(shù)組中的第n道題 int n;printf("輸入你想是刪除第幾道試題:n");scanf("%d",&n);if(n>N)printf("刪除不成功n");return ERROR;while(n<=N)Testquestionsn-1=Testquestionsn;n+;N=N-1;printf("刪除成功n&

10、quot;);return TRUE;3.4 隨機(jī)選題并判題 void answer(int sum,int N) /隨機(jī)進(jìn)行答題 int i,score=0,Num; char r; for(i=1;i<=sum;i+)Num= rand()%N; /隨機(jī)函數(shù),以隨機(jī)選定何題進(jìn)行解答 printNode(TestquestionsNum,i); printf("n"); printf("n請(qǐng)輸入第(%d)答案:",i); scanf("%c",&r);getchar();if(Match(TestquestionsNu

11、m,r) /調(diào)用函數(shù)Match判斷所輸入的答案與標(biāo)準(zhǔn)答案是否相同printf("n答案正確!n");score+;else printf("n答案錯(cuò)誤!n"); printf("正確答案為:%cn",TestquestionsNum.result);printf("n你的總成績(jī)?yōu)?%dn",score);3.5 自主選題并判題 void Otheranswer(int N,int s)int i,score=0,k;char m;for(i=1;i<=s;i+)printf("輸入要選擇第幾題?n&

12、quot;);scanf("%d",&k);while(k<=0|k>N)printf("輸入的題號(hào)在題庫(kù)中不存在!n");printf("n請(qǐng)重新輸入正確的題號(hào):");scanf("%d",&k);printNode(Testquestionsk-1,i);printf("n請(qǐng)輸入(%d)答案:",i);getchar();scanf("%c",&m);getchar();if(m=Testquestionsk-1.result)prin

13、tf("答案正確!n"); score+;else printf("答案錯(cuò)誤!n");printf("正確答案為:%cn",Testquestionsk-1.result);printf("總分為:%dn",score);3.6 登陸考試系統(tǒng)函數(shù)FILE *fp1;int a,c,num,flag=1;int i=0;char Mima20="0",b20;printf("ttt1 進(jìn)入登錄n");printf("nttt2 進(jìn)入注冊(cè)n");scanf(&

14、quot;%d",&c);while(flag)if(c<1|c>2)printf("n請(qǐng)輸入正確的選項(xiàng)!n");scanf("%d",&c);flag=1;elseflag=0;if(c=2)printf("請(qǐng)注冊(cè):n");Zhuce();else if(fp1=fopen("student.txt","rb")=NULL)printf("打開(kāi)文件失敗!");exit(0);printf("請(qǐng)輸入學(xué)號(hào):");scan

15、f("%d",&num);printf("請(qǐng)輸入密碼");while(c=getch()!='r')Mimai=c;i+;if(c!='b')printf("*");elseprintf("bb"); rewind(fp1); while(!feof(fp1)fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a=num&&strcmp(b,Mima)=0)break;

16、while(a!=num|strcmp(b,Mima)!=0)i=0;printf("n錯(cuò)誤,重新輸入:n");printf("請(qǐng)輸入學(xué)號(hào):");scanf("%d",&num);printf("請(qǐng)輸入密碼");while(c=getch()!='r')Mimai=c;i+;if(c!='b')printf("*");elseprintf("bb");rewind(fp1);while(!feof(fp1)fscanf(fp1,&quo

17、t;%d",&a);fscanf(fp1,"%s",&b);if(a=num&&strcmp(b,Mima)=0)break;printf("tt歡迎登陸單選題標(biāo)準(zhǔn)化考試系統(tǒng)!n");system("pause");getchar();printf("n");if(fclose(fp1)printf("關(guān)閉文件失敗!n");exit(0);*源代碼#include <stdio.h>#include <stdlib.h>#incl

18、ude<string.h>#include<conio.h>#define TRUE 1#define ERROR 0#define MAX 30typedef int Status;typedef structchar option130,option230,option330,option430,subject150;char result;int q;TestNode;TestNode TestquestionsMAX;Status SaveNode(int N) /把結(jié)構(gòu)體數(shù)組保存到文件"cheng"中,如成功保存返回TRUE,否則返回ERR

19、ORint i;FILE *fp;if(fp=fopen("cheng","wb")=NULL)return ERROR;for(i=0;i<N;i+)fwrite(&Testquestionsi,sizeof(TestNode),1,fp);fclose(fp);return TRUE;Status ReadNode(int N) /從文件讀出結(jié)構(gòu)體數(shù)組的內(nèi)容,如成功讀取返回TRUE,否則返回ERRORFILE *fp;int i=0;if(fp=fopen("cheng","rb")=NULL)r

20、eturn ERROR;while(!feof(fp) / 用feof檢測(cè)文件是否結(jié)束,如果結(jié)束,返回正確fread(&Testquestionsi,sizeof(TestNode),1,fp);i+; N=i-1;return TRUE;void Zhuce()void Denglu();int i,m;i=0;char n20="0",c;FILE *fp1;if(fp1=fopen("student.txt","ab")=NULL)printf("打開(kāi)文件失敗!n");exit(0);printf(&

21、quot;請(qǐng)注冊(cè)學(xué)號(hào):");scanf("%d",&m);fprintf(fp1,"%d ",m);printf("請(qǐng)?jiān)O(shè)置密碼(20字符以內(nèi)):");while(c=getch()!='r')ni=c;i+;if(c!='b')printf("*");elseprintf("bb");fprintf(fp1,"%sn",n);if(fclose(fp1)printf("關(guān)閉文件失敗!n");exit(0);

22、printf("n");printf("ttt注冊(cè)完成!n");Denglu();void Denglu()FILE *fp1;int a,c,num,flag=1;int i=0;char Mima20="0",b20;printf("ttt1 進(jìn)入登錄n");printf("nttt2 進(jìn)入注冊(cè)n");scanf("%d",&c);while(flag)if(c<1|c>2)printf("n請(qǐng)輸入正確的選項(xiàng)!n");scanf(&

23、quot;%d",&c);flag=1;elseflag=0;if(c=2)printf("請(qǐng)注冊(cè):n");Zhuce();elseif(fp1=fopen("student.txt","rb")=NULL)printf("打開(kāi)文件失敗!");exit(0);printf("請(qǐng)輸入學(xué)號(hào):");scanf("%d",&num);printf("請(qǐng)輸入密碼");while(c=getch()!='r')Mimai=c;

24、i+;if(c!='b')printf("*");elseprintf("bb"); rewind(fp1); while(!feof(fp1)fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a=num&&strcmp(b,Mima)=0)break;while(a!=num|strcmp(b,Mima)!=0)i=0;printf("n錯(cuò)誤,重新輸入:n");printf("請(qǐng)輸入學(xué)號(hào):"

25、);scanf("%d",&num);printf("請(qǐng)輸入密碼");while(c=getch()!='r')Mimai=c;i+;if(c!='b')printf("*");elseprintf("bb");rewind(fp1);while(!feof(fp1)fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a=num&&strcmp(b,Mima)=0)bre

26、ak;printf("tt歡迎登陸單選題標(biāo)準(zhǔn)化考試系統(tǒng)!n");system("pause");getchar();printf("n");if(fclose(fp1)printf("關(guān)閉文件失敗!n");exit(0);Status AddNode(int N) /添加試題內(nèi)容printf("如果不添加了試題了,在題目輸入“*”結(jié)束!n");while(1) printf("請(qǐng)輸入所要插入題題目、題干和選項(xiàng):n");printf("請(qǐng)輸入題目:");ge

27、ts(TestquestionsN.subject);if(strcmp(TestquestionsN.subject,"*")=0)break;printf("請(qǐng)輸入選項(xiàng)A:");gets(TestquestionsN.option1);printf("請(qǐng)輸入選項(xiàng)B:");gets(TestquestionsN.option2);printf("請(qǐng)輸入選項(xiàng)C:");gets(TestquestionsN.option3);printf("請(qǐng)輸入選項(xiàng)D:");gets(Testquestions

28、N.option4);printf("請(qǐng)輸入答案:");scanf("%c",&TestquestionsN.result);printf("請(qǐng)輸入試題難度:");scanf("%d",&TestquestionsN.q);getchar();N+; /N表示結(jié)構(gòu)體數(shù)組長(zhǎng)度,通過(guò)加&號(hào)使其值能返回return TRUE;void printNode(TestNode p,int n) /輸出第n道題題目printf("(%d) ",n);printf("%sn&

29、quot;,p.subject);printf(" A %s ",p.option1);printf(" B %s n",p.option2);printf(" C %s ",p.option3);printf(" D %s ",p.option4);printf(" 試題難度為:%dn",p.q);Status Change(int m) int i;printNode(Testquestionsm-1,m); printf("n");printf("修改題目請(qǐng)按

30、 1n");printf("修改選項(xiàng)A請(qǐng)按 2n");printf("修改選項(xiàng)B請(qǐng)按 3n");printf("修改選項(xiàng)C請(qǐng)按 4n");printf("修改選項(xiàng)D請(qǐng)按 5n");printf("修改標(biāo)準(zhǔn)答案請(qǐng)按 6n");printf("修改試題難度請(qǐng)按 7n");scanf("%d",&i);getchar(); /吸收空格字符switch(i)case 1: printf("n請(qǐng)輸入新的題目:"); gets(T

31、estquestionsm-1.subject); break;case 2:printf("請(qǐng)輸入新的選項(xiàng)A:"); gets(Testquestionsm-1.option1); break;case 3: printf("請(qǐng)輸入新的選項(xiàng)B:"); gets(Testquestionsm-1.option2); break;case 4:printf("請(qǐng)輸入新的選項(xiàng)C:"); gets(Testquestionsm-1.option3); break;case 5:printf("請(qǐng)輸入新的選項(xiàng)D:"); g

32、ets(Testquestionsm-1.option4); break;case 6:printf("請(qǐng)輸入新的答案:"); scanf("%c",&Testquestionsm-1.result); break;case 7:printf("請(qǐng)輸入新的試題難度:");scanf("%d",&Testquestionsm-1.q);break;default:printf("請(qǐng)輸入正確的修改選項(xiàng)n");break;return TRUE;Status InsertNode(in

33、t N)int i,j,P;printf("輸入要插入到第幾題?n");scanf("%d",&i);getchar();N=N+1;for(j=N-1;j>=(i-1);j-)Testquestionsj=Testquestionsj-1;printf("請(qǐng)輸入題目:");gets(Testquestionsi-1.subject);printf("請(qǐng)輸入選項(xiàng)A:");gets(Testquestionsi-1.option1);printf("請(qǐng)輸入選項(xiàng)B:");gets(Te

34、stquestionsi-1.option2);printf("請(qǐng)輸入選項(xiàng)C:");gets(Testquestionsi-1.option3);printf("請(qǐng)輸入選項(xiàng)D:");gets(Testquestionsi-1.option4);printf("請(qǐng)輸入答案:");scanf("%c",&Testquestionsi-1.result);printf("請(qǐng)輸入試題難度:");scanf("%d",&Testquestionsi-1.q);getch

35、ar();return TRUE;Status DeleteNode(int N) /刪除數(shù)組中的第n道題int n;printf("輸入你想是刪除第幾道試題:n");scanf("%d",&n);if(n>N)printf("刪除不成功n");return ERROR;while(n<=N)Testquestionsn-1=Testquestionsn;n+;N=N-1;printf("刪除成功n");return TRUE;Status Match(TestNode p,char m) /判

36、斷m是否為p題目的答案,若是返回TRUE,否則返回ERRORif(m=p.result)return TRUE;elsereturn ERROR;void answer(int sum,int N) /隨機(jī)進(jìn)行答題 int i,score=0,Num; char r;for(i=1;i<=sum;i+)Num= rand()%N; /隨機(jī)函數(shù),以隨機(jī)選定何題進(jìn)行解答 printNode(TestquestionsNum,i); printf("n"); printf("n請(qǐng)輸入第(%d)答案:",i); scanf("%c",&

37、amp;r);getchar();if(Match(TestquestionsNum,r) /調(diào)用函數(shù)Match判斷所輸入的答案與標(biāo)準(zhǔn)答案是否相同printf("n答案正確!n");score+;else printf("n答案錯(cuò)誤!n"); printf("正確答案為:%cn",TestquestionsNum.result);printf("n你的總成績(jī)?yōu)?%dn",score);void Otheranswer(int N,int s)int i,score=0,k,j,y;char m;for(i=1;i&

38、lt;=s;i+)printf("輸入試題難度n");scanf("%d",&k);while(k<0|k>2)printf("題庫(kù)中沒(méi)有該難度的試題!n");printf("n請(qǐng)重新輸入試題難度:");scanf("%d",&k);for(j=0;j<N;j+)if(y=j)continue;if(Testquestionsj.q=k)printNode(Testquestionsj,i);printf("n請(qǐng)輸入(%d)答案:",i);g

39、etchar();scanf("%c",&m);getchar();if(Match(Testquestionsj,m)printf("答案正確!n"); score+;elseprintf("答案錯(cuò)誤!n");printf("正確答案為:%cn",Testquestionsj.result); break;y=j;printf("總分為:%dn",score);void main()char flag; int N=0,i,sum,m,s,score=0,chose,Chose=3;R

40、eadNode(N);while(Chose<1|Chose>2)printf("ttt請(qǐng)選擇自己的類型n");printf("ttt1 學(xué)生端口n");printf("ttt2 教師端口n");scanf("%d",&Chose);system("cls");switch(Chose)case 1:Denglu(); system("cls");while(1)printf("ttt單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)進(jìn)行答題n ");print

41、f("ttt1 進(jìn)行隨機(jī)答題并判卷n");printf("ttt2 自主選題并判卷n");printf("ttt3 退出系統(tǒng)n");scanf("%d",&chose);getchar();switch(chose) case 1:system("cls"); ReadNode(N); printf("請(qǐng)輸入試題的總題數(shù):"); scanf("%d",&sum);getchar(); if(N=0) printf("對(duì)不起,題庫(kù)中

42、沒(méi)有試題!n"); printf("按任意鍵回到菜單!n"); getchar(); else answer(sum,N); getchar(); break; case 2:system("cls"); ReadNode(N); printf("請(qǐng)輸入試卷的總題數(shù):"); scanf("%d",&s); Otheranswer(N,s); getchar(); break; case 3:printf("你將退出系統(tǒng)(Y or N)?"); scanf("%c&qu

43、ot;,&flag);getchar(); if(flag='Y'|flag='y') exit(0); system("cls");break; default:printf("請(qǐng)輸入正確選擇!n");case 2:printf("ttt歡迎進(jìn)入教師題庫(kù)管理n");while(1) printf("ttt單項(xiàng)選擇題標(biāo)準(zhǔn)化考試系統(tǒng)n "); printf("n"); printf(" ttt1 顯示所有試題內(nèi)容n"); printf(" ttt2 添加試題n"); printf(" ttt3 修改試題n"); printf(" ttt4 刪除試題n"); printf(" ttt5 插入試題n"); printf(" ttt6 退出系統(tǒng)n"); scanf("%d",&chose);getchar(); switch(chose) case 1:system("cls"); ReadNod

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論