标准化考试系统C语言版
实用标准化考试系统C语言版
课程报告课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:唐建国学期:2013-2014学年第二学期成绩评定教师:目录目录 (1)1 需求分析 (2)2 系统设计 (2)2.1.数据结构设计 (2)2.2.功能模块设计 (3)2.2.1:主菜单模块 (3)2.2.2:教师菜单模块 (4)2.2.3:学生菜单模块 (4)3 系统实现及关键代码 (5)3.1基本功能 (5)3.1.1菜单设计 (5)3.1.2文件读写 (7)3.1.3删除题目信息 (8)3.2拓展功能 (9)3.2.1密码设计 (9)3.2.2考试函数 (9)4系统演示 (10)4.1基本功能 (10)4.1.1文件读写功能 (10)4.1.2插入题目功能 (11)4.2拓展功能 (11)4.2.1密码功能 (11)4.2.2考试功能 (12)5总结 (13)5.1系统缺陷与不足 (13)5.2系统可扩展功能 (13)6课程心得总结 (14)参考书籍: (14)1 需求分析根据程序要求分析,我们认为整个程序应该分为4个大块,其中包括主函数以及其他功能函数:注册登录模块,学生操作模块,教师操作模块。
各个模块又利用小模块实现小功能划分,教师操作模块由创建题库、插入题目、修改题目、删除题目、显示题目、题目排序、查询题目这7个模块组成,而其中查询题目又包含了题号查询、题目查询和模糊查询3个小模块;注册登录模块由4个函数完成对学生教师不同身份的注册及登录,学生登录后可以选择答题数量组成试卷考试并得到成绩。
通过这些模块的组合连接,就可以实现一个完整的标准化考试系统。
2 系统设计2.1.数据结构设计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 结构*/2.2.功能模块设计2.2.1:主菜单模块2.2.2:教师菜单模块2.2.3:学生菜单模块3 系统实现及关键代码3.1基本功能3.1.1菜单设计void denglu(){char id[81],password1[81]={NULL},password2[81]={NULL};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");//清屏switch(choice){case 1:printf("\n");printf(" 〒〒〒〒欢迎进入标准化考试系统注册账户界面:〒〒〒〒\n");printf(" ★★★★★★★★★welcome★★★★★★★★★\n");printf(" 1-----学生注册2-----教师注册\n");printf(" 3-----返回上一级0-----退出系统\n");printf("\n");printf("请选择注册模式:");scanf("%d",&choi);system("cls");//清屏switch(choi){case 1:printf("\n");printf(" 〒〒〒〒欢迎进入标准化考试系统学生注册界面:〒〒〒〒\n");printf(" ★★★★★★★★★welcome★★★★★★★★★\n");printf("请输入学生:");scanf("%s",&id);printf("请输入密码,密码长度最大为6:");strcpy(password1,GetPasswd());printf("\n请再次输入密码:");strcpy(password2,GetPasswd());if(strcmp(password1,password2)==0)Addstudent(id,password1);elseprintf("\n两次密码不一致,返回主菜单!\n");denglu();case 2:printf("\n");printf(" 〒〒〒〒欢迎进入标准化考试系统教师注册界面:〒〒〒〒\n");printf(" ★★★★★★★★★welcome★★★★★★★★★\n");printf("请输入教师:");scanf("%s",&id);printf("请输入密码,密码长度最大为6:");strcpy(password1,GetPasswd());printf("\n请再次输入密码:");strcpy(password2,GetPasswd());if(strcmp(password1,password2)==0)Addteacher(id,password1);elseprintf("\n两次密码不一致,返回主菜单!\n");denglu();case 3:denglu();case 0:printf("系统即将关闭!\n");exit(0);default :printf("无效选项!\n");denglu();}case 2:printf("\n");printf(" 〒〒〒〒欢迎进入标准化考试系统注册账户界面:〒〒〒〒\n");printf(" ★★★★★★★★★welcome★★★★★★★★★\n");printf(" 1-----学生登录2-----教师登录\n");printf(" 3-----返回上一级0-----退出系统\n");printf("\n");printf("请选择登录模式:");scanf("%d",&choi);system("cls");//清屏switch(choi){case 1:Student_login();case 2:Teacher_login();case 3:denglu();case 0:printf("系统即将关闭!\n");exit(0);default :printf("无效选项\n");denglu();}case 0:printf("系统即将关闭!\n");exit(0);default :printf("无效选项!\n");denglu();}}3.1.2文件读写/*-----------------------------------------------将链表写入文件--------------------------------------*/void fprint(struct text *head){FILE *fp;struct text *p1;if((fp=fopen("G:\\试题库.txt","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->a nswer4,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->a nswer4,&p1->ture);if(head==NULL)head=p1;elsetail->next=p1;tail=p1;}tail->next=NULL;fclose(fp);return head;}elsereturn NULL;}3.1.3删除题目信息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;}3.2拓展功能3.2.1密码设计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;}3.2.2考试函数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");printf("\n");score++;}else{printf("答案错误!\n");printf("正确答案为:%s\n",answer);printf("\n");}}printf("您的总成绩为:%d",score);}/*学生通过此函数对随机的试题进行答题并得到自己的成绩*/4系统演示4.1基本功能4.1.1文件读写功能4.1.2插入题目功能4.2拓展功能4.2.1密码功能4.2.2考试功能5总结5.1系统缺陷与不足这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。
c语言标准化考试系统课程设计解读
课程报告课程名称:标准化考试系统专业班级:学生姓名:学号:任课教师:学期:课程报告任务书成绩评定教师:1 需求分析设计一个标准化考试系统,让学生和老师都能登录。
老师可以输入试题、修改试题,学生可以答题、查分,实现不同功能。
2 概要设计int main()Int jiao_deng(struct jiaoshi su) /*教师登录验证*/void jiao_xin(struct jiaoshi su) /*将教师的用户信息存入文件*/ void jiao_xin(struct jiaoshi su) /*将教师的用户信息存入文件*/ void jiao_xun(struct tiku tm) /*教师验证通过后,可对题目进行修改*/ void jiao_zeng(struct tiku tm) /*在原有文件基础上,进行新增题目*/ Voidxiu_gai(struct tiku tm,int n) /*修改函数*/int xue_deng(struct xuesheng sb) /*学生登录验证*/void xue_xin(struct xuesheng sb) /*将学生的用户信息存入文件*/3 详细设计#include<stdio.h> #include<stdlib.h> #include<string.h> int count=0;struct jiaoshi{ //教师用户信息结构体 char username[20]; //用户名 char password[12]; //用户密码 }su;struct xuesheng{ //学生用户信息结构体 char username1[20]; //用户名 char password1[12]; //用户密码}sb;struct tiku{ //题库结构体 int nb; //题号 char tigan[100]; //题目内容 char option1[80]; //选项 char option2[80]; char option3[80]; char option4[80];char daan[10]; //答案 }tm;struct chaxun{ int num;char name[20];int chengji;}ch;void jiao_xin(struct jiaoshi su);void xue_xin(struct xuesheng su);void jiao_cha(struct tiku tm);void jiao_zeng(struct tiku tm);void xue_kaoshi(struct tiku tm);void xue_cha(struct chaxun ch,int chengji);void xue_chax(struct chaxun ch);void xue_hao(struct chaxun ch);void xing_ming(struct chaxun ch);void cheng_ji(struct chaxun ch);int xue_deng(struct xuesheng sb);int jiao_deng(struct jiaoshi su);void jiao_xun(struct tiku tm);void cha_tihao(struct tiku tm);void xiu_gai(struct tiku tm,int n);int main(){int choice,choice1,choice2;printf("\t\t\t欢迎进入标准化考试系统\n");printf("\t\t\t选择1:以学生身份登录\n");printf("\t\t\t选择2:以教师身份登录\n");printf("\t\t提示:如果你是第一次使用该系统,请先注册你的基本信息!\n");while(1){printf("\t\t\t请输入你的选择项:");scanf("%d",&choice);getchar();if(choice==1||choice==2)break;elseprintf("\t\t\t对不起,输入有误,请重新输入!\n");}if(choice==1)while(1){{printf("\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t选择1:注册!\n");printf("\t\t\t选择2:开始考试!\n");printf("\t\t\t选择3:成绩查询!\n");printf("\t\t\t选择0:退出\n");printf("\n");printf("\t\t\t请输入你的选择:");scanf("%d",&choice1);switch(choice1){case 1: xue_xin(sb); break; //调用文件,录入用户信息case 2: xue_kaoshi(tm); break; //调用函数,开始考试case 3: xue_chax(ch); break; //调用文件,查询信息case 0: return;}}}if(choice==2)while(1){{printf("\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t选择1:注册!\n");printf("\t\t\t选择2:查看题库中的题目\n");printf("\t\t\t选择3:向题库中增加题目\n");printf("\t\t\t选择4:对题库题目进行修改\n");printf("\t\t\t选择0:退出\n");printf("\t\t\t请输入你的选择:");scanf("%d",&choice2);switch(choice2){case 1:jiao_xin(su); break; //调用文件,录入用户信case 2:jiao_cha(tm); break; //调用文件开始录入题目case 3:jiao_zeng(tm); break; //调用文件,增加题目case 4:jiao_xun(tm); break; //调用文件,对题库进行修改case 0: return;}}}}void jiao_xin(struct jiaoshi su) /*将教师的用户信息存入文件*/{FILE *fp;int i;if((fp=fopen("g:\\标准化考试.txt","a"))==NULL){printf("文件打开有误!\n");exit(0);}for(i=1;i<=1;i++){printf("请输入第%d个用户的姓名和密码:",i);scanf("%s%s",ername,su.password);fprintf(fp,"%s %s\n",ername,su.password);}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void xue_xin(struct xuesheng sb) /*将学生的用户信息存入文件*/{FILE *fp;int i;if((fp=fopen("g:\\标准化考试.txt","a"))==NULL){printf("文件打开有误!\n");exit(0);}for(i=1;i<=1;i++){printf("请输入第%d个用户的姓名和密码:",i);scanf("%s%s",ername1,sb.password1);fprintf(fp,"%s %s\n",ername1,sb.password1);}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void jiao_cha(struct tiku tm) /*查看题库中的题目*/{FILE *fp;while(1){if(jiao_deng(su)==0){printf("\t\t对不起,用户名或密码错误!请重新输入!\n");}else{printf("\t\t*登录成功,现在可以查看试题了!*\n");break;}}if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}while(!feof(fp)){printf("\n");fscanf(fp,"%d %s %s %s %s %s %s",&tm.nb,tm.tigan,tm.option1,tm.opti on2,tm.option3,tm.option4,tm.daan);printf("%d%s\n",tm.nb,tm.tigan);printf("%s\n",tm.option1);printf("%s\n",tm.option2);printf("%s\n",tm.option3);printf("%s\n",tm.option4);printf("\n");printf("\t\t\t答案:%s\n",tm.daan);}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void jiao_zeng(struct tiku tm) /*在原有文件基础上,进行新增题目*/{FILE *fp;int i;int n;while(1){if(jiao_deng(su)==0){printf("\t\t对不起,用户名或密码错误!请重新输入!\n");}else{printf("\t\t*登录成功,欢迎使用*\n");break;}}printf("请输入本次要添加的题目个数n:");scanf("%d",&n);if((fp=fopen("g:\\标准化考试.txt","a"))==NULL){printf("文件打开有误!\n");exit(0);}for(i=1;i<=n;i++){printf("请输入题号:");scanf("%d",&tm.nb );printf("请输入第%d个题目的题干:\n",tm.nb);scanf("%s",tm.tigan );printf("请输入答案:\n");printf("A:");scanf("%s",tm.option1 );printf("B:");scanf("%s",tm.option2 );printf("C:");scanf("%s",tm.option3 );printf("D:");scanf("%s",tm.option4 );printf("请输入第%d个题目的答案:",tm.nb);scanf("%s",tm.daan );fprintf(fp,"%d %s %s %s %s %s %s\n",tm.nb,tm.tigan,tm.option1,tm.op tion2,tm.option3,tm.option4,tm.daan);}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void xue_kaoshi(struct tiku tm) /*读出文件,学生开始答题,并将成绩存入文件*/{FILE *fp;int i;int j,k;char s[10];int chengji=0;while(1){if(xue_deng(sb)==0){printf("\t\t对不起,用户名或密码错误!请重新输入!\n");}else{printf("\t恭喜你登陆成功,现在可以开始考试了!\n");break;}}if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}printf("\t\t##共有三种难度系数1-2-3##");printf("请选择难度系数:");scanf("%d",&j);if(j==1){k=10;}if(j==2){k=20;}if(j==3){k=30;}for(i=1;i<=k;i=i+j){printf("\n");fscanf(fp,"%d %s %s %s %s %s %s",&tm.nb,tm.tigan,tm.option1,tm.opti on2,tm.option3,tm.option4,tm.daan);printf("%d%s\n",tm.nb,tm.tigan);printf("%s\n",tm.option1);printf("%s\n",tm.option2);printf("%s\n",tm.option3);printf("%s\n",tm.option4);printf("\n");//printf("%s\n",tm.daan);printf("请输入你的选项:");scanf("%s",s);if(strcmp(tm.daan,s)==0)chengji=chengji+10;}printf("你的成绩是:%d\n",chengji);printf("\t\t为方便你以后查询成绩,请再次输入你的信息:\n");xue_cha(ch,chengji);if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void xue_cha(struct chaxun ch,int chengji) /*考试结束,将成绩录入文件*/{FILE *fp;int i;if((fp=fopen("g:\\标准化考试.txt","a"))==NULL){printf("文件打开有误!\n");exit(0);}/*printf("请输入你的学号和姓名:");scanf("%d %s ",&ch.num,);printf("请输入你本次考试的成绩:");*/printf("请输入你本次考试的成绩:");while(1){scanf("%d",&i);if(i==chengji)printf("请输入你的学号和姓名和成绩:");scanf("%d %s ",&ch.num,,&ch.chengji );fprintf(fp,"%d %s %d\n",ch.num,,chengji);break;}else{printf("\t\t对不起,你输入的成绩与本次考试成绩有误,请重新输入!");}}//fprintf(fp,"%d %s\n",ch.num,);if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void xue_chax(struct chaxun ch) /*成绩查询函数1.按学号2.按姓名3.按成绩*/{int choice;printf("\t\t\t选择1,按学号查询成绩\n");printf("\t\t\t选择2,按姓名查询成绩\n");printf("\t\t\t选择3,按成绩信息\n");printf("请输入你的选择:");scanf("%d",&choice);switch(choice){case 1:xue_hao(ch); break;case 2:xing_ming(ch); break;case 3:cheng_ji(ch); break;}}void xue_hao(struct chaxun ch) /*按学号查询成绩*/{FILE *fp;//int i;int num;int flag=0;if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}printf("请输入你的学号:");scanf("%d",&num);while(!feof(fp)){fscanf(fp,"%d%s%d",&ch.num,,&ch.chengji);if(num==ch.num){printf("学号:%d\t姓名:%s\t成绩:%d\n",ch.num,,ch.chengji);flag=1;break;}}if(flag==0){printf("对不起,没有找到,请检查你的输入是否正确!");}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void xing_ming(struct chaxun ch) /*按姓名查询成绩*/{FILE *fp;char name[20];int flag=0;if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}printf("请输入你的姓名:");scanf("%s",name);while(!feof(fp))fscanf(fp,"%d%s%d",&ch.num,,&ch.chengji);if(strcmp(name,)==0){printf("学号:%d\t姓名:%s\t成绩:%d\n",ch.num,,ch.chengji);flag=1;break;}}if(flag==0){printf("对不起,没有找到,请检查你的输入是否正确!");}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void cheng_ji(struct chaxun ch) /*按成绩查询信息*/{FILE *fp;int chengji;int flag=0;if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}printf("请输入你的成绩:");scanf("%d",&chengji);while(!feof(fp)){fscanf(fp,"%d%s%d",&ch.num,,&ch.chengji);if(chengji==ch.chengji){printf("学号:%d\t姓名:%s\t成绩:%d\n",ch.num,,ch.chengji);flag=1;}if(flag==0){printf("对不起,没有找到,请检查你的输入是否正确!");}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}int xue_deng(struct xuesheng sb) /*学生登录验证*/{FILE *fp;int flag=0;char name[20];char password[12];printf("\n");printf("\t\t>>>>>请先登录该系统<<<<<\n\n");printf("\t\t>>>>>请输入你的登录名和密码:");scanf("%s%s",name,password);if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}while(!feof(fp)){fscanf(fp,"%s%s",ername1,sb.password1);if(strcmp(name,ername1)==0&&strcmp(password,sb.password1)==0) {flag=1;break;}}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}return flag;}int jiao_deng(struct jiaoshi su) /*教师登录验证*/{FILE *fp;int flag=0;char name[20];char password[12];printf("\n");printf("\t\t>>>>>请先登录该系统<<<<<\n\n");printf("\t\t>>>>>请输入你的登录名和密码:");scanf("%s%s",name,password);if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}while(!feof(fp)){fscanf(fp,"%s%s",ername,su.password);if(strcmp(name,ername)==0&&strcmp(password,su.password)==0) {flag=1;break;}}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}return flag;}void jiao_xun(struct tiku tm) /*教师验证通过后,可对题目进行修改*/{int choice;while(1){if(jiao_deng(su)==0){printf("\t\t对不起,用户名或密码错误!请重新输入!\n");}else{printf("\t\t*登录成功,欢迎使用*\n");break;}}while(1){printf("\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t请选择按何种方式进行修改!\n");printf("\t\t选择1:按题号查找,并修改!\n");printf("\t\t选择2:输入部分题目内容查找并进行修改!\n");printf("\n");printf("\t\t\t请输入你的选择:");scanf("%d",&choice);switch(choice){case 1: cha_tihao(tm); break; //按题号查找,并修改case 2: return; //输入部分题目内容查找并进行修改!}}}void cha_tihao(struct tiku tm) /*先查询出题目,然后调用函数进行修改*/{int n;FILE *fp;int flag=0;printf("请输入你要修改的题目的题号:");scanf("%d",&n);if((fp=fopen("g:\\标准化考试.txt","r"))==NULL){printf("文件打开有误!\n");exit(0);}while(!feof(fp)){printf("\n");fscanf(fp,"%d %s %s %s %s %s %s",&tm.nb,tm.tigan,tm.option1,tm.option2,tm.option3,tm.option4,tm.daan);if(n==tm.nb){printf("%d%s\n",tm.nb,tm.tigan);printf("%s\n",tm.option1);printf("%s\n",tm.option2);printf("%s\n",tm.option3);printf("%s\n",tm.option4);printf("\t\t\t答案:%s\n",tm.daan);printf("\n");printf("%d",ftell(fp));flag=1;break;}}if(flag==0){printf("对不起,没有找到,请检查你的输入是否正确!");}if(flag==1)xiu_gai(tm,n);if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}void xiu_gai(struct tiku tm,int n) /*修改函数*/{FILE *fp;int i;if((fp=fopen("g:\\标准化考试.txt","a"))==NULL){printf("文件打开有误!\n");exit(0);}for(i=1;i<=1;i++){printf("请输入改后题目的题号:");scanf("%d",&tm.nb );printf("请输入改后题目的题干:\n");scanf("%s",tm.tigan );printf("A:\n");scanf("%s",tm.option1 );printf("B:\n");scanf("%s",tm.option2 );printf("C:\n");scanf("%s",tm.option3 );printf("D:\n");scanf("%s",tm.option4 );printf("请输入改后第题的答案:");scanf("%s",tm.daan );fprintf(fp,"%d %s %s %s %s %s %s\n",tm.nb,tm.tigan,tm.option1,tm.op tion2,tm.option3,tm.option4,tm.daan);}if(fclose(fp)){printf("无法关闭此文件!\n");exit(0);}}4 调试分析登录时,解决账号密码错误问题,修改试题后存入的问题。
标准化考试系统项目文档
标准化考试系统项目文档开发一套标准化考试系统,要求通过该系统完成多个科目的标准化考试工作。
考试开始时,考生在客户端机器上使用学号和密码登录进入考试系统,如下:所有考生的信息(包含学号,姓名和密码)在服务器端的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 科目);。
C语言考试系统操作手册(练习用)
图3:程序改错题界面
5、程序编写题界面:点击“编写程序”在右边输入框输入程
序,编完后点击“运行程序”可查看运行结果,如图4。
图4:程序编写题界面
五、交卷 • 单击交卷按钮后请耐心等待片刻,请 在此期间不要做其他操作。 • 练习系统可以查看到各大题的成绩。
图1:考试界面
3、程序填空题界面:直接在相应的空格填上答案即可,做完题
需要点击“确认答案”,通过“执行程序”可查看程序运行结 果是否正确,点击“还原题目”可清除考生答案,如图2。
图2:程序填空题界面
4、程序改错题界面:错误为“**found?**?下面的第一行代ห้องสมุดไป่ตู้
码,直接在相应的空格填入将正确代码,然后点击“确认答 案”。可以通过“执行程序”查看程序运行结果,点击“还 原题目”可清除考生答案。注意:答题时应该将错误的那一 行全部替换。如图3。
二、运行环境 硬件运行环境 主 机 PIV 2.6GHz相当或以上 内 存 512MB以上(含512MB) 显 卡 SVGA 彩显 硬盘空间 500MB以上可供考试使用的空间(含 500MB)
软件运行环境 操作系统: 平台支持:.Net 框架
Windows XP
三、考试时间 时间为90分钟。考试时间由系统自动进行 计时,提前5分钟自动报警来提醒考生应 及时存盘,考试时间用完,系统将自动锁 定计算机,考生将不能再继续考试。 正式考试时考生交卷后即不能再次进入考 试。 练习系统无限制答题次数。
四、答题方法 1、双击桌面上的“C语言考试测试系统”图 标,直接进入图1界面。(正式考试时需输 入相应的准考证号,同第一学期的计算机 基础I在线考试)
2、“考试主界面”窗口的功能有:显示题干部分,如单击“基本操作题 ”按钮就会显示“基本操作题”的题干部分,在单击其他按钮会显示其他 题目的题干,考生可直接答题。
C语言课程设计报告---单项选择题标准化考试系统
《C语言程序设计》课程设计题目:单项选择题标准化考试系统专业:计算机科学与技术班级:计科1001目录《C语言程序设计》课程设计 (1)1. 程序分析与设计 (3)2.流程图 (3)3. 源程序清单 (3)4.调试过程 (4)参考文献 (5)附录 (5)单项选择题标准化考试系统1. 程序分析与设计系统给用户提供一个简单的人机界面,使用户可以根据提示输入操作项,调用相关的函数实现对应的功能,主要功能描述如下:①用文件保存试题库:每个试题包括题干、4个备选答案、标准答案,本模块的功能是将单链表中的信息存储到文本文件中,系统将提示用户输入文本文件名,确认后单链表中的信息存储到文本文件中;②试题抽取:从磁盘读取文本文件,可以随机的从中选取N个题目并显示出来给用户进行测验,每次从试题库中可以随机抽出N道题(N由键盘输入);③自动判卷:用户答完所选的题目后,系统可根据用答题户答案与标准答案的对比实现判卷并给出成绩;④试题录入:用户可以随时增加试题到试题库中,根据提示输入题目的主干、四个基本选项和一个标准答案;⑤退出:退出系统;⑥系统主控平台:显示该系统可以进行的操作选项,允许用户进行其想要进行的操作,包括添加试题信息、随机抽取试题、保存到文件和退出系统等;总体设计:1)添加试题(add()函数)首先建立单链表,调用input_exam()函数输入试题的基本信息,将用户输入试题的基本信息储存到单链表中,提示用户是否继续输入,用户输入“Y”或“y”,则调用add()函数实现继续添加试题的操作;用户输入“”或“”,则返回主菜单界面。
2)随机抽取试题(ran_choice()函数)首先用typedef定义试题的结构体类型的全局变量ran及rans,从键盘输入,将该数及单链表的头指针传给ran_choice()函数,调用rand()随机数产生函数及srand(seed)设置一个独特的随机数种子,运用for()循环产生N个随机数,根据指针运算从单链表中取出N个试题的信息并显示出来。
《标准化考试系统》课件
3
功能设计
根据考试流程和需求设计系统的各项功能和操作。
标准化考试系统的主要功能
1 考试管理
包括考生信息管理、考试安排和监考安排等 考试相关的管理功能。
2 成绩管理
记录和计算考生的得分,并提供成绩查询和 报告功能。
3 数据分析
通过数据统计和分析,帮助教育机构和招聘 机构做出更好的决策。
4 用户管理
管理系统的用户账号和权限,确保系统的安 全性和可控性。
标准化考试系统的应用场景
教育培训机构
用于教育培训机构内部考试和 招生考试,提供公平、公正和 可靠的评估和录取流程。
企业招聘
帮助企业对求职者进行标准化 的能力评估,提高招聘效率和 精确度。
职业资格考试机构
为职业资格考试机构提供科学、 高效的考试评价和证书管理系 统。
标准化考试系统的未来发展趋势
人工智能技术的应用
结合人工智能技术,提供更智能化的题目生成、考 试监控和成绩分析功能。
安全性和稳定性的提升
加强系统的数据安全保护,保障考试过程的稳定性 和可靠性。
总结
标准化考试系统的优势
确保评估公平、公正,提高教学和招聘效率。
未来的挑战及发展前景
面对技术进步和需求变化的挑战,标准化考试系统将持续创新,为教育和职业培训提供更好 的支持。
《标准化考试系统》PPT 课件
标准化考试系统是一种用于管理和评估考试的软件系统,它在教育和职业领 域中起着关键作用。
标准化考试系统的背景
标准化考试系统的重要性是教育和职业发展的核心。它为学生、教师和招聘 机构提供了衡量能力和表现的标准。
为什么需要标准化考试系统?因为它可以确保公平性、可比性和可信度,提 高教学与招聘的效率。
c语言单项选择题标准化考试系统设计
课程设计任务书 学 专学院、系:生业: 姓 名: 学号: 设 计题 目: 单项选择题标准化考试系统设计起 迄日 期: 指 导教 师:1.设计目的设计单项选择题标准化考试系统。
2任务概述(1)用文件保存试题库(每个试题包括题干、4个备选答案、标准答案)(2)试题录入:可随时在试题库中增加试题.(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)(4)答题:用户可以输入自己的答案.(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩3模块划分单项选择体标准化考试系统Y NFILE *fp ,int i=0FILE *fp ,int i=0fp=fopen("单项选择题标准化考试系统设计.txt","r+")Y - if(fp==NULL) "~~~—_ --------------Nprintf(" 文件打开失败");return 0;for(i=0;!feof(fp);i++)fprintf(fp,"%s %s %s %s %s %c\n",que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real);fclose(fp)return i (3) Save()函数:用于添加试题后保存试题;i=0 ;i<n; i++sea nf(” %s %s %s %s %%c\n,que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real ”)(5)Ask()函数:用于答题并判卷。
----------------------------fclose(fp)5.程序运行数据及其结果6课程设计心得通过这次实训,感觉到自己还是差很多的,自己学到的还是远远不够的,练习的太 少了,好多知识点都记得不牢,还需要大量的练习。
《C语言程序设计》考试系统.
《C语言程序设计》考试系统C language progamme design examination system马国富刘波(安阳工学院计算机工程系,河南安阳455000)Ma GuoFu,liu bo(Department of Computer Engineering,Anyang Institute of Technology,Anyang 455000)一:摘要这一考试系统是一种计算机辅助教学软件,它包括教学模式,练习模式,考试模式。
采用调用数据库的方式打开,可以实现随机选题和指定选题,而不是固定的试题。
解决了由于教材更新和题库更新导致教学软件过时。
大大提高了软件的利用价值,打破了教学软件内容的固化,其次三种工作模式极大地拓宽了软件的使用范围,不再是单一的教师教学软件或学生考试软件。
可根据教学需要灵活地选择不同模式,同时少作修改即可用于其它课程。
系统解决了在多媒体教学中出现的模式僵化,内容固化的问题。
更新教学内容只需建立一个新的数据源实现连接即可。
AbstractThe test system of the principle is a Computer extended education software, and this course is also the compulsory course in High etc. school.This system include Teaching mode. Practice mode Examination mode.You can use database open the examination database That is to say the content is up to you or at random.It is the revolution of test system This is the main reason we develop it.二:关键词考试系统、多媒体技术、数据源、连接数据库keywordexamination system、multimedia technology、data soure、connection of database三:课题研究的意义和目的3.1研究意义现在,多媒体技术日趋成熟,多媒体系统以其能输出精彩的图形和图像、美妙的声音、动感的画面赢得了用户和社会各界广泛的关注和应用。
《c语言程序设计》网上考试系统的设计与实现毕业设计
五、设计完成提交的成果
1.毕业设计说明书(论文字数要求:2.5-3万字;源代码工作量:1500行以上。)
毕业设计说明书是毕业设计整个过程总结性资料,书写的质量直接影响到毕业设计的成败。毕业设计说明书主要包括以下内容,详细格式和要求请参照毕业设计大纲的要求。
[5] David Powers著.PHP与Dreamwaver基础教程[M].北京:人民邮电出版社,2008.1~50
[6]聂庆鹏,毛书鹏,王志乐编著.PHP+MySQL动态网站开发与全程实例[M].北京:清华大学出版社,2007.30~70
[7]王维.基于PHP和MySOL的考试系统的研究[D].中国教青技术装备, 2010.1~7
4.学生必须做好设计笔记,记录设计原始资料、设计过程及参阅的文献资料,设计笔记作为考核平时成绩的依据之一。
5.毕业设计纪律:要严格遵守学习纪律,遵守作息时间,不得迟到、早退和旷课,每天出勤不少于6小时。如因事、因病不能参加毕业设计,则需请假,凡未请假或未获准假而擅自不出勤者,均按旷课论处。
6.公共道德:要爱护公物,搞好环境卫生,保证设计教室整洁、卫生、文明、安静。严禁在设计教室内打闹、吸烟、嬉戏、下棋、听音乐(包括MP3)。
5.在分析和设计的基础上编码完成一个可演示的版本并进行测试;
6.撰写设计说明书;
7.做好答辩工作。
四、主要内容、功能及技术指标
《C语言程序设计》网上考试系统的总体目标是:在计算机网络,数据库和先进的开发平台上,利用现有的软件,配置一定的硬件,分析和设计一个具有开放体系结构的、易扩充的、易维护的、具有良好人机交互界面的网上考试系统,为普通用户和管理者提供充足的信息、快捷的查询和有效的管理方式,减少不必要的损失和浪费,提高考试信息管理和出卷、阅卷的效率。
c语言 -单选标准化考试系统--课程设计报告
沈阳航空航天大学课程设计任务书学院:自动化专业:测控技术与仪器班级:14070102学号:2011040701075 题目:单项选择题标准化考试系统(1)一、课程设计时间2012~2013第1学期第2周,共计1周,20学时。
二、课程设计内容用C语言编写标准化考试中的一些基本功能:用文件保存试题库。
(每个试题包括题干、4个备选答案、标准答案)1.试题录入:可随时增加试题到试题库中2.试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)3.答题:用户可实现输入自己的答案自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
三、课程设计要求1. 程序质量:●贯彻结构化的程序设计思想。
●用户界面友好,功能明确,操作方便。
用户界面中的菜单至少应包括“试题录入”、“试题抽取”、“答题”、“退出”4项。
●代码应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:课程结束后,上交课程设计说明书和源程序。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字指导教师:________ 学生签名:________五、成绩六、教师评语目录一、需求分析 (1)二、设计分析 (3)三、主要界面截图 (6)四、技术要点 (8)五、个人总结 (11)六、参考文献 (12)七、源程序 (12)一、需求分析根据任务书给定的“课程设计内容”和“课程设计要求”作如下的需求分析。
本系统用于考试,鉴于使用环境的特殊要求,本系统应具有稳定、便捷的特点。
1.稳定性分析本系统用于考试,故考试中本系统的稳定性将决定考试是否成功。
对于考生的操作应该有正确的回应,而不是出现令用户感到意外的系统错误或系统崩溃。
2.便捷性分析本系统用于考试,为方便考试的进行。
便捷性是本系统所必须的特性。
功能明确,操作方便将会改善考生的心情,减少考生不必要的心理压力。
3. 主要功能分析(1)题库存储:允许试题管理人员输入新的试题,并永久保存在磁盘中。
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、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。
标准化考试系统
• 标准化考试系统概述 • 系统架构与功能模块 • 系统技术实现 • 系统实施与部署 • 系统评估与优化 • 标准化考试系统案例分析
01
标准化考试系统概述
定义与特点
定义
标准化考试系统是一种基于计算机和 互联网技术的考试平台,用于评估和 比较考生的知识和技能水平。
特点
标准化考试系统具有高度的标准化、 客观性、公正性和可靠性,能够提供 统一的考试内容和评分标准,确保考 试结果的准确性和可比性。
数据库设计
根据系统需求,设计合理的表结构,包括学生信息表、考试信息表、成绩信息 表等,并建立适当的索引以优化查询性能。
系统安全与稳定性保障
系统安全
采用SSL加密技术对传输的数据进行加密,防止数据被窃取或篡改。同时,对用 户输入进行严格的验证和过滤,防止SQL注入等安全漏洞。
系统稳定性
采用负载均衡技术,将系统部署在多台服务器上,实现高可用性和容错性。同时 ,定期对系统进行性能测试和压力测试,确保系统在各种情况下都能稳定运行。
了解考生的学习情况。
03
系统技术实现
系统开发语言与工具
开发语言
选择Java作为主要开发语言,因为它 具有跨平台、可移植性强、稳定性高 等优点。
开发工具
使用IntelliJ IDEA作为主要的集成开发 环境,它提供了丰富的代码提示、自 动补全和调试功能。
系统数据库设计
数据库类型
选择MySQL作为系统数据库,因为它具有高性能、易用性和广泛的应用场景。
统的知名度和用户使用率。
05
系统评估与优化
系统性能评估
01
评估指标
评估准化考试系统的性能时,应 关注系统稳定性、可靠性、响应 速度、可扩展性等关键指标。
c语言标准化考试系统课程设计
c语言标准化考试系统课程设计一、教学目标本课程的目标是让学生掌握C语言编程的基本知识和技能,能够运用C语言进行简单的程序设计。
具体目标如下:知识目标:理解C语言的基本语法、数据类型、运算符、控制结构等;掌握函数的定义和调用、数组的声明和使用、指针的概念和应用;了解程序的编译和运行过程。
技能目标:能够使用C语言编写简单的程序,解决实际问题;具备基本的编程思维和调试能力;能够阅读和理解C语言程序代码。
情感态度价值观目标:培养学生对计算机科学的兴趣和热情,提高学生分析问题和解决问题的能力;培养学生团队合作精神和自主学习能力。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.C语言基本语法和数据类型:变量声明、数据类型、运算符、表达式等。
2.控制结构:条件语句、循环语句、跳转语句等。
3.函数:函数的定义和调用、形参与实参、局部变量和全局变量等。
4.数组和指针:一维数组、多维数组、指针的概念和应用等。
5.程序的编译和运行:编译过程、运行过程、调试技巧等。
6.实战项目:根据所学知识,完成一些实际的编程项目,提高学生的编程能力。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据类型、运算符等知识,为学生提供清晰的学习思路。
2.案例分析法:通过分析实际案例,让学生理解控制结构、函数、数组等知识在程序设计中的应用。
3.实验法:让学生动手编写程序,培养学生的编程能力和调试能力。
4.讨论法:学生进行小组讨论,分享学习心得和编程经验,提高学生的团队合作精神和自主学习能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。
2.参考书:《C Primer Plus》、《C和指针》等。
3.多媒体资料:教学PPT、视频教程等。
4.实验设备:计算机、编程软件(如Code::Blocks、Visual Studio等)。
标准化考试系统——C语言版
课程报告课程名称:程序设计实践专业班级:计算机类1304班学生姓名:唐林学号:201316920403任课教师:唐建国学期:2013-2014学年第二学期课程报告任务书成绩评定教师:1 需求分析该系统包括以下功能:1.进行随机答题并判卷2.显示试题所有内容3.插入试题4.添加试题5.自主选题并判卷6.修改试题7.删除试题8.退出系统2 概要设计2.1整体框架图图2-1-12.2 函数功能图2.2.1 随机答题并判卷功能图N图2-2-1 2.2.2 修改试题功能图NNYN图2-2-22.2.3 删除试题功能图YN图2-2-3 2.3 自定义函数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 修改试题先从键盘中输入想要修改第几道试题,当题标输入m时,找到结构数组m-1对应的元素就是要修改的试题,再将修改的试题进行保存,从而实现对试题的修改功能。
C语言单项选择题标准化考试系统
青岛理工大学《C语言程序设计》题目 C语言单项选择题标准化考试系统指导教师:姓名:学号:班级:专业:地点:时间: 2013-7-1 至 2013-7-5一、内容【设计内容】试设计一单项选择题标准化考试系统,实现试题的录入、抽取、用户的答题、系统的自动判卷等功能。
【设计要求】1、用文件保存试题库。
(每个试题包括题干、4个备选答案、标准答案)2、试题录入:可随时增加试题到试题库中3、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)4、答题:用户可实现输入自己的答案5、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
二、上机环境操作系统:开发工具:三、函数调用关系图图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()函数流程图图 9 InsertNode()函数流程图六、程序运行效果图1.初始界面2.随机抽题3.答题并判卷4.插入试题5.保存到文件七、总结通过这短短5天的时间,学到了许多东西,尤其是对链表及文件的使用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程报告课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:唐建国学期: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总结系统缺陷与不足这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。