标准化考试系统
- 格式:doc
- 大小:426.00 KB
- 文档页数:32
课 程 报 告
课 程 名 称: 程序设计实践
专 业 班 级 : 物联网1502班
学 生 姓 名 : 杨凯
学 号 : 201516070207
任 课 教 师 : 张继新
学 期 : 2015-2016年第一学期
课程报告任务书
题
目 标准化考试系统
主要
内容 1.建立一个InsertNode函数来实现插入试题的功能。2.建立一个AddNode函数来实现添加试题的功能。3.建立一个Change函数来实现对试题进行修改的功能。4.新建一个DeleteNode函数来实现对试题的删除。5.建立个printNode函数实现对试题的输出功能。6.建立一个Match函数来判断答案是否正确。7.建立answer函数实现随机选题并进行答题和统计得分功能。8.在主函数main中,使用switch函数让用户进行选择。
任务
要求
一、对该考试系统进行需求分析,找出该系统需要哪些功能来实现,在每个功能中运用学过的算法来实现,每个功能用不同的函数来实现,确定函数之间调用的关系。
二、整个设计过程具体要求
(1)需求分析 对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程 进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程 养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定 报告撰写情况(30分) 系统完成情况(30分) 答辩情况(40分)
总分 内容
20分 规范程度
5分 程序测试
5分 基本功能20分 扩展功能10分 自述情况10分 答辩情况
30分
成绩评定教师:
1 需求分析
该系统包括以下功能:
1.进行随机答题并判卷
2.显示试题所有内容
3.插入试题
4.添加试题
5.自主选题并判卷
6.修改试题
7.删除试题
8.退出系统
2 概要设计
2.1整体框架图
图2-1-标准化考试系统
进行随机答题并判卷 显示试题所有内容 添
加
试
题 自主选题并判题 修
改
试
题 删
除
试
题 退
出
系
统
2.2 自定义函数
返回值 函数名 参数表 函数功能
Status SaveNode int &N 将试题存入文件中
Status ReadNode int &N 从文件中读取试题
Status InsertNode int &N 向试题库中插入试题
Status Change int &N 修改试题
Status DeleteNode int &N 删除试题
void printNode (TestNode p,int n) 输出试题
Status Match (TestNode p,char m) 检查答案
void answer (int sum,int N) 随机进行答题并判卷
void Otheranswer (int N,int s) 自主选题作答并判卷
Status AddNode int &N 向题库中添加试题
3 详细设计
3.1 添加试题
Status AddNode(int &N) //添加试题内容
{
printf("如果不添加了试题了,在题目输入“*”结束!\n");
while(1){
printf("请输入所要插入题题目、题干和选项:\n");
printf("请输入题目:");
gets(Testquestions[N].subject);
if(strcmp(Testquestions[N].subject,"*")==0)
break;
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表示结构体数组长度,通过加&号使其值能返回
}
return TRUE;
}
3.2 修改试题
Status Change(int &N){
int m,i;
printf("请输入您要修改第几题?\n");
scanf("%d",&m);
getchar(); //吸收空格字符
for(i=0;i
{
if(i==(m-1)){
printf("请输入新的题目:");
gets(Testquestions[m-1].subject);
printf("请输入新的选项A:");
gets(Testquestions[m-1].option1);
printf("请输入新的选项B:");
gets(Testquestions[m-1].option2);
printf("请输入新的选项C:");
gets(Testquestions[m-1].option3);
printf("请输入新的选项D:");
gets(Testquestions[m-1].option4);
printf("请输入新的答案:");
scanf("%c",&Testquestions[m-1].result);
getchar();
break; }
}
if(m>N)
printf("修改试题失败!\n");
else
printf("修改试题成功!\n");
return TRUE;
}
3.3 删除试题
Status DeleteNode(int &N) //删除数组中的第n道题
{
int n;
printf("输入你想是删除第几道试题:\n");
scanf("%d",&n);
if(n>N)
{
printf("删除不成功\n");
return ERROR;
}
while(n<=N)
{
Testquestions[n-1]=Testquestions[n];
n++;
}
N=N-1;
printf("删除成功\n");
return TRUE;
}
3.4 随机选题并判题 void answer(int sum,int N) //随机进行答题
{
int i,score=0,Num;
char r;
for(i=1;i<=sum;i++)
{
Num= rand()%N; //随机函数,以随机选定何题进行解答
printNode(Testquestions[Num],i);
printf("\n");
printf("\n请输入第(%d)答案:",i);
scanf("%c",&r);getchar();
if(Match(Testquestions[Num],r)) //调用函数Match判断所输入的答案与标准答案是否相同
{ printf("\n答案正确!\n");
score++;
}
else {
printf("\n答案错误!\n");
printf("正确答案为:%c\n",Testquestions[Num].result);
}
}
printf("\n你的总成绩为:%d\n",score);
}
3.5 自主选题并判题
void Otheranswer(int N,int s){
int i,score=0,k;
char m;
for(i=1;i<=s;i++){
printf("输入要选择第几题?\n");