《C++課程設計 (6)單項選擇題標準化考試系統(tǒng)》由會員分享,可在線閱讀,更多相關《C++課程設計 (6)單項選擇題標準化考試系統(tǒng)(15頁珍藏版)》請在裝配圖網上搜索。
1、
《單項選擇題標準化考試系統(tǒng)》
程序設計基礎課程設計報告
專 業(yè): 電子信息工程
班 級: 2007級 1 班
學 號: 2007082027
姓 名: 陳 皓
指導教師: 常 耀 輝
二OO八 年 六月三十日
目 錄
1.課程設計目的 1
2.課程設計題目描述和要求 1
2.1課程題目 1
2.2課程要求 1
3.課程設計報告內容 1
3.
2、1算法描述 1
3.2 源程序 2
4.流程圖
5課程設計總結: 6
6書目 7
1 課程設計目的
練習自己的動手能力,在學習理論的同時增強自己的編程能力,使理論與實踐相結合,在學習書本的同時擴展自己的課外知識.
2 課程設計題目描述和要求
2.1課程題目
單項選擇題標準化考試系統(tǒng)
2.2課程要求
(一)功能要求:
(1)用文件保存試題庫。(每個試題包括題干、4個備選答案、標準答案)
(2)試題錄入:可隨時增加試題到試題庫中
(3)試題抽取:每次從試題庫中可以隨機抽出N道題(N由鍵盤輸入)
(4)答題
3、:用戶可實現輸入自己的答案
(5)自動判卷:系統(tǒng)可根據用戶答案與標準答案的對比實現判卷并給出成績。
(二)其它要求:
(1) 只能使用C/C++語言,源程序要有適當的注釋,使程序容易閱讀
(2) 至少采用文本菜單界面(如果能采用圖形菜單界面更好)
(3) 學生可自動增加新功能模塊(視情況可另外加分)
(4)寫出課程設計報告,具體要求見相關說明文檔.
3 課程設計報告內容
3.1算法描述
定義題目數組,選向數組,輸入題目的及選向并給定正確答案。
輸入所要答的題目數,然后進行答題。輸入的答案與標準答案進行比較,如果一致,則正確,否則錯誤。最后根據題目數及答對題目數進行輸出
4、得分。
3.2 源程序
#include
#include
#include "dos.h"
using namespace std;
struct question {
char ask[200];/*選擇題題目*/
char answer[4][80];/*選擇題選項*/
int right;/*正確答案*/
struct question *next;
};
//函數聲明
int MenuChoice(void); //選擇菜單
struct question *charu_timu(st
5、ruct question *fst, const struct question *ad); //向列表中插入試題函數
struct question *da_an_weizhi(struct question *seek, long len, long max); //確定一個讀取答案的位置的函數
void GetQuestion(struct question *src); //獲取問題,選項,以及正確答案函數
void bao_cun(const struct question *ed, FILE *saf); //將列表中的試題保存在文件中的函數
struct questio
6、n *LoadFile(struct question *td, FILE *laf); //從文件中讀取題目,將題目添加到列表中的函數
int GetAnswer(void); //輸入選擇題的答案
void huida_Question(const struct question *que, int n); //回答問題函數
int main()
{
struct question *start = NULL, temp;
long choice, line = 0, c;
FILE *fp = fope
7、n("chenhao.dat", "a+");
while ((choice = MenuChoice()) != 3)
if (choice == 1)
{
GetQuestion(&temp);
start = charu_timu(start, &temp);
++line;/*統(tǒng)計列表的長度*/
system("cls");
}
else if (choice == 2)
{
c =8;
while (c > 6 || c > line) {
cout<<"請輸入要回答的問
8、題數量: ";
cin>>c;
}
huida_Question(start, line);
}
return 0;
}
/*da_an_weizhi函數確定一個讀取答案的位置,len代表要讀取的答案數,max代表列表的長度*/
struct question *da_an_weizhi(struct question *seek, long len, long max)
{
int i;
while (i--)
seek = seek->ne
9、xt;//找到指定的位置
return seek;
}
//向列表中插入試題
struct question *charu_timu(struct question *fst, const struct question *ad)
{
struct question *newPtr = (struct question *)malloc(sizeof(struct question));
if (newPtr == NULL)
10、 exit(0);
*newPtr = *ad;
newPtr->next = fst;
return newPtr;
}
/*獲取問題,選項,以及正確答案*/
void GetQuestion(struct question *src)
{
int i = 0;
cout<<"請輸入選擇題題目:"<>src->ask;
while (i < 4) {
cout<<"請輸入選項"<
11、(i + A)<<"的答案:"<>src->answer[i++];
}
src->right = GetAnswer();
}
/*從文件中讀取題目,將題目添加到列表中*/
struct question *LoadFile(struct question *td, FILE *laf)
{
struct question temp;
while (fread(&temp, 1, sizeof(struct questi
12、on), laf))
td = charu_timu(td, &temp);
return td;
}
/*將列表中的試題保存在文件中*/
void bao_cun(const struct question *ed, FILE *saf)
{
fclose(saf);
if ((saf = fopen("chenhao.dat", "w")) == NULL)//以寫的方式重新打開文件
return
13、;
while (ed) {
fwrite(ed, 1, sizeof(struct question), saf);
ed = ed->next;
}
}
//得到選擇題的答案(不保證是正確的答案)
int GetAnswer(void)
{
char c=0 ;//必須進行初始化,避免出現偶然性的錯誤
fflush(stdin);
while (c < A || c > D) //確保輸入的答案是A, B,
14、C, D中的一個
{
cout<<"請輸入正確的答案: "<> c;
}
return c;
}
//回答問題,并統(tǒng)計答對題目數,顯示得分
void huida_Question(const struct question *que, int n)
{
int i = 0, t = n;
char result[1001], *p = result;
for (i = 0; n--; que = que
15、->next) {
cout<ask<answer[0]<answer[1]<answer[2]<answer[3]<right) == (*(p + 1) = GetAnswer()))
++i;
}
*p = \0;
cout<<"您回答了"<
16、 t * 100.00<
17、選擇題 *"<>value;
return value;
}
4流程圖
主菜單
3. 退出
2回答選擇題
1添加選擇題
18、
1. 輸入題目
2. 輸入4個備選答案
3. 輸入標準答案
輸入所要選擇的答案
系統(tǒng)自動儲存所輸入的題目
系統(tǒng)自動判卷后輸出成績
返回主菜單
5程設計總結:
經過編寫程序,檢驗了我們的編程的水平,從這次編程中,我發(fā)現我才學到了一點點的知識,有好多的東西都不夠熟練,還需要好好的努力學習,在編寫這個程序時,出現了好多的問題,經過別人的幫助和自己的認真的調試才完成,這個程序還有好多的不足,還不夠美觀。有的地方還有漏洞。這個程序我使用的是鏈表,使我從中掌握了鏈表的使用方法,積累了經驗,這些經驗在以后的學習生活中會有很大的幫助的。并且,還熟悉了結構體的用法以及發(fā)現了部分用結構體編寫程序時會出現的問題。對C++也有了更深一步的了解,為以后學其他計算機語言打下了好的基礎。與此同時,還發(fā)現了自己編程時的許多不足,如不夠嚴謹、不仔細等問題。我將在以后的學習中逐步改善,爭取四年大學能夠把所學的計算機語言融會貫通,學精學好,請老師和同學多多指正。
6 參考書目
[1] 譚浩強,《C++程序設計》,北京,清華大學出版社.
14