JAVA课程设计正稿.doc_第1页
JAVA课程设计正稿.doc_第2页
JAVA课程设计正稿.doc_第3页
JAVA课程设计正稿.doc_第4页
JAVA课程设计正稿.doc_第5页
免费预览已结束,剩余14页可下载查看

下载本文档

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

文档简介

课程设计说明书 NO.1简易计算器1 课程设计目的本次课程设计的主要目的是设计一个简易计算器。同大部分计算器一样,本次课程设计所开发的计算器在功能上可以进行十进制下的四则运算(加、减、乘、除)、开根号、百分号、求倒数等,除此外还包括MR、MC、M+、MS记忆功能(MC(memory clean)清除记忆缓存、MR(memory remind)调用记忆缓存、MS(memory save)将当前数存入记忆缓存、M+使记忆缓存中的数加上目前输入的数,结果存入缓存中)Backspace表示退格, CE表示将当前文本框内数据清除,C表示文本框内数据清除。本次课程设计中所应用的开发语言是Java,它是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。2 设计方案方案论证2.1 概要设计2.1.1功能描述 本次课程设计主要是用Java语言编写程序实现简易计算器。本计算器采用了Swing 界面,运用面向对象思想、多线程技术、以及消息处理机制。本次设计的开发运行环境是:Eclipse2.1.2 系统的结构图:根据本次课程设计的目的和以上的功能描述,把该计算器系统分为四个主要的模块:显示屏模块、控制模块、数字模块和存储按钮模块。所有模块内的控件采用网格布局管理器进行布置,系统的结构图如图1所示: 沈 阳 大 学 课程设计说明书 NO.22.1.3 系统主要类定义在本次设计中主要定义了三个类:主类Main、游戏对象类MainBomb、按钮设置类Bomb。各主类的主要作用如下:显示输入的数字串和输出的结果显示屏模块包括backspace,C,CE功能控制键控制模块计算器存储模块包括MC,MR,MS,M+09数字按钮,以及+、*、/、%、sqrt、1/x、+/-、=、.等运算符号数字符号模块图1 简易计算器系统结构图 沈 阳 大 学 课程设计说明书 NO.31)Caculate.javaCaculate类为主类创建整个计算器的对象,包括三个面板的布局,按钮,标签,文本框等等;实例化三个面板的布局及所有按钮设置其前景色并注册监听器;实例化四个面板、创建空字符缓冲区并添加面板中所用到的组件和设置其在框架中的位置和大小等。2)Bt.java构造监视器,实现计算器的控制及计算功能,该类含有一个main方法进行了一些初始化的设置。各个类之间的关系可以用图2所示的关系图进行描述:Calculate类成员变量实例成员方法Bt类成员变量实例成员方法图2 简易计算器的类图 沈 阳 大 学 课程设计说明书 NO.42.2 详细设计2.2.1 Calculate.java该java文件的类负责创建计算器系统的主窗口。创建整个计算器的对象,包括三个面板的布局,按钮,标签,文本框等等;实例化三个面板的布局及所有按钮设置其前景色并注册监听器;实例化四个面板、创建空字符缓冲区并添加面板中所用到的组件和设置其在框架中的位置和大小等。2.2.2 Bt.java构造监视器,实现计算器的控制及计算功能,该类含有一个main方法,main方法是程序执行的入口,程序从该类的main方法开始执行。2.3.3 主要方法及成员变量表表1 主要方法表名称功能备注main系统主方法,程序开始运行系统主方法Caculate实例化计算器,注册监听器构造方法actionPerformed处理ActionEvent事件成员方法表2 成员变量表成员变量描述变量类型名称计算器面板PanelPx(x=0,1,2,3)显示屏JTextFiledtf1显示记忆的索引值TextFiledtf2计算器按钮Buttonbx(x=0,1,2,26)计算器面板的布局模式GridLayoutg11,g12,g13显示屏所显示的字符串StringBufferstr运算数doublex,y单击字符串所代表的含义intz记忆的数字doublem 沈 阳 大 学 课程设计说明书 NO.52.3.4功能模块划分图3 计算器的功能模块计算器简单分为几个模块:(1)加减乘除四则运算模块:包括加法、减法、乘法、除法运算。(2)倒数运算模块:可以实现对输入数据的倒数运算,结果以小数显示出来。(3)求平方根模块:实现对输入数据的求根运算,结果显示为双精度型数据。(4)存储单元模块:通过此模块计算器可以实现简单的存储功能,MC(memory clean)清除记忆缓存、MR(memory remind)调用记忆缓存、MS(memory save)将当前数存入记忆缓存、M+使记忆缓存中的数加上目前输入的数,结果存入缓存中。(5)清零操作模块:包括C和CE,对计算器显示屏中的数据进行清零。(6)取百分数模块:对输入数据输出其百分数。 沈 阳 大 学课程设计说明书 NO.62.3.5计算器流程图图4 计算器流程图 沈 阳 大 学课程设计说明书 NO.73 程序运行结果及调试分析3.1运行结果图5 计算器程序运行图 我所设计的这个计算器,只实现一些基本功能,有加法,减法,乘法,除法四则运算,支持混合运算,可以求平方根,具有清零操作。运算优先级为平方根,乘,除,加,减。比如现在按9然后再按sqrt键,则是求平方根,计算结果为3.0,其他运算与此相似.3.2程序调试分析 采用了设置断点、掩蔽部分程序的方法,首先是设置断点,在错误的代码行设置断点,然后运行程序,看提示的错误是否与代码有关,然后进行纠 沈 阳 大 学 课程设计说明书 NO.8正。其次是掩蔽部分代码,在可疑区把认为是错误的代码掩蔽,看程序是否能继续执行,功能是否能够实现,然后对代码进行纠正。4 课程设计设计体会本次课程设计用到的是主要是java的AWT和swing这两个类。所应用的开发语言是Java,所采用的开发运行环境是:JDK + Eclipse,由于也没有软件项目的经验,所以做起来很吃力。不过最终做出来的效果还是不错的,所要的功能基本上都实现了。设计的过程中不时地翻阅资料,有时花费一天时间就只能完成一个功能。程序代码完成之后,要进行运行调试,刚开始由于没有调试经验和方法效率很低,同时发现了许多错误,最后在老师和同学的帮助下,终于顺利完成了,自己也从中学到了不少东西。更重要的是,在测试过程中的往往发现自己粗心大意犯了很多不必要的错误,通过这次课题,也使我认识到了认真在学习中的重要。不过,在用Java开发类似的软件时,发现在图形界面的设计方面远没有用VB,VF等开发工具简单。5 参考文献1Java语言与面向对象程序设计,朱福喜、尹为民、余振坤编著,武汉大学出版社2Java语言与面向对象程序设计,印旻编著,清华大学出版社3Java程序设计实用教程,朱站立、沈伟编著,电子工业出版社 沈 阳 大 学 课程设计说明书 NO.96 附录:各功能模块的主要代码package bao1;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Caculate extends Frame / 声明三个面板的布局GridLayout gl1, gl2, gl3;Panel p0, p1, p2, p3;JTextField tf1;TextField tf2;Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14,b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26;StringBuffer str;/ 显示屏所显示的字符串double x, y;/ x和y都是运算数int z;/ Z表示单击了那一个运算符.0表示+,1表示-,2表示*,3表示/static double m;/ 记忆的数字public Caculate() gl1 = new GridLayout(1, 4, 10, 0);/ 实例化三个面板的布局gl2 = new GridLayout(4, 1, 0, 15);gl3 = new GridLayout(4, 5, 10, 15);tf1 = new JTextField(27);/ 显示屏tf1.setHorizontalAlignment(JTextField.RIGHT);tf1.setEnabled(false);tf1.setText(0);tf2 = new TextField(10);/ 显示记忆的索引值tf2.setEditable(false);/ 实例化所有按钮、设置其前景色并注册监听器b0 = new Button(Backspace);b0.setForeground(Color.red);b0.addActionListener(new Bt();b1 = new Button(CE);b1.setForeground(Color.red);b1.addActionListener(new Bt();b2 = new Button(C); 沈 阳 大 学 课程设计说明书 NO.10b2.setForeground(Color.red);b2.addActionListener(new Bt();b3 = new Button(MC);b3.setForeground(Color.red);b3.addActionListener(new Bt();b4 = new Button(MR);b4.setForeground(Color.red);b4.addActionListener(new Bt();b5 = new Button(MS);b5.setForeground(Color.red);b5.addActionListener(new Bt();b6 = new Button(M+);b6.setForeground(Color.red);b6.addActionListener(new Bt();b7 = new Button(7);b7.setForeground(Color.blue);b7.addActionListener(new Bt();b8 = new Button(8);b8.setForeground(Color.blue);b8.addActionListener(new Bt();b9 = new Button(9);b9.setForeground(Color.blue);b9.addActionListener(new Bt();b10 = new Button(/);b10.setForeground(Color.red);b10.addActionListener(new Bt();b11 = new Button(sqrt);b11.setForeground(Color.blue);b11.addActionListener(new Bt();b12 = new Button(4);b12.setForeground(Color.blue);b12.addActionListener(new Bt();b13 = new Button(5);b13.setForeground(Color.blue);b13.addActionListener(new Bt(); 沈 阳 大 学 课程设计说明书 NO.11b14 = new Button(6);b14.setForeground(Color.blue);b14.addActionListener(new Bt();b15 = new Button(*);b15.setForeground(Color.red);b15.addActionListener(new Bt();b16 = new Button(%);b16.setForeground(Color.blue);b16.addActionListener(new Bt();b17 = new Button(1);b17.setForeground(Color.blue);b17.addActionListener(new Bt();b18 = new Button(2);b18.setForeground(Color.blue);b18.addActionListener(new Bt();b19 = new Button(3);b19.setForeground(Color.blue);b19.addActionListener(new Bt();b20 = new Button(-);b20.setForeground(Color.red);b20.addActionListener(new Bt();b21 = new Button(1/X);b21.setForeground(Color.blue);b21.addActionListener(new Bt();b22 = new Button(0);b22.setForeground(Color.blue);b22.addActionListener(new Bt();b23 = new Button(+/-);b23.setForeground(Color.blue);b23.addActionListener(new Bt();b24 = new Button(.);b24.setForeground(Color.blue);b24.addActionListener(new Bt();b25 = new Button(+);b25.setForeground(Color.red); 沈 阳 大 学 课程设计说明书 NO.12b25.addActionListener(new Bt();b26 = new Button(=);b26.setForeground(Color.red);b26.addActionListener(new Bt();/ 实例化四个面板p0 = new Panel();p1 = new Panel();p2 = new Panel();p3 = new Panel();/ 创建一个空字符串缓冲区str = new StringBuffer();/ 添加面板p0中的组件和设置其在框架中的位置和大小p0.add(tf1);p0.setBounds(10, 25, 300, 40);/ 添加面板p1中的组件和设置其在框架中的位置和大小p1.setLayout(gl1);p1.add(tf2);p1.add(b0);p1.add(b1);p1.add(b2);p1.setBounds(10, 65, 300, 25);/ 添加面板p2中的组件并设置其的框架中的位置和大小p2.setLayout(gl2);p2.add(b3);p2.add(b4);p2.add(b5);p2.add(b6);p2.setBounds(10, 110, 40, 150);/ 添加面板p3中的组件并设置其在框架中的位置和大小p3.setLayout(gl3);/ 设置p3的布局p3.add(b7);p3.add(b8);p3.add(b9); p3.add(b10);p3.add(b11); 沈 阳 大 学 课程设计说明书 NO.13p3.add(b12);p3.add(b13);p3.add(b14);p3.add(b15);p3.add(b16);p3.add(b17);p3.add(b18);p3.add(b19);p3.add(b20);p3.add(b21);p3.add(b22);p3.add(b23);p3.add(b24);p3.add(b25);p3.add(b26);p3.setBounds(60, 110, 250, 150);/ 设置框架中的布局为空布局并添加4个面板setLayout(null);add(p0);add(p1);add(p2);add(p3);setResizable(false);/ 禁止调整框架的大小/ 匿名类关闭窗口addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e1) System.exit(0););setBackground(Color.lightGray);setBounds(100, 100, 320, 280);setVisible(true);/ 构造监听器 沈 阳 大 学 课程设计说明书 NO.14class Bt implements ActionListener public void actionPerformed(ActionEvent e2) tryif (e2.getSource() = b1)/ 选择CE清零tf1.setText(0);/ 把显示屏清零str.setLength(0);/ 清空字符串缓冲区以准备接收新的输入运算数else if (e2.getSource() = b2)/ 选择C清零tf1.setText(0);/ 把显示屏清零str.setLength(0);else if (e2.getSource() = b23)/ 单击+/-选择输入的运算数是正数还是负数x = Double.parseDouble(tf1.getText().trim();tf1.setText( + (-x);else if (e2.getSource() = b25)/ 单击加号按钮获得x的值和z的值并清空y的值x = Double.parseDouble(tf1.getText().trim();str.setLength(0);/ 清空缓冲区以便接收新的另一个运算数y = 0d;z = 0;else if (e2.getSource() = b20)/ 单击减号按钮获得x的值和z的值并清空y的值x = Double.parseDouble(tf1.getText().trim();str.setLength(0);y = 0d;z = 1;else if (e2.getSource() = b15)/ 单击乘号按钮获得x的值和z的值并清空y的值x = Double.parseDouble(tf1.getText().trim();str.setLength(0); 沈 阳 大 学课程设计说明书 NO.15y = 0d;z = 2;else if (e2.getSource() = b10)/ 单击除号按钮获得x的值和z的值并空y的值x = Double.parseDouble(tf1.getText().trim();str.setLength(0);y = 0d;z = 3;else if (e2.getSource() = b26)/ 单击等号按钮输出计算结果str.setLength(0);switch (z)case 0:tf1.setText( + (x + y);break;case 1:tf1.setText( + (x - y);break;case 2:tf1.setText( + (x * y);break;case 3:tf1.setText( + (x / y);break;else if (e2.getSource() = b24)/ 单击.按钮输入小数if (tf1.getText().trim().indexOf(.) != -1)/ 判断字符串中是否已经包含了小数点else/ 如果没有小数点 沈 阳 大 学课程设计说明书 NO.16if (tf1.getText().trim().equals(0)/ 如果初时显示为0str.setLength(0);tf1.setText(str.append(0 + e2.getActionCommand().toString();else if (tf1.getText().trim().equals()/ 如果初时显示为空则不做任何操作 else tf1.setText(str.append(e2.getActionCommand().toString();y = 0d;else if (e2.getSource() = b11)/ 求平方根x = Double.parseDouble(tf1.getText().trim();tf1.setText(数字格式异常);if (x 0)tf1.setText(负数没有平方根);elsetf1.setText( + Math.sqrt(x);str.setLength(0);y = 0d;else if (e2.getSource() = b16)/ 单击了%按钮x = Double.parseDouble(tf1.getText().trim();tf1.setText( + (0.01 * x);str.setLength(0);y = 0d;else if (e2.getSource() = b21)/ 单击了1/X按钮x = Double.parseDouble(tf1.getText().trim(); 沈 阳 大 学课程设计说明书 NO.17if (x = 0) tf1.setText(除数不能为零);elsetf1.setText( + (1 / x);str.setLength(0);y = 0d;else if (e2.getSource() = b3)/ MC为清除内存m = 0d;tf2.setText();str.setLength(0);else if (e2.getSource() = b4)/ MR为重新调用存储的数据if (tf2.getText().trim() != )/ 有记忆数字tf1.setText( + m);else if (e2.getSource() = b5)/ MS为存储显示的数据m = Double.parseDouble(tf1.getText().trim();tf2.setText(M);tf1.setText(0);str.setLength(0);else if (e2.getSo

温馨提示

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

评论

0/150

提交评论