




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计 算 机 科 学 系计应0701班指导老师:刘其昌设计人员:陈秀桃设计日期:2021年11月10日2021年12月20日目录第一章 绪论21.1 开发环境21.2 根本功能介绍2第二章 系统设计32.1 系统流程图32.2 系统功能框图32.3 需求分析4第三章 软件设计53.1 界面设计53.2 代码设计5第四章 测试分析103.1 程序运行情况:103.2 程序异常处理:103.3 测试用例113.3.1 加法测试113.3.2 减法测试113.3.3 乘法测试123.3.4 除法测试13第五章 结束语14第六章 参考文献15第一章 绪论1.1 开发环境本系统是利用Java语言在NetB
2、eans IDE6.5环境下开发的,Java语言是当今流行的网络编程语言,它具有面向对象、跨平台、分布应用等特点。面向对象的开发方法是当今世界最流行的开发方法,它不仅具有更贴近自然的语义,而且有利于软件的维护和继承。为了进一步稳固课堂上所学到的知识,深刻把握Java语言的重要概念及其面向对象的特性,锻炼学生熟练的应用面向对象的思想和设计方法解决实际问题的能力,开设了Java程序设计课程设计。通过此次课程设计,稳固所学Java语言根本知识,增进Java语言编辑根本功,掌握JDK、Editplus、Eclipse、JCreator等开发工具的运用,拓宽常用类库的应用。使学生通过该教学环节与手段,把
3、所学课程及相关知识加以融会贯穿,全面掌握Java语言的编程思想及面向对象程序设计的方法,为今后从事实际工作打下坚实的根底。1.2 根本功能介绍本系统实现了一个简单而实用的计算器,通过这个计算器我们可以进行一些根本的运算操作,它可以进行简单的四那么运算加、减、乘、除但仅限于十进制下,还可以进行八进制,十进制,十六进制之间的相互转换,八进制最多可以输入19位数,十进制最多可以输入18位数,十六进制最多可以输入14位数,backspace表示退格,clear表示初始化,在window下直接运行Jsp2003.bat即可,界面为灰白对称。它的设计按软件工程的方法进行,系统具有良好的界面、必要的交互信息
4、和较好的健壮性;醒目美观的软件封面。使用人员能快捷简单地进行操作。即时准确地获得需要的计算的结果,充分降低了数字计算的难度和节约了时间,对人们的生活有一定的帮助。第二章 系统设计2.1 系统流程图2.2 系统功能框图说明:在程序中构建类testZ,在其中封装起界面、文本框、按钮、数字、运算符等等成员,再引入成员函数testZ进行计算器的模拟界面设计;其次设计出事件处理函数,如:运算事件、符号事件、等号事件等等;最后设计运算函数的响应事件。这样设计的好处在于使得程序的实现思维更清晰,易懂,可读性增强。反之那么不然。2.3 需求分析首先分析这个说要完成的功能,它的主要任务是完成十六进制、十进制、八
5、进制和二进制之间的相互转化,需要包含负数,但不用考虑小数。 其次,确定接口参数。根据功能可知,它传递给外部的就是一个转后的数据,而外部除了需要传递给转化前的数据以外,是否还需要其他参数呢?我们都知道,十进制的负数同样可以利用其他进制进行表示,例如二进制,转化方法是:求十进制数的绝对值对应的二进制数,最高位为1;然后对二进制逐位求反,最高位除外;接着最低一位加1,需要进位的话依次进位,最高位除外。如今的问题就摆在了我们面前,我们如何知道这个数的最高位是第几位呢,也许有人会说,那就用转化后的前面再加上一位,好,即使这样可以成立,那么-1转化后就是11,3转化后也为11,现在如果需要现在
6、的把这个数二进制数再转化为十进制,那么我们如何知道原来的是正数还是负数呢,如果要转化为十六进制,八进制又当如何呢?经过以上的分析发现,还应该有另外一个参数二进制时的宽度,只有这样才能知道谁是最高位,因此就称这个参数为位宽。 最后,设计类。根据第二步的分析,因为位宽对每一个方法都是一样,所以可能把它作为类的成员变量,而另外两个参数转化前的值和转化后的值就分别作为输入参数和返回值。而类对外的接口只有各个转化的方法,因此这几个方法设计为public权限,而其它所有的辅助方法都为private权限。位宽通过构造函数传递,外部不能直接访问和修改,设置也设置为private权限。为了减少计算量
7、,所有的转化都以二进制为中介。例如十六进制到十进制,是十六进制二进制十进制。第三章 软件设计3.1 界面设计这个就是计算器界面,简洁易用,我们可以从中的数字按键和运算符按钮进行相应的数学计算,总共由个按钮个数字符+个运算符号+个小数点+个“clear按钮,一个标签、再加一个文本框组成。3.2 代码设计import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Caculator public static void main(String args) JFrame frame = new JFrame(
8、"Caculator"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new CaculatorPanel(); frame.pack(); frame.setVisible(true); class CaculatorPanel extends JPanel private JLabel namelabel,resultlabel; private JTextField resultField; private JPanel labelPanel,num
9、berPanel,toolPanel; private JButton s1,s2,s3,s4,s5,s6,s7, s8, s9,s0,p1,p2,t1,t2,t3,t4,clear; private boolean end,add,sub,mul,div; private String str; private double num1,num2; public CaculatorPanel() namelabel = new JLabel("计算器"); resultField = new JTextField(10); ButtonListener listener =
10、 new ButtonListener(); clear = new JButton("clear"); clear.addActionListener(listener); s1 = new JButton("1"); s1.addActionListener(listener); s2 = new JButton("2"); s2.addActionListener(listener); s3 = new JButton("3"); s3.addActionListener(listener); s4 = ne
11、w JButton("4"); s4.addActionListener(listener); s5 = new JButton("5"); s5.addActionListener(listener); s6 = new JButton("6"); s6.addActionListener(listener); s7 = new JButton("7"); s7.addActionListener(listener); s8 = new JButton("8"); s8.addActionLi
12、stener(listener); s9 = new JButton("9"); s9.addActionListener(listener); s0 = new JButton("0"); s0.addActionListener(listener); p1 = new JButton("."); p1.addActionListener(listener); p2 = new JButton("="); p2.addActionListener(listener); t1 = new JButton("
13、;+"); t1.addActionListener(listener); t2 = new JButton("-"); t2.addActionListener(listener); t3 = new JButton("*"); t3.addActionListener(listener); t4 = new JButton("/"); t4.addActionListener(listener); labelPanel = new JPanel(); labelPanel.add(namelabel); labelPan
14、el.add(resultField); labelPanel.add(clear); numberPanel = new JPanel(); numberPanel.setLayout(new GridLayout(4,3); numberPanel.add(s1); numberPanel.add(s2); numberPanel.add(s3); numberPanel.add(s4); numberPanel.add(s5); numberPanel.add(s6); numberPanel.add(s7); numberPanel.add(s8); numberPanel.add(s
15、9); numberPanel.add(s0); numberPanel.add(p1); numberPanel.add(p2); toolPanel = new JPanel(); toolPanel.setLayout(new GridLayout(4,1); toolPanel.add(t1); toolPanel.add(t2); toolPanel.add(t3); toolPanel.add(t4); setPreferredSize(new Dimension(500,200); setBackground(Color.cyan); add(labelPanel); add(n
16、umberPanel); add(toolPanel); public void num(int i) String s = null; s=String.valueOf(i); if(end) /如果数字输入结束,那么将文本框置零,重新输入 resultField.setText("0"); end=false; if(resultField.getText().equals("0") /如果文本框的内容为零,那么覆盖文本框的内容 resultField.setText(s); else /如果文本框的内容不为零,那么在内容后面添加数字 str = r
17、esultField.getText() + s; resultField.setText(str); private class ButtonListener implements ActionListener public void actionPerformed(ActionEvent e) /数字事件 if(e.getSource()=clear) resultField.setText("0"); else if(e.getSource()=s1) num(1); else if(e.getSource()=s2) num(2); else if(e.getSou
18、rce()=s3) num(3); else if(e.getSource()=s4) num(4); else if(e.getSource()=s5) num(5); else if(e.getSource()=s6) num(6); else if(e.getSource()=s7) num(7); else if(e.getSource()=s8) num(8); else if(e.getSource()=s9) num(9); else if(e.getSource()=s0) num(0); /符号事件 else if(e.getSource()=t1) sign(1); els
19、e if(e.getSource()=t2) sign(2); else if(e.getSource()=t3) sign(3); else if(e.getSource()=t4) sign(4); /等号 else if(e.getSource()=p1) str=resultField.getText(); if(str.indexOf(".")<=1) str+="." resultField.setText(str); else if(e.getSource()=p2) num2=Double.parseDouble(resultFie
20、ld.getText(); if(add) num1=num1 + num2; else if(sub) num1=num1 - num2; else if(mul) num1=num1 * num2; else if(div) num1=num1 / num2; resultField.setText(String.valueOf(num1); end=true; public void sign(int s) if(s=1) add=true; sub=false; mul=false; div=false; else if(s=2) add=false; sub=true; mul=fa
21、lse; div=false; else if(s=3) add=false; sub=false; mul=true; div=false; else if(s=4) add=false; sub=false; mul=false; div=true; num1=Double.parseDouble(resultField.getText(); end=true; 第四章 测试分析4.1 程序运行情况:程序正常的响应按钮事件,输入的数值长度受变量length的限定,进行混合四那么运算的时候,结果如果不是很大,可以正常显示,但如果结果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需
22、要特殊的处理科学记数里的E ,当结果太大的时候,有可能超出可能表示的最大值,结果溢出,这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置if 语句,如果结果大于某一个值就抛出一个This_number_too_big 类型的类,再使用try-catch,捕捉输出结果的方法抛出的异常对象。然后进行,重制归零的处理。4.2 程序异常处理:当结果超出Double.MAX_VALUE时,将抛出一个This_number_too_big 类的异常对象,这个是我自定义的一个异常类它继承自Exception 类,然后使用try-catch去捕捉这个异常,异常的处理如下: try js(); ca
23、tch(This_number_too_big e) lab.setText("0"); number=0; mark='n' Refresh=false; System.out.println("The number is too big"); /如果出现异常那么初始化效果如同clear键4.3 测试用例4.4.1 加法测试 1 .运行结果如下:2 运行结果如下:4.4.2 减法测试1 运算结果如下:2运算结果如下:.3 乘法测试1运算结果如下:2运算结果如下:.4 除法测试1运算结果如下:2运算结果如下:(3) 运算结果如下:第五章 结束语 终于做完了这次的作业,有一种如释重担的感觉,但还是有一点点的留恋。这次做的?计算器?的实现
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年甘肃省庆阳市宁县三年级数学第一学期期末考试试题含解析
- 2025-2026学年福建泉州泉港区三上数学期末综合测试试题含解析
- 2024年龙岩市武平县数学三上期末模拟试题含解析
- 2024年霍尔果斯市数学三年级第一学期期末调研试题含解析
- 公共场所常见急救处理课件
- 护理教育与研究动态试题及答案
- 护士职业生涯不可或缺的试题与答案
- 卫生资格考试逐项解析与总结试题及答案
- 拔罐与护理技能试题及答案讨论
- 2025年卫生资格考试的试卷结构分析试题及答案
- 成人胃肠功能障碍患者医学营养治疗指南(2025版)解读 课件
- 东营市市属医疗卫生机构招聘考试真题2024
- 南京林业大学公开招聘专职辅导员15人(第二批)高频重点模拟试卷提升(共500题附带答案详解)
- 华为面试题及答案集
- 旅游情景英语(第二版)Unit 5-2学习资料
- 基于计算思维培养的小学人工智能启蒙教育课程设计与实施
- 2025年员工健康管理服务合同
- 赡养老人个税扣除分摊协议书
- 粮油配送项目服务承诺及售后服务
- 公司内部文件管理规定及办法
- 2024-2025中国服装行业科技创新白皮书
评论
0/150
提交评论