简单计算器课程设计.doc_第1页
简单计算器课程设计.doc_第2页
简单计算器课程设计.doc_第3页
简单计算器课程设计.doc_第4页
简单计算器课程设计.doc_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

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

文档简介

课程设计说明书 NO.1简单计算器课程设计一.课程设计的目的 Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。 为了进一步巩固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。 通过此次课程设计,巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把所学课程及相关知识加以融会贯通,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的基础。二.设计方案论证1.开发环境:JAVA编程工具JDK 1.5.0 ,操作系统WindowsXP.2. 功能描述:本计算器可以进行简单的四则运算(加、减、乘、除)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行(Jsp2003.bat)即可,界面为灰白对称。 沈 阳 大 学 课程设计说明书 NO.23. 概要设计:* 类名: This_number_too_big 作用: 自定义的异常类,用来处理计算结果溢出 继承的父类: Exception类 实现的接口: 没有 * class This_number_too_big extends Exception /自定义的一个结果溢出异常类 * 类名: Jsp2003 作用: 主类继承的父类: Frame类 实现的接口: ItemListener类,ActionListener类 * class Jsp2003 extends Frame implements ItemListener,ActionListener public int number=0,length=18;/number是用来记录输入的数字个数, /length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制 沈 阳 大 学 课程设计说明书 NO.3char mark=n; /设置运算符号为没有即为n,它的值是+-*/ public double data=0; /设置运算数据为零 public char ch; /用来临时存放所按按钮的第一个字符 public boolean Refresh=false; /设置lab是否要在输入数据的时候刷新,初始为否 4.主要方法说明:/用来处理按了运算符后的计算- public void js() throws This_number_too_big /指定由method抛出异常 if (mark=n) /没有运算符 mark=ch; /,则设置运算符为刚刚输入的字符, data=Double.parseDouble(lab.getText();/则设置运算数据为lab的值 Refresh=true;/则设置下一次输入的时候要刷新lab else /如果采用的是连续运算(即没有使用=号)则运行下面的语句 switch (mark) /根据运算符计算结果,并把结果保存到data case +: data+=Double.parseDouble(lab.getText(); break; case -: data-=Double.parseDouble(lab.getText(); break; case *: data*=Double.parseDouble(lab.getText(); break; case /: data/=Double.parseDouble(lab.getText(); break;三.设计结果与分析首先安装好JDK 1.5.0,在我的电脑-属性-高级-环境变量里设置环境变量,这样可以方便常用的JAVA程序的调用,设置好.Java和.Javac的路径。如图1所示:图2设置环境变量 沈 阳 大 学 课程设计说明书 NO.4lab.setText(Double.toString(data); /显示运算结果 mark=ch;/设置运算符为刚刚按下的运算符 Refresh=true;/则设置下一次输入的时候要刷新lab number=lab.getText().length();/设置输入的字符个数/ System.out.println(lab.getText();/用来调试用的 if (dataDouble.MAX_VALUE) /如果data超过double类型的最大值则抛出自定义的一个异常类 throw new This_number_too_big(); /end js() method public void enter()/处理输入字符 if(Refresh=true) /如果已经设置了 运算符则在下一次输入数据的时候要把以前lab的内容清除掉 lab.setText(0); number=0; Refresh=false; if(lab.getText().charAt(0)=0& lab.getText().length()=1) /如果lab的内容为0则,lab的内容将被所输入的字符代替, /否则直接在lab的内容后面加上所输入的字符 lab.setText(Character.toString(ch); number+; else if(numberlength) number+;lab.setText(lab.getText()+ch); /end enter() method 沈 阳 大 学 课程设计说明书 NO.5/八进制或十六进制转换成十进制I public String goto_10(String s,long l) /参数s: 是要转换的字符串,由于输入的控制,保证了字符串的合法性; /参数l: 使用来设置是将8进制还是16进制转换成10进制,它的有效值为8或16; String str=s; /用来转换的字符串 long j=l; /表示进制 long lg=0,jing=1;/lg用来记录权乘和,jing用来记录位权 char cha;/临时记录要转换的字符 for(int i=1;i1说明进行的是2+3-9+8 这样的多符号运算int k3=1;/开关3 str1 是否可以被清0 =1时可以 !=1时不能被清0int k4=1;/开关4 str2 同上int k5=1;/开关5 控制小数点可否被录入 =1时可以 !=1 输入的小数点被丢掉JButton jicunqi; /寄存器 记录 是否连续按下符号键Vector vt=new Vector(20,10);JFrame frame=new JFrame(计算器);JTextField jg_TextField=new JTextField(jg,20);/20列JButton clear_Button=new JButton(清除);JButton button0=new JButton(0);JButton button1=new JButton(1);JButton button2=new JButton(2);JButton button3=new JButton(3);JButton button4=new JButton(4);JButton button5=new JButton(5);JButton button6=new JButton(6);JButton button7=new JButton(7);JButton button8=new JButton(8);JButton button9=new JButton(9);JButton button_Dian=new JButton(.);JButton button_jia=new JButton(+);JButton button_jian=new JButton(-);JButton button_cheng=new JButton(*);JButton button_chu=new JButton(/);JButton button_dy=new JButton(=);/ 沈 阳 大 学 课程设计说明书 NO.12public static void main(String args)Tuo tuo=new Tuo();/Tuo()button0.setMnemonic(KeyEvent.VK_0);/等效键/其它 等效键 略,jg_TextField.setHorizontalAlignment(JTextField.RIGHT );/文本框 右对齐JPanel pan=new JPanel();pan.setLayout(new GridLayout(4,4,5,5);/四行四列 边距为5像素pan.add(button7);pan.add(button8);pan.add(button9);pan.add(button_chu);pan.add(button4);pan.add(button5);pan.add(button6);pan.add(button_cheng);pan.add(button1);pan.add(button2);pan.add(button3);pan.add(button_jian);pan.add(button0);pan.add(button_Dian);pan.add(button_dy);pan.add(button_jia);pan.setBorder(BorderFactory.createEmptyBorder(5,5,5,5);/pan对象的边距JPanel pan2=new JPanel();pan2.add(jg_TextField);JPanel pan3=new JPanel(); /为什么要 多此一句呢? 因为我不会设置 按钮的大小 沈 阳 大 学 课程设计说明书 NO.13pan3.setLayout(new FlowLayout();pan3.add(clear_Button);/clear_Button.setSize(10,10);/设置清零按钮的大小 吗的 不好使 !frame.setLocation(300, 200); /主窗口 出现在位置frame.setResizable(false); /不能调大小 frame.getContentPane().setLayout(new BorderLayout();frame.getContentPane().add(pan2,BorderLayout.NORTH);frame.getContentPane().add(pan,BorderLayout.CENTER);frame.getContentPane().add(pan3,BorderLayout.SOUTH);frame.pack();frame.setVisible(true);/以上是 控件 和 布局/下面是事件处理 程 序/- 数 字 键 -class JianTing implements ActionListenerpublic void actionPerformed(ActionEvent e) String ss=(JButton)e.getSource().getText(); jicunqi=(JButton)e.getSource(); vt.add(jicunqi); if (k1=1) if(k3=1) str1=; k5=1;/还原开关k5状态 str1=str1+ss; /k2=1; k3=k3+1; /System.out.println(str1); jg_TextField.setText(str1);/显示 if (k4=1) 沈 阳 大 学 课程设计说明书 NO.14else if(k1=2) if (k4=1) str2=; k5=1; /还原开关k5状态 str2=str2+ss; /k2=2; k4=k4+1; /测试/ jg_TextField.setText(str2); /符 号class JianTing_fh implements ActionListenerpublic void actionPerformed(ActionEvent e) String ss2=(JButton)e.getSource().getText(); jicunqi=(JButton)e.getSource(); vt.add(jicunqi); if(k2=1) k1=2;/开关 k1 为1时,向数1写 为2时,向数2写 k5=1; fh=ss2;k2=k2+1;/按符号键的次数elseint a=vt.size(); JButton c=(JButton)vt.get(a-2); 沈 阳 大 学 课程设计说明书 NO.15if(!(c.getText().equals(+)&!(c.getText().equals(-)&!(c.getText().equals(*)&!(c.getText().equals(/) /if(!(vt.get(a-2).getText().equals(-)|!(vt.get(a-2).getText().equals(+)|!(vt.get(a-2).getText().equals(*)|!(vt.get(a-2).getText().equals(/) yuns(); str1=jg; k1=2;/开关 k1 为1时,向数1写 为2时,向数2写 k5=1; k4=1;fh=ss2; k2=k2+1; /清除class JianTing_clear implements ActionListenerpublic void actionPerformed(ActionEvent e) jicunqi=(JButton)e.getSource(); vt.add(jicunqi); k5=1;k2=1; k1=1; k3=1;k4=1; str1=0; str2=0; fh=; jg=; jg_TextField.setText(jg); vt.clear(); 沈 阳 大 学 课程设计说明书 NO.16/-等 于 -class JianTing_dy implements ActionListenerpublic void actionPerformed(ActionEvent e) jicunqi=(JButton)e.getSource(); vt.add(jicunqi); yuns(); k1=1; /还原开关k1状态 /str1=jg; k2=1; k3=1;/还原开关k3状态k4=1; /还原开关k4状态 str1=jg; /为7+5=12 +5=17 这种计算做准备/-小数点 -class JianTing_xiaos implements ActionListenerpublic void actionPerformed(ActionEvent e) jicunqi=(JButton)e.getSource(); vt.add(jicunqi); if(k5=1) String ss2=(JButton)e.getSource().getText(); if (k1=1) if(k3=1) str1=; k5=1; /还原开关k5状态 沈 阳 大 学 课程设计说明书 NO.17 str1=str1+ss2; /k2=1; k3=k3+1; /System.out.println(str1); jg_TextField.setText(str1);/显示 else if(k1=2) if (k4=1) str2=; k5=1; /还原开关k5状态 str2=str2+ss2; /k2=2; k4=k4+1; /测试/ jg_TextField.setText(str2); k5=k5+1; / /注册 监听器JianTing_dy jt_dy=new JianTing_dy();JianTing jt= new JianTing();/临听数字键JianTing_fh jt_fh= new JianTing_fh();/临 听符 号键JianTing_clear jt_c=new JianTing_clear(); /清除键JianTing_xiaos jt_xs=new JianTing_xiaos();/ 小数点 键 沈 阳 大 学 课程设计说明书 NO.18button7.addActionListener(jt);button8.addActionListener(jt);button9.addActionListener(jt);button_chu.addActionListener(jt_fh);button4.addActionListener(jt);button5.addActionListener(jt);button6.addActionListener(jt);button_cheng.addActionListener(jt_fh);button1.addActionListener(jt);button2.addActionListener(jt);button3.addActionListener(jt);button_jian.addActionListener(jt_fh);button0.addActionListener(jt);button_Dian.addActionListener(jt_xs);button_dy.addActionListener(jt_dy);button_jia.addActionListener(jt_fh);clear_Button.addActionListener(jt_c);/关闭事件处理程序frame.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e) System.exit(0)

温馨提示

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

评论

0/150

提交评论