标准化考试系统

  • 格式: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");