C语言单项选择题标准化考试系统_第1页
C语言单项选择题标准化考试系统_第2页
C语言单项选择题标准化考试系统_第3页
C语言单项选择题标准化考试系统_第4页
C语言单项选择题标准化考试系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

1、青岛理工大学«C语言程序设计题目C语言单项选择题标准化考试系统指导教师:姓名:学号:班级:专业:地点:时间: 2013-7-1 至 2013-7-5一、内容【设计内容】试设计一单项选择题标准化考试系统,实现试题的录入、抽取、用户的答题、 系统的自动判卷等功能。【设计要求】1、用文件保存试题库。(每个试题包括题干、 4个备选答案、标准答案)2、试题录入:可随时增加试题到试题库中3、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)4、答题:用户可实现输入自己的答案5、自动判卷:系统可根据用户答案与标准答案的对比实现判卷并给出成绩。二、上机环境操作系统:windows.XP开发工

2、具:VC6.0三、函数调用关系图Main()Menu()ReadfromFile()Answer()Output()TorF()I createLinkedList()_JInput()InsertNode()WritetoFile()主函数菜单函数答题函数输出第 n 道题题目判卷函数题目录入函数从文件中读取题目信息创建链表插入题目函数保存到文件图 1 函数调用关系图四、各函数功能说明1 main()2 Menu()3 void Answer(int n,TEST * sp)4 void Output(TEST* ,int i)5 int TorF(TEST *sp,char m)6 void

3、 Input(TEST *)7 void ReadfromFile(TEST* sp)8 TEST * createLinkedList(TEST*sp)9 TEST* InsertNode(TEST *head, TEST*s)10 void WritetoFile(TEST* head)五、流程图开始1Menu()输入选择item真< Item=1 ? 率血假:Item=2?J录入题目 >信息假V< Item=3 ?保存文件假< Item=4 ?>真结束可注尸左将题目信息>1创建科h氤链表中图2系统总流程图I开始输入答 题数n图3 Answer。函数流程

4、图(开始/输出题号,输出选项A/输出选项B'/输出选项C输出选项D /,f(结束(开始)/输入答 7/ 案m/ /标选答案与Y输入答案是| 、否相等?真假7输出/ 输出/R Right!/"Wrongi ” / Z4r+该题分数为1该题分数为0分分*T*结束 图4 Ooutput()函数流程图图5 TorF ()函数流程图开开A B C D输入题目输入选项输入选项输入选项输入选项输入答案图6 Input。函数流程图图7 ReadfromFile ()函数流程图开始图 8 createLinkedList()函数流程图q=NULL?(q!=NULL&&n!=i+

5、1)?4.】艮出2.随机抽题*_输入n图9 InsertNode()函数流程图p, q指针都 指向下一节点i+六、程序运行效果图1.初始界面输出“Notfound!将保存信息 的s桶入p, q之间; 返回头指针p, q i=0 注* * * M* m M! X* M请输入选项t统本件 值判题文序 亲:歼尼7|.程 化超人存出 准退 一下 " , 1234 题3.答题并判卷用一:20120"3T傅颖金、单项选择题标准化考试系统设计'Debug、单项选择题标准化考试.一n羹件 试判题文序 化题入存出 准区退请输入选项:1请输入答壑数:3工 C请亘中能手AB 一C衣制、-

6、制、十进 请输入答集:AEight!2魏源在其C 学技术,以期富自 A 4四洲志5B海国图志D 1算窠塞 请输入答案:4.插入试题-K+表、制整常数的进制是 六出制提出了叼 ,抵御外国制夷”的思想,主张学因处国先进的军事和科 :斤中国近代向西方学习的新风。网干项项项项差选管要 八入?入入入入入入1 1 1 BA B c D f5.保存到文件前一:20120713T便核金'单项选择题标淮化考试系统设计Dcbu姑单项选择建标准化考试.一 1 A'lA'lA'lA'lA'lA. 愉输八人项项项项差选选选选答要.%的试题信息IA:12B:13C:14D:

7、15瑜个节点后插入题目信息:6单项选择题标准化工.睿题3 .保存创文件4 .退出程序请输入选项:七、总结通过这短短5天的时间,学到了许多东西, 尤其是对链表及文件的使用。 在这之前对于 链表和文件的使用还不是特别明白, 现在已经可以较为熟练的应用它们。 对结构体数组的使 用也更加清晰了。V6.0,在做单项选择题标准化考试系统时, 碰到的第一个问题就是如何从文件里读取数据, 为 了解决这个问题,我细心的研究了老师给的课件,以及之前写过的学生成绩管理系统最终解决了这个问题。碰到的第二个问题是,如何让编译器随机抽取的题目不重复,通过认真思考算法,最终得出了一个较为合理的算法。第三个问题是,链表的使用

8、,在做“插入试题”这一块的函数时,经常出现编译错误的提示, 仔细阅读编译器提供的错误信息,并对程序进行修改,最后也成功解决了这一个问题。这份程序在文件的读取和保存以及链表的使用方面参考了老师给的课件,并进行修改。但是, 我的程序在图形处理上基本是没有,所以界面不是特别美观。通过网络资源,学会了清屏,system(“cls” );通过这次的课程设计,让我进一步的了解到C 语言在我们日常生活中的重要性,体会到编一个对人们现实生活有用处的程序的快乐,更进一步的激发了我学习这门语言的兴趣经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。最后,在此对我的C 语言老师

9、陈老师,表示感谢。感谢她平时认真地帮我调试程序,并耐心地解答疑点。在她的辅导下我从对C 语言没有丝毫概念的程度到现在已经可以成功地写出一些比较像样的程序,是她开启了我的编程人生。八、参考文献1 邱建华C 语言程序设计教程东软电子出版社,20092 谭浩强C 程序设计(第三版)清华大学出版社,20053 邱建华C 语言程序设计随堂实训及上机指导东北大学出版社,2007九、程序清单/* 单项选择题标准化考试系统设计*/#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<time.h&g

10、t;#include<string.h>#define M 30 typedef struct testchar problem300;char option1100;char option2100;char option3100;char option4100;char key;struct test *next;TEST;/菜单函数Menu();/答题函数/输出第n 道题题目/判卷函数/录入题目/从文件中读取题目信息/创建链表/插入函数/保存到文件void Answer(int n,TEST * sp);void Output(TEST* ,int i);int TorF(TE

11、ST *sp,char m);void Input(TEST *);void ReadfromFile(TEST* sp);TEST * createLinkedList(TEST*sp);TEST* InsertNode(TEST *head, TEST*s); void WritetoFile(TEST* head);int main(void)TEST testM;TEST s;TEST * head;int item,n;while(1)Menu();scanf("%d",&item);ReadfromFile(&test);switch(item)

12、case 1:printf(" 请输入答题数:");scanf(" %d",&n);Answer(n,&test);break;case 2: system("cls");Input(&s);head=createLinkedList(&test);head=InsertNode(head,&s);break;case 3:system("cls");WritetoFile(head);break;case 4:exit(0);break;default:printf(&qu

13、ot; 输入有误!请重新输入。n");/菜单函数Menu() printf("nt*printf("t* printf("t* printf("t* printf("t* printf("t*单项选择题标准化考试系统*n");1 .答题并判卷2 .插入试题3 .保存到文件4 .退出程序*n");printf("tt 请输入选项:");/答题函数void Answer(int n,TEST* sp)int i,j,score=0,numM;char m;srand(time(NULL);

14、num0=rand()%(M-1)+0;for(i=0;i<n;i+)loop:srand(time(NULL);numi=rand()%(M-1)+0;for(j=i;j>=0;j-)/产生真随机数/保证不出现重复的题目if(numj=numj-1)goto loop;/若抽中的题重复则重新抽题*n");*n");*n");*n");Output(&spnumi,i+1);printf(" 请输入答案:");scanf(" %c",&m);score+=TorF(&spnumi

15、,m);printf("n 你的总成绩为:%dn",score);/输出抽中的题目/输出总成绩/判段用户输入的答案与标准答案是否一致/输出第n 道题题目函数void Output(TEST *sp,int i)printf("(%d) ",i);printf(" %sn",sp->problem);printf(" A %s n",sp->option1);printf("B %sn",sp->option2);printf("C %sn",sp->o

16、ption3);printf("D %sn",sp->option4);/判卷函数int TorF(TEST *sp,char m) if(sp->key=m)/若用户输入的答案与标准答案一致,返回1printf("Right!n");return 1;elseprintf("Wrong!n");/若用户输入的答案与标准答案不一致,返回0return 0;/试题录入函数n");void Input(TEST *sp)printf(" 请输入要插入的试题信息:printf(" 请输入题干:n&q

17、uot;);scanf(" %s",sp->problem);printf(" 请输入选项A:");scanf("%s",sp->option1);printf(" 请输入选项B:");scanf("%s",sp->option2);printf(" 请输入选项C:");scanf("%s",sp->option3);printf(" 请输入选项D:");scanf("%s",sp->o

18、ption4);printf(" 请输入答案:");scanf(" %c",&sp->key);void ReadfromFile(TEST* sp)/文件读取函数FILE * fp;int i;if(fp=fopen("test.txt","r") = NULL )/文件打开失败printf("Failure to open test.txt!n"); exit(0); for(i=0;!feof(fp); i+)/文件打开成功fscanf(fp," %s",

19、 blem);/将读出的数据保存在sp 变量里fscanf(fp,"%s", spi.option1); fscanf(fp,"%s", spi.option2);fscanf(fp,"%s", spi.option3);fscanf(fp,"%s", spi.option4); fscanf(fp," %c", &spi.key); fclose(fp);/关闭文件TEST * createLinkedList(TEST*sp)/创建链表 int i;TEST*head=

20、NULL,*q=NULL,*p=NULL;/定义三个变量for(i=0;i<M;i+) p= (TEST*)malloc(sizeof(TEST);/申请内存p=&spi; p->next=NULL; if(i=0) head=p;/链表的表头 else q->next=p; q=p; return head;TEST* InsertNode(TEST *head, TEST*s)/插入函数 int n,i;TEST*p,*q;p=head;q=p->next;printf(" 请输入要在哪个节点后插入题目信息:");scanf(" %d

温馨提示

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

最新文档

评论

0/150

提交评论