标准化考试系统 单选.docx

上传人:b****3 文档编号:5088973 上传时间:2023-05-08 格式:DOCX 页数:28 大小:66.64KB
下载 相关 举报
标准化考试系统 单选.docx_第1页
第1页 / 共28页
标准化考试系统 单选.docx_第2页
第2页 / 共28页
标准化考试系统 单选.docx_第3页
第3页 / 共28页
标准化考试系统 单选.docx_第4页
第4页 / 共28页
标准化考试系统 单选.docx_第5页
第5页 / 共28页
标准化考试系统 单选.docx_第6页
第6页 / 共28页
标准化考试系统 单选.docx_第7页
第7页 / 共28页
标准化考试系统 单选.docx_第8页
第8页 / 共28页
标准化考试系统 单选.docx_第9页
第9页 / 共28页
标准化考试系统 单选.docx_第10页
第10页 / 共28页
标准化考试系统 单选.docx_第11页
第11页 / 共28页
标准化考试系统 单选.docx_第12页
第12页 / 共28页
标准化考试系统 单选.docx_第13页
第13页 / 共28页
标准化考试系统 单选.docx_第14页
第14页 / 共28页
标准化考试系统 单选.docx_第15页
第15页 / 共28页
标准化考试系统 单选.docx_第16页
第16页 / 共28页
标准化考试系统 单选.docx_第17页
第17页 / 共28页
标准化考试系统 单选.docx_第18页
第18页 / 共28页
标准化考试系统 单选.docx_第19页
第19页 / 共28页
标准化考试系统 单选.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

标准化考试系统 单选.docx

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

标准化考试系统 单选.docx

标准化考试系统单选

课程报告

 

课程名称:

程序设计实践

专业班级:

计算机科学与技术

学生姓名:

学号:

任课教师:

学期:

2013-2014学年第二学期

 

课程报告任务书

题目

标准化考试系统

主要

内容

开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题型的考试系统,要求实现以下基本功能:

(1)提供给教师添加试题的功能(试题信息用文件保存)--输入

(2)试题的浏览功能(可以按照不同的知识点或者难度系数进行查看)

(3)能够抽取试题组合成一套试卷(组卷的策略:

可以是随机的,亦可以实现按照一定的组卷策略实现出题:

如每个知识点抽取若干题目,最终组合一套试卷)

(4)教师可以实现题库的管理,比如删除、修改等

(5)查询功能(至少一种查询方式)、排序功能(至少一种排序方式,比如按照难度系数排序)

扩展功能:

可以按照自己的程度进行扩展。

比如

(1)简单的权限处理(教师登录、学生登录)

(2)可以加上学生信息和考试成绩信息的管理,并扩充为广义的考试系统。

即学生输入账号密码登陆,进行考试,交卷后显示成绩;(3)成绩报表打印功能(4)模糊查询(5)综合查询(6)统计、分析等功能总之,可以根据自己需求进行分析功能。

特别说明:

尽可能地运用自己已经学习过的数据结构的知识去展现。

任务

要求

一、提交材料应包括:

(1)系统源代码

(2)课程报告

二、整个设计过程具体要求

(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;

(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)

(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;

(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。

成绩

评定

报告撰写情况(30分)

系统完成情况(30分)

答辩情况(40分)

总分

内容

20分

规范程度

5分

程序测试

5分

基本功能20分

扩展功能10分

自述情况10分

答辩情况

30分

成绩评定教师:

1需求分析

1、用文件保存试题库。

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

2、试题插入:

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

3、试题抽取:

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

4、试题显示:

将所有试题显示到桌面。

5、试题删除:

将错误的或不需要的试题删掉。

2概要设计

可适当参考以下提示:

数据结构

⑵模块划分

⑶程序总体框架

(1)模块一:

菜单操作模块

该模块实现程序的菜单操作。

实现算法如下:

在屏幕上输出菜单选项。

接受用户输入。

判断用户输入,跳转到对应函数入口。

(2)模块二:

将题目装入内存模块

函数开辟内存空间将试题文件中题目装入内存中。

实现算法如下:

通过数组计算题目数。

根据提供参数判断是否将当前题目装入内存。

开辟内存空间,将题目信息装入内存。

关闭文件返回题目总数。

(3)模块三:

抽取题目模块

函数会让用户输入要答的题目数。

实现算法如下:

接受用户输入题目数,判断是否合法(大于0、小于总题数)。

置随机数并判断随机数是否合法。

调用将题目装入内存模块题目装入内存。

(4)模块四:

添加试题模块

打开储存试题的文件进行试题信息输入。

实现算法如下:

打开文件。

开辟内存空间,接受用户输入题目信息。

判断用户输入是否合法。

写到文件并保存。

模块五:

删除试题

打开存储文件进行信息输入

算法如下:

①打开文件。

②将试题调出。

③将试题删除

3详细设计

保存试题

inti;

FILE*fp;

if((fp=fopen("shiti.txt","wb"))==NULL)returnERROR;

for(i=0;i

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

fclose(fp);

returnTRUE;

 

FILE*fp;

inti=0;

if((fp=fopen("shiti.txt","rb"))==NULL)returnERROR;

while(!

feof(fp))

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

i++;

}

N=i-1;

returnTRUE;

}

添加试题

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++;

returnTRUE;

}

修改试题

StatusChangeNode(inty)

{

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

printf("%s\n",Testquestions[y-1].subject);

printf("A%s",Testquestions[y-1].option1);

printf("B%s\n",Testquestions[y-1].option2);

printf("C%s",Testquestions[y-1].option3);

printf("D%s",Testquestions[y-1].option4);

printf("\n");

printf("请输入修改后的题目:

\n");getchar();

gets(Testquestions2[y].subject);

printf("请输入修改后的选项A:

");

gets(Testquestions2[y].option1);

printf("请输入修改后的选项B:

");

gets(Testquestions2[y].option2);

printf("请输入修改后的选项C:

");

gets(Testquestions2[y].option3);

printf("请输入修改后的选项D:

");

gets(Testquestions2[y].option4);

printf("请输入修改后的答案:

");

scanf("%c",&Testquestions2[y].result);getchar();

strcpy(Testquestions[y-1].subject,Testquestions2[y].subject);

strcpy(Testquestions[y-1].option1,Testquestions2[y].option1);

strcpy(Testquestions[y-1].option2,Testquestions2[y].option2);

strcpy(Testquestions[y-1].option3,Testquestions2[y].option3);

strcpy(Testquestions[y-1].option4,Testquestions2[y].option4);

Testquestions[y-1].result=Testquestions2[y].result;

returnTRUE;

}

 

删除试题

StatusDeleteNode(intx,intN)

{

system("cls");

inti;

for(i=x;i<=N;i++){

strcpy(Testquestions[i].subject,Testquestions[i+1].subject);

strcpy(Testquestions[i].option1,Testquestions[i+1].option1);

strcpy(Testquestions[i].option2,Testquestions[i+1].option2);

strcpy(Testquestions[i].option3,Testquestions[i+1].option3);

strcpy(Testquestions[i].option4,Testquestions[i+1].option4);

}

returnTRUE;

system("cls");

}

输出界面

voidprintNode(TestNodep,intn)

{

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);

}

voidprintNode2(TestNodep,intn)

{

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);

printf("%s",&p.result);

}

答题界面

voidanswer(intsum)

{

inti,score=0,Num;

charr;

srand((int)time(0));

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

{Num=rand()%19+1;

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

printf("\n请输入答案:

");

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

if(Match(Testquestions[Num],r))

{

printf("\n答案正确!

\n");

score++;

}

elseprintf("\n答案错误!

\n");

}

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

%d\n",score);

}

密码进入

intmm(intb)

{

inta=1748,i,c;

do{

for(i=1;i<=3;i++){

printf("Pleaseenterpassword:

");

scanf("%d",&b);

if(b==a){

c=1;

break;}

printf("Error\n");}

}while(i==4);

returnc;

}

教师界面

voidteacher(){

intchose2,i;//,N

charflag='N';

system("cls");

printf("\n\t\t*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~\n");

printf("\t\t\t1插入试题内容\n");

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

printf("\t\t\t3修改试题\n");

printf("\t\t\t4删除试题\n");

printf("\t\t\t0返回上一界面\n");

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

");

printf("\n\t\t*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~\n");

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

while(!

0){

system("cls");

switch(chose2)

{case1:

system("cls");

InsertNode(N);

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

\n");

elseprintf("保存失败!

\n");

break;

case2:

system("cls");

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

printNode2(Testquestions[i-1],i);

printf("\n");}

break;

case3:

system("cls");

inty;

printf("输入想要修改的题号:

\t\n");

scanf("%d",&y);

ChangeNode(y);

printf("修改成功\n");

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

\n");

elseprintf("保存失败!

\n");

break;

case4:

system("cls");

intx;

printf("输入想要删除的题号:

\t\n");

scanf("%d",&x);

DeleteNode(x,N);

printf("删除成功!

\t\n");

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

\n");

elseprintf("保存失败!

\n");

N=N-1;

break;

case0:

exit(0);

}

printf("\n\t\t*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~\n");

printf("\t\t\t1插入试题内容\n");

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

printf("\t\t\t3修改试题\n");

printf("\t\t\t4删除试题\n");

printf("\t\t\t0返回上一界面\n");

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

");

printf("\n\t\t*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~\n");

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

system("cls");

if(chose2==0)break;

}

}

主函数

voidmain()

{charflag='N';

intb,m;

intmm(intb);

ReadNode(N);

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

{

printf("\n\t\t*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\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\t请选择:

");

printf("\n\t\t*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*~*\n");

scanf("%d",&chose1);

switch(chose1)

{

case1:

system("cls");

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

");

scanf("%d",&sum);

answer(sum);

break;

case2:

system("cls");

m=mm(b);

if(m==1){

printf("Right\n");

teacher();}

else

{

printf("Wrong\n");

exit(0);

}

break;

case3:

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

");

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

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

system("cls");

break;

}

}

}

4调试分析

1、试题的插入在运行程序时无法实现,后来通过数组实现。

2、题号与程序中的序号不一致,导致答案出错,调试后,正确。

5测试结果

主界面

教师显示界面

学生界面

答题界面

添加界面

删除界面

 

6课程心得总结

1、进过这两天的编程实践,我发觉到了我在这方面的严重不足,有待提高之处还有很多。

2、虽然感到了编程的吃力,但经过这两天的努力,感觉还是有了一定的提高,更重要的是找到了编程序的乐趣。

3、编程需要心思缜密,艰苦耐劳。

附录:

源程序

#include

#include

#include

#include

#include

#defineTRUE1

#defineERROR0

#defineMAX30

typedefintStatus;

typedefstruct{

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

charresult;

}TestNode;

TestNodeTestquestions[MAX];

TestNodeTestquestions2[MAX];

intN=0,sum,score=0,chose1;

StatusSaveNode(intN)

{inti;

FILE*fp;

if((fp=fopen("shiti.txt","wb"))==NULL)returnERROR;

for(i=0;i

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

fclose(fp);

returnTRUE;

}

StatusReadNode(int&N)

{FILE*fp;

inti=0;

if((fp=fopen("shiti.txt","rb"))==NULL)returnERROR;

while(!

feof(fp))

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

i++;

}

N=i-1;

returnTRUE;

}

 

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++;

returnTRUE;

}

StatusChangeNode(inty)

{

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

printf("%s\n",Testquestions[y-1].subject);

printf("A%s",Testquestions[y-1].option1);

printf("B%s\n",Testquestions[y-1].option2);

printf("C%s",Testquestions[y-1].option3);

printf("D%s",Testquestions[y-1].option4);

printf("\n");

printf("请输入修改后的题目:

\n");getchar();

gets(Testquestions2[y].subject);

printf("请输入修改后的选项A:

");

gets(Testquestions2[y].option1);

printf("请输入修改后的选项B:

");

gets(Testquestions2[y].option2);

printf("请输入修改后的选项C:

");

gets(Testquestions2[y].option3);

printf("请输入修改后的选项D:

");

gets(Testquestions2[y].option4);

printf("请输入修改后的答案:

");

scanf("%c",&Testquestions2[y].result);getchar();

strcpy(Testquestions[y-1].subject,Testquestions2[y].subject);

strcpy(Testquestions[y-1].option1,Testquestions2[y].option1);

strcpy(Testquestions[y-1].option2,Testquestions2[y].option2);

strcpy(Testquestions[y-1].option3,Testquestions2[y].option3);

strcpy(Testquestions[y-1]

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2