1、 课程设计任务书 学 院、系: 专 业: 学 生 姓 名: 学 号: 设 计 题 目: 单项选择题标准化考试系统设计 起 迄 日 期: 指 导 教 师: 1.设计目标 设计单项选择题标准化考试系统。 2 任务概述 (1)用文件保留试题库(每个试题包含题干、4个备选答案、标准答案). (2)试题录入:可随时在试题库中增加试题. (3)试题抽取:每次从试题库中能够随机抽出N道题(N由键盘输入). (4)答题:用户能够输入自己答案. (5)自动判卷:系统可依据用户答案和标准答
2、案对比实现判卷并给出成绩. 3 模块划分 单项选择体标准化考试系统 添加试题到试题库 显示试题库 答题 判卷 退 出 系 统 4关键函数说明及N-S图 (1) 菜单Menu():用来给用户提供选项; 输出菜单界面 输入选项 N 输入1 Y 输入2 N 添加Add()函数 输入3 添加Put()函数 Y N Y 输入4 N Y 添加Ask()函数 exit(0)
3、 break break break break (2) Read()函数:用于打开文件; FILE *fp ,int i=0 fp=fopen("单项选择题标准化考试系统设计.txt","r+") Y if(fp==NULL) N printf("文件打开失败"); return 0; for(i=0;!feof(fp);i++) fprintf(fp,"%s
4、 %s %s %s %s %c\n",que[i].topic,que[i].a1,que[i] .a2,que[i].a3,que[i].a4,que[i].real); fclose(fp) return i (3) Save()函数:用于添加试题后保留试题; FILE *fp int i=0 if((fp=fopen(“单项选择题标准化考试系统设计.txt”))==Null) Y N pri
5、ntf(“文件打开失败!”)
i=0;i 6、
getch()
(5)Add()函数:用于添加试题
FILE *fp int i,a,n
(5)A
di
sruct question que
.
n=Read(que)
printf(“请输入增加试题数目”)
scanf(“%d“,&a);
i=0;i 7、pic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real”)
fclose(fp)
(5) Ask()函数:用于答题并判卷。
sruct question que[N]
int m,score=0;char r;
fp=fopen("单项选择题标准化考试系统设计.txt","r+");
printf(“请输入要答得题目数:”)
Scanf(”%d”,&m);
for(i=0;i 8、p(number,stu[i].num)==0);break;
printf("%s\n%s\n%s\n%s\n%s\n",que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4);
printf("\n请输入您答案:");
scanf("%c",&r);
getchar();
if(que[i].real==r)
N
Y
printf("\n答案错误!\n");
sc 9、ore=score;
printf("\n答案正确!\n");
score++;
图4-6
修改函数(cor)
printf("\n你总成绩为:%d\n",score);
getchar();
getchar();
5. 程序运行数据及其结果
6 课程设计心得
经过这次实训,感觉到自己还是差很多,自己学到还是远远不够,练习太少了,好多知识点全部记得不牢,还需要 10、大量练习。又因为一个学期没看了,好多东西全部忘了,所以好多知识点全部是在看得时候重新捡起来。这次实训给我教训就是平时要多多练习部分题型,时不时复习以前知识点,让自己愈加熟练掌握更多编程技巧,更多思绪。
还有一点就是没有思绪时候千万不要放弃,要学会思索,学会独立有耐心完成部分事情,等到做完成功以后,便会收获很多信心和欣慰。总而言之就是要有耐心,坚持多做练习,不会多请教她人,一切困难全部会迎刃而解。
附录:
#include 11、lude 12、 system("cls");
puts("\t\t-----欢迎进入单项选择题标准化考试系统设计-----");
puts("\t\t 1----添加试题到试题库中");
puts("\t\t 2----显示试题库");
puts("\t\t 3----答题并判卷");
puts("\t\t 4----退出");
puts("\t\t 请选择……");
13、
int choice1,choice2;
while(12)
{
scanf("%d",&choice1);
switch(choice1)
{ //调用子函数。
case 1:system("cls");Add();Menu1();break;
case 2:system("cls");Put();Menu1();break;
case 3: 14、system("cls");Ask();Menu1();break;
case 4:puts("欢迎下次使用 ");exit(0);
}
}
}
int Read(struct question que[N])//打开文件
{
FILE *fp;
int i=0;
fp=fopen("单项选择题标准化考试系统设计.txt","r+"); //以读形式打开文件information.txt
if(fp==NULL)
{
printf("文件打开失败");
r 15、eturn 0;
}
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%s %s %s %s %s %c\n",que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real);
}
fclose(fp);
return i;
}
void save(struct question que[N],int n) // 考试系统改变后更新并保留文件
{
FILE *fp;
int i=0;
if((fp=fop 16、en("单项选择题标准化考试系统设计.txt","w+"))==NULL)
{
printf("文件打开失败!\n");
return ;
}
else
{
for(i=0;i 17、ue[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real);
}
fclose(fp);
}
void Put()//显示试题信息
{
struct question que[N];
int i,n;
n=Read(que);
printf("*********************全部试题信息以下**********************\n\n");
18、 for(i=0;i 19、NULL)
{
printf("文件打开失败");
return;
}
printf("请输入增加试题数目\n");
scanf("%d",&a);
for(i=1;i<=a;i++)
{
printf("\n请输入第%d个试题题目,第一个选项,第二个选项,第三个选项,第四个选项,正确答案,并按回车键确定:\n",i);
scanf("%s\n%s\n%s\n%s\n%s\n%c",&que[i].topic,&que[i].a1,&que[i].a 20、2,&que[i].a3,&que[i].a4,&que[i].real);
fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%c\n",que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real);
}
printf("添加信息成功!");
fclose(fp);
getchar();
getchar();
}
void Ask()//答题并判卷
{ FILE *fp;
struct 21、 question que[N];
int m,score=0;
char r;
fp=fopen("单项选择题标准化考试系统设计.txt","r+");
printf("请输入要答得题目数:");
scanf("%d",&m);
for(int i=1;i<=m;i++){
fread(&que[i],sizeof(struct question)-1,1,fp);
printf("%s\n%s\n%s\n%s\n%s\n",que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4);
printf("\n请输入您答案:");
scanf("%c",&r);
getchar();
if(que[i].real==r)
{ printf("\n答案正确!\n");
score++;
}
else {
printf("\n答案错误!\n");
score=score;
}
printf("\n你总成绩为:%d\n",score);
getchar();
getchar();
}
}
int main()
{ Menu1();
}






