c语言 单选标准化考试系统课程设计报告.docx

上传人:b****7 文档编号:23503196 上传时间:2023-05-17 格式:DOCX 页数:18 大小:159.25KB
下载 相关 举报
c语言 单选标准化考试系统课程设计报告.docx_第1页
第1页 / 共18页
c语言 单选标准化考试系统课程设计报告.docx_第2页
第2页 / 共18页
c语言 单选标准化考试系统课程设计报告.docx_第3页
第3页 / 共18页
c语言 单选标准化考试系统课程设计报告.docx_第4页
第4页 / 共18页
c语言 单选标准化考试系统课程设计报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

c语言 单选标准化考试系统课程设计报告.docx

《c语言 单选标准化考试系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《c语言 单选标准化考试系统课程设计报告.docx(18页珍藏版)》请在冰豆网上搜索。

c语言 单选标准化考试系统课程设计报告.docx

c语言单选标准化考试系统课程设计报告

沈阳航空航天大学

课程设计

学号

班级

姓名

指导教师

2012年9月7日

沈阳航空航天大学

课程设计任务书

学院:

自动化专业:

测控技术与仪器班级:

14070102

学号:

2011040701075题目:

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

(1)

一、课程设计时间

2012~2013第1学期第2周,共计1周,20学时。

二、课程设计内容

用C语言编写标准化考试中的一些基本功能:

用文件保存试题库。

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

1.试题录入:

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

2.试题抽取:

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

3.答题:

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

自动判卷:

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

三、课程设计要求

1.程序质量:

●贯彻结构化的程序设计思想。

●用户界面友好,功能明确,操作方便。

用户界面中的菜单至少应包括“试题录入”、“试题抽取”、“答题”、“退出”

4项。

●代码应适当缩进,并给出必要的注释,以增强程序的可读性。

2.课程设计说明书:

课程结束后,上交课程设计说明书和源程序。

课程设计说明书的格式和内容参见提供的模板。

四、指导教师和学生签字

指导教师:

________学生签名:

________

五、成绩

六、教师评语

 

目录

一、需求分析1

二、设计分析3

三、主要界面截图5

四、技术要点8

五、个人总结11

六、参考文献12

七、源程序12

 

一、需求分析

根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。

本系统用于考试,鉴于使用环境的特殊要求,本系统应具有稳定、便捷的特点。

1.稳定性分析

本系统用于考试,故考试中本系统的稳定性将决定考试是否成功。

对于考生的操作应该有正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。

2.便捷性分析

本系统用于考试,为方便考试的进行。

便捷性是本系统所必须的特性。

功能明确,操作方便将会改善考生的心情,减少考生不必要的心理压力。

3.主要功能分析

(1)题库存储:

允许试题管理人员输入新的试题,并永久保存在磁盘中。

文件的具体格式应采用文本文件。

以便于程序自动读取或人工阅读。

(2)试题抽取:

用户输入查询试题数目,系统规则地在界面显示抽取结果。

当输入试题数目时,体统规则的在屏幕上显示相应数量的试题,供考生提前复习或试题管理人对题库进行管理。

(3)答题系统:

考生输入自己想要回答的问题的数量,本系统则相应的显示试题。

并允许考生输入自己的答案,并将该答案信息保存在磁盘中,以方便其他系统自动判卷。

二、设计分析

主要有4个功能模块,每个模块对应一个C语言自定义函数。

这些函数原型及其功能简述如下:

1.Main()模块:

本模块的作用是根据用户的要求调用其他的模块。

实现目录的功能。

2.Save()模块:

本模块的作用是将试题输入后将试题保存进磁盘中,实现永久保存。

同时方便其他模块调用试题信息。

3.Load()模块:

本模块的作用是根据用户输入的想要查看的试题数目调用保存在磁盘中的试题信息。

以方便考生或试题管理人员的浏览试题。

4.Answer()模块:

根据用户输入的想要回答的试题数量,本模块将从磁盘文件中调用相应数量的试题文件。

并允许用户将自己的答案也一并保存在磁盘文件中,实现永久保存,方便判卷。

1、程序总体结构图

输入n的值

       输入n=1?

真                   假

开始录入试题信息

进入Save()函数

   n=2?

真      假

进入抽取题目模块

Load(0

n=3?

真       假

进入

答题

模块

Answer()

n=4?

真 假

退出

系统

  提示错误

        图1程序总体结构图

2、主要功能模块框图

(1)添加试题函数save()

以只写方式打开d:

\\test.txt文件成功?

假真

输出”文件打开失败”

当n=1时

输入第i道试题信息

将第i道试题信息写入磁盘

i++输入n值(判断是否继续录入试题)

清屏,回主函数

关闭d:

\\test.txt文件

       图2添加试题数据函数

(2)抽取试题load()

以只写方式打开d:

\\test.txt文件成功?

假真

输出”文件打开失败”

输入n值

i<n

输出第i道试题信息

i++

清屏,回主函数

关闭d:

\\test.txt文件

        图3 抽取试题数据函数

(3)答题模块函数answer()

以只写方式打开d:

\\test.txt文件成功?

假真

输出”文件打开失败”

输入n值

i<n

输出第i道试题信息

输入第i道试题答案

i++

清屏,回主函数

关闭d:

\\test.txt文件

       图4 答题模块

三、主要界面截图

图1程序主界面

图2试题录入界面

图3试题抽取界面

图4答题界面

四、技术要点

1、结构体的应用

定义了结构体用来记录试题信息。

具体的定义如下:

structquestion

{intnum;

charquest[50];

charoption_a[20];

charoption_b[20];

charoption_c[20];

charoption_d[20];

charanswer_t[2];

charanswer[2];

};

所定义的结构体主要用于定义数组。

2、文件操作

包括了文件的写入和读取两个方面。

文件的写入操作,用于保存录入的试题数据,也用于保存用户的答案。

例如如下程序段用于保存录入的试题信息:

voidsave()

{voidmain();

FILE*fp;

inti=0,n=0;

if((fp=fopen("i:

\\test.txt","w"))==NULL)

{

printf("*很遗憾,题库文件打开失败\n");

}

else

{

do

{

printf("\n请输入问题题干:

");scanf("%s",&que[i].quest);

printf("\n*请输入A选项:

");scanf("%s",&que[i].option_a);

printf("\n*请输入B选项:

");scanf("%s",&que[i].option_b);

printf("\n*请输入C选项:

");scanf("%s",&que[i].option_c);

printf("\n*请输入D选项:

");scanf("%s",&que[i].option_d);

printf("\n请输入正确选项:

");scanf("%s",&que[i].answer_t);

fprintf(fp,"%d%s%s%s%s%s%s\n",i,que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d,que[i].answer_t);

printf("\n*您想继续录入题目?

(1.是0.否)\n");

scanf("%d",&n);

i++;

}while(n==1);

system("cls");

main();

}

fclose(fp);

}

3、关于答题系统

实现从系统中抽取相应数量的试题,实际上就是对保存好的试题数据进行提取。

允许用户输入自己想要抽取的题目数量,并输入自己的答案,保存在磁盘文件中。

然后显示下一道试题在屏幕上。

程序如下:

voidanswer()

{FILE*fp;

voidmain();

voidanswer();

intn,i,b;

system("cls");

printf("*请输入要答题数:

");

scanf("%d",&n);

if(n<0||N

{

printf("*对不起,没有该数量的题目");

answer();

}

if((fp=fopen("d:

\\test.txt","r"))==NULL)

{

printf("*题库打开失败\n");

answer();

}

else

{

for(i=0;i

fscanf(fp,"%d%s%s%s%s%s%s\n",&i,que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d);

}

for(i=0;i

{

printf("\n第%d题:

",i+1);

printf("%s\nA.%s\nB.%s\nC.%s\nD.%s\n",que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d);

printf("*请输入答案:

");

scanf("%s",que[i].answer);

}

if(i==n)

printf("\n*退出答题系统(1.回主菜单0.退出系统)");

scanf("%d",&b);

if(b==1){system("cls");main();}

system("cls");

}

五、个人总结

  经过本次独立设计程序的实践活动,我深深的体会到了自己的局限性。

从刚刚拿到题目的一头雾水,到后来的顺利答辩,过程虽然是十分痛苦,可是我的收获却是十分丰厚的。

实际演练了在课堂上学习的内容,并加深了理解,使之成为自身的一部分。

在以后的学习实践过程中,无论是这几天学习到了c程序的知识,还是自己内心对困难的克服精神,都将产生十分深远的影响。

  尤其值得强调的就是对问题克服精神。

我在本次实际设计的过程中,遇上许多问题。

等克服过后才发现其实这些问题实在是不值一提。

可是如果因为这些看似无法逾越的“小”问题就放弃、或是丧失斗志的话,实在是太不应该了。

  无论遇上什么样的问题,都应该积极应对。

而不是去逃避。

六、参考文献

1谭浩强.C程序设计.北京:

清华大学出版社,2005

七、源程序

#include

#include

#include

#defineN5

structquestion

{intnum;

charquest[50];

charoption_a[20];

charoption_b[20];

charoption_c[20];

charoption_d[20];

charanswer_t[2];

charanswer[2];

};

structquestionque[N];

voidsave()

{voidmain();

FILE*fp;

inti=0,n=0;

if((fp=fopen("d:

\\test.txt","w"))==NULL)

{

printf("*很遗憾,题库文件打开失败\n");

}

else

{

do

{

printf("\n请输入问题题干:

");scanf("%s",&que[i].quest);

printf("\n*请输入A选项:

");scanf("%s",&que[i].option_a);

printf("\n*请输入B选项:

");scanf("%s",&que[i].option_b);

printf("\n*请输入C选项:

");scanf("%s",&que[i].option_c);

printf("\n*请输入D选项:

");scanf("%s",&que[i].option_d);

printf("\n请输入正确选项:

");scanf("%s",&que[i].answer_t);

fprintf(fp,"%d%s%s%s%s%s%s\n",i,que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d,que[i].answer_t);

printf("\n*您想继续录入题目?

(1.是0.否)\n");

scanf("%d",&n);

i++;

}while(n==1);

system("cls");

main();

}

fclose(fp);

}

voidload()//

{FILE*fp;

voidload();

voidmain();

inti,n,b;

system("cls");

printf("*请输入您想预览的题目数量:

");

scanf("%d",&n);

if(n<0||N

{

printf("*对不起,没有该数量的题目");

load();

}

if((fp=fopen("d:

\\test.txt","r"))==NULL)

{

printf("*题库文件打开失败\n");

load();

}

else

{

for(i=0;i

{

fscanf(fp,"%d%s%s%s%s%s%s\n",&i,que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d);

}

}

fclose(fp);

for(i=0;i

{

printf("\n<%d>.%s\n",i+1,que[i].quest);

printf("A.%s\n",que[i].option_a);

printf("B.%s\n",que[i].option_b);

printf("C.%s\n",que[i].option_c);

printf("D.%s\n",que[i].option_d);

}

printf("*是否回到主页面?

(1.是0.否)");

scanf("%d",&b);

if(b==1){system("cls");main();}

}

voidanswer(){FILE*fp;

voidmain();

voidanswer();

intn,i,b;

system("cls");

printf("*请输入要答题数:

");

scanf("%d",&n);

if(n<0||N

{

printf("*对不起,没有该数量的题目");

answer();

}

if((fp=fopen("d:

\\test.txt","r"))==NULL)

{

printf("*题库打开失败\n");

answer();

}

else

{

for(i=0;i

fscanf(fp,"%d%s%s%s%s%s%s\n",&i,que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d);

}

for(i=0;i

{

printf("\n第%d题:

",i+1);

printf("%s\nA.%s\nB.%s\nC.%s\nD.%s\n",que[i].quest,que[i].option_a,que[i].option_b,que[i].option_c,que[i].option_d);

printf("*请输入答案:

");

scanf("%s",que[i].answer);

}

if(i==n)

printf("\n*退出答题系统(1.回主菜单0.退出系统)");

scanf("%d",&b);

if(b==1){system("cls");main();}

system("cls");

}

voidmain()

{voidmain();

intn,b;

printf("****************欢迎来到单项选择题标准化考试系统****************\n\n");

printf("**输入1录入新题**\n");

printf("**输入2抽取题目**\n");

printf("**输入3回答问题**\n");

printf("**输入4退出系统**\n");

printf("\n*请输入:

");

scanf("%d",&n);

switch(n)

{

case1:

save();break;

case2:

load();break;

case3:

answer();break;

case4:

printf("\n*您确定要离开本系统?

(1.是0.否)");scanf("%d",&b);

if(b==1){system("cls");}

else{system("cls");main();}

break;

default:

printf("\n*对不起,请输入正确选项\n");

}

}

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

当前位置:首页 > 高中教育 > 高中教育

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

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