1、Java语言程序设计课程设计黑龙江科技学院计算机与信息工程学院Java语言程序设计课程设计报告姓 名: 班 级: 指导教师: 2010年7月7日课程设计综合成绩评定设计题目一: 计算器程序 设计题目二: 记事本程序 考核项目分值AC得分设计情况(共70分)设计工作量与难度20设计工作量大与设计有一定难度设计工作量与难度一般,基本达到了要求设计方案15设计方案正确、合理设计方案较正确、基本合理,但不是最优设计完成情况35完成了选题的设计内容,设计功能完整,相关算法设计正确,程序结果正确、直观性好基本完成了选题的设计内容及主要选题功能,相关算法设计基本正确,程序结果正确设计报告(共15分)报告组织
2、结构及内容10内容组织及结构合理、内容充实、层次清晰、图表得当内容组织及结构较合理、内容较充实、层次较清晰、图表应用基本得当报告排版格式5格式规范,完全符合要求格式基本规范,基本符合要求设计态度(共15分)15设计态度认真、积极设计态度比较认真综合得分课程设计综合成绩(折合为优、良、中、及格与不及格计)其它说明:目 录一、设计内容 2二、设计过程 22.1需求分析 22.2概要设计 22.3详细设计 32.4代码实现 52.5程序运行与发布 10一、设计内容 11二、设计过程 112.1需求分析 112.2概要设计 112.3详细设计 112.4代码实现 122.5程序运行与发布 18三、总结
3、 19四、参考文献 19一、设计内容设计GUI界面的简易计算器。通过框架、文本框、面板、按钮等组件的综合应用实现计算器的加、减、乘、除、取余等简单运算。二、设计过程2.1需求分析所设计的GUI界面计算器是一个使用很方便的程序,能进行加、减、乘、除等运算。通过设置“Back”按钮,方便删除输入的错误数字,还增加了清空“C”的按钮,方便快速进入下一轮的运算。2.2概要设计1.类中的主要成员变量及其属性如下:名称变量类型成员变量描述fJFrame框架tfJTextArea输入输出文本框bcJButton退格按钮cJButton清空按钮plus,jian,cheng,chu,equ,bfhJButto
4、n运算符按钮bJButton按钮数组mint数组下标argint存储输入的第一个数tdouble除法运算的结果flagboolean第一次输入fhString保存中间运算符的字符型变量2.方法名称功能备注actionPerformed处理ActionEvent事件接口方法calculate计算成员方法main程序入口主方法2.3详细设计引入包:import javax.swing.*;import java.awt.*;import java.awt.event.*;字符串处理:String text = text1.substring(0, text1.length()-1); 提取下标为0
5、之下标为text1.length()-2的字串 a=s1.charAt(m); 返回字符串第m位置的字符创建Calculator类实现ActionListener接口:public class Calculator implements ActionListener;首先声明各个对象,创建各个变量:JFrame f; JTextField tf;JButton bc,c,plus,jian,cheng,chu,equ,bfh;/按钮 退格,清空,加,减,乘,除,等号,百分号JButton b=new JButton10; /按钮数组,数字键09double t;/除法运算的结果int m,ar
6、g;/m数字按钮的下标,arg存储输入的第一个数final int slength=20; /设置结果显示有效长度 String fh = null;/保存中间运算符的字符型变量String op=;boolean flag = true;/第一次输入界面设计:在disp()方法中进行界面设计。 创建标题为“简易计算器”的JFrame框架,采用FlowLayout布局方式,在窗体中添加tf文本框,f.add(tf); 创建四个面板添加各个按钮,各个面板采用网格布局,用for循环控制数字按钮的添加,添加按钮使用内部方法add();for(m=7;i!=11;i+,m+) bm=new JButt
7、on(String.valueOf(m);/创建数字按钮 pa2L.add(bm); bm.addActionListener(this); if(i=3) m=3; if(i=6) m=0; if(i=9) m=-1; 为各个按钮注册监听器,addActionListener();单击JFrame框架上的关闭按钮时,JFrame会自动隐藏窗口,但没有真正关闭,窗口还在内存中;所以继承WindowAdapter适配器类实现窗口的关闭;f.addWindowListener(new WindowAdapter()/关闭窗口 public void windowClosing(WindowEven
8、t e) System.exit(1); );事件响应: if(0=s.charAt(0)&s.charAt(0)=9) if(flag) tf.setText(s+.); flag = false; else if(text.equals(0) tf.setText(s+.); else tf.setText(text+s+.); if(!op.equals(=) arg = Integer.parseInt(text); System.out.println(arg); tf.setText(s+.); op = =; 如果第一次输入数字,则文本框显示数字+“.”,并将flag置为fals
9、e,若在输入数字加在第一次输入内容之后,将数字保存在arg变量中。 按下运算符之后,将运算符保存在fh变量中,并设置变量op的值。 按下等号后调用calculate()方法计算。 public void calculate(int n) System.out.println(n); if(fh.equals(+) arg+=n; else if (fh.equals(-) arg-=n; else if (fh.equals(*) arg*=n; else if (fh.equals(%) arg%=n; else if (fh.equals(=) arg=n; tf.setText(+arg
10、+.); if (fh.equals(/) t=(double)arg/n; tf.setText(+t); 退格 s1 = s1.substring(0, text1.length()-1);提取小数点之前的所有数据。 用for循环实现退格操作, for (m=0;ms1.length()-1;m+) /按一下,删除尾部一位 a=s1.charAt(m); tf.setText(tf.getText()+a); if(m=s1.length()-2) tf.setText(tf.getText()+.); a=s1.charAt(m);返回第m位置的字符串。main()方法: 创建Calcu
11、lator类对象,调用disp()方法。2.4代码实现import javax.swing.*;import java.awt.*;import java.awt.event.*;public class Calculator implements ActionListener JFrame f; JTextField tf; JButton bc,c,plus,jian,cheng,chu,equ,bfh;/退格,清空,加,减,乘,除,等号,百分号 JButton b=new JButton10; /按钮数组,数字键09 double t;/除法运算的结果 int m,arg;/m数字按钮的
12、下标,arg存储输入的第一个数 final int slength=20; /设置结果显示有效长度 String fh = null;/保存中间运算符的字符型变量 boolean flag = true;/第一次输入 String op=; public void disp() f=new JFrame(简易计算器); f.setBounds(400,300,220,240);/窗体的大小以及位置 f.setLayout(new FlowLayout();/流式布局 f.setResizable(false);/固定窗体的大小 tf=new JTextField(16); tf.setText
13、(0.);/设置文本框的初始值为0 tf.setHorizontalAlignment(SwingConstants.RIGHT);/文本框内的数字右对齐 tf.setEditable(false);/文本框为不可编辑 f.add(tf); /放置一个面板用来放置Back,C按钮 Panel pa1=new Panel(); f.add(pa1); pa1.setLayout(new GridLayout(1,2,5,5); bc=new JButton( Back ); bc.setForeground(Color.BLUE);/设置字体颜色 pa1.add(bc); c=new JButt
14、on( C ); c.setForeground(Color.BLUE); pa1.add(c); Panel pa2=new Panel(); f.add(pa2); pa2.setLayout(new GridLayout(1,2,1,1);/网格布局 /左侧面板放置数字按钮 Panel pa2L=new Panel(); f.add(pa2L); pa2L.setLayout(new GridLayout(4,3,3,3); int i=1; for(m=7;i!=11;i+,m+) bm=new JButton(String.valueOf(m);/创建数字按钮 pa2L.add(bm
15、); bm.addActionListener(this); if(i=3) m=3; if(i=6) m=0; if(i=9) m=-1; /右侧面板放置运算符按钮 Panel pa2R=new Panel(); f.add(pa2R); pa2R.setLayout(new GridLayout(4,1,3,3); plus=new JButton(+); plus.setForeground(Color.RED); jian=new JButton(-); jian.setForeground(Color.RED); cheng=new JButton(*); cheng.setFore
16、ground(Color.RED); chu=new JButton(/); chu.setForeground(Color.RED); equ=new JButton(=); equ.setForeground(Color.RED); bfh=new JButton(%); bfh.setForeground(Color.RED); pa2R.add(cheng); pa2R.add(jian); pa2R.add(plus); pa2R.add(equ); pa2L.add(bfh); pa2L.add(chu); bc.addActionListener(this); c.addActi
17、onListener(this); plus.addActionListener(this); jian.addActionListener(this); cheng.addActionListener(this); chu.addActionListener(this); equ.addActionListener(this); bfh.addActionListener(this); f.addWindowListener(new WindowAdapter()/关闭窗口 public void windowClosing(WindowEvent e) System.exit(1); );
18、 f.setVisible(true); public void actionPerformed(ActionEvent e) String s=e.getActionCommand(); String text1 = tf.getText(); String text = text1.substring(0, text1.length()-1); if(0=s.charAt(0)&s.charAt(0)1) tf.setText(); for (m=0;ms1.length()-1;m+) /按一下,删除尾部一位 a=s1.charAt(m); tf.setText(tf.getText()
19、+a); if(m=s1.length()-2) tf.setText(tf.getText()+.); else tf.setText(0.); public void calculate(int n) System.out.println(n); if(fh.equals(+) arg+=n; else if (fh.equals(-) arg-=n; else if (fh.equals(*) arg*=n; else if (fh.equals(%) arg%=n; else if (fh.equals(=) arg=n; tf.setText(+arg+.); if (fh.equa
20、ls(/) t=(double)arg/n; tf.setText(+t); public static void main(String args) Calculator cal=new Calculator(); cal.disp();/调用disp()方法 2.5程序运行与发布在Eclipse集成环境中,直接运行Calculator主类,即可执行日历记事本程序,程序运行结果如图所示: 计算器程序界面一、设计内容 设计记事本程序,实现新建、打开、保存、复制、粘贴、设置字体等功能。二、设计过程2.1需求分析 所设计的记事本程序在窗体中添加了菜单条、工具栏,用工具栏实现快速打开、保存等功能。在
21、编辑菜单下有复制、剪切、粘贴功能。2.2概要设计1.类中的主要成员变量及其属性如下:名称变量类型成员变量描述jtaJTextArea文本域jmbJMenuBar菜单条jmf,jme,jmgJMenu文件、编辑、格式jmin,jmio, jmis,copy,cut,pasteJMenuItem新建、打开、保存、复制、剪切、粘贴jcuti1,jxieti1JCheckBoxMenuItem粗体、斜体2.方法名称功能备注TextEdit创建窗口构造方法actionPerformed处理ActionEvent事件接口方法windowClosing关闭窗体成员方法main程序入口主方法2.3详细设计引入
22、包:import javax.swing.*;import java.awt.*;import java.awt.event.*; import java.io.*;创建TextEdit类实现各个接口:public class Calculator implements ActionListener,ItemListener, WindowListener ;界面设计: 初始化一个容器,Container c = this.getContentPane();不能直接Jframe上添加组件,必须先调用getContentPane()方法。创建JscrollPane对象jsp,JtextArea不
23、具备滚动能力,但实现了javax.swing包中的javax.swing.ScrollPane接口,允许把它放在JscrollPane中从而实现JtextArea的滚动。向容器中添加菜单条、工具栏,分别在其中添加菜单项、复选菜单项以及按钮。事件响应: 重写actionPerfored()方法,e.getSource()返回发生Event的对象,获得事件源。 新建,将文本区内容设为空;复制、剪切、粘贴分别调用javax.swing包中的方法。单击复选菜单项设置字体,实现ItemListener接口,重写itemStateChanged()方法,getState()返回复选菜单项的状态。关闭窗体,
24、重写WindowListener接口中的方法,但其中六个方法的方法体为空。创建确认对话框,int JOptionPane.showConfirmDialog(所属Jframe,要求确认内容,对话框标题,yes-no按钮)。打开、保存事件,先创建对象,然后用读写方法从文件中读取数据或将数据写入文件,最后关闭数据流。构造方法: 在方法中为各个组件注册监听器。2.4代码实现import java.io.*;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class TextEdit extends JFram
25、e implements ActionListener,ItemListener,WindowListener Container c = this.getContentPane();/初始化一个容器 JTextArea jta = new JTextArea(简易记事本,23,15); JScrollPane jsp = new JScrollPane(jta);/创建JScrollPane对象,并将jta放入JScrollPane JMenuBar jmb = new JMenuBar(); JToolBar jToolBar = new JToolBar(); JButton jButton1 = new JButton(打开); JButton jButton2 =new JButton(新建); JButton jButton3 = new JButton(保存); JMenu jmf = new
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1