用C++实现简单计算器_第1页
用C++实现简单计算器_第2页
用C++实现简单计算器_第3页
用C++实现简单计算器_第4页
用C++实现简单计算器_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HUBEI NORMAL UNIVERSITY 项目名称 项目名称 学生信息管理系统需求分析学生信息管理系统需求分析 姓姓 名名 学学 号 号 班班 级级 一 需求描述 度这次 c 课程设计作业 我们小组选择的是设计一个简单的计算器 我们平常所 用的计算器都是可视化界面计算器 对于计算一些混合的四则算术运算不是很方便 所以 我们此次设计的计算器则是可以进行四则混合运算 用户可以从键盘输入算式 可以进行 加 减 乘 除混合运算 运算的优先级也已经考虑在内 并且用户可以按任何的运算符 出现顺序进行输入 输入的计算式的长也是不限定 这样就方便了我们对于一些混合算式 的计算 但是我们的程序也还存在一定问题 关于括号 优先级运算就没有实现 二 系统总体分析设计 根据任务要求 程序的总体功能可以设计成如下图所示 否是 是否 开始 输出算式及提示信 息 检查输入算式 字符是 否合格 除数是否不为 0 除 法 加 法 减 法 乘 法 输出结果 是否继续 结束 三 程序详细功能描述 在这次 c 课程设计中 我们小组成员分工明确 在编码过程中 我们在编码过程 中主要有一个 counter 类 counter 里面一共有三个函数 分别是 input 输入函数 suanfa 计算函数和 show 显示函数 体现了类的封装性 另外还有一个不同函数进行 程序说明 本程序实现加 减 乘 除的基本运算 并能按照四则运算的基本法则进 行运算 在除法运算中 当被除数为零的时候 系统会报错 提示被除数不能为零 则会退出程序 四 四 编码编码 include include using namespace std class counter private int n 计算输入数组的长度 double a 100 存放数据的数组 char fh 100 存放字符的数组 public input 输入函数 suanfa 四则运算 show 显示函数 counter input cout 请输入表达式 并且以 结尾 endl for int i 0 i a i cin fh i if fh i 为结束符标志 n i break counter suanfa char sign for int j 0 j n j if fh j 乘法运算 if fh j 1 乘法的优先级 a j 1 a j a j 1 a j 0 fh j else if fh j 1 a j 1 a j a j 1 a j 0 fh j else a j 1 a j a j 1 else if fh j 除法运算 if fh j 1 除法的优先级 if a j 1 0 a j 1 a j a j 1 a j 0 fh j else cout 除数为 0 退出程序 endl 除数为零 exit 0 else if fh j 1 if a j 1 0 a j 1 a j a j 1 a j 0 else cout 除数为 0 退出程序 endl exit 0 else if a j 1 0 a j 1 a j a j 1 else cout 除数为 0 退出程序 endl exit 0 for int i 0 i n i if fh i 加法运算 a i 1 a i a i 1 else if fh i 减法运算 if a i a i 1 a i 1 a i 1 a i else a i 1 a i a i 1 counter show 输出函数 cout 该表达式的结果为 cout a n endl void read 程序说明 cout t t n cout t t C 课程设计 n cout t t 实验题目 简单的计算器 n cout t t n cout n 说明 可以进行四则混合运算 但是不能进行括号优先级运算 n cout endl int main char sign counter b read b input b suanfa b show while true cout 是否继续 输入 y 表示继续 n 表示退出 sign if sign y b input b suanfa b show else break return 0 五 五 测试报告测试报告 1 关于算法结构的逐步完善 原来算法的源代码如下 counter suanfa for int j 0 j n j if fh j if fh j 1 a j 1 a j a j 1 a j 0 fh j else a j 1 a j a j 1 a j 0 测试结果 测试结果 当先输入加减 运算符 再输入乘除 时 计算结果是正确的 如输入以下测试实例 1 2 3 正确结果因为 7 1 4 2 正确结果因为 3 5 6 3 正确结果因为 3 7 2 3 正确结果因为 1 fh j else if fh j if fh j 1 a j 1 a j a j 1 a j 0 fh j else a j 1 a j a j 1 a j 0 fh j for int i 0 i n i if fh i a i 1 a i a i 1 else if fh i if a i a i 1 a i 1 a i 1 a i else a i 1 a i a i 1 但是如果先输入乘除 时 再输入加减 运算符 则会出现错误 如以下测试实例 2 3 1 正确结果因为 7 但是程序结果却为 5 4 2 1 正确结果因为 1 但是程序结果却为 3 改进后的程序代码 counter suanfa for int j 0 j n j if fh j if fh j 1 a j 1 a j a j 1 a j 0 fh j else if fh j 1 此处有修改此处有修改 a j 1 a j a j 1 a j 0 fh j else a j 1 a j a j 1 此处有修改此处有修改 else if fh j 此处有修改此处有修改 if fh j 1 a j 1 a j a j 1 a j 0 fh j else if fh j 1 a j 1 a j a j 1 a j 0 fh j else a j 1 a j a j 1 此处有修改此处有修改 for int i 0 i n i if fh i a i 1 a i a i 1 else if fh i if a i a i 1 a i 1 a i 1 a i else a i 1 a i a i 1 测试结果 测试结果 修改后的算法 对于先输入什么运算符号 结果都没有影响 输入以下测试实例 2 3 1 正确结果因为 7 4 2 1 正确结果因为 1 2 关于程序能否继续重复的逐步完善 当程序运行到要选择是否继续运行的时候 理想的结果是当按 y 的时候 程序输出 请输入表达式 并且以 结尾 字样 接着运行程序 按 n 则退出程序 但是 现在的情况是不管按什么键结果都是 请按任意键退出程序 修改后将该段代码放到主程序中 加一个 while 循环就可以实现该功能 修改后的代码为 int main char sign counter b read b input b suanfa b show while true cout 是否继续 输入 y 表示继续 n 表示退出 sign 3 被除数不能为零问题的解决 在除法运算中 被除数不能为零 当被除数为零时 应该报错 然后重新输入 但是现在 就直接输出一个乱码 不是理想的情况 源代码为 修改后的代码为 if sign y b input b suanfa b show else break return 0 测试实例 测试实例 else if fh j 除法运算 if fh j 1 除法的优先级 if a j 1 0 a j 1 a j a j 1 a j 0 fh j else cout 除数为 0 退出程序 endl 除数为零 exit 0 else if fh j 1 if a j 1 0 a j 1 a j a j 1 a j 0 else cout 除数为 0 退出程序 endl exit 0 else if a j 1 0 a j 1 a j a j 1 else cout 除数为 0 退出程序 endl exit 0 1 4 2 正确结果因为 3 6 3 2 1 正确结果因为 5 六 六 个人总结个人总结 通过这次课程设计的制作 使我对于类的封装性 以及类函数的调用有了更深一步 的了解 在程序设计最初 我们是准备将函数的输入和结果的输出都写在主函数中 但是 在后来的编码过程中 发现如果需要重复使用 这样写 很不方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论