应用数据结构课设报告.docx
- 文档编号:28814690
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:30
- 大小:372.64KB
应用数据结构课设报告.docx
《应用数据结构课设报告.docx》由会员分享,可在线阅读,更多相关《应用数据结构课设报告.docx(30页珍藏版)》请在冰豆网上搜索。
应用数据结构课设报告
学号:
课程设计
题目
四则运算练习机
学院
管理学院
专业
信息管理与信息系统
班级
1101
姓名
指导教师
2013
年
07
月
05
日
课程设计任务书
学生姓名:
专业班级:
信管1101
指导教师:
工作单位:
管理学院
题目:
四则运算练习机
初始条件:
小学生往往被要求回家后由家长出一些额外的四则运算练习以加强复习,但每天重复劳动效率低下,现请你设计一个自动出题的程序,以帮助家长解决每天的烦恼。
注意:
本程序不是要求人从键盘输入计算表达式然后由电脑来算,而是由电脑出题,人来算。
要求完成的主要任务:
(包括课程设计工作量及其技术要求、说明书撰写等具体要求)
1.每次习题数量可以预先选择,但每次不能少于5题。
2.每道题目参与运算的数字个数可以预先选择;例如,若指定每题有2个数参与运算,则题目只能出类似4+5=、23-5=、5*2=这样的题目。
但若指定每题有3个数参与运算,则题目只能出类似33-5*5=、6/2+4=、54-12+1=这样的题目。
其余依此类推,为简单起见,可以不考虑参与运算的数字个数不定的情形。
3.每道题目中参与运算的数字位数可以预先选择。
例如,若指定每题中的数字位数不能超过1,则题目中只能有个位数参与运算;若指定每题中得数字为数不能超过2,则题目中不能有百位或更高位的数字出现,但应允许两位数和个位数混合出现。
其余情况以此类推。
4.每道题目中参与运算的运算符号可以预先选择。
例如,若指定每题中的运算符号只有“+”和“-”,则“*”和“/”就不能出现。
其余情况以此类推。
时间安排:
序号
设计内容
所用时间
1
问题分析和任务定义
0.5天
2
数据类型和系统设计
0.5天
3
编码实现和静态检查
3天
4
上机准备和上机调试
2天
5
总结和整理设计报告
1天
合计
7天
指导教师签名:
2013年06月24日
系主任(或责任教师)签名:
2013年06月24日
四则运算练习机
1.需求分析
1.1系统设计总体目标
本系统可随机出100以内的四则运算题。
本系统中的模块具有很强的可续性,可以方便学生进行模拟训练。
本系统操作方便、灵活、简单。
学生打开程序就可以进行做题训练。
本系统可高效、快速的查询学生的做题结果。
1.2系统流程设计
程序运行时各个功能模块运行顺序,如图1-1所示。
图1-1程序运行流程图
1.3系统任务要求
根据程序要求,该系统具有以下功能:
主界面随机出100以内四则运算数学题,能根据题目计算出答案。
用户点进入系统后开始答题,自由选择继续下一题或退出程序,程序自动判断做题是否正确。
1.4模块具体说明
主函数模块包括:
输入函数(scanf()),输出函数(printf())
变量定义模块包括:
随机函数(rand()),调用(int())函数运算种类模块包括:
多分支if语句,关系表达式继续运算模块包括:
goto语句
2.概要设计
2.1总体功能设计
练习者首先选择所要练习的运算类型(加减乘除),再选运算数据的范围。
系统自动出题,练习者解答,答错两次后系统给出正确答案并给出下道题。
每次出十题。
本系统可随机出100以内的四则运算题。
本系统中的模块具有很强的可续性,可以方便学生进行模拟训练。
本系统操作方便、灵活、简单。
学生打开程序就可以进行做题训练。
本系统可高效、快速的查询学生的做题结果。
主程序的流程图见图1-1。
2.1各部分间的层次关系
2.2系统总体结构:
每一次练习的过程可以由这几部分完成:
练习者选择运算种类,练习者选择运算数范围,系统连续出题,系统判断正误并给出提示,系统统计答题分数,由玩家选择是否继续练习。
总共六个步骤:
对于每一次练习,关注的有三个:
运算类型的选择,运算数范围的选择,结果正误的判断。
3.详细设计
3.1所有数据类型
int:
系统的基本整数类型,C保证int类型至少有16位长
short或shortint:
最大的short整数不大于最大的int整数值。
C保证tshort类型至少有16位长。
long或longint:
这种类型的整数不小于最大的int整数值,C保证long至少有32位长。
longlong或longlongint:
这种类型的整数不小于最大的long整数值。
longlong类型至少有64位长。
无符号整数:
无符号整数只有0和正值,这使得无符号数可以表达比有符号数更大的正值。
使用unsigned关键字表示无符号数,例如:
unsignedint,unsignedlong和unsignedshort。
单独的unsigned等价于unsignedint。
3.2画出函数调用关系图
4.调试分析
4.1问题总结及体会
一周的课程设计终于结束啦。
刚接触这个课程设计时,有些不知该怎样下手的感觉,因为感觉平时学的东西很少,很零散,不知该怎么整合到一起使用,所以不知该从哪下手。
由于本课题中的许多知识点都没有和很好的掌握,所以在写程序的时候难免出现许多错误,最后在同学的帮助下完成调试。
在整整一个星期的日子里,我学到很多很多的东西,还有很多在书本上所没有学到过的知识。
通过这次课程设计使我们懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,比如说循环结构„„通过这次课程设计之后,不仅把以前所学过的知识熟悉了,也能更好的运用到实践中去。
这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.总之,这次课程设计让我获益匪浅,让我对C语言的掌握和实践有了更深刻的理解。
通过编写程序,进一步加深、巩固所学专业课程(《数据结构》)的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。
不但熟悉了基本理论知识,还过编写该程序熟悉了选择,循环等结构。
深入练习了函数的调用方法,和文件的读写方法,熟悉了结构体的使用,更加深化了面向过程语言思想,和一些基本算法。
通过对程序的后期调试,熟悉了c语言常见的错误,锻炼了思维的严密性,和完备性。
更锻炼了我们的耐心与细心程度。
4.2算法的时空分析
算法的时空分析即分析算法的时间复杂度与空间复杂度。
时间复杂度,从名字就可以知道,它表示的是算法运行的时间效率。
一个算法运行所耗费的时间,除了与所用的计算软、硬件环境有关外,主要取决于算法中指令重复执行的次数,即语句的频度相关。
一个算法中所有语句的频度之和构成了该算法的运行时间。
空间复杂度指的是实现算法的空间开销,同样使用多项式来表示。
最主要的体现就是数组,数组的大小即为该算法的空间复杂度。
其中比较特殊的是递归算法的复杂度,递归算法本质是一个堆栈,它只会一个情况一个情况的枚举,其空间复杂度并不是总可能数乘上每一次的空间开销,而是最大层数乘上每一次的空间开销。
说到空间复杂度,其实主要担心就是会不会爆内存。
这里有一个很简单的方法就可以确定:
在C/C++里面有sizeof()这个函数(Pascal里面应该也有),它返回的是变量的字节数,比如说sizeof(int),就会告诉你int所占用的空间大小;sizeof(a),其中a是一个数组,这时返回的就是数组a的总空间大小。
对于一个已经写好的程序,我们把它所有静态数组的sizeof()全部加起来,然后除上1024,得到的数字就是所占用的静态内存KB数,有没有爆内存自然一目了然。
5.用户使用说明
5.1先打开TC,找到size.c系统文件
5.2打开原程序文件
5.3单击Run即可运行程序
5.3开始进入运算界面
5.4选择运算类型,选择几位数的运算
5.5输入答案,检验答案,是否继续
5.6可继续选择运算类型
5.7计算完成,退出(1+Shift)
6.测试结果
6.1与源需求分析相比较
该四则运算练习机系统需求
本系统可随机出5道以上100以内的四则运算题。
本系统中的模块具有很强的可续性,可以方便学生进行模拟训练。
本系统操作方便、灵活、简单。
学生打开程序就可以进行做题训练。
本系统可高效、快速的查询学生的做题结果以及可以查看错题并得出自己的准确率。
现该系统已完成了可得出随机的自然数,运算加减乘除四则运算,系统可自动检验结果的准确性,并给出正确答案,另外可随时选择退出该系统,但该系统仍然存在一些问题,比如说,系统不能同时出五道以上的运算题,只能单道出,所以说该系统还尚未完善,这部分功能还正在建设中。
7.附录
#include"stdio.h"
#include"stdlib.h"
voidmain()
{
inta,b,c,d,e,f,g,t;
printf("*******************Welcometouse*****************\n");
printf("\n");
printf("1.Addition\n");
printf("2.Subtraction\n");
printf("3.Multiplication\n");
printf("4.Division\n");
printf("*****************************Pleasechoosecalculatetype:
");
scanf("%d",&a);
while(a<1||a>4)
{
printf("wrong!
inputagain");
scanf("%d",&a);
}
if(a==1)
{
printf("5,yiweishujiayiweishu\n");
printf("6,yiweishujialiangweishu\n");
printf("7,liangweishujialiangweishu\n");
printf("*********************************inputthetype:
");
scanf("%d",&a);
while(a<5||a>7)
{
printf("wrong!
inputagain");
scanf("%d",&a);
}
if(a==5)
{
loop:
b=rand()%10;
c=rand()%10;
d=b+c;
printf("%d+%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d+%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotoloop;
if(f==1)
printf("welcometouseagain!
");
}
if(a==6)
{
loo:
b=rand()%10;
c=rand()%100;
if(c<10)c=c+10;
d=b+c;
printf("%d+%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d+%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotoloo;
if(f==1)
printf("Welcometouseagain!
");
}
if(a==7)
{
loog:
b=rand()%100;
c=rand()%100;
if(c<10)c=c+10;
if(b<10)b=b+10;
d=b+c;
printf("%d+%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d+%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotoloog;
if(f==1)
printf("Welcometouseagain!
");
}
}
if(a==2)
{
printf("5,yiweishujianyiweishu\n");
printf("6,liangweishujianyiweishu\n");
printf("7,liangweishujianyiweishu\n");
printf("inputthetype:
");
scanf("%d",&a);
while(a<5||a>7)
{
printf("wrong!
inputagain");
scanf("%d",&a);
}
if(a==5)
{
car:
b=rand()%10;
c=rand()%10;
d=b-c;
printf("%d-%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d-%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotocar;
if(f==1)
printf("Welcometouseagain!
");
}
if(a==6)
{
truck:
b=rand()%100;
if(b<10)b=b+10;
c=rand()%10;
d=b-c;
printf("%d-%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d-%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gototruck;
if(f==1)
printf("Welcometouseagain!
");
}
if(a==7)
{
boat:
b=rand()%100;
if(b<10)b=b+10;
c=rand()%100;
if(c<10)c=c+10;
d=b-c;
printf("%d-%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d-%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotoboat;
if(f==1)
printf("Welcometouseagain!
");
}
}
if(a==3)
{
printf("5,weishuchengyiweishu\n");
printf("6,yiweishuchengliangweishu\n");
printf("7,liangweishuchengliangweishu\n");
printf("inputthetype:
");
scanf("%d",&a);
while(a<5||a>7)
{
printf("wrong!
inputagain");
scanf("%d",&a);
}
if(a==5)
{
life:
b=rand()%10;
c=rand()%10;
d=b*c;
printf("%d*%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d*%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotolife;
if(f==1)
printf("Welcometouseagain!
");
}
if(a==6)
{
shame:
b=rand()%100;
if(b<10)b=b+10;
c=rand()%10;
d=b*c;
printf("%d*%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d*%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotoshame;
if(f==1)
printf("Welcometouseagain!
");
}
if(a==7)
{
yeah:
b=rand()%100;
c=rand()%100;
if(b<10)b=b+10;
if(c<10)c=c+10;
d=b*c;
printf("%d*%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d*%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n");
printf("yes(0)no
(1)\n");
scanf("%d",&f);
if(f==0)
gotoyeah;
if(f==1)
printf("Welcometouseagain!
");
}
}
if(a==4)
{
printf("5,yiweishuchuyiweishu\n");
printf("6,liangweishuchuyiweishu\n");
printf("7,liangweishuchuliangweishu\n");
printf("inputthetype:
");
scanf("%d",&a);
while(a<5||a>7)
{
printf("wrong!
inputagain");
scanf("%d",&a);
}
if(a==5)
{
hit:
b=rand()%10;
c=rand()%10;
{if(b>c)
{
g=b%c;
if(g!
=0)
{
b=b-g;
d=b/c;
printf("%d/%d=?
\n",b,c);
}
elsed=b/c;
printf("%d/%d=?
\n",b,c);
}
if(c>b)
{
g=c%b;
if(g!
=0)
{
c=c-g;
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
\n",b,c);
}
else
t=c;c=b;b=t;
d=b/c;
printf("%d/%d=?
\n",b,c);
}
printf("inputtheanswer:
");
scanf("%d",&e);}
while(e!
=d)
{
printf("wrong!
inputagain");
printf("%d/%d=?
\n",b,c);
printf("inputtheanswer:
");
scanf("%d",&e);
}
printf("Right!
goon?
\n"
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 应用 数据结构 报告