欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    Java课程设计报告 .doc

    • 资源ID:2387070       资源大小:189KB        全文页数:28页
    • 资源格式: DOC        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java课程设计报告 .doc

    湖 南 农 业 大 学Java课程设计报告计算器软件设计学生姓名: 学 号: 年级专业:指导老师: 学 院:目 录1. 前言22概要设计3 2.1 开发环境3 2.2 计算器功能3 2.3 界面设计3 2.4 类UML图43. 详细设计4 3.1 使用的JAVA类的说明4 3.2 类的主要方法53.2.1 处理按了运算符后的计算53.2.2 处理输入字符63.2.3 进制的转换63.2.4 设计总体认识73.2.5 程序流程图8 4. 运行结果85. 测试分析9 5.1 程序运行情况9 5.2 程序异常处理96. 源程序9参考文献27致 谢27摘要:该程序是一个图形界面的简单的java计算器,具有良好的界面,使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。可以进行简单的四则运算(加、减、乘、除,以及开平方)但仅限于十进制下,还可以进行(八进制,十进制,十六进制)之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格, clear表示初始化,sqrt表示开平方,界面为灰白对称。关键字:java、计算器类、方法、事件1 前言随着科学技术的不断发展,计算机已经成为我们工作学习和生活中不可缺少的工具。文本编辑器是个人计算机最司空见惯的应用程序了,在学习了Java语言之后,我决定使用Java语言编写一个简单的计算器,可以实现简单的运算功能,满足日常基本的工作学习和娱乐需要。Java是由Sun公司开发的新一代纯面向对象的网络编程语言。其目标是建立一种在任意种机器、任一种操作系统的网络环境中运行的软件,实行所谓的“程序写一次,到处运行”的目标。正因为如此,Java已成为当今Internet上最流行、最受欢迎的一种程序开发语言。Java开发小组把Java按特性分为基本版、移动版、企业版,每个版本有一个软件开发包。Java基本版本叫Java 2标准版(Java 2 Standard Edition,J2SE),它包含建立Java应用程序或者是Applet所需的应用程序编程接口(API)。Java 2移动版(The Java 2 Mobile Edition,J2ME)包含创建无线Java应用程序的API。还有Java 2企业版(The Java 2 Enterprise,J2EE)是J2SE的增强版本,包含建立多层架构应用程序API。Java语言是由C+语言发展起而来的,是一种彻底的面向对象的程序设计语言。作为一种纯面向对象的程序设计语言,它非常适合大型软件的开发。Java语言去掉了C+语言的一些容易引起错误的特性。Java语言的特点有:面向对象、跨平台、安全性、多线程和图形功能强。2 概要设计2.1开发环境 开发平台:Microsoft Windows XP Professional Service Pack 2 开发工具:JBuilder 2007 + JDK 1.6.0_022.2计算器功能功能 1:按下数字键在液晶平上会显示数字,这时计算器最基本的功能。    功能 2:在任何时候按下“±”键,计算器文本框上的数字置反号。    功能 3:第一次按下“运算”键,再按下数字键,将重新输入第二个数字。再次按下“运 算”键,将算出前两个数字运算的结果,然后按下数字,将又重新输入新的数字。   功能 4:输入数字后,按下“等于”键,将仍输出原来的数 输入运算符和第二个数字后再按下“=”键,将得到二者运算的结果,然后又重复功能 3 和功能 4 。    功能 5:按下清除“C”键,数据被全部清楚。2.3界面设计图2.3 计算器面板2.4类 UML图ArrayStackChar UML图如图2.3A所示:ArrayStackDouble UML图如图2.3B所示图2.4A 图2.4B3详细设计3.1计算器使用的Java类的说明类名: 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是用来设置在不同进制下允许输入的最多数字位数,默认为十进 制 public char mark='n' /设置运算符号为没有即为n,它的值是+-*/ public double data=0; /设置运算数据为零 public char ch; /用来临时存放所按按钮的第一个字符 public boolean Refresh=false; /设置lab是否要在输入数据的时候刷新,初始为否 程序的设计参考了Sun Java网站里的大量实例,比如Layout的使用、Event的处理、Components的添加与应用等等。其中:public class NewCalc extends JFrame implements ActionListener语句实现了ActionListener接口,因此可以调用addActionListener(this)方法对按钮进行点击监听,在下面的public void actionPerformed(ActionEvent e)方法里面对各个点击事件进行处理。3.2类的主要方法3.2.1处理按了运算符后的计算: public void js() throws This_number_too_big if (mark='n') mark=ch; / data=Double.parseDouble(lab.getText();Refresh=true; else switch (mark) 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; lab.setText(Double.toString(data); mark=ch; Refresh=true; number=lab.getText().length();/ System.out.println(lab.getText();if (data>Double.MAX_VALUE) throw new This_number_too_big(); 3.2.2处理输入字符:if(Refresh=true) lab.setText("0"); number=0; Refresh=false; if(lab.getText().charAt(0)='0'&& lab.getText().length()=1) lab.setText(Character.toString(ch); number+; else if(number<length) number+;lab.setText(lab.getText()+ch); 3.2.3八进制或十六进制转换成十进制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;i<=str.length();i+) cha=str.charAt(str.length()-i); switch(cha) case '1': lg=lg+1*jing;break; case '2': lg=lg+2*jing;break; case '3': lg=lg+3*jing;break; case '4': lg=lg+4*jing;break; case '5': lg=lg+5*jing;break; case '6': lg=lg+6*jing;break; case '7': lg=lg+7*jing;break; case '8': lg=lg+8*jing;break; case '9': lg=lg+9*jing;break; case 'A': lg=lg+10*jing;break; case 'B': lg=lg+11*jing;break; case 'C': lg=lg+12*jing;break; case 'D': lg=lg+13*jing;break; case 'E': lg=lg+14*jing;break; case 'F': lg=lg+15*jing;break; jing*=j; /位权升一级,为下次使用做好准备 return Long.toString(lg); /end String goto_10() method 3.2.4设计的总体认识l JAVA设计的摘要l JAVA设计的目录结构l JAVA设计的概要和详细设计l JAVA设计的版权意识l JAVA设计需要编译的环境l JAVA设计的实用性3.2.5程序流程图开始进制转换选择你要计算运行的进制10.8.16刷新八进制默认十进制十六进制计算结果显示接受用户输入是否再次计算退出是否处理异常图3绘制计算器方法PAD图4运行结果图4 计算结果显示5测试分析5.1程序运行情况: 程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的E ,当结果太大的时候,有可能超出可能表示的最大值,(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。 5.2 程序异常处理: 当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big 类的异常对象,这个是我自定义的一个异常类它继承自Exception 类,然后使用try-catch去捕捉这个异常,异常的处理如下: try js(); catch(This_number_too_big e) lab.setText("0"); number=0; mark='n' Refresh=false; System.out.println("The number is too big"); /如果出现异常则初始化效果如同clear键 6 程序清单:import java.awt.*;import java.awt.event.*;class This_number_too_big extends Exception / 自定义的一个结果溢出异常类/ ActionLintsner是所有监听器的父类,其它监听器可以监听的事件都可以被它捕获/ ItemListener用于捕获带有item的组件产生的事件,如ComboBox,CheckBox,RadioButton,ToggleButtonclass hejiang extends Frame implements ItemListener, ActionListener public hejiang() addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) dispose();System.exit(0); / 给窗口注册一个事件监听器,当你点了窗口右上方的叉号时,此方法被调用);static hejiang mainFrame = new hejiang(); / 创建一个mainFramestatic Label lab1 = new Label("0");static Label lab = new Label("0");static Panel pnl1 = new Panel(new GridLayout(4, 3, 3, 3); / 创建新的面板.布局管理static Panel pnl2 = new Panel(new GridLayout(4, 1, 3, 3);static Panel pnl3 = new Panel(new GridLayout(1, 2, 3, 3);static Panel pnl4 = new Panel(new GridLayout(6, 1, 3, 3);static Button bt9 = new Button("9");static Button bt8 = new Button("8");static Button bt7 = new Button("7");static Button bt6 = new Button("6");static Button bt5 = new Button("5");static Button bt4 = new Button("4");static Button bt3 = new Button("3");static Button bt2 = new Button("2");static Button bt1 = new Button("1");static Button bt0 = new Button("0");static Button btdot = new Button(".");static Button btequ = new Button("=");static Button btadd = new Button("+");static Button btsub = new Button("-");static Button btmul = new Button("*");static Button btdev = new Button("/");static Button btA = new Button("A");static Button btB = new Button("B");static Button btC = new Button("C");static Button btD = new Button("D");static Button btE = new Button("E");static Button btF = new Button("F");static Checkbox ckb8 = new Checkbox("八进制");static Checkbox ckb10 = new Checkbox("十进制");static Checkbox ckb16 = new Checkbox("十六进制");static Button btc = new Button("clear");static Button btt = new Button("backspace");public int number = 0, length = 18;/ number是用来记录输入的数字个数,length是用来设置在不同进制下允许输入的最多数字位数,默认为十进制public char mark = 'n' / 设置运算符号为没有即为n,它的值是+-*/public double data = 0; / 设置运算数据为零public char ch; / 用来临时存放所按按钮的第一个字符public boolean Refresh = false;/ 设置lab是否要在输入数据的时候刷新,初始为否public static void main(String args) System.out.println("Starting hejiang.");lab.setAlignment(Label.RIGHT); / 对齐方式lab.setBackground(Color.lightGray); / 背景色lab.setForeground(Color.BLUE); / 前景色lab.setFont(new Font("Serief", Font.BOLD, 18);/ 字体设置lab.setBounds(14, 33, 216, 40);lab1.setAlignment(Label.RIGHT); / 对齐方式lab1.setBackground(Color.lightGray); / 背景色lab1.setForeground(Color.BLUE); / 前景色lab1.setFont(new Font("Serief", Font.BOLD, 18);/ 字体设置lab1.setBounds(14, 75, 216, 40);mainFrame.add(lab);mainFrame.add(lab1);CheckboxGroup grp = new CheckboxGroup();ckb8.setCheckboxGroup(grp);ckb10.setCheckboxGroup(grp);ckb16.setCheckboxGroup(grp);ckb8.setBounds(14, 115, 55, 25); / setBounds()方法是可以设定控件的大小和位置ckb10.setBounds(69, 115, 55, 25);ckb16.setBounds(124, 115, 65, 25);ckb8.setState(false);ckb10.setState(true);ckb16.setState(false);mainFrame.add(ckb8);mainFrame.add(ckb10);mainFrame.add(ckb16);pnl1.setBounds(18, 180, 120, 150);pnl2.setBounds(144, 180, 40, 150);pnl3.setBounds(14, 140, 170, 36);pnl4.setBounds(190, 140, 40, 190);pnl1.add(bt7);pnl1.add(bt8);pnl1.add(bt9);pnl1.add(bt4);pnl1.add(bt5);pnl1.add(bt6);pnl1.add(bt1);pnl1.add(bt2);pnl1.add(bt3);pnl1.add(bt0);pnl1.add(btdot);pnl1.add(btequ);pnl2.add(btadd);pnl2.add(btsub);pnl2.add(btmul);pnl2.add(btdev);pnl3.add(btt);pnl3.add(btc);pnl4.add(btA);pnl4.add(btB);pnl4.add(btC);pnl4.add(btD);pnl4.add(btE);pnl4.add(btF);btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);mainFrame.add(pnl1);mainFrame.add(pnl2);mainFrame.add(pnl3);mainFrame.add(pnl4);mainFrame.setResizable(false); / 窗口可以最小化和关闭,但是不能被任意改变大小mainFrame.setLayout(null);mainFrame.setSize(240, 350);mainFrame.setTitle("小型计算器");mainFrame.setVisible(true); / 组件可见ckb8.addItemListener(mainFrame);ckb10.addItemListener(mainFrame);ckb16.addItemListener(mainFrame);/ 把事件聆听者向各个组键注册bt1.addActionListener(mainFrame);bt2.addActionListener(mainFrame);bt3.addActionListener(mainFrame);bt4.addActionListener(mainFrame);bt5.addActionListener(mainFrame);bt6.addActionListener(mainFrame);bt7.addActionListener(mainFrame);bt8.addActionListener(mainFrame);bt9.addActionListener(mainFrame);bt0.addActionListener(mainFrame);btadd.addActionListener(mainFrame);btsub.addActionListener(mainFrame);btmul.addActionListener(mainFrame);btdev.addActionListener(mainFrame);btt.addActionListener(mainFrame);btc.addActionListener(mainFrame);btdot.addActionListener(mainFrame);btequ.addActionListener(mainFrame);btA.addActionListener(mainFrame);btB.addActionListener(mainFrame);btC.addActionListener(mainFrame);btD.addActionListener(mainFrame);btE.addActionListener(mainFrame);btF.addActionListener(mainFrame);/ end main() mothed/ checkbox 事件的处理public void itemStateChanged(ItemEvent e) mark = 'n'Refresh = false;/ 规定当进制转换时以前输入的运算符失效if (ckb8.getState() = true) btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(false);bt8.enable(false);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);/ 在八进制的情况下对有些按件的管理if (length = 18) lab.setText(goto10_8(lab.getText();number = lab.getText().length();if (length = 14) lab.setText(goto_10(lab.getText(), 16L);lab.setText(goto10_8(lab.getText();number = lab.getText().length();/ 将其他进制转换成八进制length = 19;/ 在八进制下允许输入数字个数最多为19位if (ckb10.getState() = true) btA.enable(false);btB.enable(false);btC.enable(false);btD.enable(false);btE.enable(false);btF.enable(false);bt9.enable(true);bt8.enable(true);btdot.enable(true);btadd.enable(true);btmul.enable(true);btsub.enable(true);btdev.enable(true);btequ.enable(true);/ 在十进制的情况下对有些控件的管理if (length = 19) lab.setText(goto_10(lab.getText(), 8L);number = lab.getText().length();if (length = 14) lab.setText(goto_10(lab.getText(), 16L);number = lab.getText().length();if (length = 19) lab1.setText(goto_10(lab1.getText(), 8L);number = lab1.getText().length();if (length = 14) lab1.setText(goto_10(lab1.getText(), 16L);number = lab1.getText().length();length = 18;if (ckb16.getState() = true) btA.enable(true);btB.enable(true);btC.enable(true);btD.enable(true);btE.enable(true);btF.enable(true);bt9.enable(true);bt8.enable(true);btdot.enable(false);btadd.enable(false);btmul.enable(false);btsub.enable(false);btdev.enable(false);btequ.enable(false);/ 在十六进制的情况下对有些按件的管理if (length = 18) lab.setText(goto10_16(lab.getText();number = lab.getText().length();if (length = 19) lab.setText(goto_10(lab.getText(), 8L);lab.setText(goto10_16(lab.getText();number = lab.getText().length();/ 将其他进制转换成十六进制length = 14;/ 在十六进制下允许输入数字个数最多为14位/ end itemStateChanged(ItemEvent e) method/ 按钮事件的处理public void actionPerformed(ActionEvent m) / 鼠标点激就触发事件监听Button btn = (Button) m.getSource();ch = btn.getLabel().charAt(0);deposit(ch);switch (ch) case 'c': lab.setText("0");number = 0;mark = 'n'Refresh = false;break;/ 初始化case '1':enter();break;case '2':enter();break;case '3':enter();break;case '4':enter();break;case '5':enter();break;case '6':enter();break;case '7':enter();break;case '8':enter();break;case '9':enter();break;case '0': if (Refresh = true) lab.setText("0");number = 0;Refresh = false;if (lab.getText().charAt(0) = '0' && lab.getText().length() = 1)break;if (number < length) number+;lab.setText(lab.getText() + ch); elsebreak;break;case 'A':enter();break;case 'B':enter();break;case 'C':enter();break;case 'D':enter();break;case 'E':enter();break;case 'F':enter();break;case '.': if (Refresh = t

    注意事项

    本文(Java课程设计报告 .doc)为本站会员(文库蛋蛋多)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开