选择题标准化考试系统

合集下载

单项选择题标准化考试系统设计

单项选择题标准化考试系统设计

单项选择题标准化考试系统设计
随着教育的不断发展,单项选择题作为一种常见的考试形式,被广泛运用于各类考试中。

然而,由于传统的单项选择题存在着一些缺陷,如容易出现歧义、难以全面考察学生能力等问题,因此,设计一个标准化的单项选择题考试系统显得尤为重要。

首先,我们需要设计一套科学合理的题库。

题库的题目应该涵盖各个知识点和技能要求,既要考察学生的基础知识,又要考察学生的分析、推理和解决问题的能力。

同时,题目的难度应该有所区分,既要有简单的题目让学生得分,也要有一定难度的题目来区分学生的能力水平。

其次,考试系统的评分标准也至关重要。

评分标准应该清晰明确,能够客观公正地评价学生的答题情况。

同时,评分标准也要与题目设计相匹配,避免出现过于主观的评分情况。

这样才能保证考试结果的公平性和真实性。

另外,考试系统的技术支持也是必不可少的。

现代化的技术手段可以大大提高考试的效率和准确性。

例如,采用自动阅卷系统可以大大减轻教师的工作量,同时也可以减少人为因素对考试结果的影响。

此外,考试系统的安全性也是需要重点考虑的问题。

防范作弊行为,保护考试的公平性和权威性,是考试系统设计的一个重要方面。

因此,需要建立起一套完善的监控机制和防作弊措施,确保考试过程的公正和公平。

总的来说,设计一个标准化的单项选择题考试系统需要考虑题库设计、评分标准、技术支持和安全性等多个方面。

只有在这些方面都得到合理的设计和保障,才能够真正实现考试的公平、公正和科学。

希望未来能有更多的教育机构和考试机构能够重视这些问题,不断完善考试系统,为学生提供更好的学习和发展环境。

Java课程设计----标准化考试系统.doc

Java课程设计----标准化考试系统.doc

面向对象课程设计标准化考试系统数学与信息工程学院计算机科学与技术、需求分析二、系统运行环境三、功能需求描述四、总体设计五、程序模块设计六、使用效果图七、总结一、需求分析要设计一个性能良好的管理系统,明确用户的应用环境对系统的要求是首要的和基本的。

本系统从以下三个方面对用户需求进行了分析:1)用户的信息需求:考生能查询有关考试成绩;系统管理员能查询题库信息;系主要领导都能查询所有信息。

2)用户的处理要求:管理员能对题库和考试科目执行增加、删除和修改操作;由管理员设置考试信息,经过考试主管领导的审核后就可考试;在考试时,由考生选择试题;系统控制考试时间、考试成绩IH动生成等。

3)对系统的适应性、通用性要求:要求系统不仅能够进行计算机系考试,而旦其他系或专业稍作设置或改动也能使用本系统进行标准化网络考试。

二、系统运行环境Windows XP SP3 以及Eclipse 2007三、功能需求描述本系统可以进行任何标准化考试,具有选择试题、查看得分、考试计时等功能。

四、总体设计本标准化考试系统共由3个java源文件和若干个试题组成,试题文件为文本文件,文件名字可任意指定,但扩展名必须是txt,文件内容必须遵守如下的书写规则:1)试题文件的第一行是全部试题的答案,答案之间不可以有空格。

2)第二行是试题文件的考试时间,如1:23:45表示的考试时间是1小时23 分45秒。

3)每道题目之间用“**”开头的字符申分割。

4)最后一,行是endTest, java该java文件生成的类负责创建标准化考试的主窗口。

该类含有main方法,程序从该类开始执行,程序从该类开始执行。

在主窗口,用户可以通过下拉列表选择一套试题,然后开始读取试题进行考试。

TestArea. java该文件生成的类负责创建考试区域对象。

是Test窗口中的主要成员变量,考试区域提供了试题选取、查看分数、计时器、试题显示等功能。

ReadTestquestion. javaReadTestquestion对象是TestArea试题区中的重要对象,负责读取该试题、计算分数等。

标准化考试系统C语言版

标准化考试系统C语言版

课程报告课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:唐建国学期:2013-2014学年第二学期课程报告任务书成绩评定教师:目录目录01 需求分析12 系统设计1.数据结构设计1.功能模块设计1主菜单模块2:教师菜单模块2:学生菜单模块33 系统实现及关键代码3基本功能 3菜单设计 3文件读写 4删除题目信息 5拓展功能 5密码设计 5考试函数 64系统演示7基本功能 7文件读写功能 7插入题目功能 7拓展功能 8密码功能 8考试功能 85总结9系统缺陷与不足9系统可扩展功能96课程心得总结10参考书籍:101 需求分析根据程序要求分析,我们认为整个程序应该分为4个大块,其中包括主函数以及其他功能函数:注册登录模块,学生操作模块,教师操作模块。

各个模块又利用小模块实现小功能划分,教师操作模块由创建题库、插入题目、修改题目、删除题目、显示题目、题目排序、查询题目这7个模块组成,而其中查询题目又包含了题号查询、题目查询和模糊查询3个小模块;注册登录模块由4个函数完成对学生教师不同身份的注册及登录,学生登录后可以选择答题数量组成试卷考试并得到成绩。

通过这些模块的组合连接,就可以实现一个完整的标准化考试系统。

2 系统设计.数据结构设计void Student_login();/*学生登录*/void Teacher_login();/*教师登录*/void denglu();/*主菜单*/void Addstudent(char id[],char password[]);/*将学生账号密码存入文件*/void Addteacher(char id[],char password[]);/*将教师账号密码存入文件*/void Teachermenu();/*教师菜单*/void Studentmenu();/*学生菜单*/void PrintDoc(struct text * head);/*从文件中读取题库信息并输出*/void NameQueDoc(struct text * head);/*按照题目查询信息*/void NumberQueDoc(struct text * head);/*按照题号查询信息*/void NameVagueDoc(struct text * head);/*按照题目模糊查询信息*/void kaoshi(struct text *head,int sum,int k);/*学生考试菜单*/void fprint(struct text *head);/*将链表写入文件*/struct text * CreateDoc();/*创建试题库并通过链表存入文件*/struct text *load();/*从文件读取题库信息并存入链表*/struct text * DeleteDoc(struct text * head);/*删除题库题目信息*/struct text * ReviseDoc(struct text * head);/*修改题库题目信息*/struct text * InsertDoc(struct text * head,struct text * book);/*插入题目*/struct text * SortDoc(struct text * head);/*对题库题目进行排序*/struct text * QueDoc(struct text * head);/*题库查询菜单*/int count(struct text *head);/*统计题库中题目总数*/int yanzheng(struct text *head,int m);/*验证题号是否重复*/char *Getpasswd(void);/*将注册登录的密码转为星号*/struct text{int number;char que[81];char answer1[81];char answer2[81];char answer3[81];char answer4[81];char ture[81];struct text *next;};/*定义text 结构*/主菜单模块:教师菜单模块:学生菜单模块3 系统实现及关键代码基本功能菜单设计void denglu(){int choice,choi;printf("\n");printf(" 〒〒〒〒〒欢迎进入标准化考试系统:〒〒〒〒〒\n");printf(" ★★★★★★★welcome★★★★★★★\n");printf("\t *【1】注册账户*\n");printf("\t *【2】登陆账户*\n");printf("\t *【0】退出系统*\n");printf("\n");printf("请输入你的选择:");scanf("%d",&choice);system("cls");xt","w"))==NULL){printf("Can not open the file!\n");exit(0);}for(p1=head;p1;p1=p1->next){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);}/*------------------------------------------从文件读取题库信息--------------------------*/struct text *load(){FILE *fp;struct text *head,*tail,*p1;head=tail=NULL;if((fp=fopen("G:\\试题库.txt","r"))==NULL){printf("文件输入错误!\n");exit(0);}if(!feof(fp)){while(!feof(fp)){p1=(struct text *)malloc(sizeof(struct text));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;elsetail->next=p1;tail=p1;}tail->next=NULL;fclose(fp);return head;}return NULL;}删除题目信息struct text * DeleteDoc(struct text * head){int a;struct text *p1,*p2;printf("请输入要删除题目的题号:");scanf("%d",&a);while(head!=NULL&&head->number==a){p2=head;head=head->next;free(p2);}if(head==NULL){return NULL;}p1=head;p2=head->next;while(p2!=NULL){if(p2->number==a){p1->next=p2->next;free(p2);}elsep1=p2;p2=p1->next;}fprint(head);return head;}拓展功能密码设计char *GetPasswd(void){char c;int i=0;char passwd[6]={NULL};while ((c=getch())!='\r')passwd[i]=c;putchar('*');i++;if (i>=6){break;}}return passwd;}考试函数void kaoshi(struct text *head,int sum,int k)/*随机抽题考试*/{int score=0,a[1000],i,j;char answer[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++){struct text*p;p=head;while(p!=NULL){if(p->number==a[i])break;p=p->next;}printf("题号:%d\n",p->number);printf("题目:%s\n",p->que);printf("选项A:%s 选项B:%s\n",p->answer1,p->answer2);printf("选项C:%s 选项D:%s\n",p->answer3,p->answer4);strcpy(answer,p->ture);printf("\n");printf("请输入答案:");scanf("%s",answer1);if(strcmp(answer,answer1)==0){printf("\n");score++;}else{printf("答案错误!\n");printf("正确答案为:%s\n",answer);printf("\n");}}printf("您的总成绩为:%d",score);}/*学生通过此函数对随机的试题进行答题并得到自己的成绩*/ 4系统演示基本功能文件读写功能插入题目功能拓展功能密码功能考试功能5总结系统缺陷与不足这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。

单项选择题标准化考试系统

单项选择题标准化考试系统

单项选择题标准化考试系统公司内部编号:(GOOD-TMMT-MMUT-UUPTY-UUYY-DTTI-合肥学院计算机科学与技术系课程设计任务书2010~2011学年第二学期课程C++课程设计课程设计名称单项选择题标准化考试系统专业班级计算机科学与技术嵌入式(2)指导教师华姗姗20 11 年 6 月 29 日一、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。

通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。

(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。

(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。

(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。

(5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。

(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。

(7)进一步掌握在集成环境下如何调试程序和修改程序。

二、课程设计名称及内容课程设计名称:单项选择题标准化考试系统设计内容:设计并实现一个单项选择题标准化考试系统。

该系统可以完成试题录入、试题抽取、自动判卷等功能。

三、任务和要求(一)功能要求:(1)用文件保存试题库。

(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)四、主要知识点面向对象程序设计方法界面制作,switch的应用。

C语言单项选择题标准化考试系统

C语言单项选择题标准化考试系统

青岛理工大学《C语言程序设计》题目C语言单项选择题标准化考试系统指导教师:姓名:学号:班级:专业:地点:时间:2013-7-1 至2013-7-5一、内容【设计内容】试设计一单项选择题标准化考试系统,实现试题的录入、抽取、用户的答题、系统的自动判卷等功能。

【设计要求】1、用文件保存试题库。

(每个试题包括题干、4个备选答案、标准答案)2、试题录入:可随时增加试题到试题库中3、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)4、答题:用户可实现输入自己的答案5、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

二、上机环境操作系统:windows.XP开发工具:VC6.0三、函数调用关系图图1 函数调用关系图四、各函数功能说明1.main() 主函数2.Menu() 菜单函数3.void Answer(int n,TEST * sp) 答题函数4.void Output(TEST* ,int i) 输出第n道题题目5.int TorF(TEST *sp,char m) 判卷函数6.void Input(TEST *) 题目录入函数7.void ReadfromFile(TEST* sp) 从文件中读取题目信息8.TEST * createLinkedList(TEST*sp) 创建链表9.TEST* InsertNode(TEST *head, TEST*s) 插入题目函数10.void WritetoFile(TEST* head) 保存到文件五、流程图图 2 系统总流程图图 3 Answer()函数流程图图 4 Ooutput()函数流程图图 5 TorF()函数流程图图 6 Input()函数流程图图7 ReadfromFile()函数流程图图 8 createLinkedList()函数流程图开始p ,q i=0输入n(q!=NULL&&n!=i+1)?p ,q 指针都指向下一节点i++q=NULL?输出“Not found!”将保存信息的s,插入p ,q 之间;返回头指针结束图 9 InsertNode()函数流程图真假真假六、程序运行效果图1.初始界面2.随机抽题3.答题并判卷4.插入试题5.保存到文件七、总结通过这短短5天的时间,学到了许多东西,尤其是对链表及文件的使用。

C++ 单项选择题标准化考试系统

C++ 单项选择题标准化考试系统

目录1.课程设计目的 (1)2.课程设计题目描述和要求 (1)2.1课程题目 (1)2.2课程要求 (1)3.课程设计报告内容 (1)3.1算法描述 (1)3.2 源程序 (2)4.课程设计总结: (6)5.参考书目 (7)1 课程设计目的练习自己的动手能力,在学习理论的同时增强自己的编程能力,使理论与实践相结合,在学习书本的同时扩展自己的课外知识.2 课程设计题目描述和要求2.1课程题目单项选择题标准化考试系统2.2课程要求(一)功能要求:(1)用文件保存试题库。

(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档.3 课程设计报告内容3.1算法描述定义题目数组,选向数组,输入题目的及选向并给定正确答案。

输入所要答的题目数,然后进行答题。

输入的答案与标准答案进行比较,如果一致,则正确,否则错误。

最后根据题目数及答对题目数进行输出得分。

3.2 源程序#include <iostream>#include <fstream>#include "dos.h"using namespace std;struct question {char ask[200];/*选择题题目*/char answer[4][80];/*选择题选项*/int right;/*正确答案*/struct question *next;};//函数声明int MenuChoice(void); //选择菜单struct question *charu_timu(struct question *fst, const struct question *ad); //向列表中插入试题函数struct question *da_an_weizhi(struct question *seek, long len, long max); //确定一个读取答案的位置的函数void GetQuestion(struct question *src); //获取问题,选项,以及正确答案函数void bao_cun(const struct question *ed, FILE *saf); //将列表中的试题保存在文件中的函数struct question *LoadFile(struct question *td, FILE *laf); //从文件中读取题目,将题目添加到列表中的函数int GetAnswer(void); //输入选择题的答案void huida_Question(const struct question *que, int n); //回答问题函数main(){struct question *start = NULL, temp;long choice, line = 0, c;FILE *fp = fopen("wangkun.dat", "a+");while ((choice = MenuChoice()) != 3)if (choice == 1){GetQuestion(&temp);start = charu_timu(start, &temp);++line;/*统计列表的长度*/system("cls");}else if (choice == 2){c =8;while (c > 6 || c > line) {cout<<"请输入要回答的问题数量: ";cin>>c;}huida_Question(start, line);}return 0;}/*da_an_weizhi函数确定一个读取答案的位置,len代表要读取的答案数,max 代表列表的长度*/struct question *da_an_weizhi(struct question *seek, long len, long max) {int i;while (i--)seek = seek->next;//找到指定的位置return seek;}//向列表中插入试题struct question *charu_timu(struct question *fst, const struct question *ad){struct question *newPtr = (struct question *)malloc(sizeof(struct question));if (newPtr == NULL)exit(0);*newPtr = *ad;newPtr->next = fst;return newPtr;}/*获取问题,选项,以及正确答案*/void GetQuestion(struct question *src){int i = 0;cout<<"请输入选择题题目:"<<endl;cin>>src->ask;while (i < 4) {cout<<"请输入选项"<<char(i + 'A')<<"的答案:"<<endl;cin>>src->answer[i++];}src->right = GetAnswer();}/*从文件中读取题目,将题目添加到列表中*/struct question *LoadFile(struct question *td, FILE *laf){struct question temp;while (fread(&temp, 1, sizeof(struct question), laf))td = charu_timu(td, &temp);return td;}/*将列表中的试题保存在文件中*/void bao_cun(const struct question *ed, FILE *saf){fclose(saf);if ((saf = fopen("wankun.dat", "w")) == NULL)//以写的方式重新打开文件 return ;while (ed) {fwrite(ed, 1, sizeof(struct question), saf);ed = ed->next;}}//得到选择题的答案(不保证是正确的答案)int GetAnswer(void){char c=0 ;//必须进行初始化,避免出现偶然性的错误fflush(stdin);while (c < 'A' || c > 'D') //确保输入的答案是A, B, C, D中的一个{cout<<"请输入正确的答案: "<<endl;cin>> c;}return c;}//回答问题,并统计答对题目数,显示得分void huida_Question(const struct question *que, int n){int i = 0, t = n;char result[1001], *p = result;for (i = 0; n--; que = que->next) {cout<<que->ask<<endl;cout<<que->answer[0]<<endl;cout<<que->answer[1]<<endl;cout<<que->answer[2]<<endl;cout<<que->answer[3]<<endl;if ((*p = que->right) == (*(p + 1) = GetAnswer()))++i;}*p = '\0';cout<<"标准答案"<<" 您的答案 "<<endl;for (p = result; *p != '\0'; )cout<<*p<<" "<<*(p+1)<<endl;cout<<"您回答了"<<t<<"道题, 答对"<<i<<"道题目, 得分:"<< (float)i / t * 100.00<<endl;}//选择菜单int MenuChoice(void){int value;cout<<" **********************************"<<endl;cout<<" * *"<<endl;cout<<" * 1 :添加选择题 *"<<endl;cout<<" * 2 :回答选择题 *"<<endl;cout<<" * 3 :退出 *"<<endl;cout<<" * *"<<endl;cout<<" **********************************"<<endl;cin>>value;return value;}4 课程设计总结:经过编写程序,检验了我们的编程的水平,从这次编程中,我发现我才学到了一点点的知识,有好多的东西都不够熟练,还需要好好的努力学习,在编写这个程序时,出现了好多的问题,经过别人的帮助和自己的认真的调试才完成,这个程序还有好多的不足,还不够美观。

单项选择题标准化考试系统

单项选择题标准化考试系统

摘要随着科技的逐渐进步,计算机的各类技术也正以飞速发展,我们所熟知的软件技术,也做出了一次次的创新与改良,无数种新类型的软件也逐渐向世人展示它的棱角。

当然,科学是一把双刃剑,在这些软件被创造的过程中,总会留下一些不当或者漏洞,毕竟人不是万能的,我们在开发这些软件的过程中并不能全面了解它会接触到什么样的数据,所以一个个漏洞逐渐被不法分子所发现,利用,并且对使用该软件的人造成或大或小的经济损失。

因此,越来越频繁的软件安全损失对软件的开发者提出了更高的要求,对于开发者来说,能够避免以及时修复软件出现的突发问题,才能最大限度的保证使用者的经济财产不受损失。

安全编程,是软件质量的重要保证,在软件开发和程序设计中具有重要地位。

然而,实际的软件工程中,安全隐患的出现往往来源于多个方面,给软件系统带来的危害也是多方面的。

安全问题的出现,由于原因众多,而某些安全问题又具有不间断发生,难于调试等特点,因此,很难用一个单纯的理论来完全地阐述安全编程问题。

基于这个考虑,安全编程的内容只能针对各个侧面来进行阐述,如异常情况下的安全、线程操作中的安全、数据安全加密等等。

关键词:软件,安全,C语言目录摘要 (1)第1章绪论 (1)1.1功能分析 (1)1.2系统分析 (2)第2章输入安全 (4)2.1概念 (4)2.2输入安全分析 (4)第3章内存安全 (7)3.1概念 (7)3.2内存安全分析 (7)第4章数据安全 (10)4.1概念 (10)4.2数据安全分析 (10)总结 (12)第1章绪论1.1功能分析本系统为单项选择题标准化考试系统,本系统主要是靠结构体来完成、实现的,经过实际的需求分析,采用功能强大的C语言程序运行的单项选择题标准化考试系统。

整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成单项选择题标准化考试系统的全过程,包括学生信息的录入、浏览、查询、排序以及修改和删除功能,查询功能主要包括按学号查询和按姓名查询。

C语言单项选择题标准化考试系统

C语言单项选择题标准化考试系统

《高级语言程序设计》说明书设计题目:单项选择题标准化考试系统一、课程设计的内容题目:单项选择题标准化考试系统(一)功能要求:(1)用文件保存试题库。

(每个试题包括题干、四个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

(二)其它要求:(1)只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读(2)至少采用文本菜单界面(如果能采用图形菜单界面更好)(3)学生可自动增加新功能模块(视情况可另外加分)(4)写出课程设计报告,具体要求见相关说明文档二、课程设计的要求与数据1、进一步掌握和利用C语言进行程设计的能力;2、进一步理解和运用结构化程序设计的思想和方法;3、初步掌握开发一个小型实用系统的基本方法;4、学会调试一个较长程序的基本方法;5、学会利用流程图或N-S图表示算法;6、掌握书写程序设计开发文档的能力。

三、课程设计应完成的工作1、编写完成相应题目的程序;2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:1) 需求分析:包括设计题目、设计要求以及系统功能需求分析;2) 总体设计:包括系统总体设计框架和系统功能模块图;3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图;4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);5) 总结:课程设计完成了哪些功能,有没有什么扩展功能?还有哪些地方需要改进?课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建议等内容;6) 附录:主要源程序代码,含必要的注释。

3、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。

应用系统类_3_单项选择题标准化考试系统设计

应用系统类_3_单项选择题标准化考试系统设计

单项选择题标准化考试系统设计
(难度系数:0.95)
一、问题描述:
用VC设计一个仅使用单项选择题的标准化考试系统,实现题目维护、出题、判卷和成绩管理等基本功能。

二、基本功能要求:
1.基于文件(或数据库)的试题库设计:
要求每个试题包括题干、4个备选答案、标准答案。

2. 试题录入:
设计界面,实现试题信息(包括答案)的录入功能,保存到文件(或数据库)中。

3.试题维护:
设计界面,实现对题库中各道题目的查找、修改、删除功能。

4.试题抽取:
每次从试题库中可以随机抽出N道题目,组成一份试卷。

5.答题:
设计并实现用户答题界面和功能。

6.自动判卷:
系统可根据用户答案与标准答案的对比实现判卷并给出成绩。

三、扩展功能:
1.试卷管理:
实现对每次随机组成试卷的保存和管理维护功能。

2.导出功能:
把系统中的题目或试卷进行导出,导出到Word文件。

四、界面要求:
界面不做具体的规定,可自行设计。

但要本着简洁使用、操作方便、视觉美观的原则。

D单项选择题标准化考试系统设计

D单项选择题标准化考试系统设计

石家庄铁道大学课程设计单项选择题标准化考试系统单位电气与电子工程学院分院(系)专业电气信息类学号学生姓名指导教师石玉晶完成日期:2012 年9 月14日摘要单项选择题标准化考试系统是一款比较实用的小型软件,其原理及相关软件在现在生活中有着广泛的应用。

本设计主要应用语言进行编程,利用C语言中的结构体、文件、数组、函数等知识实现系统的试题库维护、答题、判卷各个功能,并用文件对修改后的试题库进行保存。

应用本设计思路可以进行同类及相关软件的开发报告首先介绍了选题的意义及功能要求,其次介绍了程序的设计思路并包括基本算法和流程图,接着介绍了源程序代码和相关函数功能,最后是系统的实现并对系统做了调试。

本程序应用C语言运行环境实现了全部功能。

报告还附录了参考用书,并提交了实验总结及实验感想。

关键词:单项选择题标准化考试系统、结构体、数组、文件、C语言程序设计。

目录第1章选题意义 (4)1.1 考试系统的意义 (4)1.2 程序设计的意义 (4)第2章系统功能需求分析 (5)2.1 系统的基本要求 (5)2.2 功能实现 (5)第3章系统设计 (6)3.1 设计思路 (6)3.2 基本算法及流程图 (7)3.3 各自定义函数及其功能 (8)3.4 源程序代码 (9)第4章系统实现 (24)第5章总结 (29)参考文献第1章选题的意义•1.1 单项选择题标准化考试系统的意义在计算机技术和互联网飞速发展的今天,生活中自主学习、自主考察测试日益增多,各种学科上机考试已成为一种趋势,因此,单项选择题标准化考试系统及其相关软件在生活中的应用日益增多。

本系统可以实现从题库随机抽题,并自动判卷,将大大方便考生进行练习、自测和考试,同时减轻相关工作人员的负担,提高工作效率,计算机运行的准确性还能降低出错率,提高公平度。

所以,设计并编写单项选择题标准化考试系统及其相关软件是极为有必要的。

•1.2 程序设计的意义本课题的实现主要应用了C语言中的结构体的使用、数组应用和文件应用等内容,还涉及到循环语句、分支选择结构等内容并且用C语言编程。

c 单项选择题标准化考试系统

c   单项选择题标准化考试系统

c 单项选择题标准化考试系统在当今社会,随着教育水平的不断提高,考试已经成为人们学习和评价能力的重要方式。

而单项选择题作为考试中常见的一种形式,对于考生来说具有一定的挑战性。

因此,建立一个标准化的单项选择题考试系统显得尤为重要。

首先,一个标准化的单项选择题考试系统应当具备科学性和客观性。

考题的设计应该严格遵循教学大纲和教学要求,确保考试内容符合教学大纲的要求和教学内容的实际情况。

同时,考题应当客观公正,避免主观性和片面性,确保考试结果的客观性和公正性。

其次,考试系统应当注重题目的多样性和灵活性。

题目应当涵盖教学内容的各个方面,既要考查学生对基础知识的掌握程度,也要考查学生对知识的灵活运用能力。

同时,考试系统应当灵活运用不同类型的题目,如单选题、多选题、判断题等,以满足不同学生的学习需求。

另外,一个标准化的单项选择题考试系统还应当具备合理性和公平性。

考试系统应当合理确定考试的难易程度,确保考试结果的真实性和可比性。

同时,考试系统应当公平对待每一位考生,避免题目的偏颇性和不公正性,确保每一位考生都能在公平的环境下进行考试。

最后,考试系统还应当具备及时性和有效性。

考试系统应当及时更新考题,确保考试内容与时俱进,适应教学内容的变化和发展。

同时,考试系统应当有效评价学生的学习成果,为学生提供及时的反馈和指导,帮助学生更好地提高学习能力。

综上所述,建立一个标准化的单项选择题考试系统对于提高教学质量、促进学生学习具有重要意义。

只有建立科学、客观、多样、合理、公平、及时、有效的考试系统,才能更好地推动教育教学工作的发展,促进学生全面发展。

希望我们可以共同努力,建立一个更加完善的单项选择题标准化考试系统。

标准化考试系统项目文档

标准化考试系统项目文档

标准化考试系统项目文档开发一套标准化考试系统,要求通过该系统完成多个科目的标准化考试工作。

考试开始时,考生在客户端机器上使用学号和密码登录进入考试系统,如下:所有考生的信息(包含学号,姓名和密码)在服务器端的student.cfg文件中保存,该文件的保存格式为:“学号:姓名:密码”,如下:1001:zhangsan:12341002:lisi:12341003:tangliang:43211004:tony:tonytang1005:ctx:1234登录成功后进入选择科目界面,考生选择一门考试科目,如下:所有考试科目的列表在服务器端的subject.cfg文件中保存,该文件不仅保存科目列表,还保存了与科目对应的试题文件的文件名,格式为:“科目名=试题文件名”,如下:corejava=corejava.exmc++=cpp.exmJavaWeb=web.exmEJB=ejb.exm考生选择考试科目后,程序将从服务器接收该科目的试题,并进入考试主界面,如下:每门科目的考试试题保存在服务器端的一个试题文件中,试题文件的格式如下:每5行构成一道试题,其中第一行为试题的题干,以下4行为试题的4个选项,并且在正确选项的行首用“<T>”来标示。

考试完成后考生点击主界面上的“交卷”按钮,程序将自动计算考生的得分,并将得分发送给服务器,保存在服务器的*.sco 文件中,每门科目都有一个相应的文件,该文件的格式为: “学号:成绩”,如下:下列哪个单词不是Java 的关键字?privatelong<T>sizeofdouble下列哪个单词不能作为Java 的标示符?$abcabc_def<T>3def_abc... ... 1001:851002:77... ...为完成以上程序,定义以下包及类:1,客户端和服务器端的通信方式:(1)登录请求:客户端发送数据:学号、密码服务器端返回的数据:学生对象和当前能提供的考试科目列表(2)选择考试科目:客户端发送数据:科目名服务器端返回的数据:试卷对象(3)交卷:客户端发送数据:学号,科目,成绩服务器端返回的数据:成功与否的信息(4)退出:2,服务器端的文件:(1)若干试题库文件(corejava.exm)(2)若干科目的成绩文件(3)学生信息的文件3,服务器对文件的访问方式:(1)试题库文件:Paper getPaper(String 科目名);(2)学生信息的文件:Student getStudent(int id,String passwd); (3)成绩文件:addScore(int id,float score,String 科目);。

单项选择题考试标准化系统Word版

单项选择题考试标准化系统Word版

天津城市建设学院课程设计任务书2010—2011学年第1学期电子与信息工程系专业班级课程设计名称:数据结构课程设计设计题目:单项选择题考试标准化系完成期限:自 2012 年 1 月 2 日至 2012 年 1 月 6 日共 1 周一、设计目的熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。

二、设计要求(1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务;(2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭者与被抄袭者皆以零分计入本课程设计成绩。

凡发现实验报告或源程序雷同,涉及的全部人员皆以零分计入本课程设计成绩;(3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表;(4)认真编写课程设计报告。

三、设计内容单项选择题考试标准化系统设计一单项选择题标准化考试系统,实现考试的标准化管理。

实现试题录入。

试题抽取,答题和叛卷功能。

四、参考文献1.王红梅.数据结构.清华大学出版社2.王红梅.数据结构学习辅导与实验指导.清华大学出版社3.严蔚敏,吴伟民.数据结构(C语言版).清华大学出版社目录一需求分析 (3)该设计是设计一个单项选择题考试标准化系统,使用动态链表设计这个程,它的功能主要有: (3)二、概要设计 (3)1程序设计组成框图 (3)2程序流程框图 (4)三、详细设计 (5)算法的设计 (5)四、调试分析 (6)五、核心源程序清单和执行结果 (6)1源程序 (6)2执行结果 (12)六心得体会 (14)七参考文献 (14)一需求分析该设计是设计一个单项选择题考试标准化系统,使用动态链表设计这个程,它的功能主要有:(1)用文件保存试题库。

(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时增加试题到试题库中(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可实现输入自己的答案(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩二、概要设计1程序设计组成框图2.程序流程框图三、详细设计算法的设计主函数的实现:int main(){ char x;while(1){system("cls"); //清屏cout<<"+---------------------------------------------------------------------+"<<endl;cout<<" | 1.查看试题库 2.录入新的试题|"<<endl;cout<<"+---------------------------------------------------------------------+"<<endl;cout<<" | 3.清空试题库 4.随机抽取试题|"<<endl;cout<<"+---------------------------------------------------------------------+"<<endl;cout<<" | 5.做练习题 6.自动判卷|"<<endl;cout<<"+---------------------------------------------------------------------+"<<endl;cout<<" | 7.删除题目0.退出系统|"<<endl;cout<<"+---------------------------------------------------------------------+"<<endl;cout<<endl;cout<<" 请输入操作代码:";cin>>x;switch(x){case '1':read();system("pause");break;case '2':creat();write();break;case '3':clear();break;case '4':get();break;case '5':answer();break;case '6':mark();break;case '7':delet();break;default :cout<<"代码错误,请重输:"<<endl;system("pause");break;}}return 0;}一些重要的方法:void write() //录入文件void read() //从文件读取数据void get() //随机抽取试题void answer() //答题void mark() //评分四、调试分析每次进行抽取试题时就会出现错误,没法运行,后来发现只有先录入试题才能正常操作其他功能。

C单项选择题标准化考试系统

C单项选择题标准化考试系统

目录1.课程设计目的12.课程设计题目描述和要求1课程题目1课程要求13. 课程设计报告内容1算法描述1源程序 24.课程设计总结:65.参照书目 71课程设计目的练习自己的着手能力, 在学习理论的同时增强自己的编程能力, 使理论与实践相结合, 在学习书本的同时扩展自己的课外知识.2课程设计题目描述和要求课程题目单项选择题标准化考试系统课程要求〔一〕功能要求:〔1〕用文件保存试题库。

〔每个试题包括题干、 4 个备选答案、标准答案〕〔2〕试题录入:可随时增加试题到试题库中〔3〕试题抽取:每次从试题库中可以随机抽出N 道题〔 N由键盘输入〕(4〕答题:用户可实现输入自己的答案(5〕自动判卷:系统可依照用户答案与标准答案的对照实现判卷并给出成绩。

〔二〕其他要求:〔1〕只能使用C/C++语言,源程序要有合适的说明,使程序简单阅读(2〕最少采用文本菜单界面〔若是能采用图形菜单界面更好〕(3〕学生可自动增加新功能模块〔视情况可别的加分〕〔4〕写出课程设计报告,详尽要求见相关说明文档.3课程设计报告内容算法描述定义题目数组,选向数组,输入题目的及选向并给定正确答案。

输入所要答的题目数,尔后进行答题。

输入的答案与标准答案进行比较,若是一致,那么正确,否那么错误。

最后依照题目数及答对题目数进行输出得分。

源程序#include <iostream>#include <fstream>#include ""using namespace std;struct question {char ask[200];/*选择题题目*/char answer[4][80];/*选择题选项*/int right;/*正确答案*/struct question *next;};。

标准化考试系统

标准化考试系统

课程报告课程名称:程序设计实践专业班级:物联网1502班学生姓名:杨凯学号: 201516070207任课教师:张继新学期:2015-2016年第一学期课程报告任务书成绩评定教师:1 需求分析该系统包括以下功能:1.进行随机答题并判卷2.显示试题所有内容3.插入试题4.添加试题5.自主选题并判卷6.修改试题7.删除试题8.退出系统2 概要设计2.1整体框架图图2-1-2.2 自定义函数3 详细设计3.1 添加试题Status AddNode(int &N) //添加试题内容{printf("如果不添加了试题了,在题目输入“*”结束!\n");while(1){printf("请输入所要插入题题目、题干和选项:\n");printf("请输入题目:");gets(Testquestions[N].subject);if(strcmp(Testquestions[N].subject,"*")==0) break;printf("请输入选项A:");gets(Testquestions[N].option1);printf("请输入选项B:");gets(Testquestions[N].option2);printf("请输入选项C:");gets(Testquestions[N].option3);printf("请输入选项D:");gets(Testquestions[N].option4);printf("请输入答案:");scanf("%c",&Testquestions[N].result);getchar();N++; //N表示结构体数组长度,通过加&号使其值能返回}return TRUE;}3.2 修改试题Status Change(int &N){int m,i;printf("请输入您要修改第几题?\n");scanf("%d",&m);getchar(); //吸收空格字符for(i=0;i<N;i++){if(i==(m-1)){printf("请输入新的题目:");gets(Testquestions[m-1].subject);printf("请输入新的选项A:");gets(Testquestions[m-1].option1);printf("请输入新的选项B:");gets(Testquestions[m-1].option2);printf("请输入新的选项C:");gets(Testquestions[m-1].option3);printf("请输入新的选项D:");gets(Testquestions[m-1].option4);printf("请输入新的答案:");scanf("%c",&Testquestions[m-1].result);getchar();break;}}if(m>N)printf("修改试题失败!\n");elseprintf("修改试题成功!\n");return TRUE;}3.3 删除试题Status DeleteNode(int &N) //删除数组中的第n道题{int n;printf("输入你想是删除第几道试题:\n");scanf("%d",&n);if(n>N){printf("删除不成功\n");return ERROR;}while(n<=N){Testquestions[n-1]=Testquestions[n];n++;}N=N-1;printf("删除成功\n");return TRUE;}3.4 随机选题并判题void answer(int sum,int N) //随机进行答题{int i,score=0,Num;char r;for(i=1;i<=sum;i++){Num= rand()%N; //随机函数,以随机选定何题进行解答 printNode(Testquestions[Num],i);printf("\n");printf("\n请输入第(%d)答案:",i);scanf("%c",&r);getchar();if(Match(Testquestions[Num],r)) //调用函数Match判断所输入的答案与标准答案是否相同{ printf("\n答案正确!\n");score++;}else {printf("\n答案错误!\n");printf("正确答案为:%c\n",Testquestions[Num].result);}}printf("\n你的总成绩为:%d\n",score);}3.5 自主选题并判题void Otheranswer(int N,int s){int i,score=0,k;char m;for(i=1;i<=s;i++){printf("输入要选择第几题?\n");scanf("%d",&k);while(k<=0||k>N){printf("输入的题号在题库中不存在!\n");printf("\n请重新输入正确的题号:");scanf("%d",&k);}printNode(Testquestions[k-1],i);printf("\n请输入(%d)答案:",i);getchar();scanf("%c",&m);getchar();if(m==Testquestions[k-1].result){printf("答案正确!\n");score++;}else{printf("答案错误!\n");printf("正确答案为:%c\n",Testquestions[k-1].result);}}printf("总分为:%d\n",score);}3.6登陆考试系统函数{FILE *fp1;int a,c,num,flag=1;int i=0;char Mima[20]="\0",b[20];printf("\t\t\t1 进入登录\n");printf("\n\t\t\t2 进入注册\n");scanf("%d",&c);while(flag){if(c<1||c>2){printf("\n请输入正确的选项!\n");scanf("%d",&c);flag=1;}elseflag=0;}if(c==2){printf("请注册:\n");Zhuce();}else{if((fp1=fopen("student.txt","rb"))==NULL) {printf("打开文件失败!");exit(0);}printf("请输入学号:");scanf("%d",&num);printf("请输入密码");while((c=getch())!='\r'){Mima[i]=c;i++;if(c!='\b')printf("*");elseprintf("\b\b");}rewind(fp1);while(!feof(fp1)){fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a==num&&strcmp(b,Mima)==0)break;}while(a!=num||strcmp(b,Mima)!=0){i=0;printf("\n错误,重新输入:\n");printf("请输入学号:");scanf("%d",&num);printf("请输入密码");while((c=getch())!='\r'){Mima[i]=c;i++;if(c!='\b')printf("*");elseprintf("\b\b");}rewind(fp1);while(!feof(fp1)){fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a==num&&strcmp(b,Mima)==0)break;}}printf("\t\t欢迎登陆单选题标准化考试系统!\n");system("pause");getchar();printf("\n");if(fclose(fp1)){printf("关闭文件失败!\n");exit(0);}}}*源代码#include <stdio.h>#include <stdlib.h>#include<string.h>#include<conio.h>#define TRUE 1#define ERROR 0#define MAX 30typedef int Status;typedef struct{char option1[30],option2[30],option3[30],option4[30],subject[150];char result;int q;}TestNode;TestNode Testquestions[MAX];Status SaveNode(int N) //把结构体数组保存到文件"cheng"中,如成功保存返回TRUE,否则返回ERROR{ int i;FILE *fp;if((fp=fopen("cheng","wb"))==NULL)return ERROR;for(i=0;i<N;i++)fwrite(&Testquestions[i],sizeof(TestNode),1,fp);fclose(fp);return TRUE;}Status ReadNode(int N) //从文件读出结构体数组的内容,如成功读取返回TRUE,否则返回ERROR{ FILE *fp;int i=0;if((fp=fopen("cheng","rb"))==NULL)return ERROR;while(!feof(fp)) // 用feof检测文件是否结束,如果结束,返回正确{ fread(&Testquestions[i],sizeof(TestNode),1,fp);i++;}N=i-1;return TRUE;}void Zhuce(){void Denglu();int i,m;i=0;char n[20]="\0",c;FILE *fp1;if((fp1=fopen("student.txt","ab"))==NULL) {printf("打开文件失败!\n");exit(0);}printf("请注册学号:");scanf("%d",&m);fprintf(fp1,"%d ",m);printf("请设置密码(20字符以内):");while((c=getch())!='\r'){n[i]=c;i++;if(c!='\b')printf("*");elseprintf("\b\b");}fprintf(fp1,"%s\n",n);if(fclose(fp1)){printf("关闭文件失败!\n");exit(0);}printf("\n");printf("\t\t\t注册完成!\n");Denglu();}void Denglu(){FILE *fp1;int a,c,num,flag=1;int i=0;char Mima[20]="\0",b[20];printf("\t\t\t1 进入登录\n");printf("\n\t\t\t2 进入注册\n");scanf("%d",&c);while(flag){if(c<1||c>2){printf("\n请输入正确的选项!\n");scanf("%d",&c);flag=1;}elseflag=0;}if(c==2){printf("请注册:\n");Zhuce();}else{if((fp1=fopen("student.txt","rb"))==NULL) {printf("打开文件失败!");exit(0);}printf("请输入学号:");scanf("%d",&num);printf("请输入密码");while((c=getch())!='\r'){Mima[i]=c;i++;if(c!='\b')printf("*");elseprintf("\b\b");}rewind(fp1);while(!feof(fp1)){fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a==num&&strcmp(b,Mima)==0)break;}while(a!=num||strcmp(b,Mima)!=0){i=0;printf("\n错误,重新输入:\n");printf("请输入学号:");scanf("%d",&num);printf("请输入密码");while((c=getch())!='\r'){Mima[i]=c;i++;if(c!='\b')printf("*");elseprintf("\b\b");}rewind(fp1);while(!feof(fp1)){fscanf(fp1,"%d",&a);fscanf(fp1,"%s",&b);if(a==num&&strcmp(b,Mima)==0)break;}}printf("\t\t欢迎登陆单选题标准化考试系统!\n");system("pause");getchar();printf("\n");if(fclose(fp1)){printf("关闭文件失败!\n");exit(0);}}}Status AddNode(int N) //添加试题内容{printf("如果不添加了试题了,在题目输入“*”结束!\n");while(1){printf("请输入所要插入题题目、题干和选项:\n");printf("请输入题目:");gets(Testquestions[N].subject);if(strcmp(Testquestions[N].subject,"*")==0) break;printf("请输入选项A:");gets(Testquestions[N].option1);printf("请输入选项B:");gets(Testquestions[N].option2);printf("请输入选项C:");gets(Testquestions[N].option3);printf("请输入选项D:");gets(Testquestions[N].option4);printf("请输入答案:");scanf("%c",&Testquestions[N].result);printf("请输入试题难度:");scanf("%d",&Testquestions[N].q);getchar();N++; //N表示结构体数组长度,通过加&号使其值能返回}return TRUE;}void printNode(TestNode p,int n) //输出第n道题题目{printf("(%d) ",n);printf("%s\n",p.subject);printf(" A %s ",p.option1);printf(" B %s \n",p.option2);printf(" C %s ",p.option3);printf(" D %s ",p.option4);printf(" 试题难度为:%d\n",p.q);}Status Change(int m){int i;printNode(Testquestions[m-1],m);printf("\n");printf("修改题目请按 1\n");printf("修改选项A请按 2\n");printf("修改选项B请按 3\n");printf("修改选项C请按 4\n");printf("修改选项D请按 5\n");printf("修改标准答案请按 6\n");printf("修改试题难度请按 7\n");scanf("%d",&i);getchar(); //吸收空格字符switch(i){case 1: printf("\n请输入新的题目:");gets(Testquestions[m-1].subject);break;case 2:printf("请输入新的选项A:");gets(Testquestions[m-1].option1);break;case 3: printf("请输入新的选项B:");gets(Testquestions[m-1].option2);break;case 4:printf("请输入新的选项C:");gets(Testquestions[m-1].option3);break;case 5:printf("请输入新的选项D:");gets(Testquestions[m-1].option4);break;case 6:printf("请输入新的答案:");scanf("%c",&Testquestions[m-1].result);break;case 7:printf("请输入新的试题难度:");scanf("%d",&Testquestions[m-1].q);break;default:printf("请输入正确的修改选项\n");break;}return TRUE;}Status InsertNode(int N){int i,j,P;printf("输入要插入到第几题?\n");scanf("%d",&i);getchar();N=N+1;for(j=N-1;j>=(i-1);j--){Testquestions[j]=Testquestions[j-1];}printf("请输入题目:");gets(Testquestions[i-1].subject);printf("请输入选项A:");gets(Testquestions[i-1].option1);printf("请输入选项B:");gets(Testquestions[i-1].option2);printf("请输入选项C:");gets(Testquestions[i-1].option3);printf("请输入选项D:");gets(Testquestions[i-1].option4);printf("请输入答案:");scanf("%c",&Testquestions[i-1].result);printf("请输入试题难度:");scanf("%d",&Testquestions[i-1].q);getchar();return TRUE;}Status DeleteNode(int N) //删除数组中的第n道题{int n;printf("输入你想是删除第几道试题:\n");scanf("%d",&n);if(n>N){printf("删除不成功\n");return ERROR;}while(n<=N){Testquestions[n-1]=Testquestions[n];n++;}N=N-1;printf("删除成功\n");return TRUE;}Status Match(TestNode p,char m) //判断m是否为p题目的答案,若是返回TRUE,否则返回ERROR{if(m==p.result)return TRUE;elsereturn ERROR;}void answer(int sum,int N) //随机进行答题{int i,score=0,Num;char r;for(i=1;i<=sum;i++){Num= rand()%N; //随机函数,以随机选定何题进行解答 printNode(Testquestions[Num],i);printf("\n");printf("\n请输入第(%d)答案:",i);scanf("%c",&r);getchar();if(Match(Testquestions[Num],r)) //调用函数Match判断所输入的答案与标准答案是否相同{ printf("\n答案正确!\n");score++;}else {printf("\n答案错误!\n");printf("正确答案为:%c\n",Testquestions[Num].result);}}printf("\n你的总成绩为:%d\n",score);}void Otheranswer(int N,int s){int i,score=0,k,j,y;char m;for(i=1;i<=s;i++){printf("输入试题难度\n");scanf("%d",&k);while(k<0||k>2){printf("题库中没有该难度的试题!\n");printf("\n请重新输入试题难度:");scanf("%d",&k);}for(j=0;j<N;j++){if(y==j)continue;if(Testquestions[j].q==k){printNode(Testquestions[j],i);printf("\n请输入(%d)答案:",i);getchar();scanf("%c",&m);getchar();if(Match(Testquestions[j],m)){printf("答案正确!\n");score++;}else{printf("答案错误!\n");printf("正确答案为:%c\n",Testquestions[j].result);}break;}y=j;}}printf("总分为:%d\n",score);}void main(){char flag;int N=0,i,sum,m,s,score=0,chose,Chose=3;ReadNode(N);while(Chose<1||Chose>2){printf("\t\t\t请选择自己的类型\n");printf("\t\t\t1 学生端口\n");printf("\t\t\t2 教师端口\n");scanf("%d",&Chose);}system("cls");switch(Chose){case 1:Denglu();system("cls");while(1){printf("\t\t\t单项选择题标准化考试系统进行答题\n ");printf("\t\t\t1 进行随机答题并判卷\n");printf("\t\t\t2 自主选题并判卷\n");printf("\t\t\t3 退出系统\n");scanf("%d",&chose);getchar();switch(chose){case 1:system("cls");ReadNode(N);printf("请输入试题的总题数:");scanf("%d",&sum);getchar();if(N==0){printf("对不起,题库中没有试题!\n");printf("按任意键回到菜单!\n");getchar();}elseanswer(sum,N);getchar();break;case 2:system("cls");ReadNode(N);printf("请输入试卷的总题数:");scanf("%d",&s);Otheranswer(N,s);getchar();break;case 3:printf("你将退出系统(Y or N)?");scanf("%c",&flag);getchar();if(flag=='Y'||flag=='y') exit(0);system("cls");break;default:printf("请输入正确选择!\n");}}case 2:printf("\t\t\t欢迎进入教师题库管理\n");while(1){printf("\t\t\t单项选择题标准化考试系统\n "); printf("\n");printf(" \t\t\t1 显示所有试题内容\n");printf(" \t\t\t2 添加试题\n");printf(" \t\t\t3 修改试题\n");printf(" \t\t\t4 删除试题\n");printf(" \t\t\t5 插入试题\n");printf(" \t\t\t6 退出系统\n");scanf("%d",&chose);getchar();switch(chose){case 1:system("cls");ReadNode(N);if(N==0){printf("题库中没有试题!\n");printf("按任意键回到菜单!\n");getchar();}for(i=1;i<=N;i++){ printNode(Testquestions[i-1],i);printf("\n");}break;case 2:system("cls");ReadNode(N);AddNode(N);if(SaveNode(N))printf("试题添加成功!\n");elseprintf("试题添加失败!\n");break;case 3:system("cls");printf("请输入您要修改第几题?\n");scanf("%d",&m);ReadNode(m);Change(m);if( SaveNode(m))printf("修改成功\n");elseprintf("修改失败");break;case 4:system("cls");ReadNode(N);DeleteNode(N);SaveNode(N);break;case 5:system("cls");ReadNode(N);InsertNode(N);if(SaveNode(N))printf("插入试题成功\n");elseprintf("插入试题失败\n");break;case 6:printf("你将退出系统(Y or N)?");scanf("%c",&flag);getchar();if(flag=='Y'||flag=='y') exit(0);system("cls");break;default:printf("请输入正确选择!\n");}}}}4 调试分析在添加函数InsertNode中,在添加试题的过程中,不知道怎么在一个循环中不断添加试题,最后通过在c语言书中,看到用一个‘*’作为结束标志来结束试题的添加,用一个while循环实现了添加功能。

选择题考试系统运行方法

选择题考试系统运行方法

选择题考试系统运行方法
1.双击“选择题考试系统”,在屏幕的左侧中央会有一个“安全警告”,点击“安全警告”
右侧的“选项”〔见下图〕;
2.击“确定”;
3.再点击下图所示中的“运行程序”;
4.在下图界面中,点击“下拉按钮”,选择专题;
5.选择完专题后,再输入“每题分数”和“总答题数”两个参数:
〔假如选择的是“理综专题”,那么直截了当到第7步〕
6.出现下图所示,就能够用鼠标点击“对应选项”来作答,作答完毕,点击“完成”按钮。

7.用鼠标选中对应选项,然后点击“完成”按钮,软件会自动评判“正确”、“错误”,并
给出该题正确答案、总得分、得分率,见下图:
8.点击“下一题”按钮,自动出现下一道题目,接着答卷即可。

9.本系统适用于所有学科,只要改变题库即可!多项选择也行!
〔按照试题模板和答案模板排版,不要改变页面模式,一道题占用一页,答案和试题要
一一对应!然后将试题和答案一起发给我,打包后,即可使用!〕。

标准化题库系统

标准化题库系统

标准化题库系统本系统的功能是比较完善的题库系统,其功能包括:题库维护系统、随机组卷系统、人工成卷系统、自动评分系统(如图所示)。

本系统是利用VB做前台操作工作,并且用Access做后台数据库。

数据定义:表choose字段:题型、题号、卷号、程度、题文、答案A、答案B、答案C、答案D、正确答案、分值表FillBlank字段:题型、题号、卷号、题文、正确答案、分值表Examinition字段:题型、题号、卷号、题文、分值系统功能介绍:1、题库维护系统:该系统是针对题库管理人员而开发的,在不知道系统密码时是无法进入的,本系统包括了题文的录入、题文的查找、题文的删除和修改。

2、交互成卷:、该系统是本软件的主要的功能的体现,它是针对考生而开发的,主要包括人工成卷和随机成卷。

人工成卷是为了在题文不能满足考生和出题人员的需要而开发的,人工选题最大的好处是不受分值和难易程度的限制,可以人为定义。

随机成卷是系统根据题库中的卷号随机生成的题文。

3、评分系统:该系统是为了方便考生答完题时能够及时的得到自已的学习成果而开发出来的。

它是通过将考生的答案记录到一个数组中,然后通过与题库中的对应的题文的正确答案相比较,然后根据题文的分值对考生的答案做出相应的评分。

开发流程:启动登陆对话框选择登陆系统,进入题库维护系统可以对题库进行维护。

进入考试系统可以看到如右图所示,用户可以通过选择各选项来完成所需要的功能。

固定抽题:是通过提示的卷号范围输入数值来选择试卷。

随机抽题:是通过系统调用如下的随机代码来完成抽题的。

代码如下:'生成随机数,用于产生卷号i = Int(Rnd() * 1000)If i <> 0 Thenk = i Mod 10If k > numJH Thenk = i Mod numJHEnd IfEnd If重复抽题和恢复现场在未做题(第一次做题时)是不可用的,当抽完题后在评完分后如果想对试题再次的进行了解,可以选重复抽题。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

沈阳航空航天大学课程设计任务书系:专业:班级:学号:题目:选择题标准化考试系统1一、课程设计时间2011 ~12第3学期第4周,即9月19日~9月25日,共计1周,20学时。

二、课程设计内容一些《大学计算机基础》选择题目及其答案,作为考试题库保存在文件file08.txt中,数据格式为:题号,问题,选项A,选项B,选项C,选项D,答案。

请写程序模拟考试,程序具有如下的功能:(1)试题追加:可随时增加试题到试题库中。

(2)试题修改:可随时修改试题库中的试题。

(3)考试功能:每次显示1题,随机从试题库中抽出指定数量题目(由操作者输入,例如5题,抽题不能重复。

)。

(4)判卷功能:指定数量题目作完后,给出总分(满分100分)。

三、课程设计要求1.贯彻结构化程序设计思想。

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

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

4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。

四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (3)三、主要界面截图 (4)四、技术要点 (7)五、个人总结 (10)六、参考文献 (11)七、源程序 (11)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。

该系统是一个较典型的应用系统,系统应该具有安全、稳定、功能齐全的特点。

1. 安全性分析系统可以对程序中的试题进行修改,增加防止遗漏丢失。

2. 稳定性分析指系统比较健壮,只要是用户的合理操作,系统都应给出合理正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。

3. 主要功能分析(1)数据输入:允许用户输入试题,对试题进行修改,输入所选试题答案,对用户由于疏忽录入的非法数据,能够及时提示并更正。

(2)数据保存:对于输入的数据,或被修改的数据应该保存到某个磁盘文件中,实现永久存储。

不管采用哪种文件形式,文件中的数据应有固定的格式,以便于程序自动读取或人工阅读。

(3)数据输出:用户选择试题进行作答,系统可以给出正确答案和考试得分。

二、设计分析1、从键盘输入问题及其选项,并将其保存到file08.txt文件中。

2、能够对试题进行修改,增加并进行保存。

3、能够实现答题和自动判卷功能。

1、程序总体结构图(传统流程图或N-S框图)图1程序总体结构图三、主要界面截图图1 程序主界面图2 程序主界面图3 试题增加界面图4试题修改界面四、技术要点1、结构体的应用定义了结构体用来描述学生的姓名、学号、班级以及三门课程成绩。

具体的定义如下:typedef struct{charxuanxiang1[30],xuanxiang2[30],xuanxiang3[30],xuanxiang4 [30],Timu[150];char result;}TestNode;//类型,类似于intTestNode Wenti[MAX];//定义结构体数组bool SaveTitle(int N) //把结构体数组保存到文件"chen"中,如成功保存返回TRUE,否则返回ERROR2、文件操作包括了文件的写入和读取两个方面。

文件的写入操作,用于保存录入的学生数据,也用于保存所修改的数据。

例如如下程序段用于增加保存修改试题。

bool InsertTitle(int &N) //增加试题内容{if(N>MAX)return ERROR;elseprintf("请输入所要增加题题目、题干和选项:\n");printf("请输入题目:");gets(Wenti[N].Timu);printf("请输入选项A:");gets(Wenti[N].xuanxiang1);printf("请输入选项B:");gets(Wenti[N].xuanxiang2);printf("请输入选项C:");gets(Wenti[N].xuanxiang3);printf("请输入选项D:");gets(Wenti[N].xuanxiang4);printf("请输入答案:");scanf("%c",&Wenti[N].result);getchar();N++; //N表示结构体数组长度,通过加&号使其值能返回值return TRUE;}bool AlterTitle(int n)//修改数组中的第n个元素{printf("请输入所要修改的题目的题号:\n");printf("请输入题目:");gets(Wenti[n].Timu);printf("请输入选项A:");gets(Wenti[n].xuanxiang1);printf("请输入选项B:");gets(Wenti[n].xuanxiang2);printf("请输入选项C:");gets(Wenti[n].xuanxiang3);printf("请输入选项D:");gets(Wenti[n].xuanxiang4);printf("请输入答案:");scanf("%c",&Wenti[n].result);getchar();return (n);}五、个人总结通过一周的课程设计学习,使我了解了C语言的更多应用。

也学会了一些小系统的制作。

更多的则是发现了自己的不足。

首先,我感觉到了C语言程序的应用之广泛,许多东西都可以用它来编写,但也有些时候用它来编写程序很麻烦,程序很长,花费的时间也很多。

其次,在编写程序的时候,许多基础的东西自己动不太了解,编写程序就感觉特别的费劲,很多时候程序写出来,却有许多错误,但是自己却找不出原因,很多时候都要从头扁起,很是浪费时间。

所以我觉得自己应该加强C 语言的学习,同时更多的了解C语言程序设计的知识。

六、参考文献1 谭浩强.C程序设计.北京:清华大学出版社,20052 C语言精彩编程百例/温海等编著. –北京:中国水利水电出版社,2003.3 陈振安、李鑫. C语言学习手册/明日科技----北京:电子工业出版社,2011.4.七、源程序#include <stdio.h>#include <stdlib.h>#define TRUE 1#define ERROR 0#define MAX 30typedef struct{charxuanxiang1[30],xuanxiang2[30],xuanxiang3[30],xuanxiang4[30],Timu[ 150];char result;}TestNode;//类型,类似于intTestNode Wenti[MAX];//定义结构体数组bool SaveTitle(int N) //把结构体数组保存到文件"chen"中,如成功保存返回TRUE,否则返回ERROR{int i;FILE *fp;if((fp=fopen("chen","wb"))==NULL) return ERROR;//wb:只写,打开二进制文件,w:只写,打开一个文件for(i=0;i<N;i++)fwrite(&Wenti[i],sizeof(TestNode),1,fp);//把数据项写到指定文件,fwrite一般形式fwrite(buffer,size,count,fp),buffer是一个指针,输出数据的地址,size是要读写的字节数,count是要进行读写多少个size字节的数据项,fp是文件型指针fclose(fp);return TRUE;}bool ReadTitle(int &N) //从文件读出结构体数组的内容,如成功读取返回TRUE,否则返回ERROR{FILE *fp;int i=0;if((fp=fopen("chen","rb"))==NULL) return ERROR;while(!feof(fp))// 用feof检测文件是否结束,如果结束,返回正确,feof为0,结束{fread(&Wenti[i],sizeof(TestNode),1,fp);//从指定文件中读取数据项i++;}N=i-1;return TRUE;}void InputTitle(int N)// 输入N道试题数据{int i;for(i=0;i<N;i++){printf("请输入第%d道题题目、题干和选项:\n",i+1);//输入结构体元素内容printf("请输入题目:");gets(Wenti[i].Timu);printf("请输入选项A:");gets(Wenti[i].xuanxiang1);// gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束printf("请输入选项B:");gets(Wenti[i].xuanxiang2);printf("请输入选项C:");gets(Wenti[i].xuanxiang3);printf("请输入选项D:");gets(Wenti[i].xuanxiang4);printf("请输入答案:");scanf("%c",&Wenti[i].result);getchar();system("cls");//清屏,其必须包含头文件#include <stdlib.h> 其作用是清楚屏幕先前的显示内容}}bool InsertTitle(int &N) //增加试题内容{if(N>MAX)return ERROR;elseprintf("请输入所要增加题题目、题干和选项:\n");printf("请输入题目:");gets(Wenti[N].Timu);printf("请输入选项A:");gets(Wenti[N].xuanxiang1);printf("请输入选项B:");gets(Wenti[N].xuanxiang2);printf("请输入选项C:");gets(Wenti[N].xuanxiang3);printf("请输入选项D:");gets(Wenti[N].xuanxiang4);printf("请输入答案:");scanf("%c",&Wenti[N].result);getchar();N++; //N表示结构体数组长度,通过加&号使其值能返回值return TRUE;}bool AlterTitle(int n)//修改数组中的第n个试题{printf("请输入所要修改的题目的题号:\n");printf("请输入题目:");gets(Wenti[n].Timu);printf("请输入选项A:");gets(Wenti[n].xuanxiang1);printf("请输入选项B:");gets(Wenti[n].xuanxiang2);printf("请输入选项C:");gets(Wenti[n].xuanxiang3);printf("请输入选项D:");gets(Wenti[n].xuanxiang4);printf("请输入答案:");scanf("%c",&Wenti[n].result);getchar();return (n);}void printTitle(TestNode p,int n)//输出第n道题题目{printf("(%d) ",n);printf("%s\n",p.Timu);printf(" A %s ",p.xuanxiang1);printf(" B %s \n",p.xuanxiang2);printf(" C %s ",p.xuanxiang3);printf(" D %s ",p.xuanxiang4);}bool Match(TestNode p,char m)//判断m是否为p题目的答案,若是返回TRUE,否则返回ERROR{if(m==p.result) return TRUE;elsereturn ERROR;}void answer(int sum)//进行答题{int i,score=0,Num;char r;for(i=1;i<=sum;i++){Num= rand()%sum; //随机函数,以随机选定何题进行解答printTitle(Wenti[Num],Num+1);printf("\n请输入答案:");scanf("%c",&r);getchar();if( Match(Wenti[Num],r)) //调用函数Match判断所输入的答案与标准答案是否相同{printf("\n答案正确!\n");score++;}else printf("\n答案错误!\n");}printf("\n你的总成绩为:%d\n",25*score);}void main(){char flag='N';int N=0,i, sum,score=0,chose;printf("输入想建立的题目文件题目数:");scanf("%d",&N);getchar();//存储回车键InputTitle(N);ReadTitle(N);while(flag=='N'||flag=='n'){printf(" ***********************欢迎来到***************\n"); printf("|***************单项选择题标准化考试系统****************|\n ");printf("\n");printf("(1) *_* 进行答题并判卷*_*\n");printf("(2) *_* 增加试题*_*\n");printf("(3) *_* 保存到文件*_*\n");printf("(4) *_* 修改试题*_*\n");printf("(5) *_* 退出系统*_*\n");printf("-------------请选择-----------:");scanf("%d",&chose);getchar();switch(chose){case 1:system("cls");printf("*************************************\n");printf("请输入你想要的答题数目:");scanf("%d",&sum);getchar();if(sum>N)printf("试题库没有你想要答题的数目!\n");printf("请输入你想要的答题数目:");scanf("%d",&sum);getchar();answer(sum);break;case 2:system("cls");InsertTitle(N);break;case 3:system("cls");if(SaveTitle(N))printf("保存成功!\n");else printf("保存失败!\n");break;case 4:system("cls");AlterTitle(N);printf("修改成功!\n");break;case 5:printf("你将退出系统(Y or N)?"); scanf("%c",&flag);getchar();if(flag=='Y'||flag=='y')exit(0);system("cls");break;default:printf("请输入正确选择!\n");}}}。

相关文档
最新文档