C语言课程设计(单项选择题标准化考试系统)报告
内附源码、流程图。
重 庆 理 工 大 学
课程设计
课程 程序设计基础C
题目 C语言综合程序设计
院系名称
班 级
学生姓名 学号
指导教师
评阅教师
时 间 2011.6
内附源码、流程图。
1 问题描述
题目十四:单项选择题标准化考试系统设计
功能要求:
(1)、用文件保存试题库。(每个试题包括题干、4个备选答案、标准答案)
(2)、试题录入:可随时增加试题到试题库中
(3)、试题抽取:每次从试题库中可以随机抽出N道题(N由键盘输入)
(4)、答题:用户可实现输入自己的答案
(5)、自动判卷:系统可根据用户答案与标准答案进行评分。
2 系统分析
2.1 题目要求
程序分4个函数来实现菜单操作、将题目装入内存、开始答题、题目的录入。
1.菜单操作:
Main函数,实现程序的菜单操作。根据用户选择的菜单的不同选项调用不同的函数,实现“开始答题”、“添加试题”、“退出系统”等功能。
2.将试题装入内存:
此函数由“开始答题”函数调用。调用此函数时传递一个整型参数m,函数开辟内存空间将试题文件(“C:\test.txt”)中第m道题装入内存中,并返回总题数。如果传递参数m为-1,函数将直接返回试题文件中所储存的总题数,不将任何试题装入内存中。
3.开始答题:
函数会让用户输入要答的题目数并进行判断,若用户要求的答题数大于总题数程序会要求用户重新输入。程序生成随机数并判断是否合法,如果合法就调用“将试题装入内存”函数,参数为随机数。在屏幕上输出题干和选项并让用户输入答案。判断用户输入答案是否正确。
4.添加试题:
内附源码、流程图。
打开储存试题的文件(“C:\test.txt”),开辟内存空间。进行试题信息输入。自动保存文件。
2.2算法设计
(1)模块一:菜单操作模块
该模块实现程序的菜单操作。
实现算法如下:
1在屏幕上输出菜单选项。 ○
2接受用户输入。 ○
3判断用户输入,跳转到对应函数入口。 ○
(2)模块二:将题目装入内存模块
函数开辟内存空间将试题文件中题目装入内存中。
实现算法如下:
1遍历文件判断回车符个数(计算题目数)○。
2根据提供参数判断是否将当前题目装入内存。 ○
3开辟内存空间,将题目信息装入内存。 ○
4关闭文件返回题目总数。 ○
(3)模块三:开始答题模块
函数会让用户输入要答的题目数,在屏幕上输出题干和选项并让用户输入答案。判断用户输入答案是否正确。
实现算法如下:
1接受用户输入题目数,判断是否合法(大于0、小于总题数)○。
2置随机数并判断随机数是否合法。 ○
3调用将题目装入内存模块题目装入内存。 ○
4在屏幕上输出题目,接受用户输入答案。 ○
5判断用户输入的答案是否正确,输出答题结果统计。 ○
(4)模块四:添加试题模块
打开储存试题的文件进行试题信息输入。
实现算法如下:
1打开文件。 ○
2开辟内存空间,接受用户输入题目信息。 ○
内附源码、流程图。
3判断用户输入是否合法。 ○
4写到文件并保存。 ○
2.3流程图
1.菜单操作模块:
2.将题目装入内存模块:
内附源码、流程图。
3.开始答题模块:
4.添加试题模块:
内附源码、流程图。
重庆理工大学课程设计
内附源码、流程图。
2.4关键问题
文件读写时文件指针的移位: 当用fgetc()函数遍历文件时文件指针是顺序移动的,当遇到回车符时才会判断出文件在第几行。而当读取文件信息的时候文件指针的位置应该在行首,这是就要用到fseek()函数将文件指针移位。而且还要恢复文件指针的位置,用于继续判断当前是文件的第几行。
3 系统实现
3.1 源代码
#include <stdio.h>
#include <stdlib.h>
#define LEN sizeof(struct test)
struct test
{
};
struct test *head;//全局变量储存第一个结构体的指针
int zts(int m)//将第m道题装入内存,输入-1时将返回总题数
{
char que[81]; char answer1[81]; char answer2[81]; char answer3[81]; char answer4[81]; char ture; struct test *next; FILE *fp; struct test *p1=NULL; char ch,ch1[5]; int i,n=0,wz,py; if((fp=fopen("c:\\test.txt","r"))==NULL)//只读方式打开文件 { } do printf("文件打开失败请检查C盘下的test.txt文件。\n"); exit(0);
内附源码、流程图。
{ fscanf(fp,"%s%s%s%s%s%s",&p1->que,&p1->answer1,&p1->answer2,&p1->answer3,&ppy=1; ch=fgetc(fp); for(i=0;ch!='\n'&&ch!=-1;i++)//循环判断回车符个数 { } n++; //储存行数的变量 if(n==m)//如果当前行数与传入参数相等 { if(p1==NULL)//判断是否是第一次开辟内存空间 { } else { } wz=ftell(fp);//记录指针当前位置 fseek(fp,(wz-py-1),0);//调整指针位置到行首 p1->next=p1; p1=(struct test *)malloc(LEN); p1->next=NULL; p1=(struct test *)malloc(LEN); head=p1; p1->next=NULL; py++; ch=fgetc(fp); 1->answer4,&ch1);
} fseek(fp,wz+1,0);//调整指针位置到行末 p1->ture=ch1[0]; break;//将数据装入内存后跳出循环 }while(!feof(fp));//文件结束跳出循环 fclose(fp);
内附源码、流程图。
return n;//返回题目总数n
}
void exe1()
{
void main();
void exe2();
int n,m=0,tm,i,t=0,f=0;
char ans[2];
struct test *p1;
system("cls");
printf("请输入要答题数:");
scanf("%d",&n);
tm=zts(-1);
if(0>n||n>tm)
{
printf("答题数应小于总数!");
exe1();
}
for(i=0;i<n;i++)//n为用户要答题数
{
do
{
m=rand();//置随机数
}while(!(0<m&&m<=tm));//判断产生的随机数是否符合要求
zts(m);
p1=head;//将zts开辟的结构体首地址赋给p1
printf("\n第%d题:\n",i+1);
printf("%s\n%s\n%s\n%s\n%s\n请输入答
",p1->que,p1->answer1,p1->answer2,p1->answer3,p1->answer4);
scanf("%s",&ans);
if(toupper(ans[0])==p1->ture)//判断用户输入答案是否正确
{
printf("恭喜你答对了!\n\n");
t++;//回答正确统计
案:
内附源码、流程图。
} else { } printf(&quo …… 此处隐藏:3664字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [文秘资料]班长职务辞职报告
- [文秘资料]完美的辞职报告
- [文秘资料]经典的员工辞职报告
- [文秘资料]医院口腔医生辞职报告
- [文秘资料]总经理辞职报告范文四篇
- [文秘资料]超市职员个人辞职报告
- [文秘资料]村妇联主任的辞职报告
- [文秘资料]辞职报告书格式
- [文秘资料]酒店辞职报告简单范文
- [文秘资料]联通的辞职报告
- [文秘资料]2017最新私企员工辞职报告范文
- [文秘资料]2019年度医院基层党组织书记抓党建述职
- [文秘资料]工作时间长辞职报告
- [文秘资料]辞职报告怎么写出来
- [文秘资料]个人能力原因辞职报告
- [文秘资料]网络工程师辞职报告
- [文秘资料]项目部辞职报告
- [文秘资料]缝纫工辞职报告怎么写
- [文秘资料]XXX州委书记述职报告
- [文秘资料]抓基层党建工作述职报告
- (王虎应老师讲课记录)六爻理象思维
- 八个常见投影机故障排除法
- 质量专业综合知识(中级)第一章质量管理
- 煤矿班组建设实施意见
- 我国快餐业与肯德基经营模式的比较与分
- 汽车保险杠模具标准化模架技术工艺研究
- 汽车二级维护作业团体赛比赛规程
- 装卸搬运工安全操作规程
- 高效的工作方法-刘铁
- 依据《生产安全事故报告和调查处理条例
- 2015专业PS夜景亮化效果图制作教程
- 企业劳动定额定员浅析
- 中枢神经系统医学影像学本科五年制第五
- 长城汽车参观探营第三站:研发试验中心
- 小升初语文专项训练
- 建筑工程质量检测资质分类与等级标准
- 周燕珉-我国养老社区的发展现状与规划
- 《生命里最后的读书会》读后感
- 实验室管理评审报告
- CCNA思科网院教程精华之网络基础知识




