C语言设计:单项选择题标准化考试系统

设计题目9: 单项选择题标准化考试系统
(一) 功能要求:
(1) 用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)
(2) 试题录入:可随时增加试题到试题库中
(3) 试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)
(4) 答题:用户可实现输入自己的答案
(5) 自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

#include "insert_delete.h"
ncompare()
{
char s[100];
char key[100]="haha";
while(1)
{
printf("请输入密码进行验证:");
there: scanf("%s",s);
if(strcmp(s,key)==0)
{
printf("密码验证正确,进入答题系统........\n");
break;
}
else
{
printf("密码错误,请重新输入:");
goto there;
}

}

}
//菜单
menu_list()
{

int c;
printf(" *******************主菜单**********************\n");
printf(" 1 进入答题\n");
printf(" 2 录入新的试题\n");
printf(" 3 删除记录试题\n");
printf(" 4 插入试题到指定位置\n");
printf(" 5 保存试题到文本\n");
printf(" 6 判断试题,查看成绩\n");
printf(" 7 输出例题以及答案\n");
printf(" 8 载入试题库\n");
printf(" 9 退出答题系统\n");
printf(" ***********************************************\n");
printf(" 请选择你想要的操作(1-9):");
scanf("%d",&c);
if(c<1||c>9)
{
printf("操作数据错误!请重新输入选项:\n");
return 0;
}
else
return c;

}
//答题系统
test_test(struct test *p,int n)
{
int j;
int num;
int i;
int th=0;
int tem[100];
if(n==0)
printf("目前题库中还没有题目,请载入题库后在进行操作\n");
else
{
printf("首先请输入你希望测试的题目个数,系统会随机分配你输入个数的题目(目前总题目个数为%d)\n请输入要测试的题目个数:",n);
scanf("%d",&num);
for(i=0;i<num;i++)
{

here: th=rand()%n;
tem[i]=th;
for(j=0;j<i;j++)
if(tem[j]==tem[i])
{
goto here;
}
printf(" =============================================\n");
printf(" 题目:%s\n",p[th].tm);
for(j=0;j<4;j++)
{
printf(" 选项:%s\n",p[th].xx[j]);
}
printf(" 请输入你的答案(注意是大小写,大小写错误记零分):");
scanf("%s",p[th].as);
printf(" =============================================\n");

}
}
}
//试题录入
test_in(struct test *p,int n)
{
int i,j=0;
char sign='y';
while(sign=='Y'||sign=='y')
{
printf("===========请按提示输入数据===========\n");
printf("请输入题目:");
getchar();
aa: gets(p[n+j].tm);
for(i=0;i<n+j;i++)
if(p[n+j].tm[0]==p[i].tm[0])
{
printf("已有题号,请重新输入!\n题号:");
goto aa;
}
for(i=1;i<=4;i++)
{
printf("请输入第%d个选项:",i);
gets(p[n+j].xx[i-1]);
}
printf("请输入正确答案:");
scanf("%s",p[n+j].da);
printf("====>提示是否继续录入试题(Y or y继续,任意键退出):\n");
getchar();
scanf("%c",&sign);
j++;
}
printf(" ===============转到主菜单==================\n");
return n+j;

}
//文件保存
void save(struct test *ts,int n)
{
FILE *fp;
int i=0;
char filename[50];
printf("请输入导出文件夹,列如:G:\\f1\\score.txt\n");
scanf("%s",filename);
if((fp=fopen(filename,"w+"))==NULL)
{
printf("文件保存失败!");
exit(1);
}
while(i<n)
{
fwrite(&ts[i],sizeof(struct test),1,fp);
i++;
}
fclose(fp);
printf("------记录已保存到文件中-------\n");
}
//评分系统
test_compare(struct test *p,int n)
{
int i;
int temp=0;
int count=0;
if(n==0)
{
printf("目前题库中还没有题目,请载入题库后在进行操作\n");
return 0;
}
else
{

for(i=0;i<n;i++)
{

if(!strcmp(p[i].da,p[i].as))
{
count++;
}

}
printf("你答对的总题数是%d\n",count);
return n;
}
}
//例题以及答案
test_out(struct test *p,int n)
{
int i=0,j=0;
if(n==0)
{
printf("很抱歉,试题库中暂时没有任何试题!\n");
printf(" ===============转到主菜单==================\n");
}
else
while(i<n)
{
printf(" =============================================\n");
printf(" 题目:%s\n",p[i].tm);
for(j=0;j<4;j++)
{
printf(" 选项:%s\n",p[i].xx[j]);
}
printf(" 正确答案:%s\n",p[i].da);
printf(" =============================================\n");
i++;
}

}
//试题库载入
test_under(struct test *p)
{
int i;
FILE *fp;
char filename[20];
printf("请输入你要导入的文件名及路径:");
scanf("%s",filename);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("文件打开失败!\n");
return 0;
}
i=0;
while(!feof(fp))
{
if(1!=fread(&p[i],sizeof(struct test),1,fp))
break;
i++;
}
fclose(fp);
printf("已经成功从文件%s导入数据!\n",filename);
return i;

}
//主函数
main()
{
int n=0;
struct test ts[100];
system("color 1f");
ncompare();
while(1)
{

switch(menu_list())
{
case 1: test_test(ts,n);break;
case 2: n=test_in(ts,n);break;
case 3: n=delete1(ts,n);break;
case 4: n=insert(ts,n);break;
case 5: save(ts,n);break;
case 6: test_compare(ts,n);break;
case 7: test_out(ts,n);break;
case 8: n=test_under(ts);break;
case 9: exit(0);
}

}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-03-27
最低0.27元/天开通百度文库会员,可在文库查看完整内容>
原发布者:Gordon347
仲恺农业工程学院课程设计报告单项选择题标准化考试系统课程名称C语言程序设计姓名院(系)信息科学与技术学院专业班级学号指导教师目录1目的32.1系统总框图32.2功能模块说明43系统设计53.1主要结构体53.2主要功能函数54系统调试65总结10源程序清单111目的设计一个单项选择题标准化考试系统,方便考试时试题的录入与批改。2系统总框图和功能模块说明2.1系统总框图2.2功能模块说明答题模块:插入试题模块:确定插入题目数,选择需要插入的题目类型,打开文件,插入题目,关闭文件.删除试题模块:确定删除题号,选择需要删除的题目类型,读出文件,删除题目,并创建一个新的文件覆盖原文件,把剩下的试题读入文件.3系统设计3.1主要结构体题目,选项A,B,C,D,答案structTest{charquestion[200];charoption1[100];charoption2[100];charoption3[100];charoption4[100];charkey;}3.2主要功能函数intaddtest()//增加试题voidanswerq()//答题voidchangeface()//选择试题类型界面intchangeopenfile()//选择打开文件intcompare(chara,charb)//答案对照voidreadfile(inti,Testp)//显示题目voidshowtest(intn,intm)//展示题目或删除结构体元素voidstartinterface()//开始界面4系统调试(1)操作界面(2)选择界面:
第2个回答  2010-07-10
专业代做C语言课程设计,看资料qq联系
相似回答