C语言单项选择题标准化考试系统Word格式.doc

上传人:wj 文档编号:6941272 上传时间:2023-05-07 格式:DOC 页数:17 大小:1.36MB
下载 相关 举报
C语言单项选择题标准化考试系统Word格式.doc_第1页
第1页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第2页
第2页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第3页
第3页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第4页
第4页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第5页
第5页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第6页
第6页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第7页
第7页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第8页
第8页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第9页
第9页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第10页
第10页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第11页
第11页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第12页
第12页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第13页
第13页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第14页
第14页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第15页
第15页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第16页
第16页 / 共17页
C语言单项选择题标准化考试系统Word格式.doc_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C语言单项选择题标准化考试系统Word格式.doc

《C语言单项选择题标准化考试系统Word格式.doc》由会员分享,可在线阅读,更多相关《C语言单项选择题标准化考试系统Word格式.doc(17页珍藏版)》请在冰点文库上搜索。

C语言单项选择题标准化考试系统Word格式.doc

三、函数调用关系图

Main()

Menu()

ReadfromFile()

Answer()

createLinkedList()

Input()

InsertNode()

WritetoFile()

Output()

TorF()

图1函数调用关系图

四、各函数功能说明

1.main() 主函数

2.Menu()菜单函数

3.voidAnswer(intn,TEST*sp)答题函数

4.voidOutput(TEST*,inti)输出第n道题题目

5.intTorF(TEST*sp,charm)判卷函数

6.voidInput(TEST*)题目录入函数

7.voidReadfromFile(TEST*sp)从文件中读取题目信息

8.TEST*createLinkedList(TEST*sp) 创建链表

9.TEST*InsertNode(TEST*head,TEST*s)插入题目函数

10.voidWritetoFile(TEST*head)保存到文件

五、流程图

六、程序运行效果图

1.初始界面

2.随机抽题

3.答题并判卷

4.插入试题

5.保存到文件

七、总结

通过这短短5天的时间,学到了许多东西,尤其是对链表及文件的使用。

在这之前对于链表和文件的使用还不是特别明白,现在已经可以较为熟练的应用它们。

对结构体数组的使用也更加清晰了。

在做单项选择题标准化考试系统时,碰到的第一个问题就是如何从文件里读取数据,为了解决这个问题,我细心的研究了老师给的课件,以及之前写过的学生成绩管理系统V6.0,最终解决了这个问题。

碰到的第二个问题是,如何让编译器随机抽取的题目不重复,通过认真思考算法,最终得出了一个较为合理的算法。

第三个问题是,链表的使用,在做“插入试题”这一块的函数时,经常出现编译错误的提示,仔细阅读编译器提供的错误信息,并对程序进行修改,最后也成功解决了这一个问题。

这份程序在文件的读取和保存以及链表的使用方面参考了老师给的课件,并进行修改。

但是,我的程序在图形处理上基本是没有,所以界面不是特别美观。

通过网络资源,学会了清屏,system(“cls”);

通过这次的课程设计,让我进一步的了解到C语言在我们日常生活中的重要性,体会到编一个对人们现实生活有用处的程序的快乐,更进一步的激发了我学习这门语言的兴趣.经过这次的训练,我相信自己以后会用更多的时间来把这门语言学好,掌握好这门必修的基础语言。

最后,在此对我的C语言老师——陈老师,表示感谢。

感谢她平时认真地帮我调试程序,并耐心地解答疑点。

在她的辅导下我从对C语言没有丝毫概念的程度到现在已经可以成功地写出一些比较像样的程序,是她开启了我的编程人生。

八、参考文献

[1]邱建华.C语言程序设计教程.东软电子出版社,2009

[2]谭浩强.C程序设计(第三版).清华大学出版社,2005

[3]邱建华.C语言程序设计随堂实训及上机指导.东北大学出版社,2007

九、程序清单

/*单项选择题标准化考试系统设计*/

#include<

stdio.h>

stdlib.h>

malloc.h>

time.h>

string.h>

#defineM30

typedefstructtest

{

charproblem[300];

charoption1[100];

charoption2[100];

charoption3[100];

charoption4[100];

charkey;

structtest*next;

}TEST;

Menu();

//菜单函数

voidAnswer(intn,TEST*sp);

//答题函数

voidOutput(TEST*,inti);

//输出第n道题题目

intTorF(TEST*sp,charm);

//判卷函数

voidInput(TEST*);

//录入题目

voidReadfromFile(TEST*sp);

//从文件中读取题目信息

TEST*createLinkedList(TEST*sp);

//创建链表

TEST*InsertNode(TEST*head,TEST*s);

//插入函数

voidWritetoFile(TEST*head);

//保存到文件

intmain(void)

TESTtest[M];

TESTs;

TEST*head;

intitem,n;

while

(1)

{

Menu();

scanf("

%d"

&

item);

ReadfromFile(&

test);

switch(item)

{

case1:

printf("

请输入答题数:

"

);

scanf("

%d"

n);

Answer(n,&

break;

case2:

system("

cls"

Input(&

s);

head=createLinkedList(&

head=InsertNode(head,&

case3:

system("

WritetoFile(head);

case4:

exit(0);

default:

printf("

输入有误!

请重新输入。

\n"

}

}

}

//菜单函数

printf("

\n\t****************单项选择题标准化考试系统*********************\n"

\t*1.答题并判卷*\n"

\t*2.插入试题*\n"

\t*3.保存到文件*\n"

\t*4.退出程序*\n"

\t*************************************************************\n"

\t\t请输入选项:

//答题函数

voidAnswer(intn,TEST*sp)

inti,j,score=0,num[M];

charm;

srand(time(NULL));

num[0]=rand()%(M-1)+0;

for(i=0;

i<

n;

i++)

loop:

srand(time(NULL));

//产生真随机数

num[i]=rand()%(M-1)+0;

for(j=i;

j>

=0;

j--)//保证不出现重复的题目

if(num[j]==num[j-1])//若抽中的题重复则重新抽题

{

gotoloop;

}

Output(&

sp[num[i]],i+1);

//输出抽中的题目

printf("

请输入答案:

%c"

m);

score+=TorF(&

sp[num[i]],m);

//判段用户输入的答案与标准答案是否一致

\n你的总成绩为:

%d\n"

score);

//输出总成绩

voidOutput(TEST*sp,inti)//输出第n道题题目函数

{

(%d)"

i);

%s\n"

sp->

problem);

A%s\n"

option1);

B%s\n"

option2);

C%s\n"

option3);

D%s\n"

option4);

intTorF(TEST*sp,charm)//判卷函数

if(sp->

key==m)//若用户输入的答案与标准答案一致,返回1

Right!

return1;

else

Wrong!

//若用户输入的答案与标准答案不一致,返回0

return0;

voidInput(TEST*sp)//试题录入函数

请输入要插入的试题信息:

请输入题干:

scanf("

%s"

请输入选项A:

%s"

请输入选项B:

请输入选项C:

请输入选项D:

sp->

key);

voidReadfromFile(TEST*sp)//文件读取函数

{

FILE*fp;

inti;

if((fp=fopen("

test.txt"

"

r"

))==NULL)//文件打开失败

{

printf("

Failuretoopentest.txt!

exit(0);

}

for(i=0;

!

feof(fp);

i++)//文件打开成功

fscanf(fp,"

sp[i].problem);

//将读出的数据保存在sp变量里

fscanf(fp,"

sp[i].option1);

sp[i].option2);

sp[i].option3);

sp[i].option4);

&

sp[i].key);

fclose(fp);

//关闭文件

TEST*createLinkedList(TEST*sp)//创建链表

inti;

TEST*head=NULL,*q=NULL,*p=NULL;

//定义三个变量

M;

p=(TEST*)malloc(sizeof(TEST));

//申请内存

p=&

sp[i];

p->

next=NULL;

if(i==0)

head=p;

//链表的表头

else

q->

next=p;

q=p;

returnhead;

TEST*InsertNode(TEST*head,TEST*s)//插入函数

{

intn,i;

TEST*p,*q;

p=head;

q=p->

next;

printf("

请输入要在哪个节点后插入题目信息:

scanf("

for(i=0;

q!

=NULL&

&

n!

=i+1;

i++) //遍历

{

p=p->

q=q->

}

if(q==NULL)

printf("

Notfound!

}

Else//插入数据

p->

next=s;

s->

next=q;

}

voidWritetoFile(TEST*head)//保存到文件

TEST*q;

if((fp=fopen("

student.txt"

w"

))==NULL)//文件打开失败

printf("

Failuretoopenfile!

exit(0);

}

for(q=head;

=NULL;

q=q->

next)//用链表的方式将数据保存到文件

fprintf(fp,"

q->

%s\n"

q->

%c\n"

//关闭文件

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 冶金矿山地质

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2