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

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

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

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

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

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

 

程序设计报告

(2012/2013学年第二学期)

 

题目:

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

 

专业

学生姓名

班级学号

指导教师

指导单位

日期_

 

评分细则

评分项

优秀

良好

中等

遵守机房规章制度

上机时的表现

学习态度

程序准备情况

程序设计能力

团队合作精神

课题功能实现情况

算法设计合理性

用户界面设计

报告书写认真程度

内容详实程度

文字表达熟练程度

回答问题准确度

简短评语

 

教师签名:

年月日

评分等级

备注

评分等级有五种:

优秀、良好、中等、及格、不及格

课程设计报告具体内容要求:

程序设计题目名称

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

一、课题内容和要求

(一)功能要求:

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

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

(2)试题录入:

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

(3)试题抽取:

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

(4)答题:

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

(5)自动判卷:

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

(二)其它要求:

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

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

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

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

二、需求分析

(1)用文件保存试题库模块:

应该预备一个试题库文本,试题库中可以事先存有试题,每一个试题用一个结构体变量存储;

(2)试题录入模块:

临时创建一个结构体变量存储从键盘输入的一个试题的数据;再用函数将该结构体的数据写入文本;

(3)试题抽取模块:

将试题库中所有试题依次读到一个结构体链表中,由键盘输入的N产生N个随机数可以将随机数用一个数组存储,按照每一个随机数的值确定所抽取到的试题,并将试题存储到另一个链表,达到间接的随机抽取试题的效果,同时释放第一个链表的内存;

(4)答题模块:

建立一个数组存储用户所输入的答案,将答案同链表的对应的结点的答案域部分比较,相同则正确,并且设置的累加器自增加1,同时设置的标志数组(初始化为0)在对应位置置为1,表示该题正确;答案对比不同时则累加器与标志数组都在对应位置不操作;

(5)自动判卷模块:

输出累加器的值表示总共答对的试题总数,同时输出标志数组每一道题的标志表示答对与答错的试题;

(6)自动增加的新功能模块:

该模块会弹出二级菜单,具体有“重新答题”、“显示答案”

及“返回主菜单”三个功能;“重新答题”将调用答题模块,将刚刚答过的题重新让用户回答,“显示答案”将打印每一个试题结点的答案域,“返回主菜单”则跳出并打印主菜单;

(7)退出系统模块:

释放内存并且返回0;

三、概要设计

(1)结构体的存储结构:

{

[200];

[4][100];

*;

}

(2)用一个语句来确定用户在主菜单选择的功能选项,进入能实现不同的函数调用以实现用户需要的功能,二级菜单选项也是如此;

(3)其他各个模块的函数需要的功能见上述的“需求分析”;

(4)各个函数的算法详述及源代码见下文“源程序代码”;

四、源程序代码

各个算法实现的源程序(可以是一组源程序,每个功能模块采用不同的函数实现),源程序要按照写程序的规则来编写。

要结构清晰,重点函数的重点变量,重点功能部分要加上清晰的程序注释。

,程序清单可用字体,大小为5号,单倍行距。

(1)();

主菜单的函数声明,打印主功能的选项

(2)();

子菜单的函数声明,打印子功能的选项

(3)试题录入模块功能实现的主要函数定义及算法分析:

(*t)

{

{

1;

(*)[100];

0;

("*****是否要往试题库添加一道试题N*****\n");

/*让用户确定是否要往试题库添加试题,用户输入Y则进入添加试题,N则退出添加试题并

*回到主菜单,输入其他的则系统会报错并提示用户重新输入*/

>;

1();

();

('N'1)

;

('Y'1)

{

(,0,2)将试题库文本的文件指针置于末尾以追加试题

("*****请输入要添加的问题的题干:

*****\n");

(>);

将用户输入的试题的题干存入已定义的结构体的题干域,下面的操作也类似

(,"\n">);

将该结构体的题干域写入试题库文本文件,下面的操作也类似

("*****请输入要添加的问题的四个选项,逐个输入:

*****\n");

(;[i]<>[4];)

{

([i]);

(,"\n"[i]);

}

("*****请输入要添加的问题的答案:

*****\n");

>();

();

(,"\n">);

}

("*****请按要求输入N*****\n");

系统报错并提示用户重新输入,系统容错性得到提高

 

}

(1);

}

(4)随机抽取试题模块让两个主要函数实现:

(**,*j)

/*此函数用二级指针来接收结构体指针的地址,为该指针申请动态存储空间,把试题库现有的试题都*存入链表,并且由申请动态存储空间的次数得出试题库现有的试题总数,并用存于j所指变量*/

{

*;

*;

0;

0;

*0;

()把试题库文本文件指针重置于开头

(())

{

(*)(());

>;

(*j);

(>,200)将试题题干读出,下面的读出选项及答案类似该过程

(0<4)

(>[k],100);

(,"\n">);

(*)

*;

>;

;

}

}

/*产生N个随机数的函数的主要语句及算法分析,并且保证N个随机数不相同,由此间接达到随机抽*取试题的效果*/

(0;i

{

0;

[i]=1();

(;l

{

([i][l])

/*将每个产生的随机数与前面的所有随机数比较,相同时则重新产生随机数并为之赋值,接着重新比

*较,如此循环直到产生的随机数都与前面的所有随机数不同*/

{

[i]=1();

0;

}

;

}

}

(5)答题模块:

答题模块比较简单,该函数打印抽取到的每道试题,接着用一个数组存储用户回答的答案

(*1*2j)

{

0;

(<)

{

0;

("*****第题:

*****\n"1);

(1->);

(<4)

(1->[k]);

("*****请输入答案:

*****\n");

*2();

();

11->;

}

}

(6)自动判卷模块:

/*该模块也比较简单,只需要将用于存储用户的回答的数组的每一个答案与对应试题每一个答案比较*即可,函数如下*/

(*1,*2)

{

0;

0;

[200]={0,};

*2;

21;

(2)

{

(2->(*2))

{

;

[]=1;

}

2;

;

22->;

}

21;

0;

(222->)

{

([])

("*****第题正确*****\n"1);

("*****第题错误*****\n"1);

;

}

("*****共答对题*****\n");

 

}

(7)其他功能模块:

/*该模块的“重新答题”功能的实现主要为重新调用答题模块,显示答案则只是打印试题链表的答案

*域,都比较简单*/

(8)退出系统模块:

直接释放申请的内存并返回

五、测试数据及其结果分析

进入单项选择题标准化考试系统后输入测试数据:

A

Y

世界上海拔最高的山峰是哪一座?

A.乔戈里峰

B.珠穆朗玛峰

C.干城章嘉峰

D.公格尔山峰

B

结果分析:

打开“:

试题库”,可以在文本的最后看到如下

世界上海拔最高的山峰是哪一座?

A.乔戈里峰

B.珠穆朗玛峰

C.干城章嘉峰

D.公格尔山峰

B

分析如下:

因为我们在主菜单选择了“A.试题录入”,于是我们在终端输入的试题就会被添加到试题库

六、调试过程中的问题

每个模块设计和调试时存在问题的思考(问题是哪些问题如何解决?

),以及算法的改进设想。

(1)用文件保存试题库模块:

问题有:

每次要录入试题时,应该把文件指针移到末尾,调用文件的随机访问函数可以解决这个问题

(2)试题录入模块:

问题有:

调试过程中未出现问题

(3)试题抽取模块:

问题有:

形参要使用二级指针接收结构体指针的地址为之申请动态存储空间

(4)答题模块:

问题有:

语法等细节问题,不一一说明

(5)自动判卷模块:

问题有:

调试过程中未出现重要问题

(6)自动增加的新功能模块:

问题有:

调试过程中未出现

(7)退出系统模块:

问题有:

每次退出系统之前应该释放申请的动态存储空间,调用函数可以解决这个问题

七、课程设计总结

总结可以包括:

程序设计过程的收获、遇到的问题,遇到问题解决问题过程的思考、程序调试能力的思考,对该课程组织和考核方式的建议等。

程序设计过程的收获:

(1)指针很好用但是很危险,对于不需要的指针要置为空指针,避免产生野指针

(2)采用多个文件、文件包含去实现程序

(3)采用类去描述

遇到的问题,遇到问题解决问题过程的思考:

1.课程设计目的

本程序旨在训练基本编程能力,了解操作信息系统的开发流程,熟悉C语言的文件和结构数组的各种基本操作。

本程序涉及结构体、数组、指针、文件等方面的知识。

通过本程序的训练,使读者能对C语言的文件操作有一个更深刻的了解,掌握利用数组存储结构实现单项选择题标准化考试系统,为进一步开发出高质量信息管理系统打下坚实的基础。

2.功能描述

根据需求描述,本人按照结构化程序设计的原则将整个系统划分若干个功能模块。

系统各子模块的设计如下:

 

——————

————

图1单项选择题标准化考试系统功能模块图

3.数据结构设计

本程序定义了结构体,主要用于存放试题的基本信息,如下所示:

{

[200];

[4][100];

*;

}

其中,各字段含义如下

[200]:

试题的题干

[4][100]:

试题的四个选项

试题的答案

指向下一个试题

 

4.功能模块设计

4.1主控模块设计

首先,调用()函数显示初始界面;其次用户输入以作选择,用语句实现该系统各功能,若为A,系统实现录入试题功能;若为B,系统实现随机抽取试题功能;若为C,系统实现用户答题功能;若为D,系统实现自动判卷功能;若为E,系统实现其他功能,此时显示子菜单,其他功能分为重新答题与显示答案;若为F,系统实现退出系统功能。

4.2用文件保存试题库模块

应该预备一个试题库文本,试题库中可以事先存有试题,每一个试题用一个结构体变量存储;

4.3试题录入模

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

当前位置:首页 > 表格模板 > 合同协议

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

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