最新C语言单项选择题标准化考试系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛理工大学《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天的时间,学到了许多东西,尤其是对链表及文件的使用。在这之前对于链表和文件的使用还不是特别明白,现在已经可以较为熟练的应用它们。对结构体数组的使用也更加清晰了。
在做单项选择题标准化考试系统时,碰到的第一个问题就是如何从文件里读取数据,为了解决这个问题,我细心的研究了老师给的课件,以及之前写过的学生成绩管理系统V6.0,
最终解决了这个问题。碰到的第二个问题是,如何让编译器随机抽取的题目不重复,通过认真思考算法,最终得出了一个较为合理的算法。第三个问题是,链表的使用,在做“插入试题”这一块的函数时,经常出现编译错误的提示,仔细阅读编译器提供的错误信息,并对程序进行修改,最后也成功解决了这一个问题。
这份程序在文件的读取和保存以及链表的使用方面参考了老师给的课件,并进行修改。但是,我的程序在图形处理上基本是没有,所以界面不是特别美观。通过网络资源,学会了清屏,system(“cls”);
通过这次的课程设计,让我进一步的了解到C语言在我们日常生活中的重要性,体会到编一个对人们现实生活有用处的程序的快乐,更进一步的激发了我学习这门语言的兴趣.经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。
最后,在此对我的C语言老师——陈老师,表示感谢。感谢她平时认真地帮我调试程序,并耐心地解答疑点。在她的辅导下我从对C语言没有丝毫概念的程度到现在已经可以成功地写出一些比较像样的程序,是她开启了我的编程人生。
八、参考文献
[1] 邱建华.C语言程序设计教程.东软电子出版社,2009
[2] 谭浩强.C程序设计(第三版).清华大学出版社,2005
[3] 邱建华.C语言程序设计随堂实训及上机指导.东北大学出版社,2007
九、程序清单
/*单项选择题标准化考试系统设计*/
#include
#include
#include
#include
#include
#define M 30
typedef struct test
{
char problem[300];
char option1[100];
char option2[100];
char option3[100];
char option4[100];
char key;
struct test *next;
}TEST;
Menu(); //菜单函数
void Answer(int n,TEST * sp); //答题函数
void Output(TEST* ,int i); //输出第n道题题目
int TorF(TEST *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 test[M];
TEST s;
TEST * head;
int item,n;
while(1)
{
Menu();
scanf("%d",&item);
ReadfromFile(&test);
switch(item)
{
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("输入有误!请重新输入。\n");
}
}