关于计算器的Java课程设计总结报告.docx

上传人:h**** 文档编号:25725922 上传时间:2022-07-13 格式:DOCX 页数:23 大小:17.87KB
返回 下载 相关 举报
关于计算器的Java课程设计总结报告.docx_第1页
第1页 / 共23页
关于计算器的Java课程设计总结报告.docx_第2页
第2页 / 共23页
点击查看更多>>
资源描述

《关于计算器的Java课程设计总结报告.docx》由会员分享,可在线阅读,更多相关《关于计算器的Java课程设计总结报告.docx(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、关于计算器的Java课程设计总结报告 Java课程设计总结报告 学生学号姓名 专业班级 所属学期20 15 -20 16 学年第 2 学期 一、课程设计总结报告 (注:内容请参考教材:Java应用开发与实践,人民邮电出版社,刘乃琦,苏畅主编此书中第20章或21章或22章课程设计报告的写法。) 计算器需求分析 1.系统目标 一个具有连算功能的计算器程序。用户可以利用鼠标点击数值或操作符按键完成计算的输入,上面一个文本框显示计算过程,下面一个文本框显示输入的数字。当按下运算符号时,如果前面已经按下过运算符号,上面一个文本框显示按过的所有按钮,下面一个文本框显示上一个运算符号以及两个数之间的运算结果

2、。 2.主体功能 a.按下数字键在文本框上会显示数字,这是计算器最基本的功能。 b.按下数字键加上“+-*/%”加上数字键进行加、减、乘、除、求余计算。 c.按下“+-”键,计算器下一个文本框上的数字置反。 d.按下“sqrt”键,计算器下一个文本框上的数字进行开根号运算。 e.按下“1/x”键,计算器下一个文本框上的数字进行求倒数运算 f.按下清除“C”键,上下文本框上的数据被全部清除,按下清除“CE”键,下面一个文本框上的数据被全部清除,按下清除“backspace”键,下面一个文本框上的数据被清除一位 g.按下一个数字按钮加上“MS”,就将此数据保存,同时做下“M”记号;按下“MR”,就

3、读取此数据在下一个文本框中;按下“MC”,就清除数据;按下“M+”,就将当前文本框的数据加上储存的数据。 计算器总体设计 1.系统功能模块划分 a主界面模块 b方法模块 c事件相应模块 2.系统功能图 计算器详细设计 1.设置窗体为calculator 继承JFrame 类和 ActionListener 接口,并实现public void actionPerformed(ActionEvent e) 方法 public void actionPerformed(ActionEvent e) Object t = e.getSource();/用来获取事件对象 if (t=fuzhi) cop

4、ycontent=text.getText(); / 例如事件对象为fuzhi 就发生如上操作,以此类推 / 2.设置程序的主框架 setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE ); setBounds(100, 100, 450, 300); setTitle(计算器); this .setResizable(false ); contentPane =getContentPane();/获得内容面板 contentPane .setLayout(new BorderLayout(0, 0);/设为边界布局 panel1 = new JPanel

5、(); contentPane .add(panel1, BorderLayout.NORTH ); panel1.setLayout(new GridLayout(0, 1, 0, 0);/设为网格布局,一列多行 text1 = new JTextField(); text1.setHorizontalAlignment(SwingConstants.RIGHT );/右对齐 text1.setEditable(false );/不可编辑 计算器 标题栏 菜单栏 文本框 按键 标题:计算器 编辑 查看 帮助 text1 text 复制 粘贴 标准型 作者 关于 1-9、+/-、.、M 、CE

6、 、C 、+、-、*、/、sqrt 、%、 1/x 、=、MC 、MR 、MS 、M+ panel1.add(text1); text1.setColumns(10);/设为10列 text = new JTextField(); text.setHorizontalAlignment(SwingConstants.RIGHT);/右对齐 text.setEditable(false);/不可编辑 panel1.add(text); text.setColumns(10);/设为10列 JPanel panel2 = new JPanel(); contentPane.add(panel2);

7、/默认为contentPane的中间 panel2.setLayout(new BorderLayout(0, 0); JPanel p1 = new JPanel(); FlowLayout fl_p1 = (FlowLayout) p1.getLayout();/设为流水布局 fl_p1.setHgap(60);/列距为60 panel2.add(p1, BorderLayout.NORTH); JPanel p2 = new JPanel(); panel2.add(p2, BorderLayout.WEST); p2.setLayout(new GridLayout(0, 1, 5,

8、5); JPanel p3 = new JPanel(); panel2.add(p3, BorderLayout.CENTER); p3.setLayout(new GridLayout(0, 5, 5, 5); 3.设置main方法 public static void main(String args) try calculator frame = new calculator(); frame.setVisible(true); catch (Exception e) e.printStackTrace(); 4.设置数字按键并添加事件监控器及其响应代码 boolean clear =

9、 true;/ 是否点击符号+-*/=%sqrt+/-1/x,如果点击了就为false,按下数字时就去除text中的数据 boolean isResult = false;/ 是否有计算结果,有结果就为true,就不能使用退格键 int a = 0;/ 是否按了+-*/%,按了之后没按数字而是再按这些就不会执行接下来按得按键 num1 = new JButton(1);/设置数字按键1 num1.addActionListener(this);/为1添加事件监控器 if(t=num1) if(clear=false) text.setText();/设置文本框为空 text.setText(t

10、ext.getText()+1);/再将1写进文本框 clear=true;/表示此时可以继续输入数字 isResult=false;/此时不为计算结果,因此设isResult为false a=0;/此时没有按+-*/%,因此设a为0 /1的响应代码 / 其它数字按键都以此类推 / 5.设置小数点并添加事件监控器及其响应代码 boolean click = true;/ 是否点击了“.” dian = new JButton(.);/设置小数点 dian.addActionListener(this);/添加事件监控器 if(t=dian) click=true; for(int i=0;it

11、ext.getText().length();i+) if(text.getText().charAt(i)=.) click=false;/已经存在.,就设click为false break; /若text中已经存在.,则不再输入点. if(click=true)/click为true,表示text中尚未存在. if(Integer.parseInt(text.getText()=0) text.setText(0.);/增加容错性,就算按了一个以上0,按了点之后还是会变回0. else text.setText(text.getText()+.);/text中的值不为0,则直接在后面加上.

12、 isResult=false;/此时不为计算结果,因此设isResult为false /.的响应代码 6.设置正负号并添加事件监控器及其响应代码 zhengfuhao = new JButton(+/-);/设置正负号 zhengfuhao.addActionListener(this);/添加事件监控器 if(t=zhengfuhao) if(Double.parseDouble(text.getText()!=0) text.setText(-Double.parseDouble(text.getText()+); /只要text中的值不为0,就直接取它的相反数 clear=false;

13、/表示按了+/-再按数字键就会覆盖当前text中的内容 /+/-的响应代码 7.设置开根号并添加事件监控器及其响应代码 sqrt = new JButton(sqrt);/设置开根号 sqrt.addActionListener(this);/添加事件监控器 if(t=sqrt) first=Double.parseDouble(text.getText(); if(first0) text.setText(负数不能开根号); /不能进行sqrt运算,并输出负数不能开根号 else text1.setText(sqrt(+first+);/在text1上输出例如:sqrt(5) text.se

14、tText(String.valueOf(Math.sqrt(first);/输出结果 clear=false;/表示按了sqrt之后再按数字键就会覆盖当前text中的内容 isResult=true;/此时为计算结果,因此设isResult为true /sqrt的响应代码 8.设置倒数并添加事件监控器及其响应代码 yichux = new JButton(1/x);/设置倒数 yichux.addActionListener(this);/添加事件监控器 if(t=yichux) first=Double.parseDouble(text.getText(); if(first=0) tex

15、t.setText(除数不能为零);/不能进行1/x运算,并输出除数不能为零 else text1.setText(1/+first);/在text1上输出例如:1/5 text.setText(+1/first);/输出结果 clear=false;/表示按了1/x之后再按数字键就会覆盖当前text中的内容 isResult=true;/此时为计算结果,因此设isResult为true /倒数的响应代码 9.设置+-*/%并添加事件监控器及其响应代码 int a = 0;/ 是否按了+-*/%,按了之后没按数字而是再按这些就不会执行接下来按得按键 String fuhao;/ 记住按了什么符

16、号,有+-*/% String x1 = null, x2 = null;/ 记忆输入的符号+-*/% jia = new JButton(+);/设置+ jia.setForeground(Color.RED);/ 将字体改为红色 jia.addActionListener(this);/添加事件监控器 jian = new JButton(-); jian.setForeground(Color.RED);/将字体改为红色 jian.addActionListener(this); cheng = new JButton(*); cheng.setForeground(Color.RED)

17、;/将字体改为红色 cheng.addActionListener(this); chu = new JButton(/); chu.setForeground(Color.RED);/将字体改为红色 chu.addActionListener(this); dengyu = new JButton(=); dengyu.addActionListener(this); qiuyu = new JButton(%); qiuyu.addActionListener(this); public void f()/运算公式,将结果在text中显示出来 if(x1.equals(+) first=f

18、irst+second; text.setText(first+); if(x1.equals(-) first=first-second; text.setText(first+); if(x1.equals(*) first=first*second; text.setText(first+); if(x1.equals(/) if(second=0) text.setText(除数不能为零); /如果除数为0就输出除数不能为零 text1.setText();/将text1清空 else first=first/second; text.setText(first+); if(x1.eq

19、uals(%) int q=(int)(first/second) ; first=first-(second*q) ;/操作数中有浮点数 text.setText(first+); if(a=0)/如果前一个是+-*/%=,再按这个按钮就无效 if(t=jia) a+;/计数,a若大于等于1就不会进入if(a=0) fuhao=+;/在按=时使用 x1=x2; x2=+; /为了记住最后两个符号 if(x1=null&x2!=null)/如果只有一个符号 first=Double.parseDouble(text.getText();/就将当前文本框的值给first text1.setTex

20、t(first+x2);/并且将数字和符号一起显示在text1上 if(x1!=null&x2!=null)/如果有两个以上及符号 isResult=true;/此时为计算结果,因此设isResult为true second=Double.parseDouble(text.getText(); text1.setText(text1.getText()+second+x2);/只要按下符号就会将符号与数字一同显示在text1上 f();/调用f() clear=false;/表示按了+之后再按数字键就会覆盖当前text中的内容 / 这之间的-、*、/、%都以此类推 / if(t=dengyu)

21、 a+;/计数,a若大于等于1就不会进入if(a=0) text1.setText();/将text1清空 x1=x2=null;/将x1,x2重置为空 isResult=true;/此时为计算结果,因此设isResult为true second=Double.parseDouble(text.getText(); switch(fuhao)/进行运算 case+: text.setText(first+second+); break; case-: text.setText(first-second+); break; case*: text.setText(first*second+);

22、break; case/: if(second=0) text.setText(除数不能为零); else text.setText(first/second+); break; case%: int q=(int)(first/second) ; text.setText(String.valueOf(first-(second*q) );/操作数中有浮点数 break; clear=false;/按下数字按键时要清空前一次的数据 a=0;/为了按等于号之后可以按+-之类的符号,例如2+3=+2 fuhao=null;/不管同时按下几个=都为原来的结果 10.设置计算器的存储计算功能按键并添

23、加事件监控器及其响应代码 boolean m = false;/ 若m为true则M显示 MC = new JButton(MC);/设置MC MC.setForeground(Color.RED); /将字体变为红色 MC.addActionListener(this); MR = new JButton(MR); MR.setForeground(Color.RED);/将字体变为红色 MR.addActionListener(this); MS = new JButton(MS); MS.setForeground(Color.RED);/将字体变为红色 MS.addActionList

24、ener(this); M1 = new JButton(M+); M1.setForeground(Color.RED);/将字体变为红色 M1.addActionListener(this); M = new JButton(); url1=this.getClass().getResource(/M.jpg); url2=this.getClass().getResource(/kongbai.jpg); M.setIcon(new ImageIcon(url2);/默认布局为kongbai.jpg M.addActionListener(this); if(t=MS)/保存需要存储的数

25、据 save=Double.parseDouble(text.getText();/将要存储的数据存入save m=true;/有“M”标志出现,表示有数据被计算器存储的标志 clear=false; if(t=MR) if(m=true)/读出存储的数据 text1.setText(); text.setText(+save); clear=false; if(t=MC)/删除存储的数据 m=false;/没有“M”标志出现 clear=false; if(m=false) M.setIcon(new ImageIcon(url2);/显示图片kongbai.jpg if(m=true) M

26、.setIcon(new ImageIcon(url1); /显示图片M.jpg if(t=M1) if(m=true)/将当前text中的数据和存储的数据相加 text1.setText(text1.getText()+save); text.setText(Double.parseDouble(text.getText()+save+); 11.设置计算器的删除功能按键并添加事件监控器及其响应代码 backspace = new JButton();/设置退格键 backspace.setForeground(Color.RED);/将字体变为红色 backspace.addActionL

27、istener(this); ce = new JButton(CE); ce.setForeground(Color.RED);/将字体变为红色 ce.addActionListener(this); c = new JButton(C); c.setForeground(Color.RED);/将字体变为红色 c.addActionListener(this); if(t=backspace) if(isResult=false)/退格,清除一个数字 String s=text.getText(); text.setText(); for(int i=0;is.length()-1;i+)

28、 char s1=s.charAt(i); text.setText(text.getText()+s1); /退格,例如:143变为14 if(t=c)/清除全部数据 text1.setText(); text.setText(); x1=x2=null; fuhao=; if(t=ce)/清除text中的数据 text.setText(); 12.设置菜单栏并添加事件监控器及其响应代码 String copycontent = ;/ 复制内容 JMenuBar menuBar = new JMenuBar();/ 设置JMenuBar setJMenuBar(menuBar); JMenu

29、 bianji = new JMenu(编辑); menuBar.add(bianji); fuzhi = new JMenuItem(复制); KeyStroke copyks=KeyStroke.getKeyStroke(KeyEvent.VK_C,Event.CTRL_MASK); fuzhi.setAccelerator(copyks);/设置退出菜单选项加上快捷键 bianji.add(fuzhi); fuzhi.addActionListener(this);/事件监控器 zhantie = new JMenuItem(粘贴); KeyStroke pasteks=KeyStrok

30、e.getKeyStroke(KeyEvent.VK_V,Event.CTRL_MASK); zhantie.setAccelerator(pasteks);/设置退出菜单选项加上快捷键 bianji.add(zhantie); zhantie.addActionListener(this);/事件监控器 JMenu chakan = new JMenu(查看); menuBar.add(chakan); JRadioButtonMenuItem biaozhunx = new JRadioButtonMenuItem(标准型); chakan.add(biaozhunx); chakan.addActionListener(this);/事件监控器 JMenu bangzhu = new JMenu(帮助); menuBar.add(bangzhu); about = new JMenuItem(关于); bangzhu.add(about); about.addActionListener(this);/事件监控器 me = new JMenuItem(作者); bangzhu.add(me); me.addActionListener(this);/事件监控器 if(t=fuzhi)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁