ImageVerifierCode 换一换
格式:DOC , 页数:24 ,大小:272KB ,
资源ID:2688378      下载积分:20 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-2688378.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Java程序设计47033.doc)为本站会员(dreamzhangning)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

Java程序设计47033.doc

1、课 程 设 计 报 告课程设计名称 Java 程序设计 专 业 计算机科学与技术 班 级 一 班 学 号 姓 名 指导教师 陈 志 成 成 绩 2011 年 3 月 10 日目 录一、设计任务与要求 11.1 设计任务与要求 11.2 选题目的与意义 1二、需求分析 12.1 用户需求分析 12.2 开发环境分析 2三、系统设计 23.1 系统总体设计 23.2 功能模块设计 43.3 类的设计 4四、程序实现 64.1 程序流程图 64-1 流程图 64.2 关键算法与技术实现 7五、测试运行 155.1 系统测试方案 155.2 运行结果分析 15六、设计体会 21主要参考文献 211一、

2、设计任务与要求1.1 设计任务与要求课程设计的任务是:根据所选题目,完成课程设计的分析、设计和编码,写出课程设计报告。要求学生掌握:(1)掌握 Java 的语言规范,面向对象的核心概念和特性;(2)掌握 Java 的编程技术,包括异常处理,图形界面设计,多线程,网络通信程序等;(3)掌握 Java 应用软件的开发环境和开发过程;(4)掌握面向对象的思想和程序设计方法。1.2 选题目的与意义通过此次逻辑算术设计实践,利用 java 面向对象程序设计和 Java 高级程序设计技术针对该程序显示 GUI 用户界面,能实现整数的加、减、乘、除四则运算。用图形界面实现。能够培养我们严谨务实的工作态度以及

3、提高我们分析问题和解决问题的能力,也对于我们巩固和加深对面向对象程序设计的基本概念、基本理论和实现技术的理解起到了一定的意义。二、需求分析 2.1 用户需求分析1.运算器功能需求用户能够完成四则混合运算加减乘除,并且运算器能够自动的识别运算符的优先级,根据输入的运算公式,自动计算出相应的结果。同时完成运算器中的Baclspace.ce 按钮,能够完成消除或者删除的功能。2.出错处理需求2当用户如果按下的是除零的操作,显示框将显示“被除数不为 0”;当用户如果连续多次按下运算符,运算器自动记忆第一次运算符,并且做防连续输入相同的运算符或者是不同的运算符。当用户在同一个数据中多次输入小数点,运算器

4、能够自动判断小数点重复,自动只记忆第一个小数点。当用户在同一个数据中输入多个负号,运算器能够自动做重复检查,不显示多余的负号。当用户在使用 backspace 功能删除越界数据时候,运算器自动作相应的处理。3.数据处理需求在程序的起始,建立两个栈,分别用来存储操作数和操作符。在运算器的核心运算代买中,运用这两个栈来实现算法中的优先级的处理,使用“#”号来标记计算公式的结束。目标计算公式通过运算器的键盘实现输入,当按下“=”号之后,运算器通过调用运算器核心函数来实现数据的处理。2.2 开发环境分析该程序是一个图形界面的 java 的逻辑算术测试器,使用人员能快捷简单地进行操作。随着科学技术的不断

5、发展,计算机已经成为我们工作学习和生活中不可缺少的工具。适用 java 语言编写算术测试,可以实现简单的预算功能。设计应用了 java 基本版本,它包含建立 java 应用程序或者时 Applet 所需的应用程序编程接口 API,系统环境为 window2003/ XP。三、系统设计3.1 系统总体设计1系统总体分析对于此次运算器程序,首先设计其 GUI 界面,总体界面有一个文本框,总界面用 BoderLayout 布局。文本框放置到一个面板 Panel 中,添加到整体布局的中心,界面设计完成。布局设计好后再添加按钮事件。对于此程序考虑到点击加减乘除按钮时是否点击数字按钮,如果是第一次点击数字

6、按钮或者是点击数字按钮前点击了加减乘除按钮则直接把数字按钮的数值设置到文本框中,否则应把文本框中的内容加上用户所点击按钮的数值设置到文本框中。在进行加、减、乘、除计算时点击加、减、乘、除按钮之前的数值保存下来,运算时是这个被保存下来的数值和文本框中的数值加、减、乘、除。3运算器乘法运算加法运算减法运算除法运算清除功能运算结果四则运算选择倒数运算开平方运算百分号运算运算器总系统功能图系 3-1-12.系统界面部分主窗体包含的控件中要有:标签,用于显示提示语句; 文本文档,用于用户数值的;按钮键,用于处理操作。界面初始化时,将一些按键,例如完成加、减、乘、除运算按键设置成不可用,这样可以防止误操作

7、,每次按钮按下时,都有相应的按钮属性被更改。3系统后台部分后台部分,核心就是产生随即算术式,用一个字符串数组存放加和减的操作符,产生一个 0-9 的随机数,通过此随机数对应操作符数组中的字符,决定4产生的算术式为加法或减法,然后进行两个数值的四则运算,通过以上运算求出结果,保存在私有变量中,同时对应的产生一个通过连接完成的字符串,作为界面题目输出的内容,以上便完成随机算术式的生成。3.2 功能模块设计1)加法功能模块:两个数据可进行加操作,可以为小数。 2)减法功能模块:两个数据可进行减操作,可以为负数相减。3)乘法功能模块:两个数相乘操作。 4)除法功能模块:两个数相除操作。5)开平方功能模

8、块:对任意一个数进行开平方运算,可以是小数。6)百分号功能模块:对任意一个数进行百分号运算。7)倒数功能模块:对任意一个数进行倒数运算。3.3 类的设计1.关于类名见表:类的名称 功能Calculator 主类运算ActionHanler 事件操作处理监听器2.关于属性见下:(1)0-9 的数字键:JButton num1 JButton num2 JButton num3 JButton num4 JButton num55JButton num6 JButton num7 JButton num8 JButton num9 JButton num0(2)加/减/乘/除控制按钮:JButto

9、n pius;JButton minus;JButton mutiply; JButton divide;(3) . +/-两个按钮:JButton point;JButton sign;(4)Backspace CE = 三个按钮:JButton Backspace; JButton CE; JButton equal;3.关于类的方法及作用见表:类的方法 类的作用yunsuanQi() 构造函数,窗体的初始化,添加窗体、设置控件位置actionPerformed(ActionEvent e) 处理所有按扭单击事件,通过对按钮的监听,分辨哪个按钮被单击,然后运行对应按钮事件的代码。windo

10、wClosing() 关闭窗口setframe() 设置主窗口的布局,在窗口加面板,按钮,文本框addlistener() 为列表框,按钮,窗口添加事件监听器equation() 生成一个算式,并显示出来next() 程序自动计算算式的结果,储存在 trueans 里enter() 判断用户结果是否正确,并计算得分Public static void main(String arg) Main 方法生成本程序的一个对象6四、程序实现4.1 程序流程图图 4-1 流程图开始主界面运算符号继续功能模块运算数据结果输出74.2 关键算法与技术实现import java.awt.*; import j

11、ava.awt.event.*; import javax.swing.*; public class Caluator extends Frame / 声明三个面板的布局 GridLayout gl1, gl2, gl3; Panel p0, p1, p2, p3; JTextField tf1; TextField tf2; Button b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26; St

12、ringBuffer str;/ 显示屏所显示的字符串 double x, y;/ x和y都是运算数 int z;/ Z表示单击了那一个运算符.0表示“+“,1表示“-“,2表示“*“,3表示“/“ static double m;/ 记忆的数字 public Counter() gl1 = new GridLayout(1, 4, 10, 0);/ 实例化三个面板的布局 gl2 = new GridLayout(4, 1, 0, 15); gl3 = new GridLayout(4, 5, 10, 15); tf1 = new JTextField(27);/ 显示屏 tf1.setHor

13、izontalAlignment(JTextField.RIGHT); tf1.setEnabled(false); tf1.setText(“0“); tf2 = new TextField(10);/ 显示记忆的索引值 tf2.setEditable(false); / 实例化所有按钮、设置其前景色并注册监听器 b0 = new Button(“Backspace“); b0.setForeground(Color.red); 8b0.addActionListener(new Bt(); b1 = new Button(“CE“); b1.setForeground(Color.red)

14、; b1.addActionListener(new Bt(); b2 = new Button(“C“); b2.setForeground(Color.red); b2.addActionListener(new Bt(); b3 = new Button(“MC“); b3.setForeground(Color.red); b3.addActionListener(new Bt(); b4 = new Button(“MR“); b4.setForeground(Color.red); b4.addActionListener(new Bt(); b5 = new Button(“MS

15、“); b5.setForeground(Color.red); b5.addActionListener(new Bt(); b6 = new Button(“M+“); b6.setForeground(Color.red); b6.addActionListener(new Bt(); b7 = new Button(“7“); b7.setForeground(Color.blue); b7.addActionListener(new Bt(); b8 = new Button(“8“); b8.setForeground(Color.blue); b8.addActionListen

16、er(new Bt(); b9 = new Button(“9“); b9.setForeground(Color.blue); b9.addActionListener(new Bt(); b10 = new Button(“/“); b10.setForeground(Color.red); b10.addActionListener(new Bt(); b11 = new Button(“sqrt“); b11.setForeground(Color.blue); b11.addActionListener(new Bt(); b12 = new Button(“4“); b12.set

17、Foreground(Color.blue); b12.addActionListener(new Bt(); b13 = new Button(“5“); b13.setForeground(Color.blue); b13.addActionListener(new Bt(); b14 = new Button(“6“); b14.setForeground(Color.blue); b14.addActionListener(new Bt(); b15 = new Button(“*“); 9b15.setForeground(Color.red); b15.addActionListe

18、ner(new Bt(); b16 = new Button(“%“); b16.setForeground(Color.blue); b16.addActionListener(new Bt(); b17 = new Button(“1“); b17.setForeground(Color.blue); b17.addActionListener(new Bt(); b18 = new Button(“2“); b18.setForeground(Color.blue); b18.addActionListener(new Bt(); b19 = new Button(“3“); b19.s

19、etForeground(Color.blue); b19.addActionListener(new Bt(); b20 = new Button(“-“); b20.setForeground(Color.red); b20.addActionListener(new Bt(); b21 = new Button(“1/X“); b21.setForeground(Color.blue); b21.addActionListener(new Bt(); b22 = new Button(“0“); b22.setForeground(Color.blue); b22.addActionLi

20、stener(new Bt(); b23 = new Button(“+/-“); b23.setForeground(Color.blue); b23.addActionListener(new Bt(); b24 = new Button(“.“); b24.setForeground(Color.blue); b24.addActionListener(new Bt(); b25 = new Button(“+“); b25.setForeground(Color.red); b25.addActionListener(new Bt(); b26 = new Button(“=“); b

21、26.setForeground(Color.red); b26.addActionListener(new Bt(); / 实例化四个面板 p0 = new Panel(); p1 = new Panel(); p2 = new Panel(); p3 = new Panel(); / 创建一个空字符串缓冲区 str = new StringBuffer(); 10/ 添加面板p0中的组件和设置其在框架中的位置和大小 p0.add(tf1); p0.setBounds(10, 25, 300, 40); / 添加面板p1中的组件和设置其在框架中的位置和大小 p1.setLayout(gl1)

22、; p1.add(tf2); p1.add(b0); p1.add(b1); p1.add(b2); p1.setBounds(10, 65, 300, 25); / 添加面板p2中的组件并设置其的框架中的位置和大小 p2.setLayout(gl2); p2.add(b3); p2.add(b4); p2.add(b5); p2.add(b6); p2.setBounds(10, 110, 40, 150); / 添加面板p3中的组件并设置其在框架中的位置和大小 p3.setLayout(gl3);/ 设置p3的布局 p3.add(b7); p3.add(b8); p3.add(b9); p

23、3.add(b10); p3.add(b11); p3.add(b12); p3.add(b13); p3.add(b14); p3.add(b15); p3.add(b16); p3.add(b17); p3.add(b18); p3.add(b19); p3.add(b20); p3.add(b21); p3.add(b22); p3.add(b23); p3.add(b24); p3.add(b25); p3.add(b26); p3.setBounds(60, 110, 250, 150); / 设置框架中的布局为空布局并添加4个面板 setLayout(null); add(p0);

24、 add(p1); 11add(p2); add(p3); setResizable(false);/ 禁止调整框架的大小 / 匿名类关闭窗口 addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e1) System.exit(0); ); setBackground(Color.lightGray); setBounds(100, 100, 320, 280); setVisible(true); / 构造监听器 class Bt implements ActionListener publi

25、c void actionPerformed(ActionEvent e2) try if(e2.getSource()=b1)/ 选择“CE“清零 tf1.setText(“0“);/ 把显示屏清零 str.setLength(0);/ 清空字符串缓冲区以准备接收新的输入运算数 else if(e2.getSource()=b2)/ 选择“C“清零 tf1.setText(“0“);/ 把显示屏清零 str.setLength(0); else if(e2.getSource()=b23)/ 单击“+/-“选择输入的运算数是正数还是负数 x=Double.parseDouble(tf1.ge

26、tText().trim(); tf1.setText(“+(-x); else if(e2.getSource()=b25)/ 单击加号按钮获得x的值和z的值并清空y的值 x=Double.parseDouble(tf1.getText().trim(); str.setLength(0);/ 清空缓冲区以便接收新的另一个运算数 y=0d; z=0; 12 else if(e2.getSource()=b20)/ 单击减号按钮获得x的值和z的值并清空y的值 x=Double.parseDouble(tf1.getText().trim(); str.setLength(0); y=0d; z

27、=1; else if(e2.getSource()=b15)/ 单击乘号按钮获得x的值和z的值并清空y的值 x=Double.parseDouble(tf1.getText().trim(); str.setLength(0); y=0d; z=2; else if(e2.getSource()=b10)/ 单击除号按钮获得x的值和z的值并空y的值 x=Double.parseDouble(tf1.getText().trim(); str.setLength(0); y=0d; z=3; else if(e2.getSource()=b26)/ 单击等号按钮输出计算结果 str.setLe

28、ngth(0); switch(z) case 0 : tf1.setText(“+(x+y);break; case 1 : tf1.setText(“+(x-y);break; case 2 : tf1.setText(“+(x*y);break; case 3 : tf1.setText(“+(x/y);break; else if(e2.getSource()=b24)/ 单击“.“按钮输入小数 if(tf1.getText().trim().indexOf(.)!=-1)/ 判断字符串中是否已经包含了小数点 else/ 如果没数点有小 13if(tf1.getText().trim(

29、).equals(“0“)/ 如果初时显示为0 str.setLength(0); tf1.setText(str.append(“0“+e2.getActionCommand().toString(); else if(tf1.getText().trim().equals(“)/ 如果初时显示为空则不做任何操作 else tf1.setText(str.append(e2.getActionCommand().toString(); y=0d; else if(e2.getSource()=b11)/ 求平方根 x=Double.parseDouble(tf1.getText().trim

30、(); tf1.setText(“数字格式异常“); if(x0) tf1.setText(“负数没有平方根“); else tf1.setText(“+Math.sqrt(x); str.setLength(0); y=0d; else if(e2.getSource()=b16)/ 单击了“%“按钮 x=Double.parseDouble(tf1.getText().trim(); tf1.setText(“+(0.01*x); str.setLength(0); y=0d; else if(e2.getSource()=b21)/ 单击了“1/X“按钮 x=Double.parseDo

31、uble(tf1.getText().trim(); if(x=0) tf1.setText(“除数不能为零“); 14 else tf1.setText(“+(1/x); str.setLength(0); y=0d; else if(e2.getSource()=b3)/ MC为清除内存 m=0d; tf2.setText(“); str.setLength(0); else if(e2.getSource()=b4)/ MR为重新调用存储的数据 if(tf2.getText().trim()!=“)/ 有记忆数字 tf1.setText(“+m); else if(e2.getSourc

32、e()=b5)/ MS为存储显示的数据 m=Double.parseDouble(tf1.getText().trim(); tf2.setText(“M“); tf1.setText(“0“); str.setLength(0); else if(e2.getSource()=b6)/ M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR m=m+Double.parseDouble(tf1.getText().trim(); else/ 选择的是其他的按钮 if(e2.getSource()=b22)/ 如果选择的是“0“这个数字键 if(tf1.getText().trim().

33、equals(“0“)/ 如果显示屏显示的为零不做操作 else 15 tf1.setText(str.append(e2.getActionCommand().toString(); y=Double.parseDouble(tf1.getText().trim(); else if(e2.getSource()=b0)/ 选择的是“BackSpace”按钮 if(!tf1.getText().trim().equals(“0“)/ 如果显示屏显示的不是零 if(str.length()!=1) tf1.setText(str.delete(str.length()-1,str.length

34、().toString();/ 可能抛出字符串越界异常 else tf1.setText(“0“); str.setLength(0); y=Double.parseDouble(tf1.getText().trim(); else/ 其他的数字键 tf1.setText(str.append(e2.getActionCommand().toString(); y=Double.parseDouble(tf1.getText().trim(); catch(NumberFormatException e) tf1.setText(“数字格式异常“); catch(StringIndexOutO

35、fBoundsException e) tf1.setText(“字符串索引越界“); public static void main(String args) new Caluator (); 16五、测试运行5.1 系统测试方案程序正常的响应按钮事件,输入的数值长度受变量 length 的限定,进行混合四则运算的时候,结果如果不是很大,可以正常显示,但如果很大,就可能采用科学记数方式,这样带来了进制转换时的麻烦,需要特殊的处理科学记数里的 E,当结果太大的时候,有可能超出可能表示最大值(结果溢出),这个时候就要对结果进行必要的异常处理,我在输出结果的方法内设置 if 语句,如果结果大于某一

36、值就抛出一个输出值太大的类,再使用 try-catch,捕捉输出结果的方法抛出的异常对象,然后进行重制归零的处理。5.2 运行结果分析1. 系统初始运行界面:图 1 系统初始运行界面截图172.运算器按键测试:图 2 运算器按键测试截图3.运算器进行除法运算:图 3 运算器进行除法运算截图184.运算器进行乘法运算:图 4 运算器进行乘法运算截图5.运算器进行减法运算:19图 5 运算器进行减法运算截图6.运算器进行加法运算:图 6 运算器进行加法运算截图7. 对 MS 进行测试:20图 7 运算器进行 MS 测试截图8.对 MR 进行测试:图 8 运算器进行 MR 测试截图9.对 MC 进行

37、测试:图 9 运算器进行 MC 测试截图2110.对 M+进行测试:图 10 运算器进行 M+测试截图六、设计体会通过此次课程设计,我更加深刻的理解了 java 程序设计语言的魅力。算法当然是各种程序设计语言的基础,但只有算法我们还有很多解决不了的实际问题。而 java 的核心是面向对象,面向对象就可以解决我们生活中的很多例子,而引进窗体、用户界面的内容就更加丰富了 java 程序设计语言的强大功能。Java 程序设计语言最吸引我的是它的跨平台操作,这也是它不同于且强大于其他程序设计语言之处,相同的程序,但可以在不同的操作系统下执行,这也是让我最终选择走向 java 学习的原因。虽然在这次小学

38、期也学习很多java 方面的知识,学到的东西也很多,但自己总觉得在程序设计语言方面还欠缺很多,尤其是自己选定的方向。所以,自己还需要更多的学习来丰富自己的大脑,希望在以后的课程设计过程中认真听取同学和老师建议,能够更好的运用 java 知识,把不明白的难点解决掉,使得设计更好的在实际生活中实践。22主要参考文献Java 编程入门经典 梅兴文译.第 4 版. 北京人民邮电出版社Java 程序设计实验指导 陈轶.姚晓昆编著. 机械工业出版社Java 语言程序设计教程 杨昭编著. 北京清华大学出版社跨平台程序设计语言Java 赵毅主编. 北京:清华大学出版社Java 程序设计实例教程 吴其庆编著.北京:清华大学出版社指导教师签字: 年 月 日

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报