java课程设计报告(完整版)
Java课程设计报告1
Java程序设计课程设计报告院别:计算机系班级:XXXX学号: ******XXXXX姓名: XXX指导教师:XXX日期:2013-5-24目录1概述 (3)1.1实验题目和内容 (3)1.2实验目的和要求 (3)2计算器的设计与实现 (4)2.1程序步骤 (4)2.2程序源代码 (4)3运行调试及讨论分析 (4)4实验小结与心得 (12)1概述1.1设计目的及思路通过本课程设计能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。
利用Java Applet图形界面首先开始设计一个计算器的界面,定义计算器所需要的按钮并赋给其按钮名称,使得使用计算器时简单明了,清晰可见,操作轻松。
给各个按钮进行算法,利用鼠标点击事件,当鼠标点击某个按钮时就开始执行那个按钮所定义的算法,生成数据并显示。
除数字的输入为直接进行输入外,其他运算例如+、-、*、/、开平方等算法要求计算时通过内部较为复杂的运算将结果显示在显示屏上。
当然了在输入数据时还要进行异常捕捉,防止越界的现象的发生,这也是Java语言健壮性的体现!1.2功能模块设计以下为标准计算器的基本功能:(1)加法两个数据进行加操作,可以为小数。
(2)减法两个数据进行减操作,可以为负数相减。
(3)乘法两个数相乘操作。
(4)除法两个数相除操作(5)清零将运算框清除(6)返回退回一格2计算器的设计与实现2.1程序界面2.2程序源代码import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.event.*;public class Calculator extends JFrame implements ActionListener{JPanel vv1,vv2,vv3,vv4;JTextField kk1 ; //添加数字框和符号框JButton[] r={new JButton("7"),new JButton("8"),new JButton("9"),new JButton("/"),new JButton("4"),new JButton("5"),new JButton("6"),new JButton("*"),new JButton("1"),new JButton("2"),new JButton("3"),new JButton("-"),new JButton("0"),new JButton("."),new JButton("+"),new JButton("="),new JButton("←"),new JButton("清空")};double a=0,b=0,c=0,fuhao=5;Boolean has=false;Boolean hav=true;Boolean haw=true;Calculator(String S){setTitle(S);kk1=new JTextField("0",20);kk1.setEditable(false);kk1.setFont(new Font("宋体",Font.BOLD,25));kk1.setBackground(Color.YELLOW);for(int i=16;i<18;i++){r[i].setFont(new Font("黑体",Font.BOLD,15));r[i].setForeground(Color.blue);}vv1=new JPanel(new GridLayout(4,5,5,5));vv2=new JPanel(new GridLayout(1,2,1,1));vv3=new JPanel(new FlowLayout());vv4=new JPanel(new BorderLayout());vv3.add(kk1);vv4.add(vv2,BorderLayout.NORTH);vv4.add(vv1,BorderLayout.CENTER);for(int i=0;i<16;i++)r[i].setForeground(Color.black);this.add(vv3,BorderLayout.NORTH);this.add(vv4,BorderLayout.CENTER);for(int i=16;i<18;i++)vv2.add(r[i]);for(int i=0;i<16;i++)vv1.add(r[i]);for(int i=0;i<18;i++)r[i].addActionListener(this);for(int i=16;i<18;i++){setSize(350,300);setLocation(210,205);setResizable(false);setVisible(true);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } }public void actionPerformed(ActionEvent e){if(e.getSource()==r[12]){ if(hav&&haw&&!kk1.getText().equals("0"))kk1.setText(kk1.getText()+"0");else {kk1.setText("");kk1.setText(kk1.getText()+"0");hav=true;haw=true;}}else if(e.getSource()==r[8]){ if(hav&&haw&&!kk1.getText().equals("0"))kk1.setText(kk1.getText()+"1");else {kk1.setText("");kk1.setText(kk1.getText()+"1");hav=true;haw=true;}}else if(e.getSource()==r[9]){ if(hav&&haw&&!kk1.getText().equals("0"))kk1.setText(kk1.getText()+"2");else {kk1.setText("");kk1.setText(kk1.getText()+"2");hav=true;haw=true;}}else if(e.getSource()==r[10]){ if(hav&&haw&&!kk1.getText().equals("0"))kk1.setText(kk1.getText()+"3");else {kk1.setText("");kk1.setText(kk1.getText()+"3");hav=true;haw=true;}}else if(e.getSource()==r[4]){ if(hav&&haw&&!kk1.getText().equals("0")) kk1.setText(kk1.getText()+"4");else {kk1.setText("");kk1.setText(kk1.getText()+"4");hav=true;haw=true;}}else if(e.getSource()==r[5]){ if(hav&&haw&&!kk1.getText().equals("0")) kk1.setText(kk1.getText()+"5");else {kk1.setText("");kk1.setText(kk1.getText()+"5");hav=true;haw=true;}}else if(e.getSource()==r[6]){ if(hav&&haw&&!kk1.getText().equals("0")) kk1.setText(kk1.getText()+"6");else {kk1.setText("");kk1.setText(kk1.getText()+"6");hav=true;haw=true;}}else if(e.getSource()==r[0]){ if(hav&&haw&&!kk1.getText().equals("0")) kk1.setText(kk1.getText()+"7");else {kk1.setText("");kk1.setText(kk1.getText()+"7");hav=true;haw=true;}}else if(e.getSource()==r[1]){ if(hav&&haw&&!kk1.getText().equals("0")) kk1.setText(kk1.getText()+"8");else {kk1.setText("");kk1.setText(kk1.getText()+"8");hav=true;haw=true;}}else if(e.getSource()==r[2]){ if(hav&&haw&&!kk1.getText().equals("0")) kk1.setText(kk1.getText()+"9");else {kk1.setText("");kk1.setText(kk1.getText()+"9");hav=true;haw=true;}} //数字键else if(e.getSource()==r[14]){if(kk1.getText().trim().length()>0){ a=Double.valueOf(kk1.getText());kk1.setText("");fuhao=0;has=true;hav=true;haw=false;}else if(!haw){fuhao=0;}}//+else if(e.getSource()==r[11]){if(kk1.getText().trim().length()>0){ a=Double.valueOf(kk1.getText());kk1.setText("");fuhao=1;has=true;hav=true;haw=false;} else if(!haw){fuhao=1; }}//-else if(e.getSource()==r[7]){if(kk1.getText().trim().length()>0){ a=Double.valueOf(kk1.getText());kk1.setText("");fuhao=2;has=true;hav=true;haw=false;} else if(!haw){fuhao=2;}}//*else if(e.getSource()==r[3]){if(kk1.getText().trim().length()>0){ a=Double.valueOf(kk1.getText());kk1.setText("");fuhao=3;has=true;hav=true;haw=false;} else if(!haw){fuhao=3;}}// 运算符号/else if(e.getSource()==r[15]){if(kk1.getText().length()>0&&has){b=Double.valueOf(kk1.getText()); // =if(fuhao==0){c=a+b;kk1.setText(String.valueOf(c));has=false;hav=false;}else if(fuhao==1){c=a-b;kk1.setText(String.valueOf(c));has=false;hav=false;}else if(fuhao==2){c=a*b;kk1.setText(String.valueOf(c));has=false;hav=false;}else if(fuhao==3){ if(b!=0){c=a/b;kk1.setText(String.valueOf(c));}else JOptionPane.showMessageDialog(null, "除数不能为0");has=false;hav=false;}}} // 计算else if(e.getSource()==r[13]){if(kk1.getText().indexOf(".")==-1&&kk1.getT ext().length()>0) kk1.setText(kk1.getText()+".");} //添加小数点else if(e.getSource()==r[16]){if(kk1.getText().length()>1)kk1.setText(kk1.getT ext().substring(0, kk1.getText().length()-1));else kk1.setText("0");hav=true;} //Backspaceelse if(e.getSource()==r[17]){kk1.setText("0");has=false;hav=true;}}// CEpublic static void main(String[] args){new Calculator("计算器");}}3运行调试及讨论分析将代码写好之后检查代码的正确性,检查代码无误后将代码进行调试和运行将会出现一个JavaApplet计算器界面。
java课程设计记事本设计报告
java课程设计记事本设计报告一、教学目标本课程旨在通过Java编程语言实现一个记事本应用程序,让学生掌握Java编程的基本概念和方法,培养学生的编程能力和解决问题的能力。
1.理解Java编程语言的基本语法和结构。
2.掌握Java编程中的数据类型、变量、运算符、控制语句等基本概念。
3.学习Java中的类和对象的概念,理解封装、继承和多态的原理。
4.熟悉Java中的常用类库和方法。
5.能够运用Java编程语言编写简单的程序。
6.能够使用Java编程语言实现一个记事本应用程序,包括文本的增删改查等功能。
7.能够分析并解决编程过程中遇到的问题。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力,通过小组合作完成项目。
2.培养学生的创新思维和解决问题的能力,鼓励学生进行自主学习和探索。
3.培养学生的学习兴趣和自信心,让学生感受到编程的乐趣和成就感。
二、教学内容本课程的教学内容主要包括Java编程语言的基本概念和方法,以及记事本应用程序的设计和实现。
1.Java编程语言的基本概念和方法:–数据类型、变量、运算符、控制语句等基本概念。
–类和对象的概念,封装、继承和多态的原理。
–常用类库和方法的使用。
2.记事本应用程序的设计和实现:–用户界面设计:创建文本框、按钮等控件,实现用户输入和显示功能。
–文件操作:实现文件的打开、保存、关闭等功能,使用文件读写技术。
–文本处理:实现文本的增删改查等功能,使用数据结构和算法进行文本管理。
三、教学方法本课程将采用多种教学方法,包括讲授法、讨论法、案例分析法和实验法等,以激发学生的学习兴趣和主动性。
1.讲授法:教师通过讲解Java编程语言的基本概念和方法,以及记事本应用程序的设计和实现,引导学生掌握相关知识。
2.讨论法:学生分组进行讨论,分享自己的理解和思路,互相学习和交流。
3.案例分析法:分析实际案例,让学生了解记事本应用程序的实际应用场景和设计思路。
4.实验法:学生通过编写代码和进行实验,实现记事本应用程序的功能,培养学生的实际编程能力和解决问题的能力。
java课程设计报告
java课程设计报告Java课程设计报告。
一、引言。
Java作为一种跨平台的编程语言,具有广泛的应用领域和强大的功能,因此在计算机专业课程中占据着重要的地位。
本次课程设计旨在通过对Java语言的学习和实践,提高学生对于面向对象程序设计的理解和应用能力,同时锻炼学生的编程实践能力和团队协作能力。
二、课程设计内容。
1. 课程设计主题。
本次课程设计的主题为“学生成绩管理系统的设计与实现”。
通过该主题的设计,旨在让学生通过实际的项目开发,掌握Java语言的基本语法和面向对象的编程思想,同时对软件开发的整个流程有一个清晰的认识。
2. 课程设计目标。
(1)掌握Java语言的基本语法和面向对象的编程思想;(2)了解软件开发的整个流程,包括需求分析、设计、编码、测试和维护;(3)培养学生的团队协作能力和解决问题的能力;(4)通过实际项目的开发,提高学生的编程实践能力。
三、课程设计过程。
1. 需求分析。
首先,团队成员对学生成绩管理系统的功能需求进行了详细的分析和讨论,确定了系统的基本功能模块,包括学生信息管理、课程信息管理、成绩管理等。
通过需求分析,明确了系统的功能和性能需求,为后续的设计和编码工作奠定了基础。
2. 系统设计。
在需求分析的基础上,团队成员进行了系统的整体设计和模块设计。
通过UML建模工具,绘制了系统的用例图、类图、时序图等,明确了各个模块之间的关系和交互流程。
同时,团队成员还对数据库的设计进行了详细的讨论和设计,确定了数据库的表结构和字段。
3. 编码实现。
在系统设计完成后,团队成员按照设计文档进行了编码实现工作。
在编码的过程中,严格按照Java语言的规范进行编码,同时注重代码的可读性和可维护性。
通过团队的协作和沟通,确保了各个模块的功能实现和整体功能的完整性。
4. 测试与调试。
在编码实现完成后,团队成员进行了系统的测试与调试工作。
通过单元测试、集成测试和系统测试,发现并修复了系统中存在的各种问题和bug。
java课程设计及实验报告
java课程设计及实验报告一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、面向对象编程思想以及常用的数据结构与算法。
通过课程的学习,使学生能够独立完成简单的Java程序,培养学生的编程能力和逻辑思维能力。
具体的教学目标如下:1.知识目标:–掌握Java基本语法和编程规范;–理解面向对象编程的基本概念和方法;–熟悉常用的数据结构(如数组、链表、栈、队列等)和算法(如排序、查找等)。
2.技能目标:–能够使用Java编写简单的程序,解决实际问题;–能够运用面向对象编程思想进行程序设计;–能够运用常用的数据结构与算法解决编程问题。
3.情感态度价值观目标:–培养学生的团队合作意识和沟通能力;–培养学生的创新精神和解决问题的能力;–培养学生的自主学习能力和持续学习的兴趣。
二、教学内容根据教学目标,本课程的教学内容主要包括以下几个方面:1.Java基本语法和编程规范;2.面向对象编程思想,包括类与对象、继承与多态、封装等;3.常用的数据结构与算法,包括数组、链表、栈、队列、排序、查找等;4.Java标准库的使用,包括字符串、数学运算、输入输出等;5.简单的Java编程实例和实战项目。
教学内容的安排和进度如下:•第1-2周:Java基本语法和编程规范;•第3-4周:面向对象编程思想;•第5-6周:常用的数据结构与算法;•第7-8周:Java标准库的使用;•第9-10周:简单的Java编程实例和实战项目。
三、教学方法为了达到教学目标,本课程将采用多种教学方法,包括:1.讲授法:讲解Java基本语法、面向对象编程思想和常用的数据结构与算法;2.案例分析法:分析实际的编程案例,让学生更好地理解和运用Java编程知识;3.实验法:让学生通过动手实践,巩固所学知识和技能;4.讨论法:学生进行小组讨论,培养学生的团队合作意识和沟通能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:《Java编程思想》;2.参考书:《Java核心技术》、《Head First Java》;3.多媒体资料:教学PPT、视频教程、在线编程练习题等;4.实验设备:计算机、网络环境、编程开发环境(如Eclipse、IntelliJIDEA等)。
java课程设计报告
java课程设计报告1. 引言Java作为一种全球广泛使用的编程语言,具有跨平台、可靠性强、安全性高等优点,因而备受程序员和开发者的青睐。
本篇报告旨在对我所参与的Java课程设计进行总结和评估,分享学习过程中的经验和收获,以及对未来的展望。
2. 项目背景本次课程设计项目是一个在线购物平台的开发,团队共有3名成员,我们合作进行了2个月的开发工作。
通过这个项目,我学到了许多Java编程的实践经验,不仅提高了编程技能,也增进了团队合作和沟通能力。
3. 设计过程在设计初期,我们进行了需求分析和系统设计。
我们通过与用户进行会议和讨论,了解了用户的需求和期望。
然后,我们进行了功能拆解和流程设计,使用UML建模工具绘制了用例图和类图,明确了系统的整体结构。
4. 技术选型在技术选型上,我们选择了Spring框架作为项目的基础框架,使用了Spring Boot来简化开发流程。
为了实现用户认证和授权功能,我们使用了Spring Security。
此外,为了提高系统性能和扩展性,我们采用了Spring Cloud微服务架构,使用了Eureka作为注册中心、Ribbon作为负载均衡器。
5. 开发实践在开发过程中,我们遵循了面向对象的编程思想,并且使用了版本控制工具Git,实现了团队的协同开发。
我们按照模块划分任务,每个成员负责一个或多个模块的开发。
通过定期的代码审查和团队会议,我们保持了代码的质量和一致性。
6. 问题与挑战在项目开发中,我们也遇到了一些问题和挑战。
例如,数据一致性的处理、性能优化、多线程并发等。
但通过团队成员的共同努力和合作,我们成功地克服了这些问题,并取得了较好的开发效果。
7. 项目成果与展望在项目完成后,我们实现了一个功能完备、用户友好的在线购物平台。
用户可以注册、登录、浏览商品、下订单并进行支付等操作。
同时,我们也考虑到了扩展性和性能优化的问题,系统具备一定的容错和弹性。
未来,我们希望能继续完善和优化这个系统,并根据用户的反馈做出进一步的改进。
java课程设计报告(完整版)
目录1、摘要2、概要设计3、详细设计4、测试分析5、总结6、参考文献【前言】Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。
Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
目前,很多新的技术领域都涉及Java语言,国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。
本次课程设计就是利用java语言来编写简单的计算器,能进行加、减、乘、除四则运算,下面给出了该设计的理论分析和具体步骤。
一、摘要本计算器可以进行简单的四则运算(加、减、乘、除),但仅限于十进制下。
“Backspace”按钮表示退格,“CE”按钮表示清除当前文本框内的数据,“C”按钮表示清除文本框内数据,同时var、answer清零。
该程序可在JCreator环境下直接运行。
二、概要设计1、自定义说明(1)类名:Calculator作用:主类继承的父类:JFrame类实现的接口:ActionListener类public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"}; //定义数组bstTexts来存放计算器上的各个按钮Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" "); //计算结果显示区public Calculator(){………}public void actionPerformed(ActionEvent event){………}}(2)方法名:Calculator作用:设置窗体布局public Calculator(){//Frame frame = new Frame("Calculator");super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");tForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);nListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置四个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色显示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);R);}(3)方法名:actionPerformed作用:设置各个按钮的行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){……….}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){…………}//'-'操作if (temp == button[11]){…………}//'*'操作if (temp == button[12]){…………}//'/'操作if (temp == button[13]){…………}//'='操作if (temp == EqButton && clickable == true){…………}//按下'+/-'按钮时处理{…………}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true){…………}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){………}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){………}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}2、界面设计下图为该程序运行时的界面截图:三、详细设计以下为该程序的主要代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;import java.awt.event.*;imalFormat;public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts ={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"};Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" ");//计算结果显示区public Calculator(){super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");CeButton.setForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);CeButton.addActionListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置三个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);}//设置各个按钮行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后if (temp == button[i] && clickable == true)displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){boolean isDot = false;if (displayField.getText().length() == 0)isDot = true;for (int i = 0; i < displayField.getText().length(); i++)if ('.' == displayField.getText().charAt(i)){isDot = true;break;}if (isDot == false)displayField.setText(displayField.getText() + ".");}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:le(displayField.getText());}displayField.setText("");prekey = key = 0;}//'-'操作if (temp == button[11]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 1;}//'*'操作if (temp == button[12]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 2;}//'/'操作if (temp == button[13]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 3;}}//'='操作if (temp == EqButton && clickable == true){//如果连续按'=',则进行连续运算if (prekey == 5){if (key == 0){answerd += vard;displayField.setText(df.format(answerd));}if (key == 1){answerd -= vard;displayField.setText(df.format(answerd));}if (key == 2){answerd *= vard;displayField.setText(df.format(answerd));}if (key == 3){if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= vard;displayField.setText(df.format(answerd));}}}else{vard = Double.parseDouble(displayField.getText());if (key == 0){prekey = -1;answerd += Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 1){prekey = -1;answerd -= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 2){prekey = -1;answerd *= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 3){prekey = -1;if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}}prekey = 5;}//按下'+/-'按钮时处理if (temp == button[15] && clickable == true){boolean isNumber = true;String s = displayField.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')){isNumber = false;break;}if (isNumber == true){//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-'){displayField.setText("");for (int i = 1; i < s.length(); i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsedisplayField.setText('-' + s);}}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true)String s = displayField.getText();displayField.setText("");for (int i = 0; i < s.length() - 1; i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){displayField.setText("");clickable = true;}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){vard = answerd = 0;displayField.setText("");clickable = true;}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}}public static void main(String args[]){Calculator calculator = new Calculator();calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);calculator.setSize(300,200);calculator.setVisible(true);}}四、测试分析(1)程序运行情况该程序正常的响应按钮事件,能进行简单的加、减、乘、除四则运算,在输入之前须先进行清零处理,然后再输入数值进行运算。
java课程设计实验报告
java课程设计实验报告在Java课程设计实验报告中,我们将讨论一个关于学生信息管理系统的实验。
学生信息管理系统是一个常见的课程设计题目,通过这个实验,我们可以学习到如何使用Java语言进行程序设计和开发,以及如何利用数据库进行数据管理。
本实验将涉及到Java语言的基本知识,包括面向对象的编程思想、GUI界面设计、数据库连接等方面的内容。
首先,我们需要明确学生信息管理系统的功能需求。
在这个实验中,我们需要实现对学生信息的增加、删除、修改和查询功能。
同时,我们还需要考虑到学生信息的存储和管理,这就需要用到数据库。
在设计学生信息管理系统时,我们需要考虑到系统的易用性、稳定性和安全性,这些都是一个好的软件系统应该具备的特点。
接下来,我们将讨论学生信息管理系统的设计思路。
首先,我们需要设计系统的整体架构,包括系统的模块划分、模块之间的关联关系等。
然后,我们需要设计系统的数据库结构,包括学生信息表的字段设计、索引设计等。
在数据库设计完成后,我们可以开始编写Java程序,实现对数据库的连接和操作。
在编写程序时,我们需要考虑到程序的健壮性和可维护性,这就需要我们编写规范的代码,并进行适当的注释。
在实验过程中,我们还需要进行系统的测试和调试。
测试是一个软件开发过程中非常重要的环节,通过测试,我们可以发现系统中的bug并及时进行修复。
在测试过程中,我们需要进行功能测试、性能测试、安全测试等,以保证系统的稳定性和安全性。
最后,我们需要对整个实验过程进行总结和反思。
我们可以总结实验中遇到的问题和解决方法,以及对系统进行的改进和优化。
通过这个实验,我们不仅可以学习到Java编程和数据库操作的知识,还可以提高我们的问题分析和解决能力,这对我们以后的学习和工作都是非常有益的。
总之,学生信息管理系统的设计与实现是一个非常有意义的实验课题,通过这个实验,我们可以提高我们的编程能力,加深对Java语言和数据库的理解,同时也可以培养我们的团队合作意识和问题解决能力。
JAVA课程设计报告_完整版
《JAVA面向对象程序设计》课程设计报告(2011-2012学年第2学期)系别:厦门理工学院计算机科学与技术系专业名称:10级网络工程1班课程设计科目:《JAVA面向对象程序设计》课程设计学生姓名:学号:指导教师:***成绩:完成时间:2012年7月6日题目JAVA程序课程设计任务一手机号码检测器(一)设计任务与目标任务:手机号码是由11位数字构成,用户在输入手机号码时经常混乱输入若干位数字或字母,要求你编写一个程序检测用户所输入的手机号码是否符合规则。
要求目标:检测所输入的手机号码是否是11位检测每一位是否都为数字。
分析论证:本题目要求对用户输入的手机号码进行检测,判断输入的正确性。
曾经有做过类似字符比较的题目,可以借鉴。
将字符的比较运用进来,把用户的输入字符和正确的进行比较。
但是必须满足多次输入和错误提醒。
同时还可以添加提示错误的位置和错误字符是什么。
程序正确运行时可以满足以上功能,基本可以达到题目要求了。
(二)方案设计与论证为了满足多次输入的要求,将提示和输入的操作放在一个循环体中,我采用了do_whiele()循环。
每次输入结束后提示是否继续输入。
在循环中逐步对输入的号码位数和字符类型进行检测。
位数可以分超出和不足,并均给出错误提示。
如果位数满足要求后对手机号码类型进行检测。
一般手机号在0~9之间,所以不满足的字符将报错。
通过将输入的整个字符串调用charAt(int i)方法对字符串逐位比较。
本程序的特点在于可以满足了多次输入和错误字符的显示(内容和位置)。
在程序的调试过程中,有过多次输入正确的号码也会报错(还会报错0位错误),这是因为记录错误位子的变量放在错误条件下并且未在循环体中初始化为0。
最终解决了此问题。
(三)程序框图或流程图,程序清单与调用关系(四)程序运行的测试与分析实现了多次输入和错误提示,可以判断输入的号码的错误位置及字符,错误类型,满足了设计构思要求。
最终结果如下图:实验结果截图:(五)结论心得实验过程中对于判断条件的选择出现了问题,开始时觉得要对输入的字符一个一个的比较,这样增加了难度也不方便实现。
java课程设计实验报告
java课程设计实验报告Java课程设计实验报告。
一、实验目的。
本次实验旨在通过设计一个简单的Java程序,加深对Java语言的理解和应用,同时锻炼学生的编程能力和解决问题的能力。
二、实验内容。
本次实验要求设计一个简单的学生成绩管理系统,实现对学生成绩的录入、查询、修改和删除等功能。
具体要求如下:1. 设计一个学生类,包括学生的基本信息(学号、姓名、性别等)和成绩信息(语文、数学、英语等科目成绩)。
2. 实现学生成绩的录入功能,可以一次性录入多个学生的成绩信息。
3. 实现学生成绩的查询功能,可以根据学号或姓名查询学生的成绩信息。
4. 实现学生成绩的修改功能,可以修改指定学生的成绩信息。
5. 实现学生成绩的删除功能,可以删除指定学生的成绩信息。
三、实验设计。
在本次实验中,我首先设计了一个学生类,包括学号、姓名、性别和成绩等属性,并提供了相应的构造方法和get、set方法。
然后,我设计了一个学生成绩管理系统的主类,其中包括录入、查询、修改和删除等功能的实现。
在录入功能中,我使用Scanner类实现了从控制台输入学生信息的功能,并将学生信息保存到一个ArrayList中。
在查询功能中,我通过学号或姓名遍历ArrayList,找到相应的学生信息并输出。
在修改功能中,我同样通过遍历ArrayList找到指定学生信息,并提供修改选项,用户可以选择要修改的成绩信息进行修改。
在删除功能中,我也是通过遍历ArrayList找到指定学生信息,并进行删除操作。
四、实验结果。
经过一系列的调试和测试,我成功实现了学生成绩管理系统的设计要求。
用户可以通过简单的命令行界面,实现学生成绩的录入、查询、修改和删除等功能。
系统运行稳定,操作简单,符合设计要求。
五、实验总结。
通过本次实验,我对Java语言的面向对象编程有了更深入的理解,掌握了ArrayList的使用方法,提高了编程能力和问题解决能力。
同时,通过设计一个实用的学生成绩管理系统,我也加深了对Java语言的应用和实践,为以后的学习和工作打下了坚实的基础。
《JAVA程序设计》课程设计五篇
《JAVA程序设计》课程设计五篇第一篇:《JAVA程序设计》课程设计JAVA程序设计》课程设计------Chatter即时聊天工具班级:姓名:学号:指导老师:日期:《目录1.引言.....................................................................................3 2.功能简介..............................................................................3 3.开发环境..............................................................................3 4.课程设计目的.......................................................................3 5.使用手册..............................................................................3 6.程序源代码...........................................................................4 4.1 serverJFrame.java (4)4.2 clientJFrame.java...............................................................9 7.程序运行效果图. (14)8.心得体会 (16)1.引言相信大家一想到基于TCP/IP协议的通信,都会想到利用Socket 类对象建立一条可靠的连接,这样就客户机/服务器就在这条连接上可靠地传输数据。
java课程设计报告-java课程设计
Java课程设计报告题目: 文本编辑器班级:学号:姓名:成绩:日期:年月日目录一、综合设计得目得与要求 (3)二、综合设计正文 (3)1、系统分析…………………………………………………………31、1系统开发背景、开发范围、建设目标与必要性开发 (3)1、2需求分析 (3)2、系统设计 (3)2、1功能设计 (3)2、2系统运行环境与开发工具 (4)3 、系统实施.....................................................................43、1源程序 (4)3、2、系统测试及部分截图 (1)2三、综合设计总结或结论 (13)四、参考文献 (13)《文本编辑器》一、综合设计得目得与要求要求在学生能够较熟练使用java程序设计语言进行软件代码得编写,同时还要具备较好得项目分析得能力,加深对相关课程基本内容得理解。
同时,在程序设计方法以及上机操作等基本技能与科学作风方面受到比较系统得练习.二、综合设计正文1 系统分析1、1系统开发背景、开发范围、建设目标与必要性随着计算机科学日渐成熟,其强大得功能已为人们深刻认识,它已进入人类社会得各个领域并发挥着越来越重要得作用。
当然对文本编辑操作仍然占据着重要地位,记事本就是简单便捷得文本编辑器,可实现对文本编辑操作得基本功能.1、2需求分析程序设计主要分为两大部分:简单GUI设计与程序功能设计。
通过GUI设计实现图形用户界面,提供图形菜单,方便用户操作.使用Java语言编写一个能够对输入文字进行操作,具有合理得界面,能够在界面中实现右键快捷方式,对文档内容进行编辑操作,并且能够顺利退出得程序。
通过设计与实现一个具有基本功能得文本编辑器,提高我们对Java语言设计得掌握能力,理论联系实际,进一步提高软件开发技术,从而培养我们分析、解决问题得能力。
2系统设计2、1功能设计根据系统自带得文档编辑器得特征设计,包括如下得功能模块:一、整体结构框架包括:菜单栏与文档编辑区二、每个框架分别包含不同得子框架,各个模块得具体框架:1、菜单栏:文件、编辑、工具、帮助2、菜单栏中各个子菜单功能文件:新建、打开、保存、另存为、退出编辑:剪切、复制、粘贴工具:查找、替换3、子菜单功能得实现主要得几个功能介绍1)打开与另存为:两个窗体调用系统函数直接利用,注意格式得选择2)查找:查找内容、查找、查找下一个4。
java课程设计报告.doc
java课程设计报告.doc一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、流程控制、数据结构、面向对象编程等知识,培养学生编写简单Java应用程序的能力,提高学生解决实际问题的实践能力。
1.掌握Java基本语法和常用数据类型。
2.理解面向对象编程的基本概念,如封装、继承、多态。
3.熟悉Java常用类库和API。
4.掌握Java程序的调试和运行方法。
5.能够使用Java编写简单的应用程序。
6.能够运用面向对象编程思想解决实际问题。
7.具备基本的Java程序调试和优化能力。
情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。
2.培养学生热爱编程、积极探索的精神。
3.增强学生对计算机科学的兴趣和自信心。
二、教学内容本课程的教学内容主要包括Java基本语法、流程控制、数据结构、面向对象编程等。
具体安排如下:1.Java基本语法:变量、数据类型、运算符、表达式、语句等。
2.流程控制:顺序结构、选择结构、循环结构等。
3.数据结构:数组、链表、栈、队列、树等。
4.面向对象编程:类、对象、封装、继承、多态等。
5.Java常用类库和API:String类、数学类、日期类等。
6.综合实践:编写简单的Java应用程序,如计算器、通讯录等。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法相结合,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解Java编程的基本概念和知识点,使学生掌握相关知识。
2.案例分析法:分析实际案例,让学生了解Java编程在实际应用中的优势和特点。
3.实验法:引导学生动手实践,培养学生的编程能力和实际问题解决能力。
四、教学资源1.教材:《Java编程思想》、《Java核心技术》等。
2.参考书:《Java编程指南》、《Java并发编程》等。
3.多媒体资料:PPT、教学视频、在线教程等。
4.实验设备:计算机、网络环境、编程软件等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面、客观、公正地评价学生的学习成果。
java课程设计走迷宫报告
java课程设计走迷宫报告一、教学目标本节课的教学目标是让学生掌握Java编程的基本语法和流程控制,学会使用Java编写简单的程序,培养学生的编程思维和解决问题的能力。
具体包括以下三个方面的目标:1.知识目标:使学生了解Java编程语言的基本语法、数据类型、变量、运算符、流程控制语句等基本概念。
2.技能目标:培养学生能够使用Java编写简单的程序,如计算器、猜数字游戏等,提高学生的编程实践能力。
3.情感态度价值观目标:培养学生对编程的兴趣,激发学生的创新意识,培养学生的团队合作精神和自主学习能力。
二、教学内容本节课的教学内容主要包括以下几个部分:1.Java编程语言的基本语法和数据类型。
2.变量的声明、赋值和类型转换。
3.运算符的使用和运算规则。
4.流程控制语句(条件语句、循环语句)的编写和运用。
5.实例分析:编写简单的Java程序,如计算器、猜数字游戏等。
三、教学方法为了达到本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:讲解Java编程语言的基本语法、数据类型、变量、运算符、流程控制语句等概念。
2.案例分析法:分析实例程序,使学生了解如何使用Java编写简单的程序。
3.实验法:让学生动手编写Java程序,培养学生的编程实践能力。
4.讨论法:学生进行小组讨论,分享学习心得,提高学生的团队合作精神。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的Java编程教材,为学生提供系统的学习资料。
2.参考书:提供相关的Java编程参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT,直观地展示Java编程的概念和实例。
4.实验设备:为学生提供电脑、编程环境等实验设备,方便学生进行编程实践。
五、教学评估本节课的教学评估将采用多元化的评估方式,以全面、客观、公正地评价学生的学习成果。
具体包括以下几个方面:1.平时表现:评估学生在课堂上的参与度、提问回答、小组讨论等,以考察学生的学习态度和积极性。
java课程设计设计实验报告
java课程设计设计实验报告一、教学目标本课程旨在通过Java编程语言的学习,让学生掌握Java编程的基本语法、流程控制、数据结构、面向对象编程等基本知识,培养学生运用Java语言解决实际问题的能力。
具体目标如下:1.知识目标:(1)理解Java编程语言的基本语法和编程规范;(2)掌握Java中的基本数据类型、运算符、表达式;(3)了解Java的流程控制语句,如if、for、while等;(4)熟悉Java数组、字符串、集合等数据结构的使用;(5)理解面向对象编程的基本概念,如类、对象、封装、继承、多态等;(6)掌握Java异常处理机制和文件操作。
2.技能目标:(1)能够使用Java编写简单的程序,实现基本的功能;(2)能够运用面向对象编程思想,设计并实现具有一定复杂度的程序;(3)具备阅读Java代码的能力,能够理解并修改他人编写的程序;(4)掌握使用Java开发工具,如Eclipse、IntelliJ IDEA等;(5)了解Java程序的调试和性能优化方法。
3.情感态度价值观目标:(1)培养学生对编程语言的兴趣,激发学生主动学习的动力;(2)培养学生团队合作精神,提高学生沟通协作能力;(3)培养学生面对挑战、解决问题的信心和勇气;(4)培养学生具有良好的代码规范和编程习惯。
二、教学内容本课程的教学内容主要包括Java编程语言的基本语法、流程控制、数据结构、面向对象编程等。
具体安排如下:1.第一章:Java入门,介绍Java编程语言的基本概念、环境搭建和基本语法;2.第二章:基本数据类型和运算符,学习Java中的整数、浮点数、字符、布尔等数据类型以及运算符;3.第三章:流程控制语句,学习if、for、while等流程控制语句的使用;4.第四章:数组和字符串,学习数组的声明、初始化和使用,字符串的创建、操作和转换;5.第五章:集合框架,学习List、Set、Map等集合接口及其实现类的使用;6.第六章:面向对象编程,学习类、对象、封装、继承、多态等概念及应用;7.第七章:异常处理和文件操作,学习Java异常处理机制和文件读写方法;8.第八章:Java编程实践,通过案例分析法和实验法,巩固所学知识,提高实际编程能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录1、摘要2、概要设计3、详细设计4、测试分析5、总结6、参考文献【前言】Java不依赖平台的特点使得它受到广泛的关注,Java已成为网络时代最重要的语言之一。
Java语言不仅是一门正在被广泛使用的编程语言,而且已成为软件设计开发者应当掌握的一门基础语言。
目前,很多新的技术领域都涉及Java语言,国内外许多大学已将Java语言列入了本科教学计划,掌握Java已经成为共识。
本次课程设计就是利用java语言来编写简单的计算器,能进行加、减、乘、除四则运算,下面给出了该设计的理论分析和具体步骤。
一、摘要本计算器可以进行简单的四则运算(加、减、乘、除),但仅限于十进制下。
“Backspace”按钮表示退格,“CE”按钮表示清除当前文本框内的数据,“C”按钮表示清除文本框内数据,同时var、answer清零。
该程序可在JCreator环境下直接运行。
二、概要设计1、自定义说明(1)类名:Calculator作用:主类继承的父类:JFrame类实现的接口:ActionListener类public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"}; //定义数组bstTexts来存放计算器上的各个按钮Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" "); //计算结果显示区public Calculator(){………}public void actionPerformed(ActionEvent event){………}}(2)方法名:Calculator作用:设置窗体布局public Calculator(){//Frame frame = new Frame("Calculator");super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");tForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);nListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置四个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色显示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);R);}(3)方法名:actionPerformed作用:设置各个按钮的行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){……….}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){…………}//'-'操作if (temp == button[11]){…………}//'*'操作if (temp == button[12]){…………}//'/'操作if (temp == button[13]){…………}//'='操作if (temp == EqButton && clickable == true){…………}//按下'+/-'按钮时处理{…………}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true){…………}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){………}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){………}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}2、界面设计下图为该程序运行时的界面截图:三、详细设计以下为该程序的主要代码:import javax.swing.*;import java.awt.*;import javax.swing.event.*;import java.awt.event.*;imalFormat;public class Calculator extends JFrame implements ActionListener{private static String[] btnTexts ={"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","+/-"};Button button[] = new Button[16];Button BkButton,CeButton,CButton,EqButton;boolean clickable; //控制当前能否按键double vard, answerd; //用来保存double型数据的中间值(vard)和最后结果(answerd)short key = -1, prekey = -1; //key用来保存当前进行何种运算,prekey用来保存前次进行何种运算DecimalFormat df; //设置数据输出精度private JTextField displayField = new JTextField(" ");//计算结果显示区public Calculator(){super("Calculator"); //显示主窗口标题“Calculator”df = new DecimalFormat("0.00000000"); //设置数据输出精度(对于double型值)BkButton = new Button("Backspace");BkButton.setForeground(Color.red);CeButton = new Button("CE");CeButton.setForeground(Color.red);CButton = new Button("C");CButton.setForeground(Color.red);EqButton = new Button("=");EqButton.setForeground(Color.red); //将“Backspace”、“CE”、”C”、“=”显示为红色BkButton.addActionListener(this);CeButton.addActionListener(this);CButton.addActionListener(this);EqButton.addActionListener(this);displayField.setHorizontalAlignment(JTextField.RIGHT); //将计算结果显示在displayField的右面JPanel p1 = new JPanel(new FlowLayout()); //以FlowLayout布局p1 p1.add(BkButton);p1.add(CeButton);p1.add(CButton);p1.add(EqButton); //设置三个按钮:"Backspace","CE","C","="JPanel p2 = new JPanel(new GridLayout(2,1)); //以GridLayout布局p2 p2.add(displayField);p2.add(p1); //加入显示结果的JTextField和p1JPanel p3 = new JPanel(new GridLayout(4,4)); //以GridLayout布局p3 for(int i = 0;i < btnTexts.length;i++){button[i] = new Button(btnTexts[i]); //将数组btnTexts[]的值赋给数组button[] button[i].setForeground(Color.blue); //组件button的前景色示蓝色p3.add(button[i]);button[i].addActionListener(this);}Container cp = this.getContentPane(); //采用默认的BorderLayout布局cpcp.add(p2,BorderLayout.NORTH);cp.add(p3,BorderLayout.CENTER);}//设置各个按钮行为public void actionPerformed(ActionEvent event){boolean sign = false; //判断是否是double型数参与运算,是为true,不是为falseObject temp = event.getSource();try{for (int i = 0; i <= 9; i++) //如果按下数据按钮,将按下的按钮代表的数据插入的当前文本框字符串之后if (temp == button[i] && clickable == true)displayField.setText(displayField.getText() + Integer.toString(i));//按下'.'按钮时,判断当前文本框内字符串中含不含'.',如果已含,则不允许再插入'.'if (temp == button[14] && clickable == true){boolean isDot = false;if (displayField.getText().length() == 0)isDot = true;for (int i = 0; i < displayField.getText().length(); i++)if ('.' == displayField.getText().charAt(i)){isDot = true;break;}if (isDot == false)displayField.setText(displayField.getText() + ".");}if ( (temp == button[10] || temp == button[11] || temp == button[12] || temp == button[13]) && clickable == true){//'+'操作if (temp == button[10]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:le(displayField.getText());}displayField.setText("");prekey = key = 0;}//'-'操作if (temp == button[11]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 1;}//'*'操作if (temp == button[12]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 2;}//'/'操作if (temp == button[13]){switch (prekey){case 0:answerd += Double.parseDouble(displayField.getText());break;case 1:answerd -= Double.parseDouble(displayField.getText());break;case 2:answerd *= Double.parseDouble(displayField.getText());break;case 3:if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}elseanswerd /= Double.parseDouble(displayField.getText());break;default:answerd = Double.parseDouble(displayField.getText());}displayField.setText("");prekey = key = 3;}}//'='操作if (temp == EqButton && clickable == true){//如果连续按'=',则进行连续运算if (prekey == 5){if (key == 0){answerd += vard;displayField.setText(df.format(answerd));}if (key == 1){answerd -= vard;displayField.setText(df.format(answerd));}if (key == 2){answerd *= vard;displayField.setText(df.format(answerd));}if (key == 3){if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= vard;displayField.setText(df.format(answerd));}}}else{vard = Double.parseDouble(displayField.getText());if (key == 0){prekey = -1;answerd += Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 1){prekey = -1;answerd -= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 2){prekey = -1;answerd *= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}if (key == 3){prekey = -1;if (Double.parseDouble(displayField.getText()) == 0){displayField.setText("除数不能为零");clickable = false;}else{answerd /= Double.parseDouble(displayField.getText());displayField.setText(df.format(answerd));}}prekey = 5;}//按下'+/-'按钮时处理if (temp == button[15] && clickable == true){boolean isNumber = true;String s = displayField.getText();for (int i = 0; i < s.length(); i++)if (! (s.charAt(i) >= '0' && s.charAt(i) <= '9' || s.charAt(i) == '.' || s.charAt(i) == '-')){isNumber = false;break;}if (isNumber == true){//如果当前字符串首字母有'-'号,代表现在是个负数,再按下时,则将首符号去掉if (s.charAt(0) == '-'){displayField.setText("");for (int i = 1; i < s.length(); i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//如果当前字符串第一个字符不是符号,则添加一个符号在首字母处elsedisplayField.setText('-' + s);}}//按下'Backspace'键,利用循环将当前字符串中的最后一个字母删除if (temp == BkButton && clickable == true)String s = displayField.getText();displayField.setText("");for (int i = 0; i < s.length() - 1; i++){char a = s.charAt(i);displayField.setText(displayField.getText() + a);}}//按下'CE'按钮,将当前文本框内数据清除if (temp == CeButton){displayField.setText("");clickable = true;}//按下'C'按钮,文本框内数据清除,同时var,answer清0if (temp == CButton){vard = answerd = 0;displayField.setText("");clickable = true;}}//输入中如果有操作非法,比如按下两次'+',捕获异常catch (Exception e){displayField.setText("操作非法");clickable = false;}}public static void main(String args[]){Calculator calculator = new Calculator();calculator.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);calculator.setSize(300,200);calculator.setVisible(true);}}四、测试分析(1)程序运行情况该程序正常的响应按钮事件,能进行简单的加、减、乘、除四则运算,在输入之前须先进行清零处理,然后再输入数值进行运算。