JAVA课程设计科学计算器.docx
- 文档编号:12208074
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:44
- 大小:230.24KB
JAVA课程设计科学计算器.docx
《JAVA课程设计科学计算器.docx》由会员分享,可在线阅读,更多相关《JAVA课程设计科学计算器.docx(44页珍藏版)》请在冰豆网上搜索。
JAVA课程设计科学计算器
《JAVA程序设计》课程设计
模拟Win7科学计算器
******
班级:
12级物联网
(二)班
学号:
*******
成绩:
完成时间:
2014.06.05
一、设计目的
通过此次课程设计将课堂上学到的内容与应用结合在一起,掌握图形用户界面设计方法和事件响应机制,并极大地促进自己对java程序设计的认识和掌握,更加系统的学习和了解如何从整体上设计和实现一个程序。
二、功能介绍
模拟Win7标准型计算器
(1)实现加、减、乘、除的双目单类别的基础运算。
(2)实现加、减、乘、除的多目多类别的混合运算。
(3)实现退格、清零、开根号、百分比、倒数、正负数运算。
(4)实现MC、MR、MS、M+、M-的记忆功能运算。
(5)实现复制(Ctr+c)、粘贴(Ctr+v)的功能。
(6)实现不同类型计算器的切换(WindowsXp计算器)功能。
模拟WindowsXp计算器
(1)实现正弦、余弦、正切、反三角函数arcsin、arccos、arctan以及对数log、log10的功能运算;
(2)实现退格、清零、开根号、百分比、倒数、正负数运算。
(3)实现加、减、乘、除的多目多类别的混合运算。
(4)实现加、减、乘、除的双目单类别的基础运算。
(5)实现不同类型计算器的切换(Win7标准计算器)功能。
三、概要设计
3.1自定义类说明
该程序设置了1个主类ClassCounterProject、1个子类sonJFrame。
主要由Java-swing组件窗体容器JFrame、面板Panel、菜单JMenu、按钮JButton、JTextField、BorderFactory、JMenuItem、JMenuBar以及按钮事件ActionEvent、键盘事件KeyEvent所组成。
(1)JFrame:
构造JFrame对象name,设置窗体大小(不可变)、标题栏内容、位置、窗体可见、窗体可关闭。
构造第二窗体容器test2、设置窗体大小(不可变)、标题栏内容、位置、窗体可见、窗体可关闭。
(2)JMenu:
创建菜单栏(JMenuBar)不透明、菜单项(JMenuItem)查看(V)、编辑(E)、帮助(H)
(3)JPanel:
创建面板JPanel的对象pan、panel1、panel2、bp2、bp2_1、bp2_2。
(4)JButton:
创建计算器上各个按键。
(5)JTextField:
文本区,实时实现计算过程
3.2事件监听器
该程序利用的功能是利用Java事件监听技术来实现的,各种功能单独的创建一个类来实现,不会互相混淆,更加容易理清楚思路。
(1)按钮监听器:
设置监听器,监听鼠标单击按钮,实现计算,弹出对话框,切换计算器,退出的功能。
(2)键盘的监听器:
设置一个监听器,监听有键盘按下发生的事件。
四、详细设计
4.1功能界面设计
模拟Win7标准型计算器
MS:
存当前显示的数值
MR:
读取存储器中的数值,并显示出来
MC:
清除已存的数据
M-:
用已存的数值减去当前显示的数值后,再将结果保存
M+:
用已存的数值加上当前显示的数值后,再将结果保存
+/-:
正负号的切换
Win7功能界面布局
模拟WindowsXp计算器
WindowsXp功能界面布局
4.2关键代码设计
importjava.awt.BorderLayout;
importjava.awt.Color;
importjava.awt.Container;
importjava.awt.Dimension;
importjava.awt.GridLayout;
importjava.awt.Insets;
importjava.awt.event.ActionEvent;
importjava.awt.event.ActionListener;
importjava.awt.event.*;
importjava.awt.event.KeyEvent;
importjava.awt.event.WindowAdapter;
importjava.awt.event.WindowEvent;
importjava.awt.*;
importjavax.swing.BorderFactory;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JMenu;
importjavax.swing.JMenuBar;
importjavax.swing.JMenuItem;
importjavax.swing.JPanel;
importjavax.swing.JTextField;
importjavax.swing.*;
/*主类CounterProject*/
publicclassCounterProjectextendsJFrameimplementsActionListener,KeyListener
{
JFramename;
JMenumView;
JMenumEdit;
JMenumHelp;
JMenumLishi;
JMenuItemmStandard;
JMenuItemmCopy;
JMenuItemmPaste;
JMenuItemmHelp_1;
JMenuItemmAbout;
JMenuItemmCheng;
JMenuItemmXinxi;
JMenuItemmBian;
JMenuItemmXiao;
JMenuItemmQuxiao;
JMenuItemmJilu;
JMenuItemmGuan;
JTextFieldtResult;
JButtonbOther;
/*如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些*/
StringBuffercopyBoard=newStringBuffer(20);//剪贴板
StringBufferstr=newStringBuffer();
doubleop1=0,op2=0;//操作数
intpreOp,currentOp=0;//标准位
StringBuffermemory=newStringBuffer(20);//M系列
StringBuffermemor=newStringBuffer(20);//M系列
StringBuffermemo=newStringBuffer(20);//M系列
booleanisDouble=false;//是否为实数
intflg=1;
intfg=1;
privatesonJFrametest2;//第二窗口
privatebooleanflag=true;
publicstaticvoidmain(Stringargs[])
{
CounterProjectcounter=newCounterProject();
}
publicCounterProject()
{
name=newJFrame("马超群.计算器");
ContainercontentPane=name.getContentPane();
JMenuBarmBar=newJMenuBar();//创建菜单栏
mBar.setOpaque(true);
mView=newJMenu("查看(V)");
mView.setMnemonic(KeyEvent.VK_V);
mStandard=newJMenuItem("标准型(T)Alt+1");//创建菜单项
name.addKeyListener(this);//name添加键盘事件
mStandard.addActionListener(this);
mView.add(mStandard);
mView.addSeparator();//分割线
mCheng=newJMenuItem("程序员(P)Alt+2");
mCheng.addActionListener(this);
mView.add(mCheng);
mCheng.setEnabled(false);//不可现
mXinxi=newJMenuItem("信息统计(A)Alt+3");
mView.add(mXinxi);
mXinxi.setEnabled(false);
mGuan=newJMenuItem("关闭");
mGuan.addActionListener(this);
mView.add(mGuan);
mEdit=newJMenu("编辑(E)");
mCopy=newJMenuItem("复制(C)Ctrl+C");
mCopy.addActionListener(this);
mEdit.add(mCopy);
mPaste=newJMenuItem("粘贴(P)Ctrl+V");
mPaste.addActionListener(this);
mEdit.add(mPaste);
mLishi=newJMenu("历史记录(H)");
mLishi.addActionListener(this);
mEdit.add(mLishi);
mJilu=newJMenuItem("复制历史记录(I)");
mLishi.add(mJilu);
mBian=newJMenuItem("编辑(E)F2");
mLishi.add(mBian);
mQuxiao=newJMenuItem("取消编辑(N)Esc");
mLishi.add(mQuxiao);
mXiao=newJMenuItem("消除(L)Ctr+Shift+D");
mLishi.add(mXiao);
mHelp=newJMenu("帮助(H)");
mHelp.setMnemonic(KeyEvent.VK_H);
mHelp_1=newJMenuItem("查看帮助(V)F1");
mHelp_1.addActionListener(this);
mHelp.add(mHelp_1);
mHelp.addSeparator();
mAbout=newJMenuItem("关于计算器(A)");
mHelp.add(mAbout);
mAbout.addActionListener(this);
mBar.add(mView);
mBar.add(mEdit);
mBar.add(mHelp);
name.setJMenuBar(mBar);//窗体容器name.菜单栏
contentPane.setLayout(newBorderLayout());
JPanelpTop=newJPanel();//面板JPanel.pTop
tResult=newJTextField("0.",22);
tResult.setHorizontalAlignment(JTextField.RIGHT);//设置文本的水平对齐方式
tResult.setEditable(false);//使调用这个函数的控件不能被编辑
pTop.add(tResult);
contentPane.add(pTop,BorderLayout.NORTH);//文本添加到最上面
/*************键定义***************/
JButtonbutton_MC=newJButton("MC");
button_MC.addActionListener(this);
button_MC.setForeground(Color.red);//设置前景色
button_MC.setMargin(newInsets(0,0,0,0));//设置按钮边框和标签之间的空白
button_MC.setPreferredSize(newDimension(40,30));
/*setSize是设定的固定大小,而setPreferredSize仅仅是设置最好的大小,这个不一定与实际显示出来的控件大小一致(根据界面整体的变化而变化)*/
JButtonbutton_MR=newJButton("MR");
button_MR.addActionListener(this);
button_MR.setForeground(Color.red);
button_MR.setMargin(newInsets(0,0,0,0));//将顶部、底部、左边和右边设置为指定值
button_MR.setPreferredSize(newDimension(40,30));
JButtonbutton_MS=newJButton("MS");
button_MS.addActionListener(this);
button_MS.setForeground(Color.red);
button_MS.setMargin(newInsets(0,0,0,0));
button_MS.setPreferredSize(newDimension(40,30));
JButtonbutton_M1=newJButton("M+");
button_M1.addActionListener(this);
button_M1.setForeground(Color.red);
button_M1.setMargin(newInsets(0,0,0,0));
button_M1.setPreferredSize(newDimension(40,30));
JButtonbutton_M2=newJButton("M-");
button_M2.addActionListener(this);
button_M2.setForeground(Color.red);
button_M2.setMargin(newInsets(0,0,0,0));
button_M2.setPreferredSize(newDimension(40,30));
JButtonbutton_clear=newJButton("←");
button_clear.addActionListener(this);
button_clear.setForeground(Color.red);
button_clear.setMargin(newInsets(0,0,0,0));
button_clear.setPreferredSize(newDimension(40,30));
JButtonbutton_CE=newJButton("CE");
button_CE.addActionListener(this);
button_CE.setForeground(Color.red);
button_CE.setMargin(newInsets(0,0,0,0));
button_CE.setPreferredSize(newDimension(40,30));
JButtonbutton_C=newJButton("C");
button_C.addActionListener(this);
button_C.setForeground(Color.red);
button_C.setMargin(newInsets(0,0,0,0));
button_C.setPreferredSize(newDimension(40,30));
JButtonbutton_SB=newJButton("+/-");
button_SB.addActionListener(this);
button_SB.setForeground(Color.blue);
button_SB.setMargin(newInsets(0,0,0,0));
button_SB.setPreferredSize(newDimension(40,30));
JButtonbutton_gen=newJButton("√");
button_gen.addActionListener(this);
button_gen.setForeground(Color.blue);
button_gen.setMargin(newInsets(0,0,0,0));
button_gen.setPreferredSize(newDimension(40,30));
JButtonbutton_jia=newJButton("+");
button_jia.addActionListener(this);
button_jia.setForeground(Color.blue);
button_jia.setMargin(newInsets(0,0,0,0));
button_jia.setPreferredSize(newDimension(40,30));
JButtonbutton_jian=newJButton("-");
button_jian.addActionListener(this);
button_jian.setForeground(Color.blue);
button_jian.setMargin(newInsets(0,0,0,0));
button_jian.setPreferredSize(newDimension(40,30));
JButtonbutton_cheng=newJButton("*");
button_cheng.addActionListener(this);
button_cheng.setForeground(Color.blue);
button_cheng.setMargin(newInsets(0,0,0,0));
button_cheng.setPreferredSize(newDimension(40,30));
JButtonbutton_chu=newJButton("/");
button_chu.addActionListener(this);
button_chu.setForeground(Color.blue);
button_chu.setMargin(newInsets(0,0,0,0));
button_chu.setPreferredSize(newDimension(40,30));
JButtonbutton_percent=newJButton("%");
button_percent.addActionListener(this);
button_percent.setForeground(Color.blue);
button_percent.setMargin(newInsets(0,0,0,0));
button_percent.setPreferredSize(newDimension(40,30));
JButtonbutton_WV=newJButton("1/x");
button_WV.addActionListener(this);
button_WV.setForeground(Color.blue);
button_WV.setMargin(newInsets(0,0,0,0));
button_WV.setPreferredSize(newDimension(40,30));
JButtonbutton_DY=newJButton("=");
button_DY.addActionListener(this);
button_DY.setForeground(Color.blue);
button_DY.setMargin(newInsets(0,0,0,0));
button_DY.setPreferredSize(newDimension(30,70));
JButtonbutton_dian=newJButton(".");
button_dian.addActionListener(this);
button_dian.setForeground(Color.blue);
button_dian.setMargin(newInsets(0,0,0,0));
button_dian.setPreferredSize(newDimension(40,30));
JButtonbutton0=newJButton("0");
button0.addActionListener(this);
button0.setMargin(newInsets(0,0,0,0));
button0.setPreferredSize(newDimension(90,30));
JButtonbutton1=newJButton("1");
button1.addActionListener(this);
button1.setMargin(newInsets(0,0,0,0));
button1.setPreferredSize(newDimension(40,30));
JButtonbutton2=newJButton("2");
button2.addActionListener(this);
button2.setMargin(newInsets(0,0,0,0));
button2.setPreferredSize(newDimension(40,30));
JButtonbutton3=newJButton("3");
button3.addActionListener(this);
button3.setMargin(newInsets(0,0,0,0));
button3.setPreferredSize(newDimension(40,30));
JButtonbutton4=newJBut
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA 课程设计 科学 计算器