数据结构课程设计 联系客服

发布时间 : 星期四 文章数据结构课程设计更新完毕开始阅读aa6b4b4776eeaeaad0f3302f

福建农林大学计算机与信息学院

计算机类 课程设计报告

课程名称: 课程设计题目: 姓 名:

系: 专 业: 年 级: 学 号: 指导教师: 职 称:

数据结构

计算机与信息学院

2014年 6月 24日

目录

1. 课程设计的目的....................................................................................................... 3 2. 课程设计的要求....................................................................................................... 3 3. 课程设计的内容....................................................................................................... 3

3.1 设计题目 .................................................................................................................... 3 3.2 问题描述 .................................................................................................................... 3 3.3 系统运行环境 ................................................................................................................ 3 3.4 设计分工 .................................................................................................................... 3 3.5 逻辑设计 .................................................................................................................... 3 3.6 详细设计(源代码) ................................................................................................ 4

4. 结果分析................................................................................................................... 4

4.1 程序调试与测试结果 .................................................................................................... 4 4.2 结果分析与讨论 ...................................................................................................... 12

5. 课程设计的总结..................................................................................................... 12

5.1 收获 .............................................................................................. 错误!未定义书签。

6. 参考文献................................................................................................................. 13 7. 附录......................................................................................................................... 13

2

1. 课程设计的目的

1.掌握《算法与数据结构》的设计方法,具备初步的独立分析和设计能力。 2.初步掌握软件开发过程的需求分析、概要设计、详细设计、调试分析、测试结果分析、程序编码、等基本方法和技能。

3.提高综合运用所学的理论知识和方法以及独立分析和解决问题的能力。

4.训练用系统的观点和软件开发的一般规范进行软件开发,培养软件工作者所应具备的科学的工作方法和作风。

5.通过理论与实践的结合,提高自身的实践能力,巩固《算法与数据结构》的基础知识,提高计算机的专业水平。

2. 课程设计的要求

编程实现计算由键盘输入的任一包含数字和加\、减\、乘\、除\及括号\等运算符的算术表达式。通过建立两个栈结构,一个用于存储数值和中间运算结果,另一个用于存放操作符。要求对输入的合法性进行检测,列出算术表达式的计算过程中所有可能出现的异常,算法的实现最好具有实际的应用。

3. 课程设计的内容

3.1 设计题目

算术表达式求值的运算

3.2 问题描述

设计一个表达式的运算器,任意一个算术表达式具有如下功能: 1. 输入功能:输入并显示表达试,并对表达试的正确性进行判断。 2. 计算功能:计算正确的表达试,并输出运算结果。 3. 退出程序 3.3 系统运行环境

操作系统:Windows 7 运行软件:VC++ 6.0

3.4 设计分工

(小组成员)

************************ 具体分工:

唐深勇 :代码整体的设计和函数实现分工,以及界面的实现和 界面与功能函数的衔接 赖忠景:写报告,书写初始化initDate()函数,以及数值栈和操作符栈的设计和实现 匡慧君 :实现comOp()函数,以及书写pri优先表的设计。实现expression()函数 王展伟:实现count()函数以及异常类的设计和实现

3.5 逻辑设计

建立两个栈类:CData和COpera类。分别有对应的栈空间data[NO]和oper[NO]以及对应的栈顶指针top,分别创建da和op对象。用来存放要进行计算的 数 和 操作符。

首先在得到输入的字符串s后,先在op入栈一个’#’,用来判断运算过程中判op栈

3

空。然后再s末尾添加‘#‘用来表示表达式已经运算到末尾。接下来遇到 数值 则直接入da栈, 遇到 操作符 则根据 运算符优先数组pri 来比较 栈顶操作符 和 当前操作符 的优先级。如果 栈顶操作符 > 当前操作符。 则连续取出 da栈 的前两个 数值 进行 op栈顶运算符(弹栈)对应的操作,并将计算结果存入 op栈 栈顶。如果 栈顶操作符 < 当前操作符 ,则直接将 当前操作符 存入 op栈。如果 栈顶操作符 = 当前操作符。则直接对op栈进行弹栈操作。如此直到s[i] == ‘#’ && op.oper[op.top] == ‘#’为止,此时da栈中只剩下一个数值,也就是表达式最后的结果..

3.6 详细设计(源代码) { if(c[op1] < 8 && c[op2] < 8 && c[op1] >= 0 && c[op2] >= 0) // 如果运算符是在允许范围内直接返回优先值 return pri[c[op1]][c[op2]]; else if(c[op1] < 0 || c[op2] < 0) { MyExcepction *exp = new MyExcepction(6);//抛出全角符号异常 throw exp; } MyExcepction *exp = new MyExcepction(2);//否则抛出未知运算符异常 throw exp; };

char CMyDlg::pri[8][8] = { '>','>','<','<','<','<','>','>', '>','>','<','<','<','<','>','>', '>','>','>','>','<','<','>','>', '>','>','>','>','<','<','>','>', '>','>','>','>','<','<','>','>', '<','<','<','<','<','<','=','E', '>','>','>','>','>','E','>','>', '<','<','<','<','<','<','E','=' };

4. 结果分析

4.1 程序调试与测试结果

4.1.1 程序调试 1.当输入括号是全角的时候会出现死循环!运行时因为全角在C++char类型中是用两个字节表示的,并且导致c[opi] < 0,从而使程序因为没有处理而陷入死循环,导致下面的错误!

4