java综合实验报告整数进制转换.docx
- 文档编号:27486413
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:14
- 大小:223.14KB
java综合实验报告整数进制转换.docx
《java综合实验报告整数进制转换.docx》由会员分享,可在线阅读,更多相关《java综合实验报告整数进制转换.docx(14页珍藏版)》请在冰豆网上搜索。
java综合实验报告整数进制转换
中南民族大学管理学院
学生实验报告
(综合设计)
课程名称:
面向对象程序设计(java)
选题名称:
整数进制转换
年 级:
09级
专 业:
信息管理与信息系统
指导教师:
**老师
实验地点:
管理学院综合实验室
完成时间:
2011年6月6日
2010学年至2011学年度第2学期
组长:
覃冬丽学号:
09056060
成员:
姓名
学号
所做的贡献
贡献分
一、课程设计目的
二、课程设计总体要求
三、题目描述
四、问题分析
五、问题分解
六、系统设计
七、具体实现(编码)
八、系统测试和分析
九、难点及关键技术分析
十、心得体会
一、课程设计目的:
1.学会运用Java程序开发的环境搭建与配置,并在实际运用中学习和掌握Java程序开发的全过程。
2.进一步熟悉掌握Java程序设计语言的基础内容,如用户图形界面设计、Applet程序的设计、文件和网络输入输出流编程、Java数据库编程等。
3.通过亲自动手写程序,一方面拓展知识面,一方面锻炼调试能力。
二、课程设计总体要求:
1.问题的描述与程序将要实现的具体功能。
2.程序功能实现的具体设计思路或框架,并检查流程设计。
3.代码实现。
4.程序测试(如程序代码、功能测试、可靠性测试和效率测试等)。
5.设计小结。
三、题目描述
整数进制转换。
输入一个十进制整数,分别以二进制、八进制、十六进制形式输出该整数。
要求:
整数文本行可以编辑,其他文本行仅用于显示不可以编辑;整数文本行响应文本编辑事件;当输入数据错误时,处理异常,弹出对话框,提示重新输入信息。
四、问题分析(问题范围、系统的功能、对性能的要求、应用环境的要求)
1、问题范围
对整数进制转换。
必须在整数范围内才能输出相对应的进制。
若为非整数范围或超出范围,则显示消息提醒错误。
2、系统的功能
进制转换器:
转换器界面由要转换的数据和结果组成,十进制整数输入文本行可以编辑,其他文本行仅用于显示不可以编辑;整数文本行响应文本编辑事件;当输入数据错误时,处理异常,弹出对话框,提示重新输入信息。
能分别进行十进制转换为二进制、八进制、十六进制的转换,以及消息错误提示。
在转换器和弹出的消息提示界面有相关的最小化、关闭等按钮可以操作。
3、对性能的要求
(1)具有较强的实用性
(2)易于理解和应用
(3)对程序的配置要求不高,能广泛应用
4、应用环境的要求
JDK成功安装,设置环境变量
(JAVA_HOME=C:
\ProgramFiles\Java\jdk_10
classpath=.;C:
\ProgramFiles\Java\jdk1.6.0_10\lib;
Path=C:
\ProgramFiles\Java\jdk_10\bin;)
五、问题分解
可分以下步骤进行:
1、分析找出问题域中的对象,并将对象归类,注意筛选掉不必要的对象或类。
对象:
属于BinaryJFrame主类的对象:
Bounds、Background、DefaultCloseOperation、ContentPane、Layout
属于Boolean类的对象:
Resizable、Editable、Visible
属于Color类的对象:
lightGray
属于String类的对象:
labelstr
属于Integer类的对象:
i
属于JtextField类的对象:
texts[i]
类:
包括上述所有类及父类Jframe。
2、确定类的属性。
BinaryJFrame:
publicString:
public
Integer:
publicColor:
public
Boolean:
publicJtextField:
private
Jframe:
public
3、确定对象之间的关系,包括依赖、泛化、关联、实现等等。
Jframe与主类BinaryJFrame之间:
泛化
texts[i](JtextField)与labelstr[](String)之间:
依赖
String与BinaryJFrame之间:
依赖
Color与Background之间:
关联中的组合
Resizable、Editable、Visible与texts[i]之间:
实现
i与texts[i]之间:
关联
六、系统设计
1、工作原理图:
重输
2、功能规划:
3、类的设计(对象的设计)(类图、对象图)
4、java程序中进制转换(十进制转换为其他进制)的算法设计
十进制转成十六进制:
Integer.toHexString(inti)
十进制转成八进制
Integer.toOctalString(inti)
十进制转成二进制
Integer.toBinaryString(inti)
5、程序的相关分析
importjava.awt.*;//这个一般在程序开始时用,即置入包。
importjavax.swing.*;//置入最常用包,最常用的pachage,包含了各种swing组件的类
ent.*;//置入处理由swing组件产生的事件,有别于AWT事件
publicclass:
在java中用publicclass可以定义一个java程序的入口类,在asp用classClassName可以定义一个类
private:
在Java中是一个关键字,表示私有成员,private是类中的一个属性用它定义的feild和method只能在类中被调用.如果定义了private,就不能被外部类所访问了
this:
java中this有两种用法1、代表当前类;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(newFlowLayout(FlowLayout.RIGHT));//流式布局右对齐;
texts[i].setEditable(false);//只能显示,不允许编辑;
texts[0].setEditable(true);//只允许编辑
static:
声明静态成员变量
七、具体实现---类设计、功能实现(含代码)、界面
1、类实现:
根据功能定义类共有
(1)BinaryJFrame主类,
(2)Boolean类,(3)String类,(4)JtextField类四个类。
(1)BinaryJFrame主类:
定义面板,文本框,及变量,设置布局为流动布局,并设置进制转换器背景颜色为灰色。
(2)Boolean类:
实现设置窗口能否改变、文本行能否编辑、显示对话框操作。
(3)String类:
通过对象labelstr输入各个标签,实现相关功能提示。
(4)JtextField类:
实现文本行的创建,设计面板,实现进制转换功能。
对进制转换面板进行操作。
用ContentPane()方法设置网格布局,CaretListener()实现按钮的监听,加载按钮到进制转换面板上面,通过actionPerformed(ActionEvente)方法对各个按钮事件进行操作。
2、功能实现:
(1)布局实现:
super("十进制整数转换");//窗口标题this.setBounds(300,240,440,140);//设置框架的位置和尺寸即窗口大小
this.setResizable(false);//设置窗口大小不能改变this.setBackground(Color.lightGray);//设置窗口背景颜色
this.setDefaultCloseOperation(EXIT_ON_CLOSE);//窗口关闭事件处理方式:
单机窗口按钮时结束程序运行
this.getContentPane().setLayout(newFlowLayout(
FlowLayout.RIGHT));//框架流动布局:
右对齐
Stringlabelstr[]={"十进制","二进制","八进制","十六进制"};//设置标签
texts=newJTextField[labelstr.length];//创建文本行
for(inti=0;i {this.getContentPane().add(newJLabel(labelstr[i]));//将标签添加到面板中 texts[i]=newJTextField(32);//设置文本行的大小 texts[i].setEditable(false);//只能显示,不能编辑 this.getContentPane().add(texts[i]);//添加文本行到面板中 } texts[0].setEditable(true);//设置第一个文本行是可编辑的 texts[0].setText("-1");//设置第一个文本行初始值是-1 texts[0].addCaretListener(this);//注册文本编辑事件监听器 this.caretUpdate(null);//执行文本编辑事件 this.setVisible(true);//显示对话框 } (2)进制转换功能的实现: publicvoidcaretUpdate(CaretEvente)//文本编辑事件处理方法 {try//异常处理 {int i=Integer.parseInt(texts[0].getText());//十进制整数转换事件(第一个文本行输入操作) texts[1].setText(Integer.toBinaryString(i));//二进制(第二个文本行进行将i转换成二进制事件) texts[2].setText(Integer.toOctalString(i));//八进制 texts[3].setText(Integer.toHexString(i));//十六进制 //或 //texts[2].setText(String.format("%o",i));//八进制 //texts[3].setText(String.format("%x",i));//十六进制 } (3)异常处理 catch(NumberFormatExceptionnfe) //捕获parseInt()方法声明的异常对象{JOptionPane.showMessageDialog(this,"\""+texts[0].getText()+"\"不能转换,请重新输入! "); }//提示框,提示出错 3、界面: 完整的编码如下: importjava.awt.*; importjavax.swing.*; importjavax.swing.event.*; publicclassBinaryJFrameextendsJFrameimplementsCaretListener {privateJTextFieldtexts[]; publicBinaryJFrame() {super("十进制整数转换"); this.setBounds(300,240,440,140); this.setResizable(false);this.setBackground(Color.lightGray);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.getContentPane().setLayout(newFlowLayout(FlowLayout.RIGHT));Stringlabelstr[]={"十进制","二进制","八进制","十六进制"}; texts=newJTextField[labelstr.length]; for(inti=0;i {this.getContentPane().add(newJLabel(labelstr[i])); texts[i]=newJTextField(32); texts[i].setEditable(false); this.getContentPane().add(texts[i]);} texts[0].setEditable(true);texts[0].setText("-1"); texts[0].addCaretListener(this);//注册文本编辑事件监听器 this.caretUpdate(null); this.setVisible(true);} publicvoidcaretUpdate(CaretEvente)//文本编辑事件处理方法 {try {inti=Integer.parseInt(texts[0].getText()); texts[1].setText(Integer.toBinaryString(i));//二进制 texts[2].setText(Integer.toOctalString(i));//八进制 texts[3].setText(Integer.toHexString(i));//十六进制 //或 //texts[2].setText(String.format("%o",i));//八进制 //texts[3].setText(String.format("%x",i));//十六进制 } catch(NumberFormatExceptionnfe) {JOptionPane.showMessageDialog(this,"\""+texts[0].getText()+"\"不能转换,请重新输入! ");} finally{} } publicstaticvoidmain(Stringarg[]) { newBinaryJFrame(); }} 八、系统测试和分析 (1)程序运行情况: 程序正常的响应按钮事件。 运行显示: 输入一个整数,如45,运行结果如图: 输入的数值长度受变量length的限定。 当整数太大的时候,有可能超出可能表示的最大值,(结果溢出)。 则显示消息提示: 若输入的是非整数,则同样弹出消息提示: 如输入1.2和k; 这是程序进行的异常处理,使用try-catch,捕捉输入整数的方法抛出的异常对象。 此时只要重输即可。 (2)程序异常处理: 使用try-catch去捕捉这个异常,异常的处理如下: try{} catch(NumberFormatExceptionnfe) {JOptionPane.showMessageDialog(this,”\””+texts[0].getText()+”\”不能转换,请重新输入! ”);} (3)分析讨论: 运行结果基本上完成了实验题目所要求的功能。 使用方便明了,设计上有层次,立体感强。 可是这个整数进制转换器和Windows上面的仍有很大差距,主要表现在功能方面的不完善和不健全。 如果需要改进,可在以下三个方面改进: A、布局上面: 基本的方位布局不变,可以分别在二进制、八进制、十六进制对应的文本行末尾添加转换按钮,方便输出用户需要的进制即可。 将一些功能按钮比如清零按钮,退格按钮,确定按钮放在文本框下面,采用流式布局,另外对于组件之间的间隙也要规划好,实现美观大方。 B、添加菜单栏: 标准的进制转换器具有菜单栏,包括“编辑”,“查看”,“帮助”三个主菜单项,在每个主菜单项里面都有若干子菜单项。 这样使的功能跟全面,更规范。 C、添加功能: 可以实现各个进制之间的互换,而不只是十进制转换为二、八、十六进制。 九、难点及关键技术分析 难点分析: ●框架的合理布局。 对于一个应用程序,界面的简单明了是很重要的,既要简单明了还要实用,不能华而不实。 ●异常处理的实现。 对于一个独立运行的程序,能够独立的处理运行中的问题,并提示错误也是很重要的。 关键技术分析: ●创建对话框,并设置监听器处理相应的事件,例如语句: texts[0].addCaretListener(this);用于监听第一个文本行的事件。 ●实现十进制与二进制、八进制、十六进制之间的转换texts[1].setText(Integer.toBinaryString(i)); //实现十进制到二进制的转换 texts[2].setText(Integer.toOctalString(i)); //实现十进制到八进制的转换 texts[3].setText(Integer.toHexString(i)); //实现十进制到十六进制的转换 ●异常处理的实现,使用try-catch去捕捉异常事件,当出现异常时用跳出错误提示对话框,提示错误信息,例如: JOptionPane.showMessageDialog(this,”\””+texts[0].getText()+”\”不能转换,请重新输入! ” //错误提示框的使用 十、心得体会 这次实验与以往的不大相同,这次实验没有老师辅导,主要是通过小组的力量自己完成得出结论,并写出实验报告的。 我觉得这次实验是很宝贵的,主要是在最试验的过程中大家相互帮助,并且讨论的很激烈,享受的是这个过程。 这次试验中大家都看到了团队的力量,一个小组就是一个整体不能被分割,相互协作是保证实验顺利完成的核心。 面对实验中出现的异常情况,不应恐惧,实验总是课本相关的,要善于运用网络和书籍着手解决问题。 盲目的实验是不可行的,要在实验之前理出实验思维,有条理的进行,尽量减少实验操作的盲目性从而提高实验效率,详细记录实验中出现的现象并加以思考。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 综合 实验 报告 整数 转换
![提示](https://static.bdocx.com/images/bang_tan.gif)