汽院数据结构课设(计算器)

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGY

数据结构

课程设计报告

课设题目:计算器

专业:软件工程

班级: T1323-4

姓名:费昱

成绩:

完成日期: 2015年7月1日-2015年7月10日指导教师: 袁科马春江

目录

一、设计题目 (2)

二、设计目的 (4)

三、总体设计 (5)

四、详细设计

五、设计结果与分析

六、总结(收获和不足)

一、设计题目

计算器的基本使用:计算器使用的基本函数与计算表达式求值问题、集合函数与三角函数、指数函数与对数函数的使用。

详细功能如下:

(1)基本的运算:加,减,乘,除,求余;

(2)基本的优先级预算:小括号,中括号;

(3)基本的三角函数:正弦sin、余弦cos、正切tan 函数;

(4)基本的反三角函数:反正切arcsin、反余切arccos、反正切arctan函数;

(5)基本的函数:sinh、cosh、tanh;

(6)基本的指数函数:2的n次方2^n、10的n次方10^n、自然对数的n次方e^n、任意数的n次方x^n; (7)基本的对数函数:以10为底的x对数log(10,x)、以e为底x的对数ln(x)、以a为底b的对数

log(a,b);

(8)基本的开方函数:算数平方根sqrt(x)、立方算数跟cuberoot(x)、任一数开n次方yroot(x,n); (9)基本的使用函数:阶乘函数fact(x),求余函数mod(x);

(10)基本的集合函数:集合统计sum()、集合的估计

方差var()、集合的总体方差varp()、集合的估

计标准差stdevp()、集合的总体标准偏差stdev

()。

二、设计目的

1、巩固并加深学生对C#语言程序设计知识的理解;

2、培养学生面程序设计思想,使学生认识数据结构在程序设计与构思上的应用于实战;

3、进一步掌握和应用VS2013集成开发环境;

4、提高运用C#语言解决实际问题的能力;

5、初步掌握开发小型实用软件的基本方法,能独立设计、实现基本的程序实现功能;

6、掌握课本与课外知识的结合、掌握理论与实践的结合、掌握数据与结构的存储关系;

7.掌握基本的编程思想与知识,学会独立思考与动手能力;

8.了解并掌握数据结构与算法的设计方法,具备初步的独立分析和设计能力;

9.初步掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能;

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

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

12.锻炼动手操作能力,培养我们的创新思维能力。

三、总体设计

(1)基本思路与流程图:以9*(6+3)为例

①获取intputbox中的字符9*(6+3)内容存入

intput[i]的数组中;

②进行解析intput[i]中的内容,依次解析intput[0]

是否为数字在解析下一个intput[1]中的是否为数

字不是跳出循环,将起始位置为0到1的字符转化

成数值9存入数字栈中;

③检测到intput[1]为操作,“*”进入操作栈,记录

“*”的优先级为level = 3;

④检测下一个intput[2]位字符,进行if (ch == '(')

leftBracket++;

⑤检测下一个intput[3] 是否为数字在解析下一个

intput[1]中的是否为数字不是跳出循环,将起始

位置为2到3的字符转化成数值6存入数字栈中;

⑥检测到intput[4]为操作,“+”进入操作栈,记录

“+”的优先级为level = 1;

⑦检测下一个intput[4] 是否为数字在解析下一个

intput[4]中的是否为数字不是跳出循环,将起始

位置为4到5的字符转化成数值3存入数字栈中;

⑧检测下一个intput[2]位字符,进行if (ch == ')')

rightBracket++; 判断左右括号个数是否相等

(leftBracket == rightBracket),相等无误,可以进行

计算,记录小括号的优先级为:level = 8;

⑨根据优先级进行计算,首先进行小括号的运算,此

时进行的是双目运算,从数字栈取出的数字为“3”

与“6”,进行“+”的运算,运算结果为“9”,数

字“9”进入数字栈中;

⑩此时在进行优先级的运算,只有一个“*”,进行双目运算,取出“9”与“*”进行“*”的计算,登

出最后的计算结果“81”,显示,计算完成。

(2)数据与符号进栈,用栈去存储数据与符号。

class CStack {

private int top;

private ArrayList list;

public CStack() {

list = new ArrayList();

top = -1;

}

(3)判断符号的优先级问题。

①加减同一级别,“+”、“-”,等级为level = 1

②乘除取余同一级别,“*”,“/”,“%”,等级为level

= 3;

③所有的集合函数同一级别:“sum()”、“var()”、“varp

()”、“stdevp()”、“stdev()”、等级为level = 4;

④所有的三角函数同一级别:“sin”、“cos”、“tan”,

“arcsin”、“arcos”、“arctan”,“sinh”、“cosh”、“tanh”,“log(10,x)”、“ln(x)”、“log(a,b)”、

“sqrt(x)”、“cuberoot(x)”、“yroot(x,n)”、“fact

(x)”、“mod(x)”等级为level =5;

⑤所有的指数函数同一级别:“2^n”、“10^n”、“e^n”、

“x^n”、,等级为level =5;

⑥所有的符号操作优先级为:“(”、“)”等级为:level =

8;“^”等级为:level = 6;“[”、“]”等级为level = 9;“,”等级为:level = 0;

(4)区分inputbox中的数据为数值和操作符与字母。

public int DealNum(string input, int i, ArrayList

alist) {

int num = -1;

while (input[i] >= '0' && input[i] <= '9'

相关文档
最新文档