版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中南民族大学管理学院学生实验报告(综合设计)课程名称:面向对象程序设计(java)选题名称: 整数进制转换 年 级: 09 级 专 业:信息管理与信息系统指导教师:*老师 实验地点:管理学院综合实验室 完成时间: 2011年6月6日 2010 学年至 2011 学年度第 2 学期组长:覃冬丽 学号:成员:姓 名学 号所做的贡献贡献分目 录一、 课程设计目的二、 课程设计总体要求三、 题目描述四、 问题分析五、 问题分解六、 系统设计七、 具体实现(编码)八、 系统测试和分析九、 难点及关键技术分析十、 心得体会一、课程设计目的:1. 学会运用Java程序开发的环境搭建与配置,并在实际运用中学习
2、和掌握Java程序开发的全过程。2. 进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。3. 通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。二、 课程设计总体要求:1. 问题的描述与程序将要实现的具体功能。2. 程序功能实现的具体设计思路或框架,并检查流程设计。3. 代码实现。4. 程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。5. 设计小结。三、 题目描述整数进制转换。输入一个十进制整数,分别以二进制、八进制、十六进制形式输出该整数。要求:整数文本行可以编辑,其他文本行仅用于显示不
3、可以编辑;整数文本行响应文本编辑事件;当输入数据错误时,处理异常,弹出对话框,提示重新输入信息。四、 问题分析(问题范围、系统的功能、对性能的要求、应用环境的要求)1、 问题范围对整数进制转换。必须在整数范围内才能输出相对应的进制。若为非整数范围或超出范围,则显示消息提醒错误。2、系统的功能进制转换器:转换器界面由要转换的数据和结果组成,十进制整数输入文本行可以编辑,其他文本行仅用于显示不可以编辑;整数文本行响应文本编辑事件;当输入数据错误时,处理异常,弹出对话框,提示重新输入信息。能分别进行十进制转换为二进制、八进制、十六进制的转换,以及消息错误提示。在转换器和弹出的消息提示界面有相关的最小
4、化、关闭等按钮可以操作。3、 对性能的要求(1) 具有较强的实用性(2) 易于理解和应用(3) 对程序的配置要求不高,能广泛应用4、应用环境的要求JDK 成功安装,设置环境变量(JAVA_HOME= C:Program FilesJavajdk1.6.0_10classpath= .;C:Program FilesJavajdk1.6.0_10lib;Path= C:Program FilesJavajdk1.6.0_10bin;)五、问题分解 可分以下步骤进行:1、 分析找出问题域中的对象,并将对象归类,注意筛选掉不必要的对象或类。对象:属于BinaryJFrame主类的对象: Bounds
5、、Background、DefaultCloseOperation、ContentPane、Layout 属于Boolean类的对象: Resizable、Editable、Visible 属于Color类的对象:lightGray 属于String类的对象: labelstr 属于Integer类的对象: i 属于JtextField类的对象:textsi类:包括上述所有类及父类Jframe。2、确定类的属性。BinaryJFrame: public String: publicInteger: public Color:publicBoolean:public JtextField:pri
6、vateJframe:public3、确定对象之间的关系,包括依赖、泛化、关联、实现等等。Jframe与主类BinaryJFrame之间:泛化textsi(JtextField)与labelstr(String)之间:依赖String与BinaryJFrame之间:依赖Color与Background之间:关联中的组合Resizable、Editable、Visible与textsi之间:实现i与textsi之间:关联六 、系统设计二进制在文本框中显示 1、工作原理图:八进制在文本框中显示用数字按钮输入数字十进制在文本框中显示十六进制在文本框中显示确定错误消息提示退格键 重输2、功能规划:整数
7、进制转换器十进制输入域二进制输出域八进制数出域十六进制输出域显示输入信息对应的十进制数转换为二进制数对应的十进制数转换为八进制对应的十进制数转换为十六进制3、类的设计(对象的设计)(类图、对象图)4、java 程序中进制转换(十进制转换为其他进制)的算法设计十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinaryString(int i)5、程序的相关分析import java.awt.*; /这个一般在程序开始时用,即置入包。import java
8、x.swing.*;/置入最常用包,最常用的pachage,包含了各种swing组件的类import javax.swing.event.*;/置入处理由swing组件产生的事件,有别于AWT事件public class:在 java 中用 public class 可以定义一个java 程序的入口类,在 asp 用 class ClassName 可以定义一个类private:在Java中是一个关键字,表示私有成员,private 是类中的一个属性 用它定义的feild和method只能在类中被调用.如果定义了private,就不能被外部类所访问了this:java中this有两种用法1、代
9、表当前类;2、在构造函数中的使用如:this.setBounds(300,240,440,140);/ 设置窗体的长宽各为:440, 140让其显示在距屏幕左上方坐标(300,240)处/它们的计量单位是像素这句话等效于:this.setLocation(300, 240)this.setSize(440, 140);this.setResizable(false);/窗口大小不能改变this.setDefaultCloseOperation(EXIT_ON_CLOSE);/单击窗口按钮时,结束程序运行;this.getContentPane().setLayout(new FlowLayou
10、t(FlowLayout.RIGHT);/流式布局右对齐;textsi.setEditable(false);/只能显示,不允许编辑;texts0.setEditable(true);/只允许编辑static :声明静态成员变量七、具体实现-类设计、功能实现(含代码)、界面1、 类实现:根据功能定义类共有(1) BinaryJFrame主类, (2) Boolean类, (3) String类, (4) JtextField类四个类。 (1) BinaryJFrame主类:定义面板,文本框,及变量,设置布局为流动布局,并设置进制转换器背景颜色为灰色。(2)Boolean类:实现设置窗口能否改变
11、、文本行能否编辑、显示对话框操作。(3)String类:通过对象labelstr输入各个标签,实现相关功能提示。(4) JtextField类:实现文本行的创建,设计面板,实现进制转换功能。对进制转换面板进行操作。用ContentPane()方法设置网格布局,CaretListener()实现按钮的监听,加载按钮到进制转换面板上面,通过actionPerformed(ActionEvent e)方法对各个按钮事件进行操作。2、功能实现:(1)布局实现:super(十进制整数转换);/窗口标题 this.setBounds(300,240,440,140);/设置框架的位置和尺寸即窗口大小thi
12、s.setResizable(false); /设置窗口大小不能改变 this.setBackground(Color.lightGray); /设置窗口背景颜色 this.setDefaultCloseOperation(EXIT_ON_CLOSE);/窗口关闭事件处理方式:单机窗口按钮时结束程序运行this.getContentPane().setLayout(newFlowLayout(FlowLayout.RIGHT);/框架流动布局:右对齐String labelstr=十进制,二进制,八进制,十六进制; /设置标签texts = new JTextFieldlabelstr.len
13、gth;/创建文本行 for (int i=0; itexts.length; i+) this.getContentPane().add(newJLabel(labelstri);/将标签添加到面板中textsi = new JTextField(32); /设置文本行的大小textsi.setEditable(false); /只能显示,不能编辑this.getContentPane().add(textsi);/添加文本行到面板中 texts0.setEditable(true);/设置第一个文本行是可编辑的texts0.setText(-1);/设置第一个文本行初始值是-1texts0
14、.addCaretListener(this); /注册文本编辑事件监听器 this.caretUpdate(null); /执行文本编辑事件 this.setVisible(true); /显示对话框(2)进制转换功能的实现:public void caretUpdate(CaretEvent e) /文本编辑事件处理方法 try /异常处理 int i= Integer.parseInt(texts0.getText(); /十进制整数转换事件(第一个文本行输入操作) texts1.setText(Integer.toBinaryString(i); /二进制(第二个文本行进行将i转换成二
15、进制事件) texts2.setText(Integer.toOctalString(i); /八进制 texts3.setText(Integer.toHexString(i); /十六进制/或/texts2.setText(String.format(%o, i); /八进制/texts3.setText(String.format(%x, i); /十六进制 (3)异常处理catch(NumberFormatException nfe) /捕获parseInt()方法声明的异常对象 JOptionPane.showMessageDialog(this,+texts0.getText()+
16、不能转换,请重新输入!); /提示框,提示出错3、界面:完整的编码如下:import java.awt.*;import javax.swing.*;import javax.swing.event.*;public class BinaryJFrame extends JFrame implements CaretListener private JTextField texts; public BinaryJFrame() super(十进制整数转换); this.setBounds(300,240,440,140); this.setResizable(false); this.setB
17、ackground(Color.lightGray); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.getContentPane().setLayout(new FlowLayout(FlowLayout.RIGHT); String labelstr=十进制,二进制,八进制,十六进制; texts = new JTextFieldlabelstr.length; for (int i=0; itexts.length; i+) this.getContentPane().add(new JLabel(labelstri); texts
18、i = new JTextField(32); textsi.setEditable(false); this.getContentPane().add(textsi); texts0.setEditable(true); texts0.setText(-1); texts0.addCaretListener(this); /注册文本编辑事件监听器 this.caretUpdate(null); this.setVisible(true); public void caretUpdate(CaretEvent e) /文本编辑事件处理方法 try int i = Integer.parseIn
19、t(texts0.getText(); texts1.setText(Integer.toBinaryString(i); /二进制 texts2.setText(Integer.toOctalString(i); /八进制 texts3.setText(Integer.toHexString(i); /十六进制/或/ texts2.setText(String.format(%o, i); /八进制/ texts3.setText(String.format(%x, i); /十六进制 catch(NumberFormatException nfe) JOptionPane.showMess
20、ageDialog(this,+texts0.getText()+不能转换,请重新输入!); finally public static void main(String arg) new BinaryJFrame(); 八、系统测试和分析(1) 程序运行情况: 程序正常的响应按钮事件。运行显示:输入一个整数,如45,运行结果如图:输入的数值长度受变量length的限定。当整数太大的时候,有可能超出可能表示的最大值,(结果溢出)。则显示消息提示:若输入的是非整数,则同样弹出消息提示:如输入1.2和k; 这是程序进行的异常处理,使用try-catch,捕捉输入整数的方法抛出的异常对象。此时只要重
21、输即可。(2) 程序异常处理:使用try-catch去捕捉这个异常,异常的处理如下:trycatch(NumberFormatException nfe)JOptionPane.showMessageDialog(this,”+texts0.getText()+”不能转换,请重新输入!”);(3)分析讨论:运行结果基本上完成了实验题目所要求的功能。使用方便明了,设计上有层次,立体感强。可是这个整数进制转换器和Windows上面的仍有很大差距,主要表现在功能方面的不完善和不健全。如果需要改进,可在以下三个方面改进:A、布局上面:基本的方位布局不变,可以分别在二进制、八进制、十六进制对应的文本行末尾添加转换按钮,方便输出用户需要的进制即可。将一些功能按钮比如清零按钮,退格按钮,确定按钮放在文本框下面,采用流式布局,另外对于组件之间的间隙也要规划好,实现美观大方。B、添加菜单栏:标准的进制转换器具有菜单栏,包括“编辑”,“查看”,“帮助”三个主菜单项,在每个主菜单项里面都有若干子菜单项。这样使的功能跟全面,更规范。C、添加功能:可以实现各个进制之间的互换,而不只是十进制转换为二、八、十六进制。九、 难点及关键技术分析难点分析:l 框架的合理布局。对于一个应用程序,界面的简单明了是很重要的,既要简单明了还要实用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年购房咨询协议3篇
- 量子科技产业园资金需求与融资方案
- 2024年药品送货员职责合同
- 2024年简化版机顶盒服务协议标准文本一
- 2024年租赁期满续约合同内容详解
- 2024年电气维修服务合同3篇
- 2024年股东会决议合同
- 2024年资金协调借款协议
- 2024年突发事件新闻发布与舆论引导合同
- 2024年度二手钢材销售与售后服务一体化合同范本3篇
- 普外科医疗组长竞聘演讲
- 北京市朝阳区2022-2023学年三年级上学期英语期末试卷
- GB/T 9755-2024合成树脂乳液墙面涂料
- 哔哩哔哩MATES人群资产经营白皮书【哔哩哔哩】
- 【历史】第一、二单元测试题2024~2025学年统编版七年级历史上册
- 婚姻家庭规划
- 认识实习报告(10篇)
- 【MOOC】内科护理学-中山大学 中国大学慕课MOOC答案
- 2024年商业地产买卖合同样本
- 2023-2024学年广东省深圳市福田区七年级(上)期末英语试卷
- 双碳全景系列培训第一章碳达峰、碳中和
评论
0/150
提交评论