c课程设计-考试系统_第1页
c课程设计-考试系统_第2页
c课程设计-考试系统_第3页
c课程设计-考试系统_第4页
c课程设计-考试系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C课程设计一、系统分析:1、设计题目:单项选择题标准化考试系统2、设计内容:该系统包括用文件保存试题库(每个试题包括题干、4个备选答案、标准答案)、试题录入(可随时增加试题到试题库中)、随机测试(每次从试题库中可以随机抽出N道题,其中N由键盘输入)、标准测试(需要用户回答试题库的全部题目)、自动判卷(系统可根据用户答案与标准答案的对比实现判卷并给出成绩)五个模块的内容。要求系统实现人机交流。3、系统的需求分析:(1)试题库用文件来保存,便于试题的浏览和读取;(2)试题录入模块:系统读取已保存的试题库文件来录入试题,同时可以随意想试题库添加新的题目;(3)随机答题模块:用户自定义抽取若干数目的试题,并由系统从已录入的试题库中随机抽取;(4)标准测试:用户不可选择答题的数目,需要回答全部题目;(5)自动判卷模块:由系统自动根据用户答案与标准答案对比,自动评卷并计算出用户的成绩。(6)成绩单显示:显示所用人的成绩;(7)意见反馈:用户想系统提出意见。二、系统设计:1、总体设计按系统的功能需求把整个系统分成以下五个模块来进行设计:(1) 试题录入功能模块;(2) 试题抽取和随机答题功能模块;(3) 标准测试功能模块;(4) 意见反馈功能模块;(5) 自动判卷功能模块。2、详细设计(1)界面设计a. 主界面设计主界面1-个人信息:主界面2-菜单列表:b. 标准测试界面设计(标准测试功能需要回答完题库里的全部题目)c试题抽取功能界面设计(可以从试题库中抽取使用者所需要回答的题目)d增加试题界面设计e成绩显示界面设计:f意见反馈界面设计:3、数据结构设计数据体类型:struct shitiint num;char question100;char answera40;char answerb40;char answerc40;char answerd40;char right2;int score;char fenlei8;st100;4、标准测试功能模块:函数:void bzcs();5、试题抽取和随机测试功能模块:函数:void stcq();void sjcs();int suijishu();5、试题录入功能模块:函数:void stlr();6、成绩单显示功能模块:函数:void cjxs();7、意见功能模块:函数:void yjfk();void qtfk();8、退出系统功能模块:函数:void tcxt();三、系统的实现:整个系统的源代码如下:#include#include#include#include#define LEN sizeof(struct shiti)void mainmenu();/主菜单/void bzcs();/标准测试,按题目顺序做完/void stcq();/试题抽取,可自由选择指定题目进行测试/void sjcs();/随机测试,随机抽取一定数目试题进行测试/void stlr();/试题录入,可供增加新题目/void cjxs();/成绩显示,显示所有用该程序测试过的测试者的姓名、做题数目、做对题数、成绩等信息/void yjfk();/意见反馈,可供测试者提出意见/void qtfk();/其他意见,显示所有反馈者的意见/void tcxt();/退出系统/void huanying();/欢迎界面,使界面更加友好/int suijishu();/随机数,产生一个在一定范围内的随机数,供随机测试使用/int showtishu();/显示试题总数/struct shiti/试题,包括题号、问题、四个答案、正确答案、分值、分类等项目/int num;char question100;char answera40;char answerb40;char answerc40;char answerd40;char right2;int score;char fenlei8;st100;main()/主函数/huanying();mainmenu();void huanying()printf(nnnnnnttt 欢迎使用nnn);printf(t nn);printf(t nn);printf(t 单项选择题标准化考试系统 nn); printf(t nn);printf(t nnn);printf(ttttt 管理学院09级管理科学2班nn);printf(ttttt 制作者: 杨倩霞 nn);printf(ttttt 3209004723 nn);getchar();void mainmenu() int a;system(cls);printf(nnntn);printf( t n);printf( t 单项选择题标准化考试系统 n);printf( t n);printf( tn);printf( t n);printf( t 标准测试 试题抽取 n); printf( t n); printf( tn); printf( t n); printf( t 随机测试 试题录入 n); printf( t n);printf( tn); printf( t n); printf( t 成绩显示 意见反馈 n); printf( t n);printf( tn);printf( t n);printf( t 其他反馈 退出系统 n);printf( t n);printf( tn);printf(nn);printf(ttt 请输入要执行任务代码n);scanf(%d,&a);switch(a)case 1:bzcs();break;case 2:stcq();break;case 3:sjcs();break;case 4:stlr();break;case 5:cjxs();break;case 6:yjfk();break;case 7:qtfk();break; case 8:tcxt();break;default :system(cls);/清屏/printf(nnnnntt对不起,您的输入有误,请重新输入n);getchar();getchar();mainmenu();void bzcs() int i=0,totalscore=0/*测试者的总得分*/,tishu=0,rightnum=0,showtishu()/*显示试题总数*/; char daan2,xingming20,cslx10;FILE *fp1,*fp2;getchar();system(cls);fp1=fopen(试题库.stk,r); fp2=fopen(成绩库.cjk,a);printf(nnttt );printf(nnttt 现有试题 %d 道。 ,showtishu()-1);printf(nnttt nn);getchar();printf(tt请输入您的姓名:);scanf(%s,xingming);getchar();for(i=0;ishowtishu()-1;i+)fread(&sti,LEN,1,fp1);printf(nnt题号:%dnt题目:%sntA选项:%sntB选项:%sntC选项:%sntD选项:%snt分值:%dnnn,sti.num,sti.question,sti.answera,sti.answerb,sti.answerc,sti.answerd,sti.score);printf(t请输入您最终确定要选的答案:); tishu+=1;scanf(%s,daan);getchar();if(strcmp(daan,sti.right)=0) totalscore+=sti.score;rightnum+=1;printf(nnttn);printf(nntt答题完毕,您的最终得分为:%dn,totalscore);printf(nnttn);getchar();fprintf(fp2,%sn,xingming);fprintf(fp2,标准测试n,cslx);fprintf(fp2,%dn,tishu);fprintf(fp2,%dn,rightnum);fprintf(fp2,%dn,totalscore);fclose(fp1);fclose(fp2);system(cls);mainmenu();void stcq()int i=0,totalscore=0,rightnum=0,tihao,tishu=0,tshowtishu(); char daan2,xingming20,cslx10,a;FILE *fp1,*fp2;getchar();system(cls);fp1=fopen(试题库.stk,r); fp2=fopen(成绩库.cjk,a);printf(nnttt );printf(nnttt 现有试题 %d 道。 ,showtishu()-1);printf(nnttt nn);getchar();printf(tt请输入您的姓名:);scanf(%s,xingming);getchar();loop:printf(ntt输入要抽取的试题题号:);scanf(%d,&tihao);getchar();for(i=0;ishowtishu()-1;i+) fread(&sti,LEN,1,fp1); for(i=0;ishowtishu()-1;i+)if(tihao=sti.num)printf(nnt题号:%dnt题目:%sntA选项:%sntB选项:%sntC选项:%sntD选项:%snt分值:%dnnn,sti.num,sti.question,sti.answera,sti.answerb,sti.answerc,sti.answerd,sti.score); printf(t请输入您最终确定要选的答案:); scanf(%s,daan); getchar();if(strcmp(daan,sti.right)=0)totalscore+=sti.score; rightnum+=1;tishu+=1;printf(nnttt);printf(nttt请确认是否(Y/N)继续答题?);printf(ntttnntttt);scanf(%s,&a);if(a=y|a=Y)goto loop;elseprintf(nnttn); printf(nntt答题完毕,您的最终得分为:%dn,totalscore); printf(nnttn); getchar();getchar(); fprintf(fp2,%sn,xingming); fprintf(fp2,试题抽取n,cslx); fprintf(fp2,%dn,tishu); fprintf(fp2,%dn,rightnum); fprintf(fp2,%dn,totalscore); fclose(fp1); fclose(fp2); system(cls); mainmenu();void sjcs()int i=0,totalscore=0,tishu=0,rightnum=0,showtishu(),showst; char daan2,xingming20,cslx10;int j,k;int suijishu(int showst);FILE *fp1,*fp2;getchar();system(cls);fp1=fopen(试题库.stk,r);fp2=fopen(成绩库.cjk,a);printf(nnttt );printf(nnttt 现有试题 %d 道。 ,showtishu()-1);printf(nnttt nn);showst=showtishu();getchar();printf(nnttt请输入您的姓名:);scanf(%s,xingming);printf(nnttt请输入您想要测试的题目总数:);scanf(%d,&tishu);for(k=0;ktishu;k+)j=suijishu(showst);getchar();for(i=0;ishowst-1;i+)fread(&sti,LEN,1,fp1);for(i=0;ishowst-1;i+)if(j+1)=sti.num)printf(nnt 题号:%dnt 题目:%snt A选项:%snt B选项:%snt C选项:%snt D选项:%snt 分值:%dnnn,sti.num,sti.question,sti.answera,sti.answerb,sti.answerc,sti.answerd,sti.score); printf(nnt请输入您最终确定要选的答案:); scanf(%s,daan); if(strcmp(daan,sti.right)=0)totalscore+=sti.score;rightnum+=1;getchar();printf(nnttn);printf(nntt答题完毕,您的最终得分为:%dn,totalscore);printf(nnttn);getchar();fprintf(fp2,%sn,xingming);fprintf(fp2,随机测试n,cslx);fprintf(fp2,%dn,tishu);fprintf(fp2,%dn,rightnum);fprintf(fp2,%dn,totalscore);fclose(fp1);fclose(fp2);system(cls);mainmenu();void stlr()int i=0,totalscore=0,tishu=0,rightnum=0,showtishu();int a;FILE *fp;getchar();system(cls);printf(nnttt );printf(nnttt 现有试题 %d 道。 ,showtishu()-1);printf(nnttt nn);fp=fopen(试题库.stk,a);printf(nnnttt 请输入要新增的考题数目:n);scanf(%d,&a);getchar();for(i=0;ia;i+)printf(nnnttt题号:);scanf(%d,&sti.num);printf(nttt题目:);scanf(%s,sti.question);printf(nttt输入 A 选项:);scanf(%s,sti.answera);printf(nttt输入 B 选项:);scanf(%s,sti.answerb);printf(nttt输入 C 选项:);scanf(%s,sti.answerc);printf(nttt输入 D 选项:);scanf(%s,sti.answerd);printf(nttt正确答案:);scanf(%s,sti.right);printf(nttt输入本题分值:);scanf(%d,&sti.score);printf(nttt试题类型:);scanf(%s,sti.fenlei);fwrite(&sti,LEN,1,fp); getchar();fclose(fp);printf(n);printf(ntt 试题添加成功,按任意键返回主菜单n);printf(n);getchar();system(cls);mainmenu();void cjxs()int totalscore=0,tishu=0,rightnum=0;char xingming20,cslx20;FILE *fp;getchar();system(cls);fp=fopen(成绩库.cjk,r);printf(nnttt 成 绩 单nnn);printf( n); while(!feof(fp)fscanf(fp,%sn%sn%dn%dn%dn,xingming,cslx,&tishu,&rightnum,&totalscore);printf( 姓名:%s 测试类型:%s 抽取试题数:%d 答对试题数:%d 总得分:%dn,xingming,cslx,tishu,rightnum,totalscore);printf( n);printf(n n);fclose(fp);printf(nnnttt 按任意键返回主菜单n);getchar();system(cls);mainmenu();void yjfk()int totalscore=0,tishu=0,rightnum=0;char yijian100;FILE *fp;getchar(); system(cls);fp=fopen(意见反馈.yjfk,a);printf(nntt ); printf(nntt 请提出您的宝贵意见或建议 );printf(nntt nn); scanf(%s,yijian);getchar();fprintf(fp,%sn,yijian);fclose(fp);system(cls);printf(n);printf(nnntttt信息已被接收nnntt感谢您提出的宝贵意见,我们会在以后加以完善nnn);printf(n);getchar();system(cls);mainmenu();void qtfk()char yijian100;FILE *fp;getchar();system(cls);fp=fopen(意见反馈.yjfk,r);printf(nnttt 意 见 反 馈 单nnn);printf( n);while(!feof(fp) fscanf(fp,%sn,yijian); printf( 反馈意见:%sn,yijian); printf( n);printf(n n);fclose(fp); printf(nnnttt 按任意键返回主菜单n);getchar();system(cls);mainmenu();void tcxt()system(cls);printf(nnnntt );pri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论