标准化考试系统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总结系统缺陷与不足这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。
C考试系统题库(参考答案版)
目录目录 (1)第一章C语言基础知识 (2)一、判断题(正确的填A,错误的填B) (2)二、单项选择题 (3)三、程序填空题 (7)第二章C语言程序结构 (8)一、判断题(正确的填A,错误的填B) (8)二、单项选择题 (9)三、程序填空题 (16)第三章数组(正确的填A,错误的填B) (21)一、判断题 (21)二、单项选择题 (22)三、程序填空题 (28)第四章函数 (33)一、判断题(正确的填A,错误的填B) (33)二、单项选择题 (34)三、程序填空题 (40)第五章指针 (45)一、判断题(正确的填A,错误的填B) (45)二、单项选择题 (46)三、程序填空题 (54)第六章预编译、结构体与共用体 (58)一、判断题(正确的填A,错误的填B) (58)二、单项选择题 (60)三、程序填空题 (68)第七章文件 (73)一、判断题(正确的填A,错误的填B) (73)二、单项选择题 (74)三、程序填空题 (77)第一章C语言基础知识(C语言概述、算法、数据类型运算符表达式、位运算)一、判断题(正确的填A,错误的填B)R1.在C语言中,逗号运算符的优先级最低。
(A)2.在C语言可执行程序的开始执行点是程序中第一个函数。
(B)3.“5ch”是合法的变量名。
(B)R4.C语言程序书写格式自由,一行内可以写几个语句,一个语句可以分写在多行上。
(A)5.当输入数据时,必须指明变量的地址,如scanf("%f",&f) (A)N6.表达式i++与++i在任何场合功能完全相同。
(B)7.在赋值表达式中,赋值号左边的变量和右边的表达式之值的数据类型可以不相同。
(A)R8.C语言程序中,语句以逗号结尾。
( B )9.在C 程序中,APH 和aph 代表不同的变量。
( A )10. a-=7等价于a=a-7。
( A )N11. printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。
单项选择题标准化考试系统
单项选择题标准化考试系统摘要在现代化考试中,大规模的单项选择题已经非常常见,如果应用计算机实现机考随机取题并判卷无疑是非常好的办法,依靠所学C语言知识,编出一套完备的单项选择题标准化考试系统有非常重要的现实意义,既可以实现考试的现代化又可以减轻老师的阅卷压力。
我们编写的这个系统实现了提取试题库,增加新题,随机取题,自动判卷,满足了本次课程设计课题的全部要求,并在此基础上本着创新的精神加入自己的东西——程序加密。
关键字:单项选择题;考试系统;自动判卷;c语言ITEM MULTIPLE-CHOICE STANDARDIZED TEST SYSTEMABSTRACTIn the examination of modernization, large items of multiple choice questions are very common, if you apply a computer machine random access to the examination questions and imposes no doubt is a very good way, relying on the c language, produce a comprehensive item multiple-choice standardized test system has a very important practical significance, both can modernize examination and can relieve pressure on the teacher's scoring.We prepared this system extracts examination question database, add a new question, random access problems, automatically sentenced volume, meets all the requirements of this course design project, and on this basis, in a spirit of innovation to join own thing--procedure encryption.Key word : Item multiple-choice; examination system; automatic sentencevolumes;c language目录1 绪论 (1)1.1课题内容与要求 (1)1.2课题研究方法 (1)2设计过程 (2)2.1总体设计 (2)2.2详细设计 (3)2.2.1保存文件功能 (3)2.2.2输出文件功能 (3)2.2.3答题功能 (4)3 调试分析 (5)4 总结 (8)参考文献 (9)附录 (10)1 绪论1.1 课题内容与要求课题内容:(1)用文件保存试题库。
实用标准化考试系统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语言单项选择题标准化考试系统设计
c语言单项选择题标准化考试系统设计课程设计任务书学院、系:专业:学生姓名: 学号: 设计题目: 单项选择题标准化考试系统设计起迄日期:指导教师:1.设计目的设计单项选择题标准化考试系统。
2 任务概述(1)用文件保存试题库(每个试题包括题干、4个备选答案、标准答案). (2)试题录入:可随时在试题库中增加试题.(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入). (4)答题:用户可以输入自己的答案.(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩. 3 模块划分单项选择体标准化考试系统判退添显答卷出加示题系试试统题题到库试题库4主要函数说明及N-S图(1)菜单Menu():用来给用户提供选项;输出菜单界面输入选项输入1 N Y添加Add 输入2 N Y ()函数添加Put输入3 N Y ()函数添加输入4 N Y Ask()函数exit(0)break break break(2)Read()函数:用于打开文件; FILE *fp ,int i=0 breakfp=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()函数:用于添加试题后保存试题;FILE *fpint i=0if((fp=fopen(“单项选择题标准化考试系统设计.txt”))==Null)Y Nprintf(“文件打开失败~”)i=0;i<n;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”) (4)Put()函数:用于显示试题;int i,nn=Read(que)打印表头i=0;i<n;i++fprintf(fp,”%s %s %s %s%s\n,que[i].topic,que[i].a1,que[i].a2,que[i].a3,que[i].a4”)getch()(5)Add()函数:用于添加试题(5)Adi FILE *fp int i,a,n . sruct question quen=Read(que)printf(“请输入增加试题的数目”)scanf(“%d“,&a);i=0;i<n; i++scanf(”%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”)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)(5)Ask()函数:用于答题并判卷。
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 调试分析登录时,解决账号密码错误问题,修改试题后存入的问题。
标准化考试系统C语言版
课程报告课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:唐建国学期:2013-2014学年第二学期成绩评定教师:目录1 需求分析 (1)2 系统设计 (1)2.1.数据结构设计 (1)2.2.功能模块设计 (2)2.2.1:主菜单模块 (2)2.2.2:教师菜单模块 (3)2.2.3:学生菜单模块 (3)3 系统实现及关键代码 (4)3.1基本功能 (4)3.1.1菜单设计 (4)3.1.2文件读写 (6)3.1.3删除题目信息 (7)3.2拓展功能 (8)3.2.1密码设计 (8)3.2.2考试函数 (8)4系统演示 (9)4.1基本功能 (9)4.1.1文件读写功能 (9)4.1.2插入题目功能 (10)4.2拓展功能 (10)4.2.1密码功能 (10)4.2.2考试功能 (11)5总结 (12)5.1系统缺陷与不足 (12)5.2系统可扩展功能 (12)6课程心得总结 (13)参考书籍: (13)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系统缺陷与不足这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。
单项选择题考试标准化系统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++单项选择题标准考试系统
单项选择题标准化考试系统徐磊目录摘要 (2)1 绪论 (3)2系统分析 (4)2.1基础知识 (4)2.2数据结构 (4)3总体设计 (5)3.1总的概叙: (5)3.2大概流程图 (5)4详细设计 (6)4.1功能模块设计 (6)4.1.1保存文件功能模块: (6)4.1.2输出文件功能模块: (6)4.2答题功能模块: (7)4.3数据结构设计 (8)5 调试 (8)5.1操作界面 (8)5.2进行答题并判卷 (9)5.3插入试题 (9)5.4退出系统 (10)6总结 (10)7.附录 (11)1源程序 (11)2参考文献 (17)摘要当今社会,我们的许多资格是需要通过各类考试获得的。
但是由于考生数量的庞大与阅卷老师精力的有限,机试应运而生。
在机试中的单项选择题中,电脑可以自动判卷,而且其准确度和效率比人工判卷要高。
本文通过用C语言先定义一个结构体里面包括题干、选项、正解答案,然后定义一个随机函数的方法,阐述了试题的录入、将保存在试题库、试题的随机抽取、考生答题以及自动判卷的函数处理方法,并通过列表程序控制输出题目的随机性,将输入输出有机地结合在一起。
最后通过主函数对以上函数的调用,论证了单项选择题考试系统的可靠性,达到了课程设计目的。
关键字:单项选择题;考试系统;自动判卷;C语言1 绪论当今社会,我们的许多资格是需要通过各类考试获得的。
但是由于考生数量的庞大与阅卷老师精力的有限,机试应运而生。
在机试中的单项选择题中,电脑可以自动判卷,而且其准确度和效率比人工判卷要高。
因此,此项研究的意义十分重要。
为此,对此课题开展研究。
本课题采用文献研究法,根据课题:单项选择题标准化考试系统,通过查阅[美]H M Deitel,P J Deitel著,薛万鹏等译的《C语言程序设计教程》(北京:机械工业出版社,2000.07)[1]、谭浩强著的《C程序设计(第二版)》(北京:清华大学出版社,1999,12)[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个试题的信息并显示出来。
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 单项选择题标准化考试系统
c 单项选择题标准化考试系统在现代教育体系中,考试是对学生学习成果的一种重要评估方式。
而单项选择题作为其中的一种形式,在标准化考试系统中扮演着至关重要的角色。
本文将就单项选择题标准化考试系统进行探讨,分析其特点和优势,并提出一些改进建议。
首先,单项选择题作为标准化考试系统的一部分,具有明确的题目结构和选项设置。
这种题型要求考生在给定的选项中选择最符合题意的答案,具有一定的客观性和标准性。
这种特点使得单项选择题在大规模考试中得以广泛应用,例如高考、托福、雅思等。
其次,单项选择题的设计可以全面覆盖考试范围,从而有效地检验学生的知识掌握情况。
通过设计不同难度和类型的题目,可以全面地考察学生对知识点的掌握程度,从而更加客观地评价学生的学习成果。
另外,单项选择题的批改和成绩统计相对简便快捷。
通过自动化的评分系统,可以快速准确地对学生的答题情况进行统计和分析,节约了人力和时间成本。
然而,单项选择题也存在一些不足之处。
首先,它可能会导致学生的应试心理过重,而忽视了对知识的深入理解和应用能力的培养。
其次,单项选择题的设计需要十分严谨和精准,一旦出现错误的选项或者模糊的题意,就可能导致考生的答题错误,影响了评价的准确性。
为了改进单项选择题的考试系统,我们可以采取一些措施。
首先,可以适当增加题目中的案例分析和实际应用题型,从而更好地考察学生的综合能力。
其次,可以加强对题目设计的质量把控,确保题目清晰明了,选项准确无误。
此外,也可以结合现代技术手段,开发更加智能化的评分系统,提高评分的准确性和效率。
总的来说,单项选择题作为标准化考试系统的一部分,具有一定的优势和不足之处。
通过合理的设计和改进,可以更好地发挥其作用,促进学生的全面发展和知识水平的提高。
希望未来能够有更加科学合理的考试评价体系,为学生的学习和成长提供更好的支持和指导。
C语言全部考试系统题库含答案(可编辑修改word版)
目录
目录................................................................1 单元练习题一 C 语言基础知识 .........................................3
一、 判断题 ...................................................3 二、 单项选择题 ...............................................4 三、 读程序选择题 .............................................7 四、程序填空题 ..................................................8 五、编程题 .....................................................10 单元练习题二 C 语言程序结构 ........................................10 一、 判断题 ..................................................10 二、 单项选择题 ..............................................11 三、 读程序选择题 ............................................18 四、 程序填空题 ..............................................30 五、 编程题 ..................................................35 单元练习题三 数组..................................................36 一、 判断题 ..................................................36 二、 单项选择题 ..............................................37 三、读程序选择题 ...............................................39 四、程序填空题 .................................................43 五、编程题 .....................................................49 单元练习题四 函数..................................................49 一、 判断题 ..................................................49 二、 单项选择题 ..............................................50 三、读程序选择题 ...............................................52 四、程序填空题 .................................................60 五、编程题 .....................................................63 单元练习题五 预处理................................................63 一、 判断题 ..................................................63 二、 单项选择题 ..............................................64 三、读程序选择题 ...............................................64 四、程序填空题 .................................................65 五、编程题 .....................................................65 单元练习题六 指针..................................................66 一、 判断题 ..................................................66 二、 单项选择题 ..............................................66 三、读程序选择题 ...............................................67 四、程序填空题 .................................................74 五、编程题 .....................................................77 单元练习题七 结构体与共用体........................................78 一、 判断题 ..................................................78 二、 单项选择题 ..............................................78
《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研究意义现在,多媒体技术日趋成熟,多媒体系统以其能输出精彩的图形和图像、美妙的声音、动感的画面赢得了用户和社会各界广泛的关注和应用。
标准化考试系统需求说明书【范本模板】
基于JAVA C/S 的标准化考试系统需求规格说明书2014年10月2014班组长:颜凡腾成员:王晓楠逄彦玲周璋目录1 引言 (4)1。
1 编写目的 (4)2 术语、定义、缩略语和技术分析 (4)2.1 术语、定义 (4)2.2 缩略语 (4)2。
3 综合描述 (4)2.3.1 产品前景 (5)2.3.2 国内外在线考试系统研究水平和现状 (5)2。
3.3 系统设计拟采用的方法 (6)2.3。
4 功能概述 (6)2.3。
5 开发环境 (6)2.4 需求编写约定 (7)2.4.1 需求编号约定 (7)2。
4。
2 需求优先级定义 (7)2.4。
3 用例描述编号预定 (7)3 标准化考试系统需求分析 (8)3.1 可行性分析 (8)3.2 功能需求总体描述 (9)3。
3 系统各层次需求分析 (11)3.4 系统E—R图 (12)3.5 系统流程图 (15)3。
6 数据流图 (16)3.7 模块功能设计 (16)3。
7.1 系统管理模块 (16)3。
7。
2 考生管理模块 (17)3.7.3 控制考试模块 (18)3.7。
4 考生考试模块 (18)4 非功能性需求 (19)4.1 数据需求 (19)4.2 故障处理需求 (19)4。
2。
1 软件运行故障 (19)4.2。
2 软件使用故障 (20)4。
3 质量需求 (20)4。
4 其他需求 (20)5 需求获取方法 (21)5。
1 面谈和问卷调查 (21)5.2 小组讨论 (22)5。
3 情景窜联 (22)5。
4 参与、观察业务流程 (23)5。
5 现有产品和竞争对手文档 (23)6 参考文献 (24)1 引言1.1 编写目的本文通过详细描述在线考试系统项目的功能需求、用户界面需求、性能需求、质量属性需求以及其它需求,为后续系统设计、软件(系统)测试、用户文档等工作提供基础与约束.1。
22 术语2。
1 术语、定义本需求报告中可能出现的术语和定义见表1所示表2 定义和术语解释2。
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语言单项选择题标准化考试系统(精品文档)_共17页
1、进一步掌握和利用 C 语言进行程设计的能力; 2、进一步理解和运用结构化程序设计的思想和方法; 3、初步掌握开发一个小型实用系统的基本方法; 4、学会调试一个较长程序的基本方法; 5、学会利用流程图或 N-S 图表示算法; 6、掌握书写程序设计开发文档的能力。
三、课程设计应完成的工作
1、编写完成相应题目的程序; 2、编写课程设计报告,课程设计报告的内容应包括以下 6 个部分:
1) 需求分析:包括设计题目、设计要求以及系统功能需求分析; 2) 总体设计:包括系统总体设计框架和系统功能模块图; 3) 详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图; 4) 调试分析过程描述:包括测试数据、测试输出结果,以及对程序调试过程中存在
录入;
Page 4 of 17
4
3、 试题的抽取,可以定义一个” void printNode(TestNode p,int n)”的函数,用到”Rand”函数进行 随机抽取;
4、答题方面,,则定义一个” void answer(int sum)”函数用于答题者的输入答案; 5、自动判卷,则可以定义一个” Status Match(TestNode p,char m)”函数,用来对比答题者答案和
实验 3#517
6.18 6.19 6.20 6.21
五、应收集的资料及主要参考文献
[1] 谭浩强.C程序设计(第三版)[M],北京:清华大学出版社,2005.9 [2] 谭浩强. C程序设计题解与上机指导(第三版)[M],北京:清华大学出版社,
2005.7 [3] 刘振安等.C++程序设计课程设计[M]-北京:机械工业出版社,2004.8 [4] 张淑平.C 语言程序设计学习指导,西安电子科技大学出版社,2004.6
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程报告课程名称:程序设计实践专业班级:学生姓名:学号:任课教师:唐建国学期:2013-2014学年第二学期成绩评定教师:目录目录 (1)1 需求分析 (2)2 系统设计 (2)2.1.数据结构设计 (2)2.2.功能模块设计 (3)2.2.1:主菜单模块 (3)2.2.2:教师菜单模块 (4)2.2.3:学生菜单模块 (5)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考试函数 (10)4系统演示 (11)4.1基本功能 (11)4.1.1文件读写功能 (11)4.1.2插入题目功能 (11)4.2拓展功能 (12)4.2.1密码功能 (12)4.2.2考试功能 (13)5总结 (13)5.1系统缺陷与不足 (13)5.2系统可扩展功能 (13)6课程心得总结 (14)参考书籍: (15)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系统缺陷与不足这个考试系统里面的学生界面功能还待加强,可以给学生更多的组卷方式,例如老师创建题库时可以给题目信息增加一个章节的信息,然后学生可以根据章节来组卷考试。