沈阳航空航天大学。
课程设计。学号 2009040703018
班级 94070301
姓名刘鹏 指导教师杨煦
2010 年 9 月 17 日。
沈阳航空航天大学。
课程设计任务书。
系:自动化学院专业:测控技术与仪器(运载器综合测试技术方向) 班级:94070301
学号:2009040703018 题目:小学生实用cai教学软件。
一、课程设计时间。
2010~11第1学期第3周,共计1周,20学时。
二、课程设计内容。
用c语言编写软件完成以下任务:
1.在程序界面录入题库,试题具有加、减、乘、除等运算功能;
2.随机抽题并验证结果。
三、课程设计要求。
1. 程序质量:
贯彻结构化程序设计思想。
用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
用户界面中的菜单至少应包括“题库录入”、“随机抽题”、“退出”3项。
**应适当缩进,并给出必要的注释,以增强程序的可读性。
2. 课程设计说明书:
课程结束后,上交课程设计说明书和源程序。课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字。
指导教师学生签名:__
五、成绩。六、教师评语。
目录。一、需求分析1
二、设计分析1
三、主要界面截图4
四、技术要点4
五、个人总结7
六、参考文献8
七、源程序8
经过对程序设计题目的分析可知,整个程序的设计实现大致分为2个模块,其中每一个模块对应一个函数,两个函数的实现均严格按照题目的要求。
1、录入题库函数 problem() 录入预先想好的题目,并将答案一并记录在内;
2、练习函数lianxi() 按要求实现做一题并给出答案的目的;
除上面介绍的功能之外,主函数中除了必要的目录一栏外还具有退出功能,可以在程序的一次运行当中循环执行所有的功能,并根据需要终止程序的执行。
每道计算题无论是数字还是符号都是随机的,这样做题比较合理。
1、程序总体结构图。
图1 程序总体结构图。
2、具体功能框图。
1)录入题库函数 problem()
图2录入题库函数。
2)练习函数lianxi()
图3练习函数。
三、主要界面截图。
录入题库函数。
练习函数。四、技术要点。
本程序主要由三个自定义函数和一个主函数组成,其中主函数以菜单的形式调用其他函数来实现要求的所有功能。在这些函数当中,录入题库函数、练习函数是程序中较为核心的部分,下面分别进行说明。
1、录入题库。
此函数先录入预先想录的题目和答案,以便后面程序随机抽取调用。具体的程序段如下:
struct problem
char pro[20pro为问题*/
char ans[10ans为答案*/
struct problem yj[100定义结构体变量*/
void insert(int j)
printf("请输入题目: "
scanf("%s",yj[j].pro);
printf("输入答案:")
scanf("%s",yj[j].ans);
2、练习函数。
此函数先产生随机数,并由随机数得到指定的四则运算题目,通过和键盘输入的数字进行比较后输出正确结果后返回主函数。具体的程序段如下:
void lianxi()
int no,x,y,s,answer,guess,count=0; /no为考试做题数,answer为正确答案,guess为认为的答案*/
srand( (unsigned)(null) )
for(no=1;no<=2;no++)
printf("question no %d. :no);
x= rand()%100;
y= rand()%100;
s= rand()%4s为所用算法*/
switch(s匹配相应算法*/
case 0:
printf("%d+%d=? your answer is :"x,y);
answer=x+y;
break;
case 1:
printf("%d-%d=? your answer is :"x,y);
answer =x-y;
break;
case 2:
printf("%d*%d=? your answer is :"x,y);
answer=x*y;
break;
case 3:
while(y==0||x%y!=0)
x= rand()%100;
y= rand()%100;
printf("%d/%d=? your answer is :"x,y);
answer=x/y;
break;
scanf("%d",&guess);
printf("your answer is :%d the right answer is :%d ",guess,answer);
if(guess==answer)
count计算回答正确的次数*/
printf(" right");
else
printf(" wrong");
printf("right answer = d, wrong answer = d",count, 2-count);
printf("your score = d", 100*count/2);
开始接到这道题时,我有一些茫然,不知如何下手。后来经过对题目的分析,查阅了相关的资料,思路也逐渐清晰起来。继而本次设计中我独立完成了任务,在上机过程中,遇到了诸多难题,但当通过自己的努力独立解决问题时,也取得了一定的成就感,更多地了解了程序编辑方面的知识,特别是switch函数,for语句,以及模块式设计思想。
switch 可用为制作目录,是对模块化的基础,而且首次画流程图,基本掌握了流程图的画法。
这次c语言课程设计虽然结束了,但通过这次学习活动我学到了很多东西,在程序设计过程中体验到那严谨,认真与一丝不苟的学习态度。我相信在这次课程设计中我所学到的知识会为我在以后学习计算机的过程中起到很大的帮助!
1 谭浩强.c程序设计.北京:清华大学出版社,2005
2 刘成等.c语言程序设计实验指导与习题集.北京:中国铁道出版社,2006
#include <>
#include <>
#include <>调用库函数*/
struct problem
char pro[20pro为问题*/
char ans[10ans为答案*/
struct problem yj[100定义结构体变量*/
void insert(int j)
printf("请输入题目: "
scanf("%s",yj[j].pro);
printf("输入答案:")
scanf("%s",yj[j].ans);
void lianxi()
int no,x,y,s,answer,guess,count=0; /no为考试做题数,answer为正确答案,guess为认为的答案*/
srand( (unsigned)(null) )
for(no=1;no<=2;no++)
printf("question no %d. :no);
x= rand()%100;
y= rand()%100;
s= rand()%4s为所用算法*/
switch(s匹配相应算法*/
case 0:
printf("%d+%d=? your answer is :"x,y);
answer=x+y;
break;
case 1:
printf("%d-%d=? your answer is :"x,y);
answer =x-y;
break;
case 2:
printf("%d*%d=? your answer is :"x,y);
answer=x*y;
break;
case 3:
while(y==0||x%y!=0)
x= rand()%100;
y= rand()%100;
printf("%d/%d=? your answer is :"x,y);
answer=x/y;
break;
scanf("%d",&guess);
printf("your answer is :%d the right answer is :%d ",guess,answer);
if(guess==answer)
count计算回答正确的次数*/
printf(" right");
else
printf(" wrong");
printf("right answer = d, wrong answer = d",count, 2-count);
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...