资源描述
课程设计任务书
学 院、系:
专 业:
学 生 姓 名:
学 号:
设 计 题 目:
单项选择题标准化考试系统设计
起 迄 日 期:
指 导 教 师:
1.设计目标
设计单项选择题标准化考试系统。
2 任务概述
(1)用文件保留试题库(每个试题包含题干、4个备选答案、标准答案).
(2)试题录入:可随时在试题库中增加试题.
(3)试题抽取:每次从试题库中能够随机抽出N道题(N由键盘输入).
(4)答题:用户能够输入自己答案.
(5)自动判卷:系统可依据用户答案和标准答案对比实现判卷并给出成绩.
3 模块划分
单项选择体标准化考试系统
添加试题到试题库
显示试题库
答题
判卷
退
出
系
统
4关键函数说明及N-S图
(1) 菜单Menu():用来给用户提供选项;
输出菜单界面
输入选项
N
输入1
Y
输入2
N
添加Add()函数
输入3
添加Put()函数
Y
N
Y
输入4
N
Y
添加Ask()函数
exit(0)
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 %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
printf(“文件打开失败!”)
i=0;i<n;i++
fprintf(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”)
(4) Put()函数:用于显示试题;
int i,n
n=Read(que)
打印表头
i=0;i<n;i++
fprintf(fp,”%s %s %s %s %s\n,que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4”)
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<n; i++
scanf(”%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”)
fprintf(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)
(5) Ask()函数:用于答题并判卷。
sruct question que[N]
int m,score=0;char r;
fp=fopen("单项选择题标准化考试系统设计.txt","r+");
printf(“请输入要答得题目数:”)
Scanf(”%d”,&m);
for(i=0;i<n;i++)
if(strcmp(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");
score=score;
printf("\n答案正确!\n");
score++;
图4-6
修改函数(cor)
printf("\n你总成绩为:%d\n",score);
getchar();
getchar();
5. 程序运行数据及其结果
6 课程设计心得
经过这次实训,感觉到自己还是差很多,自己学到还是远远不够,练习太少了,好多知识点全部记得不牢,还需要大量练习。又因为一个学期没看了,好多东西全部忘了,所以好多知识点全部是在看得时候重新捡起来。这次实训给我教训就是平时要多多练习部分题型,时不时复习以前知识点,让自己愈加熟练掌握更多编程技巧,更多思绪。
还有一点就是没有思绪时候千万不要放弃,要学会思索,学会独立有耐心完成部分事情,等到做完成功以后,便会收获很多信心和欣慰。总而言之就是要有耐心,坚持多做练习,不会多请教她人,一切困难全部会迎刃而解。
附录:
#include<stdio.h>
#include<stdlib.h> //串操作及内存操作函数
#include<string.h> //调用系统函数
#include<malloc.h>//动态内存
#include<conio.h>
#define N 100
void Menu1();
int Read();
void save();
void Put();
void Add();
void Ask();
struct question
{ char topic[100];
char a1[100];
char a2[100];
char a3[100];
char a4[100];
char real;
};
void Menu1()//主菜单
{ system("cls");
puts("\t\t-----欢迎进入单项选择题标准化考试系统设计-----");
puts("\t\t 1----添加试题到试题库中");
puts("\t\t 2----显示试题库");
puts("\t\t 3----答题并判卷");
puts("\t\t 4----退出");
puts("\t\t 请选择……");
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: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("文件打开失败");
return 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=fopen("单项选择题标准化考试系统设计.txt","w+"))==NULL)
{
printf("文件打开失败!\n");
return ;
}
else
{
for(i=0;i<n;i++)
fprintf(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);
}
void Put()//显示试题信息
{
struct question que[N];
int i,n;
n=Read(que);
printf("*********************全部试题信息以下**********************\n\n");
for(i=0;i<n;i++)
printf("%s\n%s\n%s\n%s\n%s\n\n",que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4);
getch();
}
void Add()//添加试题
{
FILE *fp;
int a,i;
struct question que[N];
fp=fopen("单项选择题标准化考试系统设计.txt","a+"); //以添加形式打开文件
if(fp==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].a2,&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 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();
}
展开阅读全文