课程设计(打印版).docx_第1页
课程设计(打印版).docx_第2页
课程设计(打印版).docx_第3页
课程设计(打印版).docx_第4页
课程设计(打印版).docx_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

兰州商学院陇桥学院 工学系课程设计报告设 计 题 目:计算带变量的数学表达式程序 系 别:工学系 专 业 (方 向):信息管理与信息系统 年 级、 班:2012级本科(1)班 学 生 姓 名:王政锐 学 生 学 号:20120651144 指 导 教 师:杨光 2014年6月30日目录一、系统开发的背景1二、系统分析与设计3(一)系统功能要求4(二)系统模块结构设计4三、系统的设计与实现5四、系统测试5五、总结6六、附件(源代码)7带变量的数学运算表达式一、 系统开发的背景在我们日常生活中,计算开支、收入时,大额数字或是多倍小数的计算都需要计算器的帮助,而在学习一些科目时,也常常要处理数字。虽然现在的计算器价格比较低廉,但是功能过于简单的不能满足个人需求,功能多的价格较贵,不仅操作不便,很多功能也根本用不到。为了设计开发一个属于自己的简单计算器来完成日常学习生活的需求。因此,我们用自己所学的知识,采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。二、 系统分析与设计(一)系统功能要求由于现代用户更倾向于由鼠标方便操作的图形用户界面,所以我们采用GUI来实现计算器,并采用Swing组件,AWT事件处理等实现具体功能。功能要求:(1)由用户输入一个表达式,求出其计算结果后显示。(2)允许在表达式中出现常用的数学函数,如绝对值、取整、三角函数、倒数、平方根、平方、立方等。(3)要能够判断出表达式中的变量名及其个数,按照变量名自动弹出/出现输入界面逐个让用户输入变量。(4)尽量使用图形界面实现,要符合日常软件使用规范来设计菜单和界面。(5)如果无法实现图形界面,则在命令行方式下也需要提供菜单,方便用户操作。(二)系统模块结构设计通过对系统功能的分析,计算带变量的数学表达式系统功能模板如下图所示:通过上图的功能分析,把整个系统划分为2个大模块,9个小功能:1、 简单计算,具体实现功能:计算加、减、乘、除。2、 简单科学计算,具体实现功能:开平方运算、平方、立方、取整、三角函数、倒数。三、 系统的设计与实现以下是部分类功能的说明:CalFrame /构造新窗体 CalPanelL /定义面板容器CalButton/定义按钮四、 系统测试主要问题:1.标点符号问题,经常出现漏打分号,忽略中英文标点转换等问题,所以一定要谨慎仔细.2.进制转换的实现及正/余弦计算经常出现问题,结果不正确,经过查阅资料及反复调试,我终于克服了这一难题.3.界面设计,开始我的设计不太合理,各类功能键排序不合理,看起来杂乱无章,既不美观也不实用。经过多次调整程序终于能使界面美观实用。4.要注意类、成员变量、成员方法的命名,其中,class后的类名由一个或多个英文5.单词构成,每个单词的第一个字符必须是大写;而成员变量和成员方法名的第一个单词的第一个字母必须小写,其他单词第一个字母大写。6.以下是其中一些主要功能演示过程:运行界面: 五、 总结通过此次的课程设计实践,我不但进一步理解掌握了老师教授的知识,而且通过查找资料学会了课上没有的东西,进一步理解了面向对象的含义,发现了很多它比面向过程突出的地方,第一次接触了图形界面,初步了解了GUI方面的知识。在实践中我遇到了很多问题,但我都努力克服,并最终成功的完成了这次课程设计。通过编写这个相对复杂的程序,我认识解决实际问题前应先建立模型,再通过建立的模型使问题简单化,从而解决问题。并且这次编写的程序大部分是通过调用各包中的方法来实现的,这也让我充分理解了包和类的调用关系。由于这次编写的程序比较复杂,所以不能一次性编写、调试,也由此让我学会把程序分块,逐个编写、调试。六、 附件(源代码)import java.awt.*; import java.awt.event.*;public class Cal public static void main(String args) CalFrame f = new CalFrame(); class CalFrame extends Frame /定义窗口类 double d1, d2 ,c;/两个数对象d1,d2 int op = 0;/ 为下面实现接口处理异常做准备 TextField tf;/定义文本域 CalPanelL p1;/左容器对象 CalPanelR p2;/右容器对象 CalFrame()/构造函数 super(计算数学表达式的程序);/设置图形界面Frame标题 setLayout(new FlowLayout(FlowLayout.CENTER,8,10); setBackground(new Color(140,120,110); setForeground(Color.white); setResizable(false); setSize(250,200);setLocation(400,260);/设置Frame相应属性 tf = new TextField(22); tf.setEditable(false); tf.setBackground(Color.white); tf.setForeground(Color.black); tf.setFont(new Font(Arial,Font.BOLD,16);/定义文本框属性 add(tf);/添加文本框到图形界面 p1 = new CalPanelL(); p2 = new CalPanelR();/初始化容器 add(p1); add(p2);/添加容器到图形界面 setVisible(true); addWindowListener(new Wclose();/添加关闭窗口事件监听者 /构造函数定义结束 class CalButton extends Button /CAlButton类的域定义(内部类) CalButton(String s) super(s); setBackground(Color.gray);/定义按钮颜色为灰色 class CalPanelL extends Panel CalButton b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, bPN, bPoint;/分别代表0,1,2,3,4,5,6,7,8,9,+/-,. CalPanelL() setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16); b0 = new CalButton(0); b1 = new CalButton(1); b2 = new CalButton(2); b3 = new CalButton(3); b4 = new CalButton(4); b5 = new CalButton(5); b6 = new CalButton(6); b7 = new CalButton(7); b8 = new CalButton(8); b9 = new CalButton(9); bPN = new CalButton(+/-); bPoint = new CalButton(.); add(b7); b7.addActionListener(new PressB7(); add(b8); b8.addActionListener(new PressB8(); add(b9); b9.addActionListener(new PressB9(); add(b4); b4.addActionListener(new PressB4(); add(b5); b5.addActionListener(new PressB5(); add(b6); b6.addActionListener(new PressB6(); add(b1); b1.addActionListener(new PressB1(); add(b2); b2.addActionListener(new PressB2(); add(b3); b3.addActionListener(new PressB3(); add(b0); b0.addActionListener(new PressB0(); add(bPN); bPN.addActionListener(new PressBPN(); ; add(bPoint); bPoint.addActionListener(new PressBPoint(); class CalPanelR extends Panel CalButton bAdd, bSub, bMul, bDiv, bSqrt, bSin, bCos, bYx, bInt, bEqual, bCE, bBack; CalPanelR() setLayout(new GridLayout(4,3); setFont(new Font(TimesRoman,Font.BOLD,16); bAdd = new CalButton(+); bSub = new CalButton(-); bMul = new CalButton(*); bDiv = new CalButton(/); bSqrt = new CalButton(sqrt); bSin = new CalButton(sin); bCos = new CalButton(cos); bYx = new CalButton(yx); bInt = new CalButton(int); bEqual = new CalButton(=); bCE = new CalButton(CE); bBack = new CalButton(1/x); add(bDiv); bDiv.addActionListener(new PressBDiv(); add(bSqrt); bSqrt.addActionListener(new PressBSqrt(); add(bInt); bInt.addActionListener(new PressBInt(); add(bMul); bMul.addActionListener(new PressBMul(); add(bSin); bSin.addActionListener(new PressBSin(); add(bBack); bBack.addActionListener(new PressBBack(); add(bSub); bSub.addActionListener(new PressBSub(); add(bCos); bCos.addActionListener(new PressBCos(); add(bCE); bCE.addActionListener(new PressBCE(); add(bAdd); bAdd.addActionListener(new PressBAdd(); add(bYx); bYx.addActionListener(new PressBYx(); add(bEqual); bEqual.addActionListener(new PressBEqual(); /构造函数定义结束 class PressBAdd implements ActionListener public void actionPerformed(ActionEvent e) actionPerformed(ActionEvent e)方法代码 try d1 = Double.parseDouble(tf.getText(); op = 0; tf.setText(); catch(Exception ee) /检测并处理异常 class PressBSub implements ActionListener public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getText(); op = 1; tf.setText(); catch(Exception ee) class PressBMul implements ActionListener public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getText(); op = 2; tf.setText(); catch(Exception ee) class PressBDiv implements ActionListener public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getText(); op = 3; tf.setText(); catch(Exception ee) class PressBYx implements ActionListener public void actionPerformed(ActionEvent e) try d1 = Double.parseDouble(tf.getText(); op = 4; tf.setText(); catch(Exception ee) class PressBEqual implements ActionListener public void actionPerformed(ActionEvent e) try double result = 0; d2 = Double.parseDouble(tf.getText(); switch(op) case 0: result = d1 + d2; break; case 1: result = d1 - d2; break; case 2: result = d1 * d2; break; case 3: result = d1 / d2; break; case 4: result = Math.pow(d1,d2); break; default: tf.setText(String.valueOf(result); catch(Exception ee) class PressBSqrt implements ActionListener public void actionPerformed(ActionEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = Math.sqrt(x); tf.setText(y+); catch(Exception ee) class PressBInt implements ActionListener public void actionPerformed(ActionEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = Math.floor(x); tf.setText(y+); catch(Exception ee) class PressBSin implements ActionListener public void actionPerformed(ActionEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = Math.sin(x); tf.setText(y+); catch(Exception ee) class PressBCos implements ActionListener public void actionPerformed(ActionEvent e) try double x = Double.parseDouble(tf.getText(); double y; y = Math.cos(x); tf.setText(y+); catch(Exception ee) class PressBBack implements ActionListener public void actionPerformed(ActionEvent e) try double c= Double.parseDouble(tf.getText(); tf.setText(+1/c); catch(Exception ee) class PressBCE implements ActionListener public void actionPerformed(ActionEvent e) tf.setText(); class PressBPN implements ActionListener public void actionPerformed(ActionEvent e) try String text = tf.getText(); if (text != ) if(text.charAt(0) = -) tf.setText(text.substring(1); else if(text.charAt(0) = 0 & text.charAt(0) = 9) tf.setText(-+text.substring(0); else if(text.charAt(0) = .) tf.setText(-0+text.substring(0); catch(Exception ee) class PressBPoint implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); if(text.lastIndexOf(.) = -1) tf.setText(text+.); class PressB0 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+0); class PressB1 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+1); class PressB2 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setText(text+2); class PressB3 implements ActionListener public void actionPerformed(ActionEvent e) String text = tf.getText(); tf.setT

温馨提示

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

评论

0/150

提交评论