Java课程设计说明书.docx

上传人:b****7 文档编号:9997913 上传时间:2023-02-07 格式:DOCX 页数:26 大小:329.79KB
下载 相关 举报
Java课程设计说明书.docx_第1页
第1页 / 共26页
Java课程设计说明书.docx_第2页
第2页 / 共26页
Java课程设计说明书.docx_第3页
第3页 / 共26页
Java课程设计说明书.docx_第4页
第4页 / 共26页
Java课程设计说明书.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

Java课程设计说明书.docx

《Java课程设计说明书.docx》由会员分享,可在线阅读,更多相关《Java课程设计说明书.docx(26页珍藏版)》请在冰豆网上搜索。

Java课程设计说明书.docx

Java课程设计说明书

*******************

实践教学

*******************

 

兰州理工大学

计算机与通信学院

2012年秋季学期

 

Java课程设计

 

题目:

迷你计算器设计

专业班级:

计算机科学与技术1班

姓名:

胡亚萍

学号:

10240141

指导教师:

王燕

成绩:

 

目录

摘要3

序言4

正文5

1、系统分析与设计5

2、详细设计6

3、系统测试10

4、软件使用说明书12

设计总结14

参考文献15

致谢16

源程序17

摘要

目前计算器应用很广泛,本程序利用面向对象分析方法设计的思想,结合面向对象语言JAVA设计迷你计算器设计,划分模块,模块的逐一实现,定义和使用类,并掌握类的继承,抽象,多态,使用JAVA接口,从内库中导入和继承,并实现接口。

JAVAswing/awt设计面板和按钮的绑定和实现,利用自定义函数完成辅助功能。

关键字:

JAVA;面向对象设计;模块;系统测试;迷你计算器

 

序言

在面向对象方法中,对象和传递消息分别表现事物及事物间相互联系的概念。

类和继承是是适应人们一般思维方式的描述范式。

方法是允许作用于该类对象上的各种操作。

这种对象、类、消息和方法的程序设计范式的基本点在于对象的封装性和类的继承性。

通过封装能将对象的定义和对象的实现分开,通过继承能体现类与类之间的关系,以及由此带来的动态联编和实体的多态性,从而构成了面向对象的基本特征。

面向对象设计是一种把面向对象的思想应用于软件开发过程中,指导开发活动的系统方法,是建立在“对象”概念基础上的方法学。

对象是由数据和容许的操作组成的封装体,与客观实体有直接对应关系,一个对象类定义了具有相似性质的一组对象。

而每继承性是对具有层次关系的类的属性和操作进行共享的一种方式。

所谓面向对象就是基于对象概念,以对象为中心,以类和继承为构造机制,来认识、理解、刻画客观世界和设计、构建相应的软件系统。

按照BjarneSTroustRUP的说法,面向对象的编程范式:

  l决定你要的类;

  2给每个类提供完整的一组操作;

  3明确地使用继承来表现共同点。

由这个定义,我们可以看出:

面向对象设计就是“根据需求决定所需的类、类的操作以及类之间关联的过程。

本次面向对象设计采用JAVA实现迷你计算器的实现。

正文

1、系统分析与设计

(一)系统分析

日常生活中经常需要用到计算器,比如科学计算,数值计算,会计业务等等,在Applet中实现一个精巧的计算器,可以让用户的操作也更方便和快捷。

本项目需要实现一个具有四则运算的计算器,能够实现基本的加、减、乘、除运算,以及其它的辅助功能;界面简洁适用;要提供主要的设计思路、类的设计,本次设计添加转进制等功能

1.1基本需求

主要支持的数字:

0、1、2、3、4、5、6、7、8、9,主要支持的算子:

+、-、*、/、sqrt、exp、tan、sin、cos、log。

要求提供图形化操作界面。

1.2特殊需求

具备帮助、进制转换、选项功能。

1.3课程设计的实验环境

硬件要求能运行Windows9.X操作系统的微机系统。

JAVA程序设计语言及相应的集成开发环境,J2SDK和NETbeans开发工具。

(二)系统设计

本应用程序继承自框架(frame),此程序使用frame布局管理器bordelayout,将单行文本加入相应区域,包含各种按钮的面板buttonpanel加入相应区域。

还可以将进制转换的面板与单行文本框放一块包含各种按钮的面板buttonpanel采用N行N列的网格布局,然后将数字按钮和运算符按钮以及控制按钮添加到面板中,同时注册按钮事件监听器

该程序实现对用户输入数据,显示数据,在选择运算符号,并且进行计算,最后显示计算结果。

本计算器提供给用户两种类型的转换,实现基本的进制转换功能。

同时程序还提供了sqrt、exp、tan、log、sin、cos函数的计算功能,以及系统的退出功能。

此次提供的可视化界面清晰明了,该计算器界面风格简洁,对于一般运算均能胜任。

所以此界面为程序默认第一界面。

此处提供一般四则运算按键以及常用的函数功能按键和退格键,以为用户基本运算所用。

2、详细设计

计算器的程序设计,必然有数据输入,其中数据包括运算符和数字,均要通过计算器上的button按钮选项按钮输入进去,里面录入的必然是字符型的数据,如果进行运算要将输入的数据转化成Double型,以防出错。

运用两个面板的叠加做出界面。

通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易计算器的各种运算,并正确实现运算功能。

调用Math包中的方法实现各函数功能。

添加菜单条,列出‘选项’、‘进制转换’‘帮助’等菜单、选项,并分别实现‘选项’‘退出’中的功能,通过调用Integer包中的方法实现二进制、八进制的转换,帮助'菜单栏中‘用法’的提示对话框。

整个程序对话框可实现最小化、最大化、关闭。

2.1面板设计

利用JavaGUI布局,使用其中的Swing:

导入swing:

importjavax.swing.*;

JFrameframe//JFrame是带有标题和边框的顶层窗口。

JTextFielddisplayField;//JTextField是一个轻量级组件,它允许编辑单行文本。

JPanelpanel,panel1,panel2,panel3;//JPanel是一般轻量级容器。

JMenuBarmainMenu;//菜单栏的实现,将JMenu对象添加到菜单栏以构造菜单。

Labellabel_dialog;//JLabel用于短文本字符串或图像或二者的显示区,标签不对输入事件作出反应。

JButtonbutton_point,button_plus,button_cancel,button_CE;//JButton"push"按钮的实现,通过Action可配置按钮,并进行一定程度的控制。

JMenueditMenu,viewMenu,helpMenu;//JMenu菜单的该实现是一个包含JMenuItem的弹出窗口,用户选择JMenuBar上的项时会显示该JMenuItem。

JMenuItemcopyItem,pasteItem,tItem,sItem,numberGroup,topHelp,aboutCal;//菜单中的项的实现,菜单项本质上是位于列表中的按钮,当用户选择“按钮”时,则执行与菜单项关联的操作。

2.2设置各个按钮行为

能够实现基本的加、减、乘、除运算,以及其它的辅助1.2功能;界面简洁适用;要提供主要的设计思路、类的设计

1)数字按钮功能的实现

如图1所示,该计算器主要支持的数字:

0、1、2、3、4、5、6、7、8、9

图1

2)操作符(+、*、/、=、tan、log、sin、cos、exp、sqrt)按钮功能实现

主要支持的算子:

+、-、*、/。

要求提供图形化操作界面。

操作设计如下:

doubled=0;

if(lastCommand.equals("+"))

result+=x;

elseif(lastCommand.equals("-"))

result-=x;

elseif(lastCommand.equals("*"))

result*=x;

elseif(lastCommand.equals("/"))

result/=x;

elseif(lastCommand.equals("="))

result=x;

elseif(lastCommand.equals("sqrt"))

{d=Math.sqrt(x);result=d;}

elseif(lastCommand.equals("exp"))

{d=Math.exp(x);result=d;}

elseif(lastCommand.equals("log"))

{d=Math.log(x);result=d;}

elseif(lastCommand.equals("tan"))

{d=Math.tan(x);result=d;}

elseif(lastCommand.equals("cos"))

{d=Math.cos(x);result=d;}

elseif(lastCommand.equals("sin"))

{d=Math.sin(x);

result=d;

}

displayField.setText(""+result);

}

3)字符转换按钮功能实现

要求提供图形化操作界面。

操作设计如下:

elseif(e.getActionCommand()=="二进制")

{intn=Integer.parseInt(displayField.getText());

displayField.setText(Integer.toBinaryString(n));

}

elseif(e.getActionCommand()=="八进制")

{intn=Integer.parseInt(displayField.getText());

displayField.setText(Integer.toOctalString(n));

}

4)撤销清除按钮的实现

按下'退格'键,利用循环将当前字符串中的最后一个字母删除;

按下'C'按钮,文本框内数据清除,并清0。

操作设计如下:

if(!

input.equals("+/-"))

{Stringstr=displayField.getText();

if(input.equals("退格"))

{if(str.length()>0)

displayField.setText(str.substring(0,str.length()-1));

}

elseif(input.equals("C"))

{displayField.setText("0");

start=true;

}

5)选项、帮助功能的实现

按下‘选项’按钮,实现计算器运算的结束;

按下‘帮助’按钮,将会显示sqrt、exp的用法提示。

操作设计如下:

elseif(e.getActionCommand()=="退出")

{System.exit(0);

}

elseif(e.getActionCommand()=="用法")

{label_dialog.setText("sqrt,exp等键是先输运算符再输数\n");

dialog.setLocation(400,250);dialog.setVisible(true);

}

3、系统测试

3.1加法运算如图2—4所示。

图2

图3

图4

3.2除法运算如图5—7所示。

图5

图6

图7

3.3平方根运算如图8—9所示。

图8

图9

3.4exp运算如图10—11所示。

图10

图11

3.5tan运算如图12—13所示。

图12

图13

4、软件使用说明书

该软件是运用两个面板的叠加做出界面,通过在按钮的单击事件处理方法中调用类的成员方法calculate()来进行简易计算器的各种运算,并正确实现运算功能。

系统运行步骤如下:

1)在Java中调试并运行程序,显示出计算器界面。

2)点击‘C’按钮,进行运算输入,若输入有误,则按‘退格’键,进行完一次运算,退出重新运行程序,进行其他运算。

3)若进行‘exp’、‘sqrt’运算时,可查看其用法。

4)运算完后,打开‘选项’菜单条,选择退出,即可退出界面。

在输入时我们应注意一下几点:

1)连续输入运算符。

输入中如果有操作非法,比如按下两次'+',系统默认一次进行运算。

2)做除法运算时除数不为“0”。

3)开根号运算"负数不能开根号"。

4)程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),本次设计精度采用float浮点数(floatingpointnumber),占用4byte,范围:

3.4e+/-38(7个数字(7digits))满足一般使用。

除此之外,该软件调用了Math包中的方法实现各函数功能,还添加了菜单条,列出‘选项’、‘进制转换’、‘帮助’等菜单、选项,并分别实现‘选项’、‘退出’中的功能,通过调用Integer包中的方法实现二进制、八进制的转换,帮助菜单栏中的‘用法’的提示对话框,此外,整个程序对话框可实现最小化、最大化、关闭。

设计总结

这次Java课设我的题目是迷你计算器,这个程序主要是针对我们Java中学的布局管理器,由于有一定的基础,所以设计起来也不是很难,不过在设计中也遇到了好多问题,通过查阅和求助老师同学,使得我对这一块的内容有了更深入的了解。

通过了这几天的课程设计,对于我这个编程新手来说,多少有些困难.不过有志者事竟成。

首先,我需要了解一些基本的术语。

程序是计算机执行的一系列的指令。

这些指令说明了计算机要做什么,究竟是用文字处理、电子表格、玩游戏还是其他用途。

然后,我还要去图书馆查阅资料,找一些与这次课设有关的内容作参考,以便能更方便的完成课设的内容。

另外,我还去网上查阅了一些资料,充实一下自己,一切都准备好了,我就可以完成我的计算器程序设计报告了。

在编程的过程中,有时时候会遇到一些不懂的地方,还有程序的中的错误的改正,但是在问老师和同学之后,再加上自己的思考,和看书,就把问题解决了。

这些问题是我在从低级的程序员向高级程序设计师过度的过程必须要解决的。

而我个人认为我越早接触,越多接触,越快解决对我本人缩短这次过程有重要的意义。

其实这次程序设计中,进制转换这一块,我认为做的还是不够完善。

系统并没很好的完成转换功能,并且也没进制转换的相关用法,这也是我这个小程序员的不足。

以后通过更深一步的学习,我相信我可以做得更好的。

我完成了这次JAVA课程设计,不过这只是我学习路上的驿站。

我相信我在未来的学习中会记住从本次课程设计中所学到的东西,并将它用到未来的学习工作中去。

参考文献

[1]曲朝阳,杨杰明等.Java程序设计.北京:

清华大学出版社,2008.10

[2]耿祥以,张跃平.Java大学生实用教程.北京:

电子工业出版社,2012.6

[3]明日科技.Java经典编程.北京:

清华大学出版社,2012.10

[4]李尊朝,苏军.Java语言程序设计.北京:

中国铁道出版社,2004.2

[5]王博.面向对象的建模、设计技术与方法.北京希望电脑公司,1990.

致谢

短短的两周,Java课程设计结束了。

在这期间,我想感谢很多人给予我的帮助。

首先,是我的老师,因为您的指导和教诲,在设计中我基本能按照规范的方法和步骤进行,并通过查阅有关资料和生活中的计算器功能来确定迷你计算器的方案,然后设计并制作;除此之外我要感谢我的同学、朋友,因为他们的帮助,我才完成了这次课程设计,才让我有信心、有勇气去面对实践中遇到的种种困难。

在实践过程中我学到了很多Java中的知识,并巩固了学过的知识。

在此请允许我对所有帮助了我的老师、同学、朋友真诚地说一声“谢谢”!

源程序

packageCalculator;

importjava.awt.BorderLayout;//Window、Dialog及Frame缺省的布局管理器

importjava.awt.Color;

importjava.awt.Dialog;//对话框

importjava.awt.FlowLayout;//Panel和Applet缺省时的布局管理器

importjava.awt.Frame;//窗体

importjava.awt.GridLayout;//网格布局管理器

importjava.awt.Label;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.awt.event.WindowEvent;

importjava.awt.event.WindowListener;

importjavax.swing.JButton;

importjavax.swing.JMenu;

importjavax.swing.JMenuBar;

importjavax.swing.JMenuItem;

importjavax.swing.JPanel;

importjavax.swing.JTextField;

publicclassCalculatorextendsFrameimplementsActionListener,WindowListener{

privatestaticfinallongserialVersionUID=1L;

privateJTextFielddisplayField;

privateStringlastCommand;

privatedoubleresult;

privatebooleanstart;

privateDialogdialog;

privateLabellabel_dialog;

privateJButtonbutton_plusminus,button_minus,button_multiply,button_divide,button_equal;

privateJButtonbutton_log,button_tan,button_cos,button_sin,button_sqrt,button_exp;

privateJButtonbutton_1,button_2,button_3,button_4,button_5,button_6,button_7,button_8,button_9,button_0;

privateJButtonbutton_point,button_plus,button_cancel,button_CE;

publicCalculator(){

super("迷你计算器");

this.setLocation(240,200);

this.setSize(350,300);

this.setResizable(true);

this.setLayout(newGridLayout(7,1));

this.addmyMenu();

displayField=newJTextField(30);

this.add(displayField);

displayField.setEditable(true);

start=true;

result=0;

lastCommand="=";

JPanelpanel0=newJPanel(newFlowLayout(FlowLayout.LEFT));

panel0.setLayout(newGridLayout(1,4,4,4));

JPanelpanel1=newJPanel(newFlowLayout(FlowLayout.LEFT));

panel1.setLayout(newGridLayout(1,5,4,4));

this.add(panel1,BorderLayout.NORTH);

button_sqrt=newJButton("sqrt");

button_sqrt.setForeground(newColor(255,0,0));

button_plusminus=newJButton("+/-");

button_plusminus.setForeground(newColor(255,0,0));

button_exp=newJButton("exp");

button_exp.setForeground(newColor(255,0,0));

button_CE=newJButton("退格");

button_CE.setForeground(newColor(255,0,0));

button_cancel=newJButton("C");

button_cancel.setForeground(newColor(255,0,0));

JPanelpanel2=newJPanel(newFlowLayout(FlowLayout.LEFT));

panel2.setLayout(newGridLayout(1,5,4,4));

this.add(panel2,BorderLayout.NORTH);

button_7=newJButton("7");

button_7.setForeground(newColor(0,0,255));

button_8=newJButton("8");

button_8.setForeground(newColor(0,0,255));

button_9=newJButton("9");

button_9.setForeground(newColor(0,0,255));

button_log=newJButton("log");

button_log.setForeground(newColor(255,0,0));

button_divide=newJButton("/");

button_divide.setForeground(newColor(0,0,255));

JPanelpanel3=newJPanel(newFlowLayout(FlowLayout.LEFT));

panel3.setLayout(newGridLayout(1,5,4,4));

this.add(panel3,BorderLayout.NORTH);

button_4=newJButton("4");

button_4.setForeground(newColor(0,0,255));

button_5=newJButton("5");

button_5.setForeground(newColor(0,0,255));

button_6=newJButton("6");

button_6.setForeground(newColor(0,0,255));

button_tan

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1