单项选择题标准化考试系统.docx

上传人:b****6 文档编号:9101313 上传时间:2023-02-03 格式:DOCX 页数:16 大小:198.60KB
下载 相关 举报
单项选择题标准化考试系统.docx_第1页
第1页 / 共16页
单项选择题标准化考试系统.docx_第2页
第2页 / 共16页
单项选择题标准化考试系统.docx_第3页
第3页 / 共16页
单项选择题标准化考试系统.docx_第4页
第4页 / 共16页
单项选择题标准化考试系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

单项选择题标准化考试系统.docx

《单项选择题标准化考试系统.docx》由会员分享,可在线阅读,更多相关《单项选择题标准化考试系统.docx(16页珍藏版)》请在冰豆网上搜索。

单项选择题标准化考试系统.docx

单项选择题标准化考试系统

课程设计

课程名称高级语言程序课程设计

题目名称单项选择题标准化考试系统

学生学院自动化学院

专业班级自动化06级

(2)班

学号**********

学生姓名陈壮城

指导教师杨其宇

 

2007年6月18日

广东工业大学课程设计任务书

题目名称

单项选择题标准化考试系统

学生学院

自动化学院

专业班级

自动化06级

(2)班

姓名

陈壮城

学号

3106000853

一、课程设计的内容

C题目二十四:

单项选择题标准化考试系统

(一)功能要求:

(1)用文件保存试题库。

(每个试题包括题干、4个备选答案、标准答案)

(2)试题录入:

可随时增加试题到试题库中

(3)试题抽取:

每次从试题库中可以随机抽出N道题(N由键盘输入)

(4)答题:

用户可实现输入自己的答案

(5)自动判卷:

系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

(二)其它要求:

(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读

(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)

(3)学生可自动增加新功能模块(视情况可另外加分)

(4)写出课程设计报告,具体要求见相关说明文档

二、课程设计的要求与数据

1、进一步掌握和利用C语言进行程设计的能力;

2、进一步理解和运用结构化程序设计的思想和方法;

3、初步掌握开发一个小型实用系统的基本方法;

4、学会调试一个较长程序的基本方法;

5、学会利用流程图或N-S图表示算法;

6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作

1、编写完成相应题目的程序;

2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:

1)需求分析:

包括设计题目、设计要求以及系统功能需求分析;

2)总体设计:

包括系统总体设计框架和系统功能模块图;

3)详细设计:

包括主要功能模块的算法设计思路以及对应的工作流程图;

4)调试分析过程描述:

包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);

5)总结:

课程设计完成了哪些功能,有没有什么扩展功能?

还有哪些地方需要改进?

课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;

6)附录:

主要源程序代码,含必要的注释。

3、答辩:

在实验室建立程序运行的环境,并在指导教师的监督下,独立解

决问题、运行程序和回答教师提出的问题。

四、课程设计进程安排

序号

设计各阶段内容

地点

起止日期

1

下达任务书,说明设计要求;收集资料

实验3#517

6.18

2

总体方案设计、详细设计

实验3#517

6.19

3

编写程序,调试分析

实验3#517

6.20

4

撰写报告并上交,答辩

实验3#517

6.21

五、应收集的资料及主要参考文献

[1]谭浩强.C程序设计(第三版)[M],北京:

清华大学出版社,2005.9

[2]谭浩强.C程序设计题解与上机指导(第三版)[M],北京:

清华大学出版社,2005.7

[3]刘振安等.C++程序设计课程设计[M]-北京:

机械工业出版社,2004.8

[4]张淑平.C语言程序设计学习指导,西安电子科技大学出版社,2004.6

发出任务书日期:

2007年6月18日指导教师签名:

计划完成日期:

2007年6月22日基层教学单位责任人签章:

主管院长签章:

1设计目的与要求………………………………………………………………5

2总体设计………………………………………………………………………6

3详细设计………………………………………………………………………7

3.1功能模块设计………………………………………………………………7

3.1.1保存文件功能模块………………………………………………………7

3.1.2输出文件功能模块………………………………………………………7

3.1.3答题功能模块………………………………………………………8

3.2数据结构设计………………………………………………………………9

4调试分析……………………………………………………………………10

5总结……………………………………………………………………………12

6附录……………………………………………………………………………13

6答辩记录(正文处请留出适当空白)………………………………………19

7指导教师意见(正文处请留出十行空白)…………………………………19

1目的与要求

一目的:

设计一个单项选择题标准化考试系统,方便考试时试题的录入与批改。

二要求:

(1)用文件保存试题库。

(每个试题包括题干、4个备选答案、标准答案);

(2)试题录入:

可随时增加试题到试题库中;

(3)试题抽取:

每次从试题库中可以随机抽出N道题(N由键盘输入);

(4)答题:

用户可实现输入自己的答案;

(5)自动判卷:

系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

2总体设计

一总的概叙:

1、用来保存试题库,可以用到”StructTestNodeTestquestions”结构体数组,将试题一一对应的保留下来,放在相应的文件里;

2、试题的录入,可以定义一个”voidInputTitle(intN)”和”StatusInsertNode(int&N)”函数将试题录入;

3、试题的抽取,可以定义一个”voidprintNode(TestNodep,intn)”的函数,用到”Rand”函数进行随机抽取;

4、答题方面,,则定义一个”voidanswer(intsum)”函数用于答题者的输入答案;

5、自动判卷,则可以定义一个”StatusMatch(TestNodep,charm)”函数,用来对比答题者答案和正确答案,给出判断正确与否;

6、用一个main函数将上述各个函数功能块连接起来,实现”单项选择题标准化考试系统”的各个方面的功能,完成设计.。

二、大概流程图

 

 

3详细设计

3.1功能模块设计

3.1.1保存文件功能模块:

 

3.1.2输出文件功能模块:

3.1.3答题功能模块:

N

Y

YN

3.2数据结构设计

程序中主要用到了结构体数组,定义类型,如typedefintStatus等,用结构体数组可以使得程序比较简便,易于读懂,免去频繁的赋值,而用定义类型,可以使得程序具有移植性,健壮性好。

4调试分析

一、操作界面

二、进行答题并判卷

三、插入试题

四、退出系统

调试分析结论:

里面用到的随机函数在随机选择试题时,有时会遇到选择出来的试题时重复的,

由于时间比较紧迫,暂时还没有找出原因,修正过来.

5总结

经过这整整三天的C语言课程设计的训练,我学到了很多,最主要的一点是怎样去自学一种东西,怎样去找到你所需要的资料,并在短时间把它学会,运用到你所需要的方面。

这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。

在做这个C语言课程设计的时候,我原先也是知之甚少,什么是结构体数据,什么是定义类型,怎样在一个main函数中调用别的定义函数,等等,可以说是一无所知。

然而,在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个,你就完全可以完成自己的任务。

这就要求我们要自己去学,自己去探索。

当然,跑图书馆是必不可少的,还有,身边有非常丰富的网络资源给我们好好利用,XX就是个很不错的地方。

这样就从另一方面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能力。

当然,由于个人能力所限,这份课程设计有一些别的方面还是要参考人家的的资料,在读懂别人材料的同时,自己取人所长,补己之短,经过多次的调试,总结,最后交出一份自己比较满意的答卷。

通过这次的课程设计,让我进一步的了解到C语言在我们日常生活中的重要性,而且,也更进一步的激发了我学习这门语言的兴趣.经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。

 

6.附录

#include

#include

#include

#defineTRUE1

#defineERROR0

#defineMAX30

typedefintStatus;

typedefstruct{

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

charresult;

}TestNode;

TestNodeTestquestions[MAX];

StatusSaveNode(intN)//把结构体数组保存到文件"cheng"中,如成功保存返回TRUE,否则返回ERROR

{inti;

FILE*fp;

if((fp=fopen("cheng","wb"))==NULL)returnERROR;

for(i=0;i

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

fclose(fp);

returnTRUE;

}

StatusReadNode(int&N)//从文件读出结构体数组的内容,如成功读取返回TRUE,否则返回ERROR

{FILE*fp;

inti=0;

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

while(!

feof(fp))//用feof检测文件是否结束,如果结束,返回正确

{fread(&Testquestions[i],sizeof(TestNode),1,fp);

i++;

}

N=i-1;

returnTRUE;

}

 

voidInputTitle(intN)//输入N道试题数据

{

inti;

for(i=0;i

{printf("请输入第%d道题题目、题干和选项:

\n",i+1);//输入结构体元素内容

printf("请输入题目:

");

gets(Testquestions[i].subject);

printf("请输入选项A:

");

gets(Testquestions[i].option1);

printf("请输入选项B:

");

gets(Testquestions[i].option2);

printf("请输入选项C:

");

gets(Testquestions[i].option3);

printf("请输入选项D:

");

gets(Testquestions[i].option4);

printf("请输入答案:

");

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

system("cls");//清屏

}

}

StatusInsertNode(int&N)//插入试题内容

{

if(N>MAX)returnERROR;

printf("请输入所要插入题题目、题干和选项:

\n");

printf("请输入题目:

");

gets(Testquestions[N].subject);

printf("请输入选项A:

");

gets(Testquestions[N].option1);

printf("请输入选项B:

");

gets(Testquestions[N].option2);

printf("请输入选项C:

");

gets(Testquestions[N].option3);

printf("请输入选项D:

");

gets(Testquestions[N].option4);

printf("请输入答案:

");

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

N++;//N表示结构体数组长度,通过加&号使其值能返回

returnTRUE;

}

StatusDeleteNode(intn)//删除数组中的第n个元素

{

returnTRUE;

}

 

voidprintNode(TestNodep,intn)//输出第n道题题目

{

printf("(%d)",n);

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

printf("A%s",p.option1);

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

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

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

}

StatusMatch(TestNodep,charm)//判断m是否为p题目的答案,若是返回TRUE,否则返回ERROR

{

if(m==p.result)returnTRUE;

elsereturnERROR;

}

voidanswer(intsum)//进行答题

{

inti,score=0,Num;

charr;

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

{Num=rand()%sum;//随机函数,以随机选定何题进行解答

printNode(Testquestions[Num],Num+1);

printf("\n请输入答案:

");

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

if(Match(Testquestions[Num],r))//调用函数IsMatch判断所输入的答案与标准答案是否相同

{printf("\n答案正确!

\n");

score++;

}

elseprintf("\n答案错误!

\n");

}

printf("\n你的总成绩为:

%d\n",score);

}

 

voidmain()

{charflag='N';

intN=0,i,sum,score=0,chose;

/*printf("输入想建立的题目文件题目数:

");

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

InputTitle(N);*/

ReadNode(N);

while(flag=='N'||flag=='n')

{printf("\t\t\t单项选择题标准化考试系统\n");

printf("\n");

printf("\t\t\t1进行答题并判卷\n");

printf("\t\t\t2显示整张试卷内容\n");

printf("\t\t\t3插入试题\n");

printf("\t\t\t4保存到文件\n");

printf("\t\t\t5退出系统\n");

printf("\t\t\t请选择:

");

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

switch(chose)

{case1:

system("cls");

printf("请输入你想要的答题数目:

");

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

answer(sum);

break;

case2:

system("cls");

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

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

printf("\n");

}

break;

case3:

system("cls");InsertNode(N);break;

case4:

system("cls");

if(SaveNode(N))printf("保存成功!

\n");

elseprintf("保存失败!

\n");break;

case5:

printf("你将退出系统(YorN)?

");

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

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

system("cls");break;

default:

printf("请输入正确选择!

\n");

}

}

}

 

7答辩记录

序号

问题

回答

1

2

3

4

5

8指导教师意见

 

指导教师签名:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 农学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1