标准化考试系统C语言版_第1页
标准化考试系统C语言版_第2页
标准化考试系统C语言版_第3页
标准化考试系统C语言版_第4页
标准化考试系统C语言版_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

-.z.课程报告课程名称:程序设计实践专业班级:学生姓名:**:任课教师:唐建国学期:2013-2014学年第二学期-.z.课程报告任务书题目标准化考试系统主要内容开发出一个标准化考试系统,所谓标准化考试系统即仅支持选择题,也是为方便自动批改的功能的实现。要**现以下根本功能:〔1〕提供应教师添加试题的功能〔试题信息用文件保存〕--输入〔2〕试题库的整体浏览功能〔3〕能够随机抽取试题组合成一套试卷〔4〕教师实现题目信息的管理,比方删除、修改等〔5〕查询功能(题号查询、题目查询)、排序功能(题号排序)扩展功能:〔1〕学生和教师不同身份的注册登录功能〔2〕可以对题目进展模糊查询〔3〕可以统计题库内试题总数〔4〕学生可以进展抽题考试并得出成绩任务要求一、提交材料应包括:〔1〕系统源代码〔2〕课程报告二、整个设计过程具体要求〔1〕需求分析要求学生对案例系统进展分析,设计出需要完成的功能,完善各个模块的调用关系;〔2〕设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节〔函数名、参数、返回值等〕〔3〕实现过程要求学生养成良好的编码习惯、完成各个模块并进展测试,最终完成系统整体测试;〔4〕总结阶段按照要求完成系统设计和实现报告,并进展总结、辩论。成绩评定报告撰写情况〔30分〕系统完成情况〔30分〕辩论情况〔40分〕总分内容20分标准程度5分程序测试5分根本功能20分扩展功能10分自述情况10分辩论情况30分成绩评定教师:-.z.目录20374目录147461需求分析262182系统设计2129012.1.数据构造设计2236632.2.功能模块设计3179022.2.1:主菜单模块383372.2.2:教师菜单模块485672.2.3:学生菜单模块4106903系统实现及关键代码5306153.1根本功能57443.1.1菜单设计5183593.1.2文件读写7136853.1.3删除题目信息898323.2拓展功能963943.2.1密码设计9218093.2.2考试函数9307714系统演示1035634.1根本功能10326304.1.1文件读写功能10179014.1.2插入题目功能11183564.2拓展功能1139794.2.1密码功能11108614.2.2考试功能12135075总结13118395.1系统缺陷与缺乏13153645.2系统可扩展功能1363966课程心得总结1420592参考书籍:14-.z.1需求分析根据程序要求分析,我们认为整个程序应该分为4个大块,其中包括主函数以及其他功能函数:注册登录模块,学生操作模块,教师操作模块。各个模块又利用小模块实现小功能划分,教师操作模块由创立题库、插入题目、修改题目、删除题目、显示题目、题目排序、查询题目这7个模块组成,而其中查询题目又包含了题号查询、题目查询和模糊查询3个小模块;注册登录模块由4个函数完成对学生教师不同身份的注册及登录,学生登录后可以选择答题数量组成试卷考试并得到成绩。通过这些模块的组合连接,就可以实现一个完整的标准化考试系统。2系统设计2.1.数据构造设计voidStudent_login();/*学生登录*/voidTeacher_login();/*教师登录*/voiddenglu();/*主菜单*/voidAddstudent(charid[],charpassword[]);/*将学生账号密码存入文件*/voidAddteacher(charid[],charpassword[]);/*将教师账号密码存入文件*/voidTeachermenu();/*教师菜单*/voidStudentmenu();/*学生菜单*/voidPrintDoc(structte*t*head);/*从文件中读取题库信息并输出*/voidNameQueDoc(structte*t*head);/*按照题目查询信息*/voidNumberQueDoc(structte*t*head);/*按照题号查询信息*/voidNameVagueDoc(structte*t*head);/*按照题目模糊查询信息*/voidkaoshi(structte*t*head,intsum,intk);/*学生考试菜单*/voidfprint(structte*t*head);/*将链表写入文件*/structte*t*CreateDoc();/*创立试题库并通过链表存入文件*/structte*t*load();/*从文件读取题库信息并存入链表*/structte*t*DeleteDoc(structte*t*head);/*删除题库题目信息*/structte*t*ReviseDoc(structte*t*head);/*修改题库题目信息*/structte*t*InsertDoc(structte*t*head,structte*t*book);/*插入题目*/structte*t*SortDoc(structte*t*head);/*对题库题目进展排序*/structte*t*QueDoc(structte*t*head);/*题库查询菜单*/intcount(structte*t*head);/*统计题库中题目总数*/intyanzheng(structte*t*head,intm);/*验证题号是否重复*/char*Getpasswd(void);/*将注册登录的密码转为星号*/structte*t{ intnumber; charque[81]; charanswer1[81]; charanswer2[81]; charanswer3[81]; charanswer4[81]; charture[81]; structte*t*ne*t;};/*定义te*t构造*/2.2.功能模块设计2.2.1:主菜单模块标准化考试系统标准化考试系统注册**登陆**退出系统学生注册教师注册学生登录教师登录2.2.2:教师菜单模块退出系统退出系统查询题库题目题库题目排序显示题库题目删除题库题目修改题库题目插入题库题目创立试题库教师操作界面2.2.3:学生菜单模块学生操作界面学生操作界面开场考试退出系统3系统实现及关键代码3.1根本功能3.1.1菜单设计voiddenglu(){ charid[81],password1[81]={NULL},password2[81]={NULL}; intchoice,choi; printf("\n"); printf("〒〒〒〒〒欢送进入标准化考试系统:〒〒〒〒〒\n"); printf("*******wele*******\n"); printf("\t*【1】注册账户*\n"); printf("\t*【2】登陆账户*\n"); printf("\t*【0】退出系统*\n"); printf("\n"); printf("请输入你的选择:"); scanf("%d",&choice); system("cls");//清屏 switch(choice) { case1: printf("\n"); printf("〒〒〒〒欢送进入标准化考试系统注册账户界面:〒〒〒〒\n"); printf("*********wele*********\n"); printf("1学生注册2教师注册\n"); printf("3返回上一级0退出系统\n"); printf("\n"); printf("请选择注册模式:"); scanf("%d",&choi); system("cls");//清屏 switch(choi) { case1: printf("\n"); printf("〒〒〒〒欢送进入标准化考试系统学生注册界面:〒〒〒〒\n"); printf("*********wele*********\n"); printf("请输入学生**:"); scanf("%s",&id); printf("请输入密码,密码长度最大为6:"); strcpy(password1,GetPasswd()); printf("\n请再次输入密码:"); strcpy(password2,GetPasswd()); if(strcmp(password1,password2)==0) Addstudent(id,password1); else printf("\n两次密码不一致,返回主菜单!\n"); denglu(); case2: printf("\n"); printf("〒〒〒〒欢送进入标准化考试系统教师注册界面:〒〒〒〒\n"); printf("*********wele*********\n"); printf("请输入教师**:"); scanf("%s",&id); printf("请输入密码,密码长度最大为6:"); strcpy(password1,GetPasswd()); printf("\n请再次输入密码:"); strcpy(password2,GetPasswd()); if(strcmp(password1,password2)==0) Addteacher(id,password1); else printf("\n两次密码不一致,返回主菜单!\n"); denglu(); case3: denglu(); case0: printf("系统即将关闭!\n"); e*it(0); default: printf("无效选项!\n"); denglu(); } case2: printf("\n"); printf("〒〒〒〒欢送进入标准化考试系统注册账户界面:〒〒〒〒\n"); printf("*********wele*********\n"); printf("1学生登录2教师登录\n"); printf("3返回上一级0退出系统\n"); printf("\n"); printf("请选择登录模式:"); scanf("%d",&choi); system("cls");//清屏 switch(choi) { case1: Student_login(); case2: Teacher_login(); case3: denglu(); case0: printf("系统即将关闭!\n"); e*it(0); default: printf("无效选项\n"); denglu(); } case0: printf("系统即将关闭!\n"); e*it(0); default: printf("无效选项!\n"); denglu(); }}3.1.2文件读写/*将链表写入文件*/voidfprint(structte*t*head){ FILE*fp; structte*t*p1; if((fp=fopen("G:\\试题库.t*t","w"))==NULL){ printf("Cannotopenthefile!\n"); e*it(0); } for(p1=head;p1;p1=p1->ne*t){ fprintf(fp,"%d%s%s%s%s%s%s\n",p1->number,p1->que,p1->answer1,p1->answer2,p1->answer3,p1->answer4,p1->ture); } fclose(fp);}/*从文件读取题库信息*/structte*t*load(){ FILE*fp; structte*t*head,*tail,*p1; head=tail=NULL; if((fp=fopen("G:\\试题库.t*t","r"))==NULL){ printf("文件输入错误!\n"); e*it(0); } if(!feof(fp)){ while(!feof(fp)){ p1=(structte*t*)malloc(sizeof(structte*t)); fscanf(fp,"%d%s%s%s%s%s%s\n",&p1->number,p1->que,p1->answer1,p1->answer2,p1->answer3,&p1->answer4,&p1->ture); if(head==NULL) head=p1; else tail->ne*t=p1; tail=p1; } tail->ne*t=NULL; fclose(fp);returnhead; } else returnNULL;}3.1.3删除题目信息structte*t*DeleteDoc(structte*t*head){ inta; structte*t*p1,*p2; printf("请输入要删除题目的题号:"); scanf("%d",&a); while(head!=NULL&&head->number==a) { p2=head; head=head->ne*t; free(p2); } if(head==NULL) { returnNULL; } p1=head; p2=head->ne*t; while(p2!=NULL) { if(p2->number==a) { p1->ne*t=p2->ne*t; free(p2); } else p1=p2; p2=p1->ne*t; } fprint(head); returnhead;}3.2拓展功能3.2.1密码设计char*GetPasswd(void){charc;inti=0;charpasswd[6]={NULL};while((c=getch())!='\r'){passwd[i]=c;putchar('*');i++;if(i>=6){break;}}returnpasswd;}3.2.2考试函数voidkaoshi(structte*t*head,intsum,intk)/*随机抽题考试*/{ intscore=0,a[1000],i,j; charanswer[81],answer1[81]; srand((unsigned)time(NULL));/*保证随机出来不重复的数字*/ for(i=0;i<sum;i++) { a[i]=rand()%k+1;/*随机产生1~k之间一个整数*/ for(j=0;j<i;j++) if(a[i]==a[j]) i--; } for(i=0;i<sum;i++) { structte*t*p; p=head; while(p!=NULL){ if(p->number==a[i]) break; p=p->ne*t; }printf("题号:%d\n",p->number); printf("题目:%s\n",p->que); printf("选项

温馨提示

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

评论

0/150

提交评论