摘要
本文围绕Java编程语言在网络编程方面的具体应用,论述了使用面向对象方法,对计算器程序进行需求分析、概要设计、详细设计,最后使用Java编程实现的全过程。
java语言,是目前比较流行的编程语言。经过10多年的发展,java已经渗透到全球每个角落。在当今这个网络的时代,java语言在网络编程方面的优势使得网络编程有了更好的选择。Java语言最令人瞩目的特点是具有跨平台性,使其不受平台不同的影响,并得到了广泛的应用。
设计内容:设计GUI界面的计算器。用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。
设计要求:
1.系统界面的上面是数字输入对话框,用来显示所输入的数字和运行的结果。
2.系统界面下面的左侧是记忆 + - * /。
3. 系统界面下面的中部是数字输入按钮,用来输入数字。
4.系统界面下面的右侧是运算符号按钮,用来实现具体的运算。
关键字:java面向对象 计算器 网络编程
第一章 概述
1.1 设计目的
计算器是日常生活中十分便捷有效的工具,能实现加、减、乘、除、开方、求倒数等简单运算的功能。本论文采用java编程语言实现计算器功能。该计算器大大的降低了数字计算的难度并且提高了计算的准确度和精确度。使用简单,适合广大工作人员和中小学生使用。
1.2 计算器系统概述
标准计算器的界面采用“图形界面程序设计(GUI)”。GUI为用户和应用程序之间的交互提供了直观、方便的交流方式。用户使用鼠标、键盘操作图形界面上的按钮、菜单等元素湘计算机系统发送命令,系统运行的结果以图形的方式显示给用户。
编写java计算器主要使用了Swing组件和AWT布局类。Swing组件主要包括按钮、标签、文本输入类、等组件,AWT主要运用了其中的布局管理器。
1.2.1 Swing组件
Swing组件的按钮用JButton类表示,计算器的界面主要由JButton按钮组成,以响应用户的操作;
Swing中的标签用JLabel类表示,标签上可以显示图标和文本;
Swing的文本输入类包括文本框JTextField、文本区JTextArea和密码框JPasswordField。
本计算器中仅仅使用了文本框JTextField,用于文本数字的显示。
1.2.2 AWT组件
布局管理器管理组件如何放置在容器中,AWT中最常用的四种布局类:FlowLayout、BorderLayout、GridLayout、CardLayout。本项目主要采用了GridLayout布局。
1.3功能模块设计
★标准计算器。
以下是标准计算器的各项功能:
(1)加法:
两个及两个以上数据进行加法操作,可以为小数形式。
(2)减法:
两个及两个以上数据进行减法操作,可以为负数形式。
(3)乘法:
两个及两个以上数据进行乘法操作。
(4)除法:
两个及两个以上数据进行除法操作。
(5)开平方:
对任意数开平方,可以为小数(不能为负数)。
(6)求倒数:
对任意数求倒数,0除外。
(7)求百分数:
对任意一个数进行百分号操作。
1.4 系统功能图。
标准计算器
求倒数
开平方
求百分号
加法
减法
乘法
除法
图1.1 计算器系统功能图
第二章 项目设计说明
2.1标准计算器设计界面
图2.1 计算器设计界面
2.2标准计算器设计主要代码
标准计算器主要由一个菜单栏、一个文本框、27个按钮组成。
2.2.1整体框架代码
JFrame f = new JFrame("标准计算器");
f.setLocation(400, 300);
Container contentPane = f.getContentPane;
2.2.2 菜单栏代码
图2.2 菜单栏
JMenuBar mBar = new JMenuBar;
mBar.setOpaque(true);
mEdit = new JMenu("编辑(E)");
mEdit.setMnemonic(KeyEvent.VK_E);
mCopy = new JMenuItem("复制(C)");
mEdit.add(mCopy);
mPaste = new JMenuItem("粘贴(P)");
mEdit.add(mPaste);
mView = new JMenu("查看(V)");
mView.setMnemonic(KeyEvent.VK_V);
mView.add(new JMenuItem("标准型"));
mView.add(new JMenuItem("科学型"));
mView.addSeparator;
mView.add(new JMenuItem("查看分组"));
mHelp = new JMenu("帮助(H)");
mHelp.setMnemonic(KeyEvent.VK_H);
mHelp.add(new JMenuItem("帮助主题"));
mHelp.addSeparator;
mHelp.add(new JMenuItem("关于计算器"));
mBar.add(mEdit);
mBar.add(mView);
mBar.add(mHelp);
f.setJMenuBar(mBar);
contentPane.setLayout(new BorderLayout);
2.2.3 文本框代码
图2.3 文本框
JPanel pTop = new JPanel;
tResult = new JTextField("0.",26);
tResult.setHorizontalAlignment(JTextField.RIGHT);
tResult.setEditable(false);
pTop.add(tResult);
contentPane.add(pTop,BorderLayout.NORTH);
2.2.4 计算器各功能键代码
图2.4 各功能键图
bOther = new JButton("MC");
bOther.addActionListener(this);
bOther.setForeground(Color.red); //字体颜色
bOther.setMargin(new Insets(3,2,3,2));//按钮边框和标签之间的空白
pLeft.add(bOther);
bOther = new JButton("MR");
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
bOther = new JButton("MS");
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
bOther = new JButton("M+");
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,2,3,2));
pLeft.add(bOther);
pBottom.add(pLeft,BorderLayout.WEST);
JPanel pRight = new JPanel;
pRight.setLayout(new BorderLayout);
JPanel pUp = new JPanel;
pUp.setLayout(new GridLayout(1,3,3,0));
bOther = new JButton("BackSpace");
bOther.addActionListener(this);
bOther.setForeground(Color.red);
bOther.setMargin(new Insets(3,0,3,5));
pUp.add(bOther);
bOther = new JButton("CE");
bOther.addActionListener(this);
bOther.setForeground(Color.red);
pUp.add(bOther);
bOther = new JButton("C");
bOther.addActionListener(this);
bOther.setForeground(Color.red);
pUp.add(bOther);
2.2.5 数字键及运算符号代码
图2.5 数字键图
JPanel pDown = new JPanel;
pDown.setLayout(new GridLayout(4,5,3,2));
bNumber = new JButton("7");
bNumber.setForeground(Color.blue);
bNumber.addActionListener(this);
bNumber.setMargin(new Insets(3,3,3,3));
pDown.add(bNumber);
(注:其他数字键、运算符号键与“7”定义相同。)
第三章 程序运行效果
3.1加法运算
本计算器可以实现多个运算数相加,例如:1+2+3+4
计算结果为10,所有数据均为double类型。
3.2减法运算
本计算器可以实现多个运算数相减(正负数),例如:6-5-3-1
计算结果为-3,数据类型为double类型。
3.3乘法运算
本计算器可以实现多个运算数相乘,例如2*3*4*5
运算结果为120,数据类型为double类型。
3.4除法运算
本计算器可以实现多个运算数相除(除数不为0)例如:15/3/5/2
运算结果为0.5,数据类型为double类型
当除数为0时,计算器自动报错,例如:15/0
3.5开方运算
当被开方数为非负数时,计算器自动开方,例如:25开方
运算结果为5.
3.6求倒数运算
当按下求倒数键时,计算器自动为运算数求其倒数。例如:5的倒数
运算结果为0.2.
第四章 项目重难点分析
4.1重难点分析
Java计算器中整体框架的建立,按钮的设置,整体布局在操作过程中都是很顺畅的。计算器的关键步骤也是重点是实现计算器的计算方法。
实现两个数的加减乘除等运算是比较简单的,但是一个计算器需要做到的是实现多个运算数的运算。此时就用到了我在项目一开始定义的两个数据
每执行一次运算操作就把运算结果赋值给操作数1 “op1”,并判断下一步操作是“=”或者“其他运算符”,决定下一步计算器的操作。
4.2程序中存在的问题
(1)菜单栏中虽然设置了编辑、查看、帮助等选项,但是项目中并没有实际的功能。
(2)程序中设置了内存的有关操作但是并没有达到其预期的功能。
(3)百分号的实际功能并没有实现。
(4)当被开方数是负数时,计算器并不能给出错误提示。
[参考文献]
《Java编程实用技术与案例 》 译作者:杨绍方
《软件工程Java语言实现SoftwareEngineeringwithJava》StephenR.Schach译者:袁兆山等
程序员天堂( 英文网站 大量的程序, 库, 包)