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

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
面向对象课程设计报告格式

题目:计算器 学号: 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() // default constructor { this-next = NULL; } Node(T data,NodeT *next=NULL) { this-data = data; this-next = next; } // 声明为public类型是便于top的访问 T data; NodeT *next; //next指向的对象是NodeT, }; template

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档