JAVA程序设计报告 (1).doc
《JAVA程序设计报告 (1).doc》由会员分享,可在线阅读,更多相关《JAVA程序设计报告 (1).doc(13页珍藏版)》请在冰豆网上搜索。
JAVA语言课程设计
湖南理工学院南湖学院机电系
课程设计
课程名称:
Java程序设计
课题名称:
计算器系统设计
姓名:
周敏
学号:
24092401630
班级:
南湖学院机电系09级计算机班
2011年
13
一.引言……………………………………………………………3
1.JAVA用户界面概述……………………………………………………………………3
二.设计内容………………………………………………………3
三.设计过程………………………………………………………4
1.JAVA界面设计的描述……………………………………………………………4
2.程序中的类设计……………………………………………………………………4
3.系统知识点……………………………………………………………………………4
4.简要流程的设计………………………………………………………………………5
四.代码实现……………………………………………………6
五.实验结果………………………………………………………12
六.实验总结………………………………………………………12
计算器的设计与实现
一.引言
1.JAVA用户界面概述
图形用户界面(GraphicsUserInterface,缩写GUI)是指以图形的显示方式与用户实现交互操作的应用程序界面,设计具有GUI特征的应用程序被称为GUI应用程序设计。
Java提供了十分完善的图形用户界面功能,使得软件开发人员可以轻松地开发出功能强大、界面友善、安全可靠的应用城建,充分体现了Java语言的时代感与面向对象程序设计的优越性。
在Java语言中,为GUI应用程序设计提供了强大的功能,其相关的类主要封装在两包(java.awt和javax.swing)中,其中包含了实现图形用户界面的所有基本元素,这些基本元素主要包括容器、组件、绘图工具与布局管理器等。
组件是与用户实现交互操作的部件,容器是包容组件的部件,布局管理器是管理组件在容器中布局的部件,绘图工具是绘制图形的部件。
java.awt是java1.1用来建立GUI的图形包,这里的“awt”是抽象窗口工具包。
JAVA设计用户界面需要以下四个基本步骤:
(1).创建和设置组件,
(2).将组件加入到容器中,(3).布局组件,(4).处理有组建产生的事件。
随着科学技术和社会经济的不断发展,日常生活中我们必须和计算不停地打交道,这就对个人的计算能力有了很高的要求,有时候难免会出错,所以就需要一种机器去代替繁琐的计算过程并且能快速得出正确的结果。
计算器的出现解决了这种问题。
现在计算机已经成为我们工作学习和生活中不可缺少的工具。
在学习了Java语言之后,我使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。
二.设计内容
该程序是一个图形界面的简单的java计算器,使用人员能快捷简单地进行操作即时准确地获得需要的计算的结果,对人们的生活有一定的帮助。
可以进行简单的四则运算(加、减、乘、除,以及求倒数,正弦,余弦,正切等等一些基本的功能),有退格功能,归零功能。
三.设计过程
1.界面的设计的描述
界面布局:
创建二个面板,一个面板先将所有按钮:
所有数字键和运算符键等放在面板上,采用网格布局,具体设计为5行,5列的网格,25个格子用来放置一些功能键和数字键。
第二个面板放置显示结果。
然后,对以上两个面板,采用BorderLayout布局,将按键面板放在计算机的中部,将文本框放在计算器界面的上部。
2.程序中的类的设计
本程序设计了三个类,一个是控制界面布局的面板容器类,其中,包含两个以内部类形式定义的监听器类;一个是外层窗口类;另一个是检测使用情况的测试类。
3.系统知识点:
在程序中需要使用的包:
importjava.awt.*;
importjavax.swing.*;
importjava.awt.event.*;
外层窗口类:
JFrame类是Java类库提供的顶层窗口类,定义其子类的时候根据需要给予相应的设置或者重新定义。
在外层窗口类中可以设置窗口的大小setSize(X,X);窗口是否可见setVisible(X);窗口是否可以调节setResizable(X);设置窗口标题栏显示的内容setTitle();设置在桌面上显示的位置setLocation(X,Y)。
面板容器类:
JLable显示结果标签。
Jpanel面板容器用来放置一些组件;
Booleanstart判断是否为数字的开始;
lastCommand保存“=”“+”“-”“*”等命令。
GridLayout(intxinty)创建X行X列的网格布局管理器。
创建按钮Button并使用add()方法加入面板中并为其注册监听器。
ActionListener监听类接口当单击数字键或者功能键后,系统将调用下面的两个成员方法
InsertAction内部类,其中定义了成员方法actionPerformed(ActionEventevent)进行监听数字,实现拼接数字的功能。
CommandAction内部类,其中定义了成员方法actionPerformed(ActionEventevent)监听一些功能按钮,实现计算、初始化数值的功能。
publicvoidcalculate(doublex){……}主要用于功能符号(如“+”“-”“sin”“1/x”)的运算.如sin、cos、tin等直接调用了math中的方法。
display.setText(""+result)显示运算后的结果。
测试类
publicclassTestCalculatorClass{……}中的方法用测试程序的结果。
4.简要的设计流程
创建窗口
构造计算器界面结构
对各个按钮添加事件监听器ActionListener以及事件处理
输出显示区域
功能键按钮(网)
数字符号及运算符按钮(网)
数字键按钮事件处理
运算符键按钮事件处理
功能键按钮事件处理
完成java源代码编写
调试修改程序,完善模拟计算器功能
(边)
(边)
四.代码实现
外层窗口类代码:
importjava.awt.*;
importjavax.swing.*;
publicclassCalculatorFrameClassextendsJFrame{//顶层容器类
publicCalculatorFrameClass(){
setTitle("Calculator周敏制作");//标题
ContainercontentPane=getContentPane();
CalculatorPanelClasspanel=newCalculatorPanelClass();
contentPane.add(panel);//将面板加入容器
setSize(600,400);//面板大小
setLocation(300,200);//桌面位置
setBackground(Color.black);//背景颜色
setVisible(true);//窗口可见
setResizable(false);//窗口不可调节
}
}
面板类代码:
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.awt.Color.*;
publicclassCalculatorPanelClassextendsJPanel{
//计算器界面类
privateJLabeldisplay; //显示结果标签
privateJPanelpanel;//面板
privatedoubleresult;//结果
privateStringlastCommand;//保存运算符号
privatebooleanstart;//判断是否数字的开始
publicCalculatorPanelClass(){//面板设计
setLayout(newBorderLayout());
result=0;
lastCommand="=";
start=true;
display=newJLabel("0",SwingConstants.RIGHT);
display.setForeground(Color.black); //设置前景颜色
display.setBorder(BorderFactory.createCompoundBorder(
BorderFactory.createLineBorder(Color.black),
BorderFactory.createEmptyBorder(5,5,5,5)));
add(display,BorderLayout.NORTH);
ActionListenerinsert=newInsertAction();//监听器
ActionListenercommand=newCommandAction();
JButtonzhengxian,yuxian,zhengqie,kaipingfang,zhengfuhao,daoshu,tuige,qingling;
zhengfuhao=newJButton("+/-");
tuige=newJButton("Backspace");
qingling=newJButton("C");
zhengxian=newJButton("sin");
yuxian=newJButton("cos");
zhengqie=newJButton("tin");
kaipingfang=newJButton("%");
daoshu=newJButton("1/x");
daoshu.setForeground(Color.BLUE);
kaipingfang.setForeground(Color.BLUE);
zhengqie.setForeground(Color.BLUE);
yuxi