JAVA课程设计计算器.docx
- 文档编号:29207615
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:18
- 大小:128.61KB
JAVA课程设计计算器.docx
《JAVA课程设计计算器.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计计算器.docx(18页珍藏版)》请在冰豆网上搜索。
JAVA课程设计计算器
《JAVA程序设计》课程设计任务书
一、课程设计的目的
1、培养学生面向对象编程的思想;
2、使学生熟悉JAVA语言的使用;
3、培养学生JAVA编程的思想和方法;
4、使学生掌握JAVA编程调试的基本技能;
5、培养学生分析、解决问题的能力。
二、课程设计容与要求
1、容一:
1简单计算器
[题目描述]
使用Java的GUI图形用户界面编程设计并编写一个计算器程序,用户可以通过鼠标或者键盘操作输入参加运算的数值和运算符,要求能进行加、减、乘、除等混合运算。
[基本要求]
实现加、减、乘、除的双目单类别的基础运算;
[实现提示]
GUI编程Component的事件响应。
参考界面
《JAVA程序设计》课程设计
一、系统中所使用的数据对象及说明
1、Calculator类
属性
属性名称
类型
描述
Jmb
JMenuBar
菜单栏
Jm1jm2jm3
JMenu
菜单
Jmi
JMenuItem
菜单项
f
JFrame
实例化对象
Panel11
JPanel
输入面板
CommandsPanel
JPanel
运算符面板
calckeysPanel
JPanel
数字面板
showline
JTextField
数据输出框
backspace
JButton
退格键
CE
JButton
清空
C
JButton
删除
1/X
JButton
取余
dao
JButton
取倒数
add
JButton
数字相加
jian
JButton
数字相减
cheng
JButton
数字相乘
quzheng
JButton
数字相除
dian
JButton
点符号
deng
JButton
等于号
zero
JButton
一
one
JButton
二
two
JButton
三
three
JButton
四
four
JButton
五
five
JButton
六
six
JButton
七
seven
JButton
八
eight
JButton
九
num1
String
保存第一个运算数字
operator
String
保存运算符号
方法
方法名称
功能
Calculator
计算器布局
Add
添加组件、面板
addMouseListener
添加鼠标监听事件
setJMenuBar
设置菜单
2、系统功能结构及相关算法描述
1、系统功能结构
系统功能结构图
2、相关算法流程图
Mun1是否存在
执行加、减法运算得出S
将S添加到show文本框
Y
N
(1)加减法流程
(2)
Mun1是否存在
执行乘、除法运算得出S
Y
N
乘除法流程
(3)乘方取余法流程
三、系统运行结果(截图)
1、主菜单
四、课程设计总结
通过此次课程设计,使我更加扎实的掌握了有关JAVA图形界面布局等方面的知识,虽然在设计过程中也遇到了很多问题,但经过一次又一次的思考,一遍又一遍检查和反复修改终于找到了原因所在,也暴露了前期我在这方面的知识欠缺。
课程设计是一种实践活动,不但可以提升专业知识和专业能力,也培养了我们独立思考,动手操作的能力,使我对抽象的知识有了具体的认识。
这对于我们的将来也有很大的帮助。
此次课程设计也让我明白没有最完善的程序代码,只有不断地改善才能使程序变得更完美,同时也增强了我对JAVA的兴趣,相信继续保持下去对JAVA的理解一定会更上一层楼。
附录:
程序源码
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.GridLayout;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JPanel;
importjavax.swing.JSeparator;
importjavax.swing.JTextField;
publicclassCalculatorextendsJFrameimplementsActionListener{
JMenuBarjmb;
JMenujm1,jm2,jm3;
JMenuItemjmi;
/**计算器上的键的显示名字*/
privatefinalString[]KEYS={"7","8","9","/","sqrt","4","5","6",
"*","%","1","2","3","-","1/x","0","+/-",".","+","="};
/**计算器上的功能键的显示名字*/
privatefinalString[]COMMAND={"Backspace","CE","C"};
/**计算器上键的按钮*/
privateJButtonkeys[]=newJButton[KEYS.length];
/**计算器上的功能键的按钮*/
privateJButtoncommands[]=newJButton[COMMAND.length];
/**计算器左边的M的按钮*/
/**计算结果文本框*/
privateJTextFieldresultText=newJTextField("0");
//标志用户按的是否是整个表达式的第一个数字,或者是运算符后的第一个数字
privatebooleanfirstDigit=true;
//计算的中间结果。
privatedoubleresultNum=0.0;
//当前运算的运算符
privateStringoperator="=";
//操作是否合法
privatebooleanoperateValidFlag=true;
/**
*构造函数
*/
publicCalculator(){
super();
JMenuBarjmb=newJMenuBar();
this.setJMenuBar(jmb);
JMenujm=newJMenu("编辑(E)");
jmb.add(jm);
jmi=newJMenuItem("复制(c)Ctrl+c");
jm.add(jmi);
jmi=newJMenuItem("粘贴(p)Ctrl+v");
jm.add(jmi);
jm2=newJMenu("查看(v)");
jmb.add(jm2);
jmi=newJMenuItem("标准型(T)");
jm2.add(jmi);
jmi=newJMenuItem("科学型(S)");
jm2.add(jmi);
jm2.add(newJSeparator());
jmi=newJMenuItem("数学分组(I)");
jm2.add(jmi);
jm3=newJMenu("帮助(H)");
jmb.add(jm3);
jmi=newJMenuItem("帮助主题(H)");
jm3.add(jmi);
jm3.add(newJSeparator());
jmi=newJMenuItem("关于计算器(A)");
jm3.add(jmi);
//初始化计算器
init();
//设置计算器的背景颜色
this.setBackground(Color.LIGHT_GRAY);
this.setTitle("计算器");
//在屏幕(500,300)坐标处显示计算器
this.setLocation(500,300);
//不许修改计算器的大小
this.setResizable(false);
//使计算器中各组件大小合适
this.pack();
}
/**
*初始化计算器
*/
privatevoidinit(){
//文本框中的容采用右对齐方式
resultText.setHorizontalAlignment(JTextField.RIGHT);
//不允许修改结果文本框
resultText.setEditable(false);
//设置文本框背景颜色为白色
resultText.setBackground(Color.WHITE);
//初始化计算器上键的按钮,将键放在一个面板
JPanelcalckeysPanel=newJPanel();
//用网格布局器,4行,5列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素
calckeysPanel.setLayout(newGridLayout(4,5,3,3));
for(inti=0;i keys[i]=newJButton(KEYS[i]); calckeysPanel.add(keys[i]); keys[i].setForeground(Color.blue); } //运算符键用红色标示,其他键用蓝色表示 keys[3].setForeground(Color.red); keys[8].setForeground(Color.red); keys[13].setForeground(Color.red); keys[18].setForeground(Color.red); keys[19].setForeground(Color.red); //初始化功能键,都用红色标示。 将功能键放在一个面板 JPanelcommandsPanel=newJPanel(); //用网格布局器,1行,3列的网格,网格之间的水平方向间隔为3个象素,垂直方向间隔为3个象素 commandsPanel.setLayout(newGridLayout(1,3,3,3)); for(inti=0;i commands[i]=newJButton(COMMAND[i]); commandsPanel.add(commands[i]); commands[i].setForeground(Color.red); } //下面进行计算器的整体布局,将calckeys和command面板放在计算器的中下部 //新建一个大的面板,将上面建立的command和calckeys面板放在该面板 JPanelpanel1=newJPanel(); //面板采用边界布局管理器,面板里组件之间的水平和垂直方向上间隔都为3象素 panel1.setLayout(newBorderLayout(3,3)); panel1.add("North",commandsPanel); panel1.add("Center",calckeysPanel); //建立一个面板放文本框 JPaneltop=newJPanel(); top.setLayout(newBorderLayout()); top.add("Center",resultText); //整体布局 getContentPane().setLayout(newBorderLayout(3,5)); getContentPane().add("North",top); getContentPane().add("Center",panel1); //为各按钮添加事件监听器 //都使用同一个事件监听器,即本对象。 本类的声明中有implementsActionListener for(inti=0;i keys[i].addActionListener(this); } for(inti=0;i commands[i].addActionListener(this); }} /** *处理事件 */ publicvoidactionPerformed(ActionEvente){ //获取事件源的标签 Stringlabel=e.getActionCommand(); if(label.equals(COMMAND[0])){ //用户按了"Backspace"键 handleBackspace(); }elseif(label.equals(COMMAND[1])){ //用户按了"CE"键 resultText.setText("0"); }elseif(label.equals(COMMAND[2])){ //用户按了"C"键 handleC(); }elseif("0123456789.".indexOf(label)>=0){ //用户按了数字键或者小数点键 handleNumber(label); //handlezero(zero); }else{ //用户按了运算符键 handleOperator(label); } } /** *处理Backspace键被按下的事件 */ privatevoidhandleBackspace(){ Stringtext=resultText.getText(); inti=text.length(); if(i>0){ //退格,将文本最后一个字符去掉 text=text.substring(0,i-1); if(text.length()==0){ //如果文本没有了容,则初始化计算器的各种值 resultText.setText("0"); firstDigit=true; operator="="; }else{ //显示新的文本 resultText.setText(text); } } } /** *处理数字键被按下的事件 * *paramkey */ privatevoidhandleNumber(Stringkey){ if(firstDigit){ //输入的第一个数字 resultText.setText(key); }elseif((key.equals("."))&&(resultText.getText().indexOf(".")<0)){ //输入的是小数点,并且之前没有小数点,则将小数点附在结果文本框的后面 resultText.setText(resultText.getText()+"."); }elseif(! key.equals(".")){ //如果输入的不是小数点,则将数字附在结果文本框的后面 resultText.setText(resultText.getText()+key); } //以后输入的肯定不是第一个数字了 firstDigit=false; } /** *处理C键被按下的事件 */ privatevoidhandleC(){ //初始化计算器的各种值 resultText.setText("0"); firstDigit=true; operator="="; } /** *处理运算符键被按下的事件 * *paramkey */ privatevoidhandleOperator(Stringkey){ if(operator.equals("/")){ //除法运算 //如果当前结果文本框中的值等于0 if(getNumberFromText()==0.0){ //操作不合法 operateValidFlag=false; resultText.setText("除数不能为零"); }else{ resultNum/=getNumberFromText(); } }elseif(operator.equals("1/x")){ //倒数运算 if(resultNum==0.0){ //操作不合法 operateValidFlag=false; resultText.setText("零没有倒数"); }else{ resultNum=1/resultNum; } }elseif(operator.equals("+")){ //加法运算 resultNum+=getNumberFromText(); }elseif(operator.equals("-")){ //减法运算 resultNum-=getNumberFromText(); }elseif(operator.equals("*")){ //乘法运算 resultNum*=getNumberFromText(); }elseif(operator.equals("sqrt")){ //平方根运算 resultNum=Math.sqrt(resultNum); }elseif(operator.equals("%")){ //百分号运算,除以100 resultNum=resultNum/100; }elseif(operator.equals("+/-")){ //正数负数运算 resultNum=resultNum*(-1); }elseif(operator.equals("=")){ //赋值运算 resultNum=getNumberFromText(); } if(operateValidFlag){ //双精度浮点数的运算 longt1; doublet2; t1=(long)resultNum; t2=resultNum-t1; if(t2==0){ resultText.setText(String.valueOf(t1)); }else{ resultText.setText(String.valueOf(resultNum)); } } //运算符等于用户按的按钮 operator=key; firstDigit=true; operateValidFlag=true; } /** *从结果文本框中获取数字 * *return */ privatedoublegetNumberFromText(){ doubleresult=0; try{ result=Double.valueOf(resultText.getText()).doubleValue(); }catch(NumberFormatExceptione){ } returnresult; } publicstaticvoidmain(Stringargs[]){ Calculatorcalculator1=newCalculator(); calculator1.setVisible(true); calculator1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 计算器