Java课程设计报告计算器简单_第1页
Java课程设计报告计算器简单_第2页
Java课程设计报告计算器简单_第3页
Java课程设计报告计算器简单_第4页
Java课程设计报告计算器简单_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java课程设计报告专业计算机科学与技术学生姓名XXX班级XXXXXXX学号XXXXXXX指导教师XXXXXXX完成日期2010年1月9日信 息 工 程 学 院一、设计内容设计GUI界面的计算器程序,用户可以通过鼠标依次输入参加计算的数值,进行加、减、乘、除等混合运算。二、设计要求要求所设计的GUI界面计算器是一个使用很方便的程序,能进行加、减、乘、除等混合运算。三、设计内容 1.界面及功能描述 (1)界面布局。创建一个面板,先将所有按钮:所有数字键和运算符键等放在面板上,采用网格布局,具体设计为4行,5列的网格,二十个格子。再添加一个1行3列的网格布局来放置三个功能键:清零,检测,退格键。然

2、后,对以上两个面板,采用BorderLayout布局,将按键面板放在计算机的中部,功能键面板放北部,作为一个新的面板。最后,将文本框放在北部,新面板放中央,采用边界布局管理器,做为界面的整体布局,这样界面布局就搞定了。 (2)输入数字、小数点、符号时按输入的顺序显示在单行文本框中,并按右对齐方式显示,且不允许修改文本行中的内容。 (3)输入运算符时,说明前一个数已经输入完毕,保存第一个数firstDigit,同时保存运算符,显示firstDigit。 (4)输入第二个数,按等号,保存第二数,根据输入的运算符进行相应的运算,文本行中显示运算结果resultNum。 (5)按退格键Backspac

3、e,将返回到前一次输入状态。 (6)按Check键,输入的数字第一个数字为零。 (7)按复位键键Again,归零。 (8)第三、四步可以重复操作。2. 主要事件处理: (1)数字输入及小数点事件,输入后直接显示在广本行。 (2)双目运算符输入事件:输入后,保存第一个数,同时保存运算符 (3)单目运算符和等于符=输入事件:保存第二个数,取出原有数据和运算符算出结果,并显示在文本行组件。3.简要的设计流程: 创建窗口构造计算器界面结构对各个按钮添加事件监听器ActionListener以及事件处理输出显示区域功能键按钮(网)数字符号及运算符按钮(网)数字键按钮事件处理运算符键按钮事件处理功能键按钮

4、事件处理完成java源代码编写调试修改程序,完善模拟计算器功能(边)(边) 4.运行界面演示(1)运行程序,显示如下界面,进入计算器。(2)通过鼠标输入数字,如下图(3)鼠标点击加号按钮,然后输入需要计算的数字,如下图:(4)点击“=”按钮,计算器显示结果,如下图:其他运算操作与上述操作相似。四、设计总结通过此次课程设计,将我本学期所学的JAVA知识得到巩固和应用,在设计的过程中我遇到了很到问题,不过在老师和同学们的帮助和自己的思考下还是很好的完成了。这此课程设计还让我懂得了写程序不能闭门造车,要努力拓宽知识面,开阔视野,拓展思维。它还让我学会了在网上查阅那些无限的资料。通过对此课题的开发,使

5、我对用Eclipse开发平台有了一个比较清楚的认识,体会到理论和实践的重要性。由于自己的分析设计和程序经验不足,该系统设计和实现过程中,还有许多没有完善的地方,比如用户界面设计不够美观,异常出错处理比较差等多方面问题,这些都有待进一步完善和提高。对于文中出现的不足和系统中出现的问题敬请老师指导。五参考文献朱战立, 沈伟. Java程序设计实用教程M. 北京:电子工业出版社李诚等. Java2简明教程M,第2版. 北京:清华大学出版社耿祥义.Java课程设计M. 北京:清华大学出版社附录:import java.awt.*;import java.awt.event.*;import java.

6、lang.*;import javax.swing.*;public class Calc extends JFrame / 声明三个面板的布局 GridLayout gl1, gl2, gl3; Panel p0, p1, p2, p3; JTextField inputText; TextField displayText; JButton backspaceBtn, ceBtn, cBtn, mcBtn, mrBtn, msBtn, mPlusBtn; JButton btns = new JButton20; String btNames = "7", "

7、8", "9", "/", "sqrt", "4", "5", "6", "*", "%", "1", "2", "3", "-", "1/x", "0", "+/-", ".", "+", "=" ; StringBuffer

8、str;/ 显示屏所显示的字符串 double x, y;/ x和y都是运算数 int z;/ Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/" static double m;/ 记忆的数字 public Calc() super("计算器"); MenuBar mb = new MenuBar(); setMenuBar(mb); Menu m1 = new Menu("编辑(E)"); MenuItem copy = new MenuIt

9、em("复制(C) Ctrl+C"); MenuItem paste = new MenuItem("粘贴(P) Ctrl+V"); m1.add(copy); m1.add(paste); Menu m2 = new Menu("查看"); Menu m3 = new Menu("帮助"); mb.add(m1); mb.add(m2); mb.add(m3); gl1 = new GridLayout(1, 3, 4, 0);/ 实例化三个面板的布局 gl2 = new GridLayout(4, 1, 2,

10、3); gl3 = new GridLayout(4, 5, 2, 3); inputText = new JTextField(30);/ 显示屏 inputText.setHorizontalAlignment(JTextField.RIGHT); / inputText.setEnabled(false); inputText.setText("0."); displayText = new TextField(1);/ 显示记忆的索引值 displayText.setEditable(false); / 实例化所有按钮、设置其前景色并注册监听器 backspaceB

11、tn = new JButton("Backspace"); backspaceBtn.setMargin(new Insets(2, 1, 2, 1); backspaceBtn.setForeground(Color.red); backspaceBtn.addActionListener(new Bt(); ceBtn = new JButton("CE"); ceBtn.setMargin(new Insets(4, 1, 4, 1); ceBtn.setForeground(Color.red); ceBtn.addActionListener

12、(new Bt(); cBtn = new JButton("C"); cBtn.setMargin(new Insets(4, 1, 4, 1); cBtn.setForeground(Color.red); cBtn.addActionListener(new Bt(); mcBtn = new JButton("MC"); mcBtn.setMargin(new Insets(4, 1, 4, 1); mcBtn.setForeground(Color.red); mcBtn.addActionListener(new Bt(); mrBtn =

13、new JButton("MR"); mrBtn.setMargin(new Insets(4, 1, 4, 1); mrBtn.setForeground(Color.red); mrBtn.addActionListener(new Bt(); msBtn = new JButton("MS"); msBtn.setMargin(new Insets(4, 1, 4, 1); msBtn.setForeground(Color.red); msBtn.addActionListener(new Bt(); mPlusBtn = new JButton

14、("M+"); mPlusBtn.setMargin(new Insets(4, 1, 4, 1); mPlusBtn.setForeground(Color.red); mPlusBtn.addActionListener(new Bt(); for (int i = 0; i < btns.length; i+) btnsi = new JButton(btNamesi); btnsi.setMargin(new Insets(4, 1, 4, 1); btnsi.setForeground(Color.blue); if (i + 1) % 5 = 4 | i

15、= btns.length - 1) btnsi.setForeground(Color.red); btnsi.addActionListener(new Bt(); / 实例化四个面板 p0 = new Panel(); p1 = new Panel(); p2 = new Panel(); p3 = new Panel(); / 创建一个空字符串缓冲区 str = new StringBuffer(); / 添加面板p0中的组件和设置其在框架中的位置和大小 p0.add(inputText); p0.setLayout(new FlowLayout(FlowLayout.LEFT); p

16、0.setBounds(1, 2, 260, 30); / 添加面板p1中的组件和设置其在框架中的位置和大小 Panel p11 = new Panel(); p11.setLayout(gl1); Panel p = new Panel(); p.setBounds(4, 5, 50, 55); p11.setBounds(55, 10, 190, 25); p.add(displayText); p1.setLayout(null); p1.add(p); p11.add(backspaceBtn); p11.add(ceBtn); p11.add(cBtn); p1.add(p); p1

17、.add(p11); p1.setBounds(0, 30, 260, 40); / 添加面板p2中的组件并设置其的框架中的位置和大小 p2.setLayout(gl2); p2.add(mcBtn); p2.add(mrBtn); p2.add(msBtn); p2.add(mPlusBtn); p2.setBounds(10, 70, 35, 120); / 添加面板p3中的组件并设置其在框架中的位置和大小 p3.setLayout(gl3);/ 设置p3的布局 for (int i = 0; i < btns.length; i+) p3.add(btnsi); p3.setBou

18、nds(55, 70, 190, 120); / 设置框架中的布局为空布局并添加4个面板 getContentPane().setLayout(null); getContentPane().add(p0); getContentPane().add(p1); getContentPane().add(p2); getContentPane().add(p3); setResizable(false);/ 禁止调整框架的大小 / 匿名类关闭窗口 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent

19、 e1) System.exit(0); ); setBackground(Color.lightGray); setBounds(400, 200, 260, 250); setVisible(true); enableInputMethods(true); / 构造监听器 class Bt implements ActionListener public void actionPerformed(ActionEvent e2) try if (e2.getSource() = ceBtn)/ 选择"CE"清零 inputText.setText("0.&quo

20、t;);/ 把显示屏清零 str.setLength(0);/ 清空字符串缓冲区以准备接收新的输入运算数 else if (e2.getSource() = cBtn)/ 选择"C"清零 inputText.setText("0.");/ 把显示屏清零 str.setLength(0); x = 0d; y = 0d; z = 0; else if (e2.getSource() = btns16)/ 单击"+/-"选择输入的运算数是正数还是负数 x = Double.parseDouble(inputText.getText().t

21、rim(); inputText.setText("" + (-x); else if (e2.getSource() = btns18)/ 单击加号按钮获得x的值和z的值并清空y的值 x = Double.parseDouble(inputText.getText().trim(); str.setLength(0);/ 清空缓冲区以便接收新的另一个运算数 y = 0d; z = 0; else if (e2.getSource() = btns13)/ 单击减号按钮获得x的值和z的值并清空y的值 x = Double.parseDouble(inputText.getT

22、ext().trim(); str.setLength(0); y = 0d; z = 1; else if (e2.getSource() = btns8)/ 单击乘号按钮获得x的值和z的值并清空y的值 x = Double.parseDouble(inputText.getText().trim(); str.setLength(0); y = 0d; z = 2; else if (e2.getSource() = btns3)/ 单击除号按钮获得x的值和z的值并空y的值 x = Double.parseDouble(inputText.getText().trim(); str.set

23、Length(0); y = 0d; z = 3; else if (e2.getSource() = btns19)/ 单击等号按钮输出计算结果 str.setLength(0); switch (z) case 0: inputText.setText("" + (x + y); break; case 1: inputText.setText("" + (x - y); break; case 2: inputText.setText("" + (x * y); break; case 3: inputText.setText(

24、"" + (x / y); break; else if (e2.getSource() = btns17)/ 单击"."按钮输入小数 System.out.println("sdfsfd"); if (inputText.getText().trim().indexOf(".") != -1)/ 判断字符串中是否已经包含了小数点 if (inputText.getText().trim().equals("0.")/ 如果初时显示为0 str.setLength(0); inputText.s

25、etText(str.append("0.").toString(); else/ 如果没数点有小 if (inputText.getText().trim().equals("")/ 如果初时显示为空则不做任何操作 else inputText.setText(str.append(e2.getActionCommand() .toString(); y = 0d; else if (e2.getSource() = btns4)/ 求平方根 x = Double.parseDouble(inputText.getText().trim(); inpu

26、tText.setText("数字格式异常"); if (x < 0) inputText.setText("负数没有平方根"); else inputText.setText("" + Math.sqrt(x); str.setLength(0); y = 0d; else if (e2.getSource() = btns9)/ 单击了"%"按钮 x = Double.parseDouble(inputText.getText().trim(); inputText.setText(""

27、; + (0.01 * x); str.setLength(0); y = 0d; else if (e2.getSource() = btns14)/ 单击了"1/X"按钮 x = Double.parseDouble(inputText.getText().trim(); if (x = 0) inputText.setText("除数不能为零"); else inputText.setText("" + (1 / x); str.setLength(0); y = 0d; else if (e2.getSource() = mc

28、Btn)/ MC为清除内存 m = 0d; displayText.setText(""); str.setLength(0); else if (e2.getSource() = mrBtn)/ MR为重新调用存储的数据 if (displayText.getText().trim() != "")/ 有记忆数字 inputText.setText("" + m); else if (e2.getSource() = msBtn)/ MS为存储显示的数据 m = Double.parseDouble(inputText.getTex

29、t().trim(); displayText.setText("M"); inputText.setText("0"); str.setLength(0); else if (e2.getSource() = mPlusBtn)/ M+ / 为将显示的数字与已经存储的数据相加要查看新的数字单击MR m = m + Double.parseDouble(inputText.getText().trim(); else/ 选择的是其他的按钮 if (e2.getSource() = btns15)/ 如果选择的是"0"这个数字键 if (inputText.getText().trim().equals("0.")/ 如果显示屏显示的为零不做操作 else inputText.setText(str.append(e2.getActionCommand() .toString(); y = Double.parseDouble(inputText.getText().trim(); else if (e2.getSource() = backspaceBtn)/选择的是“BackSpace”按钮 if (!inputText.getText().trim().equals("0.&q

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论