永发信息网

C语言课程设计 选择题标准化考试系统 各位高手帮小弟个忙吧

答案:1  悬赏:40  手机版
解决时间 2021-08-11 19:57

课程设计内容:用C语言编写程序完成以下任务:

考试题库保存在文件KSTK 中数据格式为:题号,问题,选项A,选项B,选项C,选项D,答案。请写程序模拟考试,程序具有如下的功能:

(1)试题追加:可随时增加试题到试题库中。

(2)试题抽取:每次从试题库中可以随机抽出N道题(N<=5由键盘输入)。

(3)判卷功能:N道题作完后,给出总分(满分100分)。

课程设计要求:

1.贯彻结构化程序设计思想。

2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。

3.用户界面中的菜单至少应包括“试题追加”、“开始考试”、“判卷”、“退出”4项。

4.代码应适当缩进,并给出必要的注释,以增强程序的可读性
最佳答案
 #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);
}

}
}

 
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
收集大量石材工艺品的图片,有的朋友希望能给
摩托罗拉e1000出现自动发信息的问题
求一篇师范应届毕业生的求职信。不超过250个
天龙八部这只BB大概多少钱
DNF第八章人物基址
李宇春会有更多粉丝吗
榻榻米生虫子
鑫诺六号如何接收,现在已经开始发射卫星信号
雨湖区湘潭老德园包点地址是什么,有没有知道
我手机的怎么不能收到梦网之类的信息?
CF会员多少钱一 个月
郑伊健演的混混电影有哪些?
急急急!!!!!!!!!
从芜湖到杭州的客运车票价是多少?
口袋妖怪魂银火爆兽炎帝二选一,用哪个?配招?
推荐资讯
她是谁啊?有没有详细资料?
获嘉县新乡中国移动通信小营分社地址在什么地
请个位高手指教哈lg kc550怎样唰机啊
大庆到密山走高速经过几个收费站需要用多少钱
中华广场诺基亚手机的价钱
空间农场和校友网页打不开 试过下面方法都不
为什么看似轻易的事,做起来或得到却那么难,
我想写一篇作文(在电脑上) 但不像让别人看
水平和水准有什么差别?
这个图怎么切才能保证17英寸纯平显示器上无水
莺鹉鱼的喂养
QQ炫舞多久如何升级?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?