单项选择题标准化考试系统设计C语言实训
c语言单项选择题标准化考试系统设计

课程设计任务书学院、系:专业:学生姓名:学号:设计题目:单项选择题标准化考试系统设计起迄日期:指导教师:1.设计目的设计单项选择题标准化考试系统。
2 任务概述(1)用文件保存试题库(每个试题包括题干、4个备选答案、标准答案).(2)试题录入:可随时在试题库中增加试题.(3)试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入).(4)答题:用户可以输入自己的答案.(5)自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩.3 模块划分单项选择体标准化考试系统4主要函数说明及N-S图(1)菜单Menu():用来给用户提供选项;(2)Read()函数:用于打开文件;(3)Save()函数:用于添加试题后保存试题;(4)Put()函数:用于显示试题;(5)Add()函数:用于添加试题(5)Ask()函数:用于答题并判卷。
i=0;i<n; i++fclose(fp)5.程序运行数据及其结果6 课程设计心得通过这次实训,感觉到自己还是差很多的,自己学到的还是远远不够的,练习的太少了,好多知识点都记得不牢,还需要大量的练习。
又因为一个学期没看了,好多东西都忘了,所以好多知识点都是在看得时候重新拾起来的。
这次实训给我的教训就是平时要多多练习一些题型,时不时的复习以前的知识点,让自己更加熟练的掌握更多编程技巧,更多的思路。
还有一点就是没有思路的时候千万不要放弃,要学会思考,学会独立有耐心的完成一些事情,等到做完成功之后,便会收获很多的信心和欣慰。
总之就是要有耐心,坚持多做练习,不会的多请教别人,一切困难都会迎刃而解。
附录:#include<>#include<> xt","r+");opic,que[i].a1,que[i].a2,que[i].a3,que[i].a4,que[i].real); }fclose(fp);return i;}void save(struct question que[N],int n)xt","w+"))==NULL){printf("文件打开失败!\n"); return ;}else{for(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);}fclose(fp);}void Put()opic,que[i].a1,que[i].a2,que[i].a3,que[i].a4); getch();}void Add()xt","a+");opic,&que[i].a1,&que[i].a2,&que[i].a3,&que[i].a4,&que[i].rea l);fprintf(fp,"\n%s\n%s\n%s\n%s\n%s\n%c\n",que[i].topic,que[i]. a1,que[i].a2,que[i].a3,que[i].a4,que[i].real);}printf("添加信息成功!");fclose(fp);getchar();getchar();}void Ask()xt","r+");printf("请输入要答得题目数:");scanf("%d",&m);for(int i=1;i<=m;i++){fread(&que[i],sizeof(struct question)-1,1,fp);printf("%s\n%s\n%s\n%s\n%s\n",que[i].topic,que[i].a1,que[i] .a2,que[i].a3,que[i].a4);printf("\n请输入您的答案:");scanf("%c",&r);getchar();if(que[i].real==r){ printf("\n答案正确!\n");score++;}else {printf("\n答案错误!\n");score=score;}printf("\n你的总成绩为:%d\n",score);getchar();getchar();}}int main(){ Menu1(); }。
考试系统c语言课程设计

考试系统c语言课程设计一、课程目标知识目标:1. 理解C语言在考试系统开发中的应用,掌握基本的C语言编程语法和结构;2. 学习并运用数组、函数、指针等C语言特性,实现对考试题目的存储、展示和评分功能;3. 掌握文件操作,能够将题目和成绩保存到文件中,实现数据的持久化存储。
技能目标:1. 培养学生运用C语言解决实际问题的能力,能独立完成一个简单的考试系统设计与实现;2. 提高学生的代码编写和调试技巧,培养良好的编程习惯;3. 增强学生的团队协作能力,学会与他人共同分析问题、讨论解决方案。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,提高学习积极性;2. 培养学生勇于面对问题,敢于挑战的精神,增强解决问题的自信心;3. 引导学生认识到编程对于解决现实问题的重要性,提高社会责任感。
本课程针对高年级学生,具有较强的实践性和应用性。
结合学生已掌握的C语言基础知识,通过本课程的学习,旨在提高学生的编程实践能力,培养具备实际项目开发经验的计算机人才。
课程目标具体、明确,便于学生和教师在教学过程中进行评估和调整。
二、教学内容1. C语言基础回顾:数据类型、运算符、表达式、控制语句(章节1-3);2. 函数与数组:函数定义、调用、数组的使用和操作(章节4-6);3. 指针:指针的概念、指针的运算、指针与数组、指针与函数(章节7-8);4. 文件操作:文件的打开、关闭、读写操作,以及文件存储结构(章节9);5. 考试系统设计:需求分析、功能设计、模块划分、界面设计(章节10);6. 编程实践:实现考试系统的各个功能模块,如题目管理、考试管理、成绩管理等;7. 调试与优化:代码调试技巧,性能优化策略。
教学内容安排和进度:第一周:C语言基础回顾,函数与数组;第二周:指针,文件操作;第三周:考试系统设计,模块划分;第四周:编程实践,功能实现;第五周:代码调试与优化,项目总结。
教学内容紧密围绕课程目标,结合教材章节,系统性地组织与安排。
c语言课程设计报告单项选择题标准化考试系统设计

2.2主要结构组与函数
题目,选项ABCD答案:
typedef struct Exam
{
char question[1024];
char A[100];
char B[100];
char C[100];
char D[100];
char correct; //正确答案选项
}Exam;
void load_question();
计算机程序设计基础(C语言)
课程设计说明书
设计题目:单项选择题标准化考试系统设计
班级:
姓名:
学号:
2021年7月
填写格式及说明
1、系统概述
本系统是对学生测试的单项选择题标准化系统设计,顾名思义就是用于对学生的测试考量,方便进行学生的测试,同时也简化了老师的试题录入和判卷,是一个简单实用的考试系统。
2、数据结构设计
printf("1.导入试卷\n");
printf("2.试题录入\n");
printf("3.测试答题\n");
printf("4.浏览试题\n");
printf("5.保存退出\n");
printf("请选择:");
scanf("%d",&i);
fflush(stdin);
return i;
}
int main()
p = strtok(NULL, "\t");
questions[count].correct = p[0];
count++;
}
}
C语言实训题及参考答案

printf("\t\t *** choose function ************\n\n"); printf("\t\t *** 1 Enter new data ************\n\n"); printf("\t\t *** 2 Modify data ************\n\n"); printf("\t\t *** 3 Search by people.xueli and num*****\n\n");
# include <stdio.h>
enter() { int i,n; printf("How many people(0-%d)?:",N-1); scanf("%d",&n); printf("\n Enter data now\n\n"); for(i=0;i<n;i++) { printf("\n Input %dth people record.\n",i+1); input(i); } if(i!=0)save(n); printf_back(); }
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、答辩:在实验室建立程序运行的环境,并在指导教师的监督下,独立解决问题、运行程序和回答教师提出的问题。
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语言实践考试题及答案一、选择题(每题2分,共20分)1. C语言中,用于定义一个整型变量的关键字是:A. intB. floatC. doubleD. char答案:A2. 下列哪个选项是C语言中的合法标识符?A. 2variableB. variable2C. -variableD. variable$答案:B3. 在C语言中,以下哪个是正确的字符串字面量?A. "Hello World"B. 'Hello World'C. "Hello World'D. 'Hello World'答案:A4. C语言中,以下哪个运算符用于逻辑与操作?A. &&B. ||C. !D. ~答案:A5. 下列哪个函数用于计算两个数的和?A. max()B. pow()C. sqrt()D. sum()答案:D6. 在C语言中,以下哪个关键字用于定义函数?A. intB. voidC. structD. function答案:B7. C语言中,以下哪个选项是正确的二维数组声明?A. int array[3][4];B. int array[3,4];C. int array(3)(4);D. int array[3 4];答案:A8. 下列哪个选项是C语言中正确的条件语句?A. if x > 0 then y = x;B. if x > 0 { y = x; }C. if x > 0 y = x;D. if (x > 0) y = x;答案:D9. 在C语言中,以下哪个选项是正确的无限循环?A. for(;;)B. while(1)C. do {} while(1)D. All of the above答案:D10. 下列哪个选项是C语言中正确的函数声明?A. int function();B. function int();C. int function int();D. int function(int x);答案:D二、填空题(每空2分,共20分)1. 在C语言中,使用________关键字可以定义一个指针变量。
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程序设计实训题目[精选合集]](https://img.taocdn.com/s3/m/c719ad1c905f804d2b160b4e767f5acfa0c78341.png)
C程序设计实训题目[精选合集]第一篇:C程序设计实训题目选题1、小学生测验面向小学1~2年级学生,随机选择两个整数和加减法形成算式要求学生解答。
功能要求:(1)电脑随机出10道题,每题10分,程序结束时显示学生得分;(2)确保算式没有超出1~2年级的水平,只允许进行50以内的加减法,不允许两数之和或之差超出0~50的范围,负数更是不允许的;(3)每道题学生有三次机会输入答案,当学生输入错误答案时,提醒学生重新输入,如果三次机会结束则输出正确答案;(4)对于每道题,学生第一次输入正确答案得10分,第二次输入正确答案得7分,第三次输入正确答案得5分,否则不得分;(5)总成绩90以上显示“SMART” ,80-90显示“GOOD”,70-80显示“OK”,60-70显示“PASS”,60以下“TRY AGAIN”2、物业费管理系统完成小区物业费用管理系统设计。
功能要求:(1)新住户信息的添加。
(户主姓名、性别、身份证号、联系电话、楼号、单元号、房号、平米数、每平米物业价格、应缴纳物业费,备注信息)(2)修改住户信息的功能。
(3)删除住户信息的功能。
(4)应缴物业费自动生成。
每月1号,自动生成本月份的物业费。
如果该住户之前的物业费未交清,则本月物业费与之前拖欠费用进行累加,为该用户应缴纳的物业费。
(5)缴费功能。
根据用户缴纳金额,修改“应缴纳物业费”。
(6)统计功能:能够按楼号分类统计所有未交清物业费的记录。
能够按拖欠款项多少,对所有用户信息进行从大到小排序。
(7)用菜单进行管理3、歌手比赛系统对一次歌手比赛的成绩进行管理,功能要求:1、输入每个选手的数据包括编号、姓名、十个评委的成绩,根据输入计算出总成绩和平均成绩(去掉最高分,去掉最低分)。
2、显示主菜单如下:1)输入选手数据2)评委打分3)成绩排序(按平均分)4)数据查询5)追加学生数据 6)写入数据文件7)退出系统。
4、文件加密文件的传输会有明文和密文的区别,明文发送是不安全的,用一个程序实现发送文件的加密和解密操作。
C语言程序设计综合实训题目

一、参考题目及选题(1)学生信息管理系统设计问题描述:学生信息包括:学号, 姓名, 年龄, 性别, 出生年月, 政治面貌, 籍贯, 家庭住址, 电话, E-mail等。
试设计一学生信息管理系统, 使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)(3)学生信息浏览功能(4)学生信息排序、查询功能对信息进行排序, 可以按学号, 按姓名, 按性别, 按出生年月日, 按籍贯进行查询(5)信息统计a) 可以按性别, 按出生年, 按籍贯统计学生人数b) 可以按班级统计学生人数c) 可以按政治面貌统计学生人数按班级统计学生党员人数, 团员人数, 以及所占比例, 设计并输出统计报表。
(6)学生信息的删除与修改●设计要求:●界面比较美观;有一定的容错能力, 比如输入的成绩不在0~100之间, 就提示不合法, 要求重新输入;●最好用链表的方式实现。
算法分析:首先, 一个学生包括这么多的属性, 应该考虑定义一个结构, 其次, 我们应该考虑数据的存储形式:是定义一个数组来存储, 还是定义一个链表呢?在这里假如我们以数组的方式来存储, 当然可以, 但是我们知道, 假如我们定义一个数组的话, 我们首先必须知道学生人数大概是多少, 以便我们确定数组的大小, 但是题目中没有给出, 而且题目要求中有大量的删除、插入操作, 所以用链表的方式比较方便。
对于菜单的实现, 其实也比较简单, 首先我们用printf语句把程序的功能列出来, 然后等待用户输入而执行不同的函数, 执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
(2)、学生综合测评系统每个学生的信息为: 学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%, 10%, 10%, 20%。
HNCE网上考试系统 C语言程序设计 选择题答案

一、单项选择题(17道小题,共20分)1、以下叙述中正确的是( C )。
(1分)A、C语言比其他语言高级B、C语言可以不用编译就能被计算机识别执行C、C语言以接近英语国家的自然语言和数学语言作为语言的表达形式D、C语言出现的最晚,具有其他语言的一切优点2、以下说法正确的是( C )。
(1分)A、C语言程序总是从第一个函数开始执行B、在C语言程序中,要调用函数必须在main()函数中定义C、C语言程序总是从main()函数开始执行D、C语言程序中的main()函数必须放在程序的开始部分3、下列可用于C语言用户标识符的一组是( B )。
(1分)A、void define WORDB、a3_b3 _123 CarC、For abc caseD、2a DO sizeof4、设int a=3,b=4,c=5;表达式(a+b)>c&&b==c的值是( C ) 。
(1分)A、2B、-1C、0D、15、以下关于循环体的描述中,( C )是错误的。
(2分)A、循环体中可以出现break语句B、循环体中还可以出现循环语句C、循环体中不能出现continue语句D、循环体中可以出现switch语句6、While(x)中的x相当于( D )。
(2分)A、x==0B、x==1C、x!=1D、x!=07、以下关于switch语句和break描述中, ( A) 是正确的。
(2分)A、在switch语句中,可以根据需要使用或不使用break语句B、switch语句中必须用break语句C、break语句只能用于switch语句D、break语句是switch语句必须的一部分8、以下对C语言函数的有关描述中,正确的是( B )。
(1分)A、在C中,调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B、C函数既可以嵌套调用又可以递归调用C、函数必须有返回值,否则不能使用函数D、C程序中有调用关系的所有函数必须放在同一个源程序文件中、9、在下面的函数声明中,存在着语法错误的是( D )。
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)学生信息管理系统设计问题描述:学生信息包括:学号,姓名,年龄,性别,出生年月,政治面貌,籍贯,家庭住址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:(1)系统以菜单方式工作(2)学生信息录入功能(学生信息用文件保存)(3)学生信息浏览功能(4)学生信息排序、查询功能对信息进行排序,可以按学号,按姓名,按性别,按出生年月日,按籍贯进行查询(5)信息统计a)可以按性别,按出生年,按籍贯统计学生人数b)可以按班级统计学生人数c)可以按政治面貌统计学生人数按班级统计学生党员人数,团员人数,以及所占比例,设计并输出统计报表。
(6)学生信息的删除与修改设计要求:●界面比较美观;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。
算法分析:首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
(2)、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理(1)输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
标准化考试测试系统 C语言程序

标准化考试测试系统1.题目及任务要求 (3)2.系统分析 (3)3.模块分析 (3)4.模块设计 (3)5.运行结果 (6)6.设计总结 (8)7.心得体会 (8)8.源程序 (8)【题目及任务要求】标准化考试测试系统(B)1.用文件保存试题库(每个试题包括题干,4个备选答案和标准答案)2.试题录入:可随时增加试题到试题库中3.试题抽取:每次从试题库中可以随时抽出N道题(N由键盘输入)4.答题:用户可实现输入自己的答案5.自动判卷:系统可根据用户答案与标准答案对比实现判卷并给出成绩【系统分析】该系统由主程序和录入模块、抽取答题模块组成。
其中主程序提供用户进入该系统、选择功能和退出系统;录入模块可以让用户自行录入题目;抽取答题模块可以从试题库中抽取出用户规定的题目数并且供用户答题和自动评卷。
【模块分析】录入模块:用户从主界面选择‚1.录入题目‛后进入录入模块。
在本模块中,用户可以录入题目以及对应该题的答案。
单题录入完成后,该模块提示是否继续录入或返回主界面。
本模块使用指针开启关闭文件,使用do...while循环语句实现反复录入功能。
抽取答题模块:用户从主界面选择‚2.抽取答题‛后进入该模块。
在本模块中,用户可以自行抽取题目并答题,系统自动在打完每道题后给出答案并记录分数,最后公布分数。
本模块使用随机数函数random来随机抽取试题库中的题目;使用指针开启读入试题及答案文件;使用循环结构(for,while和do...while)实现连续答题和功能循环。
【模块设计】抽取答题模块流程图:完整流程图:【运行结果】开始界面:录入功能界面:抽取答题功能界面:退出界面:【设计总结】在设计并且编程的过程中,我遇到了很多难点,有几个已经超出了我的水平范围,在周遭同学和发达的网络帮助下我得以解决它们。
以下是这个标准化考试测试系统编程过程中遇到的难题:1,文件的读入读出因为当时学习的过程中,文件这一块内容比较简单的带过,因此我对文件读取这一方面的掌握并不是十分好。
C语言试卷

5、设C语言中,float类型数据占4个字节,则double类型数据占( )个字节。(1分)
A、1 B、2
C、8 D、4
6、能正确表示“当x的取值范围在[1,10]和[100,110]范围内为真,否则为假”的表达式是( )。(1分)
c=(a-=(b-5));
c=(a%3)+(b=1);
(1分)
--------------------------------------------------------------------------------
A、11 B、20
C、21 D、31
40、以下程序的输出结果是() main() { int a[]={2,4,6,8},y=1,x,*p; *p=&a[1]; for(x=0;x<3;x++) y+=*(p+x); printf("%d\n",y); }(2分)
A、17 B、18
2、C语言源程序经过编译后,生成文件的后缀是。
(1分)
--------------------------------------------------------------------------------
3、若有定义:int a=4,b=5,c=6;接着顺序执行下列语句后,变量b中的值是。
38、有下列程序: main() {int k=5; while(--k) printf("%d",k-=3); printf("\n"); } 执行后的输出结果是()。(2分)
A、1 B、2
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 调试分析登录时,解决账号密码错误问题,修改试题后存入的问题。
应用系统类_3_单项选择题标准化考试系统设计

单项选择题标准化考试系统设计
(难度系数:0.95)
一、问题描述:
用VC设计一个仅使用单项选择题的标准化考试系统,实现题目维护、出题、判卷和成绩管理等基本功能。
二、基本功能要求:
1.基于文件(或数据库)的试题库设计:
要求每个试题包括题干、4个备选答案、标准答案。
2. 试题录入:
设计界面,实现试题信息(包括答案)的录入功能,保存到文件(或数据库)中。
3.试题维护:
设计界面,实现对题库中各道题目的查找、修改、删除功能。
4.试题抽取:
每次从试题库中可以随机抽出N道题目,组成一份试卷。
5.答题:
设计并实现用户答题界面和功能。
6.自动判卷:
系统可根据用户答案与标准答案的对比实现判卷并给出成绩。
三、扩展功能:
1.试卷管理:
实现对每次随机组成试卷的保存和管理维护功能。
2.导出功能:
把系统中的题目或试卷进行导出,导出到Word文件。
四、界面要求:
界面不做具体的规定,可自行设计。
但要本着简洁使用、操作方便、视觉美观的原则。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单项选择题标准化考试系统设计(C语言实训)
————————————————————————————————作者:————————————————————————————————日期:
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include<string.h>
#include<time.h>
struct test
{
char ask[500];//选择题题目
char answer1[100];
char answer2[100];
char answer3[100];
char answer4[100];
char da[100];
int title[100];//随机抽题
char right[10];
} m[1000];
void menu()
{
printf(" ***********单项选择题标准化考试系统³*********\n");
printf(" *********************************************\n");
printf(" 1.试题录入***\n");
printf(" 2.查看所有试题***\n");
printf(" 3.试题抽取并答题***\n");
printf(" 4.判卷并打分***\n");
printf(" 5.退出系统***\n");
printf(" ********************************************\n");
}
int input(int cnt)
{
int i,count,choice=0;
printf("开始输入记录...\n");
count=cnt;
for(i=cnt;i<1000;i++)
{
printf("Continue?(1 Yes 0 No):");
scanf("%d",&choice);
getchar();
if(choice==0)
break;
else
if(choice==1)
{
printf("请输入第%d道题题目,题干和选项:\n",i+1);
printf("请输入题目:");
gets(m[i].ask);
printf("请输入选项A:");
gets(m[i].answer1);
printf("请输入选项B:");
gets(m[i].answer2);
printf("请输入选项C:");
gets(m[i].answer3);
printf("请输入选项D:");
gets(m[i].answer4);
printf("请输入答案:");
scanf("%c",&m[i].right);
cnt++;
}
}
if(count!=cnt)
printf("\n题目输入成功:");
else
printf("\n未输入记录!");
return cnt;
}
void list(int cnt)
{
int i;
printf("开始显示所有题目...");
printf("\n当前文件夹中所有记录显示如下:\n\n");
for(i=0;i<cnt;i++)
{
printf("第(%d)题目:%s\n",i+1,m[i].ask);
printf("A:%s\n",m[i].answer1);
printf("B:%s\n",m[i].answer2);
printf("C:%s\n",m[i].answer3);
printf("D:%s\n",m[i].answer4);
getchar();
}
printf("所有题目显示完成...");
}
void rande(int cnt)
{
int i,j,x=1,n,t;
int title[100];
printf("请输入你想抽取的题数:");
scanf("%d",&n);
if(n>cnt)
printf("您抽取的题目超过了题目总数");
else
{
for(i=1;i<=n;i++)
{
here:x=rand()%n;
title[i]=x;
for(j=0;j<i;j++)
if(title[i]==title[j])
{
goto here;
}
printf(" =============================================\n");
printf("输出抽取到的第%d题目",i);
printf("ÌâÄ¿:%s\n",m[x].ask);
printf("A:%s\n",m[x].answer1);
printf("B:%s\n",m[x].answer2);
printf("C:%s\n",m[x].answer3);
printf("D:%s\n",m[x].answer4);
printf("请输入你的答案:");
scanf("%s",m[x].da);
printf(" =============================================\n");
}
}
printf("´答题成功,按任意键返回主菜单...");
}
void ask(int cnt)
{
int i,n;
int count=0;
printf("请输入已经答题的数目:");
scanf("%d",&n);
for(i=0;i<cnt;i++)
{
if(!strcmp(m[i].da,m[i].right))
{
count++;
}
}
printf("你答对的总题数是%d\n",count);
printf("你最后的得分为%d",(100/n)*count);
system("pause");
}
int main()
{
FILE * fp;
int i=0,count=0,select;
fp=fopen("tiku.txt","a+");
if(fp==NULL)
{
printf("File open error!\n");
exit(0);
}
while(!feof(fp))
{
if(fread(&m[i],sizeof(struct test),1,fp)==1)
{
i++;
count++;
}
}
fclose(fp);
while(1)
{
printf("当前文件夹总共有%d条记录.\n",count);
menu();
printf("请输入你的选择:");
scanf("%d",&select);
switch(select)
{
case 1:
count=input(count);break;
case 2:
list(count);break;
case 3:
rande(count);break;
case 4:
ask(count);break;
case 5:
fp=fopen("tiku.txt","w");
printf("开始保存文件,按任意键继续........");
getchar();
getchar();
for(i=0;i<count;i++)
{
fwrite(&m[i],sizeof(struct test),1,fp);
}
fclose(fp);
printf("\n文件保存成功,按任意键退出系统.....");
getchar();
exit(0);
default:printf("输入错误,请重新输入.....");
}
}
}。