63 小型考试系统Word格式文档下载.docx
- 文档编号:5760505
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:22
- 大小:19KB
63 小型考试系统Word格式文档下载.docx
《63 小型考试系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《63 小型考试系统Word格式文档下载.docx(22页珍藏版)》请在冰点文库上搜索。
函数*/
没有相应试题!
voidprinte(Node*p)/*功能:
输出指针所指节点信息函数*/
题号:
%d\n试题信息:
%s\n标准答案:
%s\n"
p->
data.num,p->
data.question,p->
data.answer);
Node*Locatebynum(Linkl,intfindmess)
/*功能:
根据输入的题号来查询并定位链表中是否存在要查询的试题*/
{Node*r;
r=l->
next;
while(r!
=NULL)
{if(r->
data.num==findmess)returnr;
r=r->
return0;
Node*Locatebyanswer(Linkl,char*findmess)
根据输入的标准答案来查询并定位链表中是否存在要查询的试题*/
{if(strcmp(r->
data.answer,findmess)==0)returnr;
return0;
voidAdd(Linkl)/*功能:
录入试题*/
{intnum=0;
/*记录试题的题号*/
Node*p,*r,*s;
charsel[10];
r=l;
s=l->
while(r->
next!
{r=r->
num=r->
data.num;
}
while
(1)
{p=(Node*)malloc(sizeof(Node));
data.num=++num;
printf("
请你输入试题内容:
"
scanf("
%s"
p->
data.question);
请你输入标准答案:
next=NULL;
r->
next=p;
r=p;
shouldsave=1;
\n试题录入完成!
\n是否继续录入!
(输入0表示退出,非0表示继续)\n"
sel);
if(strcmp(sel,"
0"
)==0)/*输入为'
0'
则退出函数,返回主菜单,否则继续录入试题*/
break;
elsecontinue;
voidQur(Linkl)/*功能:
查询试题信息*/
{intsel;
charfindanswer[20];
intfindnum;
Node*p;
if(!
l->
next)/*如果链表为空,则给出提示信息并返回*/
没有资料可以查询!
system("
pause"
/*提示"
请按任意键继续..."
*/
return;
\n请选择查询方式:
1按题号查找\n"
2按标准答案查找\n"
%d"
&
sel);
if(sel==1)
请你输入要查找的题号:
findnum);
p=Locatebynum(l,findnum);
/*按题号查找定位函数,按题号完成查找并定位*/
if(p)/*如果找到,则显示该试题信息*/
\t\t\t\t查找结果\n"
printstart();
printe(p);
else/*如果没有找到,则显示提示信息*/
Nofind();
elseif(sel==2)
请你输入要查找的标准答案:
findanswer);
p=Locatebyanswer(l,findanswer);
/*按标准答案查找定位函数,按标准答案完成查找并定位*/
/*调用函数Nofind()*/
else/*如果输入的数据不是1或2,则提示输入错误信息*/
Wrong();
/*调用函数Wrong()*/
/*提示"
voidDel(Linkl)/*功能:
删除试题*/
Node*p,*r;
没有资料可以删除!
\n请选择删除方式:
1按题号删除\n"
2按标准答案删除\n"
if(sel==1)
请你输入要删除的题号:
if(p)/*如果找到,则删除该试题资料*/
{r=l;
=p)
next=p->
free(p);
/*释放p节点*/
该试题信息已经成功删除!
请你输入要删除的标准答案:
/*调用按标准答案查找定位函数,完成按标准答案查找并定位*/
if(p)
该试题已经成功删除!
voidModify(Linkl)/*功能:
修改试题信息*/
{Node*p;
没有资料可以修改!
请你输入要修改的题号:
/*按题号查找并定位*/
if(p)/*如果存在该题号的试题信息,则进行修改处理*/
请你输入新试题内容(原来是%s):
getchar();
请你输入新的标准答案(原来是%s):
试题修改成功!
else/*如果不存在该题号的试题信息,则输出提示信息*/
voidDisp(Linkl)/*功能:
显示所有试题信息*/
{intcount=0;
p=l->
p)/*如果链表为空,则给出提示信息并返回*/
没有资料可以显示!
\t\t\t\t显示结果\n"
while(p)
{printe(p);
p=p->
voidSave(Linkl)/*功能:
保存链表到文件中*/
{FILE*fp;
/*定义文件类型的指针*/
/*定义记录指针变量*/
intflag=1,count=0;
fp=fopen("
D:
\\EXAM.txt"
"
w"
/*以写方式打开一个文本文件*/
if(fp==NULL)/*如果不能打开,则给出提示并结束程序*/
重新打开文件时发生错误!
exit
(1);
/*将链表中的所有记录写入到文件中*/
while(p)
{if(fwrite(p,sizeof(Node),1,fp)==1)
{p=p->
count++;
else
{flag=0;
if(flag)
文件保存成功.(有%d条记录已经保存.)\n"
count);
shouldsave=0;
fclose(fp);
voidzuti()/*功能:
生成试卷*/
{intmaxnum;
/*记录最大题号*/
intcount=0;
/*记录试题数目*/
intnum_st;
/*记录试卷的题数*/
intk,total=0,th[40],i=0,j;
Linkl;
Node*p,*r=NULL;
FILE*fp,*fp1;
cls"
r"
/*以只读方式打开一个文本文件*/
if(fp==NULL)
文件错误,不能打开!
/*如果不能打开,则结束程序*/
if(ftell==0)
{fclose(fp);
\n\n题库文件为空!
建议您返回上级菜单录入试题信息!
\n\n请按任意键返回上级菜单\n"
getch();
teachermenu();
else
{fp1=fopen("
\\stutest.txt"
/*以写方式打开一个文本文件用于存储学生试卷信息*/
if(fp1==NULL)
/*如果不能打开,则结束程序*/
l=(Node*)malloc(sizeof(Node));
/*申请空间*/
l)/*如果没有申请到,则内存溢出*/
\n内存溢出!
exit(0);
/*结束程序*/
/*如果文件打开,则从文件中导入数据到链表*/
文件已经打开,正在导入记录......\n"
while(!
feof(fp))/*循环读数据到链表中直到文件尾结束中*/
{p=(Node*)malloc(sizeof(Node));
/*为下一个结点申请空间*/
p)/*如果没有申请到,则内存溢出*/
/*结束程序*/
if(fread(p,sizeof(Node),1,fp))
{maxnum=p->
/*记录最大试题号*/
/*试题数目加1*/
/*关闭文件*/
\n\n=====>
本题库共有%d道试题,最大题号为%d.\n"
count,maxnum);
\n\t请输入试卷的题数【提示:
试卷的题数应小于%d道题】"
num_st);
while(num_st>
count)
\n\n输入有误!
请重新输入!
正在生成试卷......\n"
th[i]=0;
while(total<
num_st)
{k=rand()%maxnum+1;
/*随机产生一个小于等于maxnum的整数*/
/*按题号查询*/
p=Locatebynum(l,k);
if(p)/*如果找到,则将该试题写入试卷文件*/
{for(j=0;
j<
i;
j++)/*检查随机产生的题号是否重复,不重复则写入试卷文件*/
if(k==th[j])break;
if(j>
=i)
{th[i]=k;
i++;
total++;
fwrite(&
(p->
data),sizeof(structexam),1,fp1);
/*试题写入试卷文件*/
fclose(fp1);
for(i=0;
i<
total;
i++)
\n%d\t"
th[i]);
试卷生成完毕,请按任意键返回主菜单\n"
menu();
voiddati()/*功能:
学生答题系统*/
inttotal=0;
structexamp[50];
inti=0;
charanswer_stu[20];
/*用于记录学生答案*/
intright=0;
/*用于统计答对的试题的个数*/
/*以只读方式打开学生试卷文件*/
while(fread(&
p[i],sizeof(structexam),1,fp)!
=0)/*搜索链表,统计题库中的试题数目*/
%d:
%s\n"
i+1,p[i].question);
if(total==0)
\n\n\t\t没有试卷!
请按任意键退出!
\n\n"
本题库中一共有%d道试题\n"
total);
\n请按任意键开始考试!
\n\n\n"
第%d题:
请回答:
answer_stu);
if(strcmp(answer_stu,p[i].answer)==0)
right++;
\n\n\t\t本次考试结束!
if(right==total)
\n\n\t\t恭喜您本次考试成绩为100分!
{i=100*(float)right/total;
\n\n\t\t您本次考试成绩为%d分,继续努力哦!
i);
按任意键退出!
voidsub_teachermenu()/*功能:
教师操作菜单显示函数*/
{Linkl;
FILE*fp;
intsel;
charch[4];
/*统计现有试题数目的变量*/
/*清屏函数*/
{p->
if(count==0)
\n\n文件为空!
建议您本次操作选择菜单1:
录入试题信息开始!
记录导入完毕,共导入%d条记录.\n"
\n\n试题管理系统\n"
****************************************************\n"
*\t1录入试题信息\t\t\t\t2删除试题信息\t\t*\n"
*\t3查询试题信息\t\t\t\t4修改试题信息\t\t*\n"
*\t5保存试题信息\t\t\t\t6显示试题信息\t\t*\n"
*\t0退出系统\t\t\t\t\t\t*\n"
*****************************************************\n"
请你选择操作:
if(sel==0)
if(shouldsave==1)/*该系统资料是否应该保存*/
\n提示:
资料已经改动,是否将改动保存到文件中(y/n)?
ch);
if(strcmp(ch,"
Y"
)==0||strcmp(ch,"
y"
)==0)
{Save(l);
/*保存链表数据到文件*/
{shouldsave=0;
else
switch(sel)
{case1:
Add(l);
case2:
Del(l);
case
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 63 小型考试系统 小型 考试 系统
![提示](https://static.bingdoc.com/images/bang_tan.gif)