ImageVerifierCode 换一换
格式:DOCX , 页数:29 ,大小:134.40KB ,
资源ID:11978490      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11978490.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(迷你计算器数据结构课程设计报告.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

迷你计算器数据结构课程设计报告.docx

1、迷你计算器数据结构课程设计报告数据结构课程设计报告题目: 迷你计算器 一、课程设计题目:迷你计算器二、问题定义:(由教师指定)功能要求:( 1 )计算任意一个算术表达式的加法、减法、除法以及乘法。( 2 )运算数为整数和小数( 3 )人机界面自定义,要友好。如用户输入错误在计算之前可以修改。三、需求分析以明确的无歧义的陈述说明课程设计的任务,强调的是程序要做什么?并明确规定:1、输入值的范围; 选择运算类型时的输入值范围为 : 08(选项); 实际运算的输入值范围为 : 实数范围。2、输出的形式; Int 、double、long、void, bool。3、程序所能达到的功能;界面友好,输错时

2、可重新输入,可不断选择并运行程序,可自行选择并退出。(1)四则运算(2)复合算法(3)简单取余(4)n的m次方(5)开根号(6)进制转换(7)阶乘运算(8)倒数运算4、算法涉及的基本理论分析:迷你计算器所用到的是:1)、栈的顺序存储结构的算法(结构类型定义),包括:(1) 初始化栈(2) 元素进栈(进栈)(3) 删除元素(出栈)(4) 读取栈顶元素(5) 判断栈是否为空(6) 清楚站内元素,释放动态存储空间(7) 遍历栈元素2)、括号配对检查,分析:在此算法中需要扫描待检查程序中的每一个字符,当扫描到每个大、中、圆左括号时,令其进栈,当扫描到每个大、中、圆右括号时,则检查栈顶是否为相应的左括号

3、,若是则作退栈处理,若不是则表明出现了语法错误,应返回0。当扫描到程序文件结尾后,若栈为空则表明没有发现括号配对的错误,应返回1,反则表明栈中还有未配对的括号,应返回0。3)、后缀表达式的求值算法,其基本思路是:把包含后缀算术表达式的一个字符串由一个字符指针参数所指向,每次从该字符串中读入一个字符,若它是空格则不作任何处理,若它是运算符则表明它的两个操作数已经在栈中,其中栈顶元素为运算符的后一个操作数,栈顶元素的前一个元素为运算符的前一个操作数,把它们弹出后进行相应运算并保存到一个变量中,否则,扫描的字符必为数字或小数点,应把从此开始的浮点数字符串转换为一个浮点数并存入变量中,然后把计算或转换

4、得到的浮点数压入到栈中,依次向下扫描每一个字符并进行上述处理;4)、中辍表达式转换为后辍表达式,其定义是把运算符放到运算对象的后面,其基本思路是:从头到尾扫描中缀表达式中的每一个字符,对于不同类型的字符进行不同情况的处理;5)、自编的算法包括:(1)四则运算(2)复合算法(3)简单取余(4)n的m次方(5)开根号(6)进制转换(7)阶乘运算(8)倒数运算 (0)退出6)、开始界面,退出界面。5、题目研究和实现的价值。实现了一般计算器的简单运算功能。界面友好,多样化。通过完成这样的程序我们可以学到更多的知识。学习一定要有实践,我们可以了解并塑造软件开发师的基本素质。我们发现实现什么功能算法是核心

5、。知道了算法思想就可以借助c语言,c+,java等语言来编程序。四、算法设计1、概要设计阐述说明本算法中用到的所有数据结构的定义及其含义、主程序的流程以及各程序模块之间的层次(调用)关系。迷你计算器(1).cpp文件分析: 程序头函数 数据结构结构体定义自编头文件调用main 主函数minicalculation 调用运行程序(2) main 函数功能分析main开始 功能主界面选选项(0-8) N判断是否符合 Y1四则运算2复合运算3取余运算4n的m次方5开根号6进制转换7阶乘运算1倒数运算0退出结束界面()main结束(3)迷你calculation函数开始主界面 while(1) whi

6、le(1) cinx(0-8) if(x=0 &xnchm N判断是否符合 YbreakswitchCase/倒数运算Case*开根号Case-Case+取余运算Case+四则运算 Chu()Cheng()Jian()Add() (4) B,C,D,E,F,G,H程序类似程序3详细设计(1)实现概要设计中定义的所有数据类型;本次试验中我们主要用到了顺书typedef double ElemType;struct Stack ElemType *stack; int top; int MaxSize;(2)所有函数的接口描述;1 初始化栈为空void InitStack(Stack& S)(1)

7、 返回值类型:空(2) 算法用途:栈的初始化(3) 参数意义:栈2进栈void Push(Stack &S, ElemType item)(1) 返回值类型:空(2) 算法用途:进栈(3) 参数意义:栈中的所有元素3桥3 出栈ElemType Pop(Stack &S)(1) 返回值类型:空(2) 算法用途:出栈(3) 参数意义:栈中的所有元素4 读取栈顶元素ElemType Peek(Stack &S)(1) 返回值类型:空(2) 算法用途:读取栈顶元素(3) 参数意义:栈中的所有元素5检查栈是否为空bool EmptyStack(Stack &S)(1) 返回值类型:空(2) 算法用途:检

8、查栈是否为空(3) 参数意义:栈中的所有元素6 清除线性表的所有元素void ClearStack(Stack &S)(1) 返回值类型:空值;(2) 算法用途:清除线性表的所有元素;(3) 参数S的意义:栈中的所有元素;7 遍历void TraverseStack(Stack &S)(1) 返回值类型:空值;(2) 算法用途:栈的遍历;(3) 参数S的意义:栈中的所有元素;8 括号配对检查bool BracketsCheck(char* a)(1) 返回值类型:逻辑类型;(2) 算法用途:对由a所指字符串为文件名的文件进行括号配对检查;(3) 参数的意义:文件中的括号;9 后缀表达式的求值算

9、法double Compute(char* str)(1) 返回值类型:浮点类型;(2) 算法用途:计算由str所指字符串的后缀表达式的值;(3) 参数的意义:字符串中的运算符与空格;10 中辍表达式转换为后辍表达式int Precedence(char op)(1) 返回值类型:整型;(2) 算法用途:返回运算符op所对应的优先级数值;(3) 参数的意义:运算符;11、void Change(char* s1, char* s2)1、返回类型值:空2、change的算法含义:中辍表达式转换为后辍表达式3、参数s1、s2的意义:可以储存数据的栈12、void Transform(long nu

10、m, int r)1、 返回类型值是:空2、 Transform算法作用:转换进制3、 参数:num的意义:需要进行转换进制的数;r的意义:所需转换的进制数13、double add(double n, double m)1、返回类型:双精度2、add的算法作用:简单加法3、参数n ,m的意义:输入的数据14、double jian(double n, double m)1、返回类型:双精度2、jia的算法作用:简单加法3、参数n,m 的意义:输入的数据15、double cheng(double n, double m)1、返回类型:双精度2、cheng的算法作用:简单乘法3、参数n,m意义

11、:输入的数据16 简单取余int quyu(int n, int m)1、返回类型:int 2、cheng的算法作用:简单取余3、参数n,m意义:输入的数据17 n的m次方double f(double n,int m )1、返回类型:double 2、cheng的算法作用:成方运算3、参数n,m意义:输入的数据18 简单开根号double sqroot(double n)1、返回类型:double 2、cheng的算法作用:开根号3、参数n,m意义:输入的数据19、阶乘运算long jiecheng(int n)1、返回类型:int 2、cheng的算法作用:阶乘运算3、参数n,m意义:输入

12、的数据20 倒数double daoshu(double n)1、返回类型:double 2、cheng的算法作用:倒数3、参数n,m意义:输入的数据(3)所有函数的算法描述(只需要写出伪码算法);1. 栈的初始化void InitStack(Stack& S) S.MaxSize=50; 开辟新的栈,产生了继续,失败退出。 S.top=-1;2元素 进栈void Push(Stack &S, ElemType item) 判断栈是否满,满了扩大一倍,不满继续; S.top+; S.stackS.top=item;3 出栈ElemType Pop(Stack &S) 判断站是否为空,是给提示,

13、否继续。 S.top-; return S.stackS.top+1;4 读取栈顶元素ElemType Peek(Stack &S) 判断站是否为空,是给提示,否继续。 return S.stackS.top;5 检查栈是否为空bool EmptyStack(Stack &S) return S.top=-1;6 删除线性表的所有元素void ClearStack(Stack &S) 逐一删除栈元素。 S.top=-1; S.MaxSize=0;7 遍历void TraverseStack(Stack &S) 判断是否空,是退出,控制下标逐一输出。8 括号配对检查,复合运算错误判断bool B

14、racketsCheck(char* a) 建栈并初始化。 while(ai) switch(ai) case : case : case (: 进栈; case : case : case ): 分别读取栈顶元素判断,是出栈。 判断错误输入并给出提示。 判断栈是否空,是返回真,否返回假9 后缀表达式的求值算法double Compute(char* str) 建栈并初始化 Str存在用switch分别讨论+ - * / 运算,并求值 ClearStack(S);10 中辍表达式转换为后辍表达式int Precedence(char op) +- 优先级低;*/ 优先级高void Change

15、(char* s1, char* s2) 建栈,并用出栈。入栈实现7+8 变为 7 8 + 形式。12 简单加法double add(double n, double m) double sum=n+m; return sum;13 简单减法double jian(double n, double m) double a=n-m; return a;14 简单乘法double cheng(double n, double m) double a=n*m; return a;15 简单除法double chu(double n, double m) double a=n/m; return a;

16、16 简单取余int chu(int n, int m) int a=n%m; return a;17 n的m次方double f(double n,int m ) m=0 时 直接返回1; m0 时 用递归实现 m0 时 用递归实现 20 倒数double daoshu(double n) double a=1/n; return a;21 迷你计算器void minicalculation() 主界面 while(1) 选选项(0-8)并判断。 if(x=1) 四则运算界面 if(x=2) 复合运算界面 if(x=3) 简单取余界面 if(x=4) n的m次方界面 if(x=5) 开根号界

17、面 if(x=6) 进制转换界面 if(x=7) 阶乘运算界面 if(x=8) 倒数运算界面 if(x=0) 退出 退出界面(3)对主程序和其他模块也都需要写出伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序),可采用流程图 、N S 图或PAD图进行描述main开始 功能主界面选选项(0-8) N判断是否符合 Y1四则运算2复合运算3取余运算4n的m次方5开根号6进制转换7阶乘运算1倒数运算0退出结束界面()main结束五、算法实现 迷你计算器六、软件测试这里的测试主要是基于功能的黑盒测试,所以首先提出测试的功能点,然后给出测试数据(包括正确的

18、输入及其输出结果和含有错误的输入及其输出结果。)要求在附件里给出软件的基本数据和测试数据。具体情况见截屏或运行程序。minicalculation.hminicalculation.cpp日志日志.doc七、技术讨论(可选)八、收获与体会1. 学会了一定的c+知识。2. 自己编写了很多小程序。3. 学会了界面美化和程序健壮性。九、软件运行的部分截图及说明(1)主界面(有选择0-8,截图时少了一个),输入选项可运行相关内容。(2)输入1时:简单四则运算,输入格式已给出。输错可提示并重新输入。输入对时运算(只给出了加法,减法、乘法、除法类似,运行正常)(3)输入2时:复合四则运算,输入格式已给出,

19、可有括号、加法、减法、乘法、除法混和运算。输错可提示并重新输入。输入对时运算(4)输入3 时:简单取余算法。输入0时:输入常数时:(5)输入4 时:n的m次方运算输入错误时,给出提示并可重新输入,直到输入正确为止:正数的正数次方:负数的正数次方:正数的负数次方(也可以运算,负数的负数次方)(6)输入5 时:开根号运算考虑到了负数不能开根号:正确的程序如下:(7)输入6 时:十进制转换成 2,4 , 6,8 进制(可选择),输入错时给出提示,并可重新输入,也可安全退出。二进制:四进制六进制八进制(8) 输入7 时:n的阶乘运算输入负数时给出提示,并重新输入:0的阶乘是1:输入正确时运行:(9) 输入 8 时: n的倒数运算(10) 输入0 时:退出界面

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1