java课程设计 设计一个图形界面的计算器完成简单的算术运算.docx
- 文档编号:8993557
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:35
- 大小:204.46KB
java课程设计 设计一个图形界面的计算器完成简单的算术运算.docx
《java课程设计 设计一个图形界面的计算器完成简单的算术运算.docx》由会员分享,可在线阅读,更多相关《java课程设计 设计一个图形界面的计算器完成简单的算术运算.docx(35页珍藏版)》请在冰豆网上搜索。
java课程设计设计一个图形界面的计算器完成简单的算术运算
目 录
中文摘要
Java是由SunMicrosystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。
用Java实现的HotJava浏览器,显示了Java的魅力:
跨平台、动感的Web、Internet计算。
从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Javaapplet。
另一方面,Java技术也不断更新。
Java平台由Java虚拟机和Java应用编程接口构成。
Java应用编程接口为Java应用提供了一个独立于操作系统的标准接口,可分为基本部分和扩展部分。
在硬件或操作系统平台上安装一个Java平台之后,Java应用程序就可运行。
现在Java平台已经嵌入了几乎所有的操作系统。
这样Java程序可以只编译一次,就可以在各种系统中运行。
Java分为三个体系J2SE,J2EE,J2ME。
说起计算器,值得我们骄傲的是,最早的计算工具的诞生地是中国。
在17世纪初,西方国家的计算工具才有了较大的发展,英国数学家纳皮尔发明的"纳皮尔算筹",英国牧师奥却德发明了圆柱型对数计算尺,这种计算尺不仅能做加减乘除、乘方、开方运算,甚至可以计算三角函数,指数函数和对数函数,这些计算工具不仅带动了计算器的发展,也为现代计算器发展奠定了良好的基础,进而成为了现代社会应用广泛的计算工具。
关键词:
javaJava平台计算器
一、课设任务及要求
1.课设任务
这次课程设计选择的题目为设计一个图形界面(GUI)的计算器应用程序,完成简单的算术运算。
这次课程设计的基本要求为设计的计算器应用程序可以完成加法、减法、乘法、除法和取余运算,且有小数点、正负号、求倒数、退格和清零功能。
拓展功能根据自己的能力添加。
这次课程设计的我选择添加的拓展功能为开平方根,平方,立方,判断素数,求log的功能。
本程序主要练习使用布局管理器设计一个计算器的界面,并练习使用事件监听器处理数据的输入,并完成相关的计算。
数据和运算符号的存储采用动态链表这种数据结构实现。
这次课程设计选择的Java运行环境为:
WindowsXPsp3+Eclipse+JDK1.6
二、需求分析
1.系统功能需求分析
计算器是现在一个普遍应用的工具,能够解决许多人所无法计算的数据,节省大量宝贵的时间。
2.系统功能分析
为了实现计算器系统的功能.主要有二个功能模块:
输入、输出。
3.系统设计原则
基于计算器系统要具有适用性广、操作简便等特点.本系统预计要达到以下几个目标:
(1)、满足以上的功能要求;
(2)、能够运行在常见的计算机及其配置上;
三、设计思路
1.关于布局问题
本次课程设计程序继承来自框架类(Frame),总体布局上选用布局管理器BorderLayout:
(1)将单行文本框加入到“North”区域
(2)将面板panel加入到“Center”区域,同时panel包含了各种数字按钮和符号按钮。
面板panel采用Girdlayout布局,选用5行*5列,将各种按钮添加到面板panel,并增加按钮监听事件。
布局完成后的效果图如下:
2.关于数据存储问题
计算器完成的是一个数学表达式,本次课程设计我选用的是使用链表(Linkedlist类)来存储数字和运算符号。
程序运行后,输入的所有数字及运算符号都全部存储在链表中,待最后运算时,再一一求出来进行计算。
3.关于事件监听的处理问题
计算器的各种按钮都需要一个对象来进行监视,以便对发生的事件做出处理。
计算器的各种按钮通过调用相应的方法将某个对象作为自己的监视器。
例如计算器中的数字按钮,其方法为:
AddActionListener(监视器);
对于获取了监视器的数字按钮,通过相应的操作就会导致事件的发生,并通知监视器,监视器就会做出相应的处理。
四、详细设计
1.计算器系统主要功能模块
(1)、系统主要模块实现的功能
系统输入模块实现数字以及计算符号输入的功能,输出模块的结果在文本框中实现显示。
(2)、系统输入窗体实现的效果
系统输入窗体设计效果如图所示:
上图为按数字键1234567890后,在文本框中的显示
(3)、系统主要模块功能描述
功能描述:
菜单项“计算器”主要服务于使用者.它包含了“输入”、“输出”、
两个功能。
输入功能:
当使用者将数字输入后,会出现数字的显示;当使用者将计算符号输入时候会有计算符号的录入。
输出功能:
点击“输出”选项后.可实现计算的结果。
2.系统的实现
(1)系统源文件类之间的关系
计算器系统共有3个java源文件:
Calculator,NumberButton,OperationButton。
主要类之间的主要关系如图下图所示
计算器系统的类关系图
2、系统源文件类实现的功能
Calculator.java文件生成的类该JAVA文件生成的类负责创建计算器的主窗口及各种运算的实现。
该类含有main方法,整个程序从此类开始执行
NumberButton.java该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字
OperationButton.java该文件生成的类负责为主类创建运算符号按钮对象。
使用鼠标单击运算符号可选择所要进行的运算
下表为表格形式
序号
文件名
主要功能
1
Calculator.java
该JAVA文件生成的类负责创建计算器的主窗口。
该类含有main方法,整个程序从此类开始执行
2
NumberButton.java
该文件生成的类负责为主类创建数字按钮对象,使用鼠标单击数字按钮可依次输入参加运算的数值的各位数字
3
OperationButton.java
该文件生成的类负责为主类创建运算符号按钮对象。
使用鼠标单击运算符号可选择所要进行的运算
.
3.系统类的成员变量及方法描述
(1)主类Calculator
①成员变量
Calculator类成员变量表
成员变量描述
变量类型
名称
数字按钮数组
NumberButton[]
NumberButton
运算符号按钮数组
OperationButton[]
OperationButton
小数点按钮
JButton
小数点按钮
正负号按钮
JButton
正负号按钮
退格按钮
JButton
退格按钮
平方按钮
JButton
平方按钮
清零按钮
JButton
清零按钮
等号按钮
JButton
等号按钮
显示计算结果
JTextField
resultShow
储存数据的链表
LinkedList
mylist
求平方根
JButton
sqrt
判断素数
JButton
素数
log
JButton
log
立方按钮
JButton
立方按钮
倒数按钮
JButton
倒数按钮
②方法
Calculator类方法
名称
功能
备注
Calculator
创建窗口
构造方法
ActionPerfomed
处理ActionPerfomed事件
接口方法
Main
程序开始运行
(2)NumberButton类
①成员变量
NumberButton类变量
成员变量描述
变量类型
名称
按钮代表的数字
Int
number
②方法
NumberButton类方法
方法名
功能
备注
NumberButton
创建数字按钮
构造方法
getNumber
获取按钮代表的数字
(3)OperationButton类
①成员变量
OperationButton类成员变量
成员变量描述
变量类型
名称
按钮代表的符号
String
Operator
②方法
OperationButton类方法
方法名
功能
备注
OperationButton
创建符号按钮
构造方法
getOperator
获取按钮代表的符号
五、运行调试与分析讨论
1.测试加法运算按键12+20得出的结果如下图
2.测试减法运算按键12-20得出的结果如下图
3.测试乘法运算按键12*20得出的结果如下图
4.测试除法运算按键12/20得出的结果如下图
5测试退格运算,按键123456789,按退格键3次,得到的结果如下图
6.测试倒数运算,按键5,再按倒数键“1/X”,得到的结果如下图
7.测试平方键,按键4,再按平方键,得到的结果如下图
8.测试立方键,按键4,再按立方键,得到的结果如下图
9.测试开平方键,按键4,再按键“sqrt”,得到的结果如下图
10..测试素数键,按键29,再按键“素数”,得到的结果如下图
六、设计体会与小结
这次课程设计总体上来说难度不大,但是个别细节遇到很多的问题。
在课设过程中,我自己学习了swing的使用以及数据结构中的链表用java的实现。
在这次课程设计中,我学习到了很多布局方面的知识,还有就是链表的实现。
数据结构已经很久没有用过了,刚上手时感觉有些生疏,但是随着时间的推移,用java实现链表也渐渐的变得顺手了。
这次课程设计的程序构架很简单,没有用到很困难的算法,但是这样编写出来的程序也有优点,就是修改的时候一目了然。
总的来说,时间虽紧,这次课程设计学习的东西很是挺多的。
最后感谢在课程设计中帮助过我的同学和老师。
七、参考文献
[1]耿祥义.《Java2实用教程(第三版)》北京清华大学出版社2006.8
[2]朱福喜.《Java语言程序设计》.北京清华大学出版社.2005
[3]朱福喜,尹为民,余振坤.《Java语言与面向对象程序设计》.武汉武汉大学出版社.2002
附录
程序代码
packageTZB;
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.*;
importjava.util.LinkedList;
publicclassCalculatorextendsJFrameimplementsActionListener{
NumberButtonnumberButton[];
OperationButtonoprationButton[];
JButton小数点按钮,正负号按钮,退格按钮,平方按钮,等号按钮,清零按钮,sqrt,素数,log,立方按钮,倒数按钮;
JPanelpanel;
JTextFieldresultShow;
String运算符号[]={"+","-","*","/"};
LinkedList
boolean等号=false;
JTextAreablank;
//GUI的设计及监视器的添加
publicCalculator(){
super("计算器");
mylist=newLinkedList
numberButton=newNumberButton[10];
for(inti=0;i<=9;i++){
numberButton[i]=newNumberButton(i);
numberButton[i].addActionListener(this);
}
oprationButton=newOperationButton[4];
for(inti=0;i<4;i++){
oprationButton[i]=newOperationButton(运算符号[i]);
oprationButton[i].addActionListener(this);
}
小数点按钮=newJButton(".");
正负号按钮=newJButton("+/-");
等号按钮=newJButton("=");
平方按钮=newJButton("平方");
立方按钮=newJButton("立方");
倒数按钮=newJButton("1/x");
退格按钮=newJButton("退格");
清零按钮=newJButton("C");
sqrt=newJButton("sqrt");
log=newJButton("log");
素数=newJButton("素数");
清零按钮.setForeground(Color.blue);
退格按钮.setForeground(Color.blue);
等号按钮.setForeground(Color.blue);
平方按钮.setForeground(Color.blue);
立方按钮.setForeground(Color.blue);
倒数按钮.setForeground(Color.blue);
正负号按钮.setForeground(Color.blue);
小数点按钮.setForeground(Color.blue);
sqrt.setForeground(Color.blue);
log.setForeground(Color.blue);
素数.setForeground(Color.blue);
退格按钮.addActionListener(this);
清零按钮.addActionListener(this);
等号按钮.addActionListener(this);
小数点按钮.addActionListener(this);
正负号按钮.addActionListener(this);
平方按钮.addActionListener(this);
立方按钮.addActionListener(this);
倒数按钮.addActionListener(this);
sqrt.addActionListener(this);
log.addActionListener(this);
素数.addActionListener(this);
resultShow=newJTextField(10);
resultShow.setHorizontalAlignment(JTextField.RIGHT);
resultShow.setForeground(Color.blue);
resultShow.setFont(newFont("TimesRoman",Font.PLAIN,24));
resultShow.setBorder(newSoftBevelBorder(BevelBorder.LOWERED));
resultShow.setBackground(Color.white);
resultShow.setEditable(false);
panel=newJPanel();
panel.setLayout(newGridLayout(5,5));//GridLayout布局5*5
panel.add(numberButton[1]);
panel.add(numberButton[2]);
panel.add(numberButton[3]);
panel.add(oprationButton[0]);
panel.add(清零按钮);
panel.add(numberButton[4]);
panel.add(numberButton[5]);
panel.add(numberButton[6]);
panel.add(oprationButton[1]);
panel.add(退格按钮);
panel.add(numberButton[7]);
panel.add(numberButton[8]);
panel.add(numberButton[9]);
panel.add(oprationButton[2]);
panel.add(倒数按钮);
panel.add(numberButton[0]);
panel.add(正负号按钮);
panel.add(小数点按钮);
panel.add(oprationButton[3]);
panel.add(等号按钮);
panel.add(sqrt);
panel.add(立方按钮);
panel.add(素数);
panel.add(log);
panel.add(平方按钮);
add(panel,BorderLayout.CENTER);
add(resultShow,BorderLayout.NORTH);
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
});
setVisible(true);
setBounds(400,240,400,300);
setResizable(true);
validate();
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()instanceofNumberButton)//触发数字
{
NumberButtonb=(NumberButton)e.getSource();
if(mylist.size()==0){
intnumber=b.getNumber();
mylist.add(""+number);
//查看链表动态变化
for(inti=0;i System.out.print(mylist.get(i)+""); } System.out.println(); resultShow.setText(""+number); 等号=false; } elseif(mylist.size()==1&&等号==false){ intnumber=b.getNumber(); Stringnum=(String)mylist.getFirst(); Strings=num.concat(""+number); mylist.set(0,s); //查看链表动态变化 for(inti=0;i System.out.print(mylist.get(i)+""); } System.out.println(); resultShow.setText(s); }elseif(mylist.size()==1&&等号==true){ intnumber=b.getNumber(); mylist.removeFirst(); mylist.add(""+number); //查看链表动态变化 for(inti=0;i System.out.print(mylist.get(i)+""); } System.out.println(); 等号=false; resultShow.setText(""+number); }elseif(mylist.size()==2){ intnumber=b.getNumber(); mylist.add(""+number); //查看链表动态变化 for(inti=0;i System.out.print(mylist.get(i)+""); } System.out.println(); resultShow.setText(""+number); }elseif(mylist.size()==3){ intnumber=b.getNumber(); Stringnum=(String)mylist.getLast(); Strings=num.concat(""+number); mylist.set(2,s); //查看链表动态变化 for(inti=0;i System.out.print(mylist.get(i)+""); } System.out.println(); resultShow.setText(s); } }elseif(e.getSource()instanceofOperationButton)//触发运算符 { OperationButtonb=(OperationButton)e.getSource(); if(mylist.size()==1){ Stringfuhao=b.get运算符号(); mylist.add(fuhao); //查看链表动态变化 for(inti=0;i System.out.print(mylist.get(i)+""); } System.out.println(); }elseif(mylist.size()==2){ Stringfuhao=b.get运算符号(); mylist.set(1,fuhao); //查看链表动态变化 for(inti=0;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java课程设计 设计一个图形界面的计算器完成简单的算术运算 java 课程设计 设计 一个 图形界面 计算器 完成 简单 算术 运算