1 / 19
文档名称:

C语言课程设计单项选择题标准化考试系统.pdf

格式:pdf   大小:463KB   页数:19页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言课程设计单项选择题标准化考试系统.pdf

上传人:小s 2022/12/2 文件大小:463 KB

下载得到文件列表

C语言课程设计单项选择题标准化考试系统.pdf

文档介绍

文档介绍:该【C语言课程设计单项选择题标准化考试系统 】是由【小s】上传分享,文档一共【19】页,该文档可以免费在线阅读,需要了解更多关于【C语言课程设计单项选择题标准化考试系统 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
仲恺农业工程学院
课程设计报告
单项选择题标准化考试系统
课程名称C语言程序设计
姓名
院(系)信息科学与技术学院
专业班级
学号
指导教师
:.
目录
1目的...................................................................................................3
..............................................................................3
..........................................................................4
3系统设计...........................................................................................5
................................................................................5
.............................................................................5
4系统调试...........................................................................................6
5总结...................................................................................................10
源程序清单...........................................................................................11
:.
1目的
设计一个单项选择题标准化考试系统,方便考试时试题的录入与批改。2系
统总框图和功能模块说明

单项选择题标准化考试系统
答插显删退
题入示除出
试题试系
题库题统


:.

答题模块:
进入函数answerq()
统计文件中的题目数j
N
输入答题数n,
n<j
Y
产生n个不同的随机数
输入答案m,并批改
结束
插入试题模块:
确定插入题目数,选择需要插入的题目类型,打开文件,插入题目,:.
删除试题模块:
确定删除题号,选择需要删除的题目类型,读出文件,删除题目,并创建一个新的文件覆
盖原文件,把剩下的试题读入文件.
3系统设计

题目,选项A,B,C,D,答案
structTest{
charquestion[200];
charoption1[100];
charoption2[100];
charoption3[100];
charoption4[100];
charkey;
}

intaddtest()//增加试题
voidanswerq()//答题
voidchangeface()//选择试题类型界面
intchangeopenfile()//选择打开文件
intcompare(chara,charb)//答案对照
voidreadfile(inti,Testp)//显示题目
voidshowtest(intn,intm)//展示题目或删除结构体元素
voidstartinterface()//开始界面
:.
4系统调试
(1)操作界面
(2)选择界面:
:.
(3)答题:
(4)插入试题:
:.
(5)显示题库试题
(6)删除题目::.
(7)退出系统
:.
总结
经过这两个星期的C语言课程设计的训练,我学到了很多,最主要的一点是怎样去自
学一种东西,怎样去找到你所需要的资料,并在短时间把它学会,运用到你所需要的方面。
这个过程是很艰难的,要花费很多的时间和精力,但是,在事情过后,自己就会发现自
己已经在这个过程中学到了自己想要的东西,这种获得是更深刻的。
在做这个C语言课程设计的时候,我原先也是知之甚少,什么是结构体数据,什么是
定义类型,怎样在一个main函数中调用别的定义函数,等等,可以说是一无所知。然而,
在这门课程设计中,这些方面却是特别重要的,可以说,掌握了这个,你就完全可以完成自
己的任务。这就要求我们要自己去学,自己去探索。当然,跑图书馆是必不可少的,还有,
身边有非常丰富的网络资源给我们好好利用,百度就是个很不错的地方。这样就从另一方
面锻炼了我们检索知识获取信息的能力,在这个过程中,可以学到的是一种提升自我的能
力。
当然,由于个人能力所限,这份课程设计有一些别的方面还是要参考人家的的资料,
在读懂别人材料的同时,自己取人所长,补己之短,经过多次的调试,总结,最后交出一份
自己比较满意的答卷。
通过这次的课程设计,让我进一步的了解到C语言在我们日常生活中的重要性,而
且,,我相信自己以后会用
更多的时间来把这门语言学好,掌握好这门必修的基础语言。
:.
源程序清单
#include<>
#include<>
#include<>
#include<>
#defineMAX50
typedefstructTest{
charquestion[200];
charoption1[100];
charoption2[100];
charoption3[100];
charoption4[100];
charkey;
}Test;
FILE*fp;
voidchangeface()//选择试题类型界面
{
printf("\n\n\n\n\n");
printf("\t\t--------------------------------------\n");
printf("\t\t|选择试题类型|\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t|++|\n");
printf("\t\t||\n");
printf("\t\t--------------------------------------\n");
}
intaddtest()//增加试题
{
inti,num;:.
Testtitle[MAX]={"\0"};
FILE*fp;
changeface();
do
{
scanf("%d",&i);
fflush(stdin);
switch(i)
{
case1:fp=fopen("","a+");break;
case2:fp=fopen("","a+");break;
default:printf("你输入的指令不正确,请重新输入\n");
}
}while(i!=1&&i!=2);
system("cls");
while(1)
{
printf("请输入要插入的题目数(<=50)\n");
scanf("%d",&num);
fflush(stdin);
if(num<=MAX&&num>0)break;
elseprintf("输入有误,请重新输入题目数\n");
}
for(i=0;i<num;i++)
{
printf("请输入第%d道题题目,选项和答案:\n",i+1);//输入结构体元素内容
printf("请输入题目\n");
gets(title[i].question);
printf("请输入选项A:");
gets(title[i].option1);:.
printf("\n请输入选项B:");
gets(title[i].option2);
printf("\n请输入选项C:");
gets(title[i].option3);
printf("\n请输入选项D:");
gets(title[i].option4);
fflush(stdin);
printf("\n请输入答案:\n");
scanf("%1c",&title[i].key);
fflush(stdin);
system("cls");
}
for(i=0;i<num;i++)
{
printf("%d.%s\n%s\t%s\t",i+1,title[i].question,title[i].option1,title[i].option2);
printf("%s\t%s\n答案:%c\n",title[i].option3,title[i].option4,title[i].key);
}
if(fp==NULL)return0;
else
{
for(i=0;i<num;i++)
fprintf(fp,"%s\t%c\n%s\t%s\t%s\t%s\n",title[i].question,title[i].key,title[i].option1,title[i].optio
n2,title[i].option3,title[i].option4);
fclose(fp);
}return1;
}
voidstartinterface()//开始界面
{
printf("\n\n\n\n\n");
printf("\t\t--------------------------------------\n");
printf("\t\t|单项选择题标准化考试系统|\n");:.
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t||\n");
printf("\t\t--------------------------------------\n");
}
intchangeopenfile()//选择打开文件
{
inti;
do{
scanf("%d",&i);
fflush(stdin);
switch(i)
{
case1:fp=fopen("","r+");break;
case2:fp=fopen("","r+");printf("rrrrrrrrr\n");break;
default:printf("你输入的指令不正确,请重新输入\n");
}
}while(i!=1&&i!=2);
system("cls");
returni;
}
intcompare(chara,charb)//答案对照
{
if(a==b||(a-32)==b):.
{printf("答对了\n");return1;}
else{printf("答错了\n正确答案是%c\n",b);return0;}
}
voidreadfile(inti,Testp)//显示题目
{
printf("%d.%s\n",i+1,);
printf("A.%s\t",);
printf("B.%s\n",);
printf("C.%s\t",);
printf("D.%s\n",);
}
voidanswerq()//答题
{
Testtitle[MAX];
intn,i,j,k,num[MAX],score,sum=0;charh;
if(fp==NULL)
{
printf("\,按任何键退出程序!\n");
getch();
exit(-1);
}
for(j=0;!feof(fp);j++)//统计文件中的结构体项数
{
fscanf(fp,"%s\t%c\n%s\t%s\t%s\t%s\n",&title[j].question,&title[j].key,&title[j].o
ption1,&title[j].option2,&title[j].option3,&title[j].option4);
}
fclose(fp);
while(1)
{
printf("请输入需要答题的题目数\n");:.
scanf("%d",&n);//n必须小于j
fflush(stdin);
if(n>j)
printf("输入的题目数大于题库的题目数,请重新输入\n");
elsebreak;
}
for(i=0;i<n;i++)//产生n个不同的随机数
{
srand(time(NULL));
num[i]=rand()%j;
while(1)
{
for(k=0;k<i;k++)//排除相同随机数
if(num[k]==num[i])break;
if(k==i)break;
num[i]=rand()%j;
}
readfile(i,title[num[i]]);
printf("输入答案:");
scanf("%c",&h);
fflush(stdin);
score=compare(h,title[num[i]].key);
sum+=score;
}
printf("答对%d题\n",sum);
printf("按任意键返回主界面\n");
getch();
}
voidshowtest(intn,intm)//展示题目或删除结构体元素
{
inti,j,k;:.
Testtitle[MAX];
if(fp==NULL)
{
printf("\,按任何键退出程序!\n");
getch();
exit(-1);
}
for(j=0;!feof(fp);j++)//统计文件中的结构体项数
{
fscanf(fp,"%s\t%c\n%s\t%s\t%s\t%s\n",&title[j].question,&title[j].key,&title[j].o
ption1,&title[j].option2,&title[j].option3,&title[j].option4);
}
fclose(fp);
for(i=0;i<j;i++)
readfile(i,title[i]);
if(n==1)
{
printf("按任意键返回主界面\n");
getch();
system("cls");
}
else
{
printf("输入需要删除的题号:\n");
scanf("%d",&k);
switch(m)
{
case1:fp=fopen("","w+");break;
case2:fp=fopen("","w+");break;
}
for(i=0;i<j;i++):.
{
if(k-1==i)continue;
fprintf(fp,"%s\t%c\n%s\t%s\t%s\t%s\n",title[i].question,title[i].key,title[i].option1,title[i].optio
n2,title[i].option3,title[i].option4);
}
fclose(fp);
printf("删除成功\n\n按任意键返回主界面\n");
getch();
system("cls");
}
}
voidmain()
{
charch,c;intm;
while(1)
{
startinterface();
ch=getchar();
system("cls");
fflush(stdin);
if(ch=='5')//退出系统
{
printf("是请输入Y\t否请按任意键\n");
c=getch();system("cls");
if(c=='y'||c=='Y')break;
elsecontinue;
}
switch(ch):.
{
case'1':changeface();
m=changeopenfile();answerq();system("cls");break;
case'2':if(addtest())
printf("保存成功!\n");
else
printf("保存失败!\n");
getch();break;
case'3':changeface();
m=changeopenfile();
showtest(1,m);
break;
case'4':changeface();
m=changeopenfile();showtest(2,m);break;
default:
printf("你输入的指令无效,请按任意键继续执行\n");getch();break;
}
fflush(stdin);
system("cls");
}
}