面向对象课程设计报告格式.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象课程设计报告格式 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 题目:计算器 学号: 1004681035 姓名: 李博洋 班级: 计科101 需求分析: 题目:设计一个简单的计算器 要求: 在功能上功能尽量模拟windows操作系统中的计算器,系统界面不做强制要求。 分析:输入或从文件中读入需要计算的式子,然后计算出正确的结果,将结果输出。 解析:得到一个需要计算的式子,很显然这个式子中包含着数字以及各种运算符和括号,这个式子是一个字符串,因而要用到string。在数据构造中,一个算术表达式就是一个按中序遍历的二叉树,如果要计算,很显然要将该式子按后续遍历〔逆波兰式〕,得到按优先级排列的便于计算的式子,中间过程需要用到栈〔stack〕,计算过程也要用到栈,因而创立了一个链栈的模板,在需要的时候,按需要的类型实例化就可以了。 操作流程:菜单界面---选择输入的方式----按不同的输入方式读取信息----将计算式子按逆波兰式转化----计算----输出结果 2、概要设计 template class T class Node{ public: Node() {this-next = NULL;} Node(T data,NodeT *next=NULL){this-data = data;this-next = next;} T data; NodeT *next; } 明确设计为链表类型的存储构造,因而节点〔Node〕就必须包含一个需要存储类型数据成员,还应有一个指向下一个节点的指针,用构造函数初始化个数据成员。将数据成员定义为public是为了下面的访问方便。 template class T class LinkedStack{ public: LinkedStack(); ~LinkedStack(); bool isEmpty(); void push(T x); T pop(); T getTop(); private: NodeT *top; }; 根据需要,要用到多种类型的栈〔stack〕,而栈的功能都大体一样,所以将类设计为模板类〔template〕,这样在需要用的时候实例化就可以用了。创立链栈,就要用到上面的节点〔Node〕.栈的主要功能有 初始化〔LinkedStack()〕,入栈〔void push(T x)〕,出栈〔T pop()〕,得到栈顶元素〔T getTop()〕,还有可能判断栈是否为空栈〔bool isEmpty()〕,然后分别将各个局部实现。 程序编码。 菜单界面 菜单界面 从文件读入从键盘输入 从文件读入 从键盘输入 翻开文件输入所要计算的表达式 翻开文件 输入所要计算的表达式 计算过程成功继续 计算过程 成功 继续 逐行读取文件内容失败 逐行读取文件内容 失败 输出结果,然后问是否继续 输出结果,然后问是否继续 将结果输出到指定文件计算过程 完毕,退出 将结果输出到指定文件 计算过程 完毕,退出 局部重点代码注释详见程序清单。 4、调试分析 分模块〔类〕进展,设计好测试数据,测试输出的结果,时间复杂度分析,和每个模块设计和调试时存在问题的思考(问题是哪些 问题如何解决 ),算法的改良设想。 菜单界面。选择读取方式... 从键盘读入表达式,并计算得出结果。 继续从键盘读入 选择从文件读入,并且文件翻开成功 输入文件中的算术表达式 输出文件中的结果 调试时存在的问题:刚开场时,链表的链接存在问题,老是出现内存访问错误,最后通过调试发现,原来多写了一个next。然后就是在写tochange〔〕函数时,switch语句中的条件考虑的不够全面。再就是string类型的表达式不能够作为switch的条件。最后就是定义了一个string a,不能够通过a[i]= 2as这种方式给string 类型的数据赋值 算法的改良设想:在分配expression的时候,都是按的比拟大的值分配的,有很多空间都没有用到,造成了很多内存的浪费。改良:运用链表,动态的分配,按需分配 程序清单: #include iostream #include string #include fstream #include cstdlib using namespace std; template class T // 链表节点 类 class Node { public: Node()

文档评论(0)

iphone0b + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体如皋市辰森技术服务工作室
IP属地江苏
统一社会信用代码/组织机构代码
92320682MA278Y740Q

1亿VIP精品文档

相关文档