版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计面向对象程序设计 (javajava) 组长:覃冬丽组长:覃冬丽09056060 组员:赵红乐组员:赵红乐09056039 杨小英杨小英09056059 全晶晶全晶晶09071248 马珍珍马珍珍08056048 0101 0202 0303 课程设计目的课程设计目的 课程设计总体要求课程设计总体要求 问题分解问题分解 题目描述题目描述 问题分析问题分析 0404 05050606 1010 0909 0808 0707 系统设计系统设计 具体实现(编码)具体实现(编码) 系统测试和分析系统测试和分析 难点及关键技术分析难点及关键技术分析心得体会心得体会 一、课程设计目的:一、
2、课程设计目的: 1 1、学会运用、学会运用javajava程序开发的环境搭建与配置,程序开发的环境搭建与配置, 并在实际运用中学习和掌握并在实际运用中学习和掌握java java程序开发的全程序开发的全 过程。过程。 2 2、进一步熟悉掌握、进一步熟悉掌握javajava程序设计语言的基础内程序设计语言的基础内 容,如用户图形界面设计、容,如用户图形界面设计、applet applet程序的设计、程序的设计、 文件和网络输入输出流编程、文件和网络输入输出流编程、java java数据库编程数据库编程 等。等。 3 3、通过亲自动手写程序,一方面拓展知识面,、通过亲自动手写程序,一方面拓展知识面
3、, 一方面锻炼调试能力。一方面锻炼调试能力。 二、课程设计总体要求:二、课程设计总体要求: 1、问题的描述与程序将要实现的具体能。、问题的描述与程序将要实现的具体能。 2、程序功能实现的具体设计思路或框架,、程序功能实现的具体设计思路或框架, 并检查流程设计。并检查流程设计。 3、代码实现。、代码实现。 4、程序测试(如程序代码、功能测试、程序测试(如程序代码、功能测试、 可靠性测试和效率测试等)。可靠性测试和效率测试等)。 5、设计小结。、设计小结。 三、题目描述三、题目描述 整数进制转换。整数进制转换。 输入一个十进制整数,分别以二进制、八进 制、十六进制形式输出该整数。 要求:整数文本行
4、可以编辑,其他文本行仅 用于显示不可以编辑;整数文本行响应文本 编辑事件;当输入数据错误时,处理异常, 弹出对话框,提示重新输入信息。 四、问题分析(问题范围、系统的功能、对性能的四、问题分析(问题范围、系统的功能、对性能的 要求、应用环境的要求)要求、应用环境的要求) 1、问题范围、问题范围 对整数进制转换。必须在整对整数进制转换。必须在整 数范围内才能输出相对数范围内才能输出相对 应的进制。若为非整数应的进制。若为非整数 范围或超出范围,则显范围或超出范围,则显 示消息提醒错误。示消息提醒错误。 2、系统的功能、系统的功能 进制转换器进制转换器:转换器界面由要转换转换器界面由要转换 的数据
5、和结果组成,十进制整数的数据和结果组成,十进制整数 输入文本行可以编辑,其他文本输入文本行可以编辑,其他文本 行仅用于显示不可以编辑;整数行仅用于显示不可以编辑;整数 文本行响应文本编辑事件;当输文本行响应文本编辑事件;当输 入数据错误时,处理异常,弹出入数据错误时,处理异常,弹出 对话框,提示重新输入信息。能对话框,提示重新输入信息。能 分别进行十进制转换为二进制、分别进行十进制转换为二进制、 八进制、十六进制的转换,以及八进制、十六进制的转换,以及 消息错误提示。在转换器和弹出消息错误提示。在转换器和弹出 的消息提示界面有相关的最小化、的消息提示界面有相关的最小化、 关闭等按钮可以操作。关
6、闭等按钮可以操作。 3、对性能的要求、对性能的要求 (1)具有较强的实用性)具有较强的实用性 (2)易于理解和应用)易于理解和应用 (3)对程序的配置要求不高,)对程序的配置要求不高, 能广泛应用能广泛应用 4、应用环境的要求、应用环境的要求 jdk 成功安装,设置环境变量成功安装,设置环境变量 (java_home=c:programfilesjavajdk1.6.0_10 classpath= .;c:program filesjavajdk1.6.0_10lib; path= c:program filesjavajdk1.6.0_10bin;) 五、问题分解问题分解 可分以下步骤进行:
7、可分以下步骤进行: 1. 对象对象: 属于属于binaryjframe主类的对象主类的对象: bounds、background、 defaultcloseoperation、contentpane、layout 属于属于boolean类的对象类的对象: resizable、editable、visible 属于属于color类的对象类的对象:lightgray 属于属于string类的对象类的对象: labelstr 属于属于integer类的对象类的对象: i 属于属于jtextfield类的对象:类的对象:textsi 类类:包括上述所有类及父类:包括上述所有类及父类jframe。 2、
8、 binaryjframe: public string: public integer: public color:public boolean:public jtextfield:private jframe:public 3、 jframe与主类与主类binaryjframe之间:泛化之间:泛化 textsi(jtextfield)与与labelstr(string)之间:依赖之间:依赖 string与与binaryjframe之间之间:依赖依赖 color与与background之间之间:关联中的组合关联中的组合 resizable、editable、visible与与textsi之间
9、之间:实现实现 i与与textsi之间之间:关联关联 六六 、系统设计、系统设计 1 1、工作原理图:、工作原理图: 2 2、功能规划:、功能规划: 整整 数数 进进 制制 转转 换换 器器 十进制输入域十进制输入域 二进制输出域二进制输出域 八进制数出域八进制数出域 十六进制输出十六进制输出 域域 显示输入信息显示输入信息 对应的十进制数转换为二进制数对应的十进制数转换为二进制数 对应的十进制数转换为八进制对应的十进制数转换为八进制 对应的十进制数转换为十六进制对应的十进制数转换为十六进制 3 3、类的设计(对象的设计)(类图、对象图)、类的设计(对象的设计)(类图、对象图) 4 4、jav
10、a java 程序中进制转换(十进制转换为其他进制)程序中进制转换(十进制转换为其他进制) 的算法设计的算法设计 十进制转成十六进制:十进制转成十六进制: integer.tohexstring(int i) 十进制转成八进制十进制转成八进制 integer.tooctalstring(int i) 十进制转成二进制十进制转成二进制 integer.tobinarystring(int i) 5 5、程序的相关分析、程序的相关分析 import java.awt.*; /这个一般在程序开始时用,即置入 包。 import javax.swing.*;/置入最常用包,最常用的 pachage,包
11、含了各种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、代表当前类;2、在构造函 数中的使用 如: th
12、is.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 flowlayout(flowlayou
13、t.right);/流式布局右对齐 ; textsi.seteditable(false);/只能显示,不允许编辑; texts0.seteditable(true);/只允许编辑 static :声明静态成员变量 七、具体实现具体实现-类设计、功能实现(含代码)、界面类设计、功能实现(含代码)、界面 1 1、 类实现:根据功能定义类类实现:根据功能定义类 共有共有 binaryjframebinaryjframe主类主类, , booleanboolean类类, string, string类类, , jtextfieldjtextfield类四个类。类四个类。 (1) 1) binaryj
14、framebinaryjframe主类:定义主类:定义 面板,文本框,及变量,设置面板,文本框,及变量,设置 布局为流动布局,并设置进制布局为流动布局,并设置进制 转换器背景颜色为灰色。转换器背景颜色为灰色。 (2 2)booleanboolean类:实现设置窗类:实现设置窗 口能否改变、文本行能否编辑、口能否改变、文本行能否编辑、 显示对话框操作。显示对话框操作。 (3 3)stringstring类:通过对象类:通过对象labelstrlabelstr输输 入各个标签,实现相关功能提示。入各个标签,实现相关功能提示。 (4 4) jtextfieldjtextfield类:实现文本行的创类
15、:实现文本行的创 建,设计面板,实现进制转换功能。对建,设计面板,实现进制转换功能。对 进制转换面板进行操作。用进制转换面板进行操作。用 contentpanecontentpane()()方法设置网格布局,方法设置网格布局, caretlistenercaretlistener()实现按钮的监听,()实现按钮的监听, 加载按钮到进制转换面板上面,通过加载按钮到进制转换面板上面,通过 actionperformed(actioneventactionperformed(actionevent e) e)方方 法对各个按钮事件进行操作。法对各个按钮事件进行操作。 2 2、功能实现:、功能实现:
16、(1)布局实现: super(十进制整数转换);/窗口标题 this.setbounds(300,240,440,140);/设置 框架的位置和尺寸即窗口大小 this.setresizable(false); /设置窗口大 小不能改变 this.setbackground(color.lightgray); / 设置窗口背景颜色 this.setdefaultcloseoperation(exit_on_c lose);/窗口关闭事件处理 方式:单机窗口按钮时结束程序运行 this.getcontentpane().setlayout(newflowlayout( flowlayout.ri
17、ght);/框架流动布局:右对齐 string labelstr=十进制,二进制,八进制 ,十六进制; /设置标签 texts = new jtextfieldlabelstr.length;/创建 文本行 for (int i=0; itexts.length; i+) this.getcontentpane().add(newjlabel(labelstr i);/将标签添加到面板中 textsitextsi = new jtextfield(32); / = new jtextfield(32); /设置文本行的大小设置文本行的大小 textsi.seteditable(falsetex
18、tsi.seteditable(false); /); /只能显示,不能编辑只能显示,不能编辑 this.getcontentpane().add(textsithis.getcontentpane().add(textsi);/添加文本行到面添加文本行到面 板中板中 texts0.seteditable(true);/texts0.seteditable(true);/设置第一个文本行是可编辑设置第一个文本行是可编辑 的的 texts0.settext(-1);/texts0.settext(-1);/设置第一个文本行初始值是设置第一个文本行初始值是-1-1 texts0.addcaretl
19、istener(this); /texts0.addcaretlistener(this); /注册文本编辑事件监注册文本编辑事件监 听器听器 this.caretupdate(nullthis.caretupdate(null); /); /执行文本编辑事件执行文本编辑事件 this.setvisible(truethis.setvisible(true); /); /显示对话框显示对话框 (2)进制转换功能的实现: 十十进进制制转转成十六成十六进进制:制: integer.tohexstring(intinteger.tohexstring(int i) public void i) pu
20、blic void caretupdate(careteventcaretupdate(caretevent e) / e) /文本文本编辑编辑 事件事件处处理方法理方法 try /try /异异常常处处理理 intint i= integer.parseint(texts0.gettext(); /i= integer.parseint(texts0.gettext(); /十十进进制整制整 数转换数转换事件(第一事件(第一个个文本行文本行输输入操作)入操作) texts1.settext(integer.tobinarystring(i); /texts1.settext(integer.
21、tobinarystring(i); /二二进进制制 (第二(第二个个文本行文本行进进行行将将i i转换转换成二成二进进制事件)制事件) texts2.settext(integer.tooctalstring(i); /texts2.settext(integer.tooctalstring(i); /八八进进制制 texts3.settext(integer.tohexstring(i); /texts3.settext(integer.tohexstring(i); /十六十六进进 制制 /或或 /texts2.settext(string.format(%o, i); /texts2.
22、settext(string.format(%o, i); /八八进进制制 /texts3.settext(string.format(%x, i); /texts3.settext(string.format(%x, i); /十六十六进进 制制 (3)异常处理 catch(numberformatexception nfe) /捕获捕获parseint()方法声明的异常对象()方法声明的异常对象 joptionpane.showmessagedialog(this, +texts0.gettext()+不能转换,请重新输不能转换,请重新输 入入!); /提示框,提示出错提示框,提示出错 3
23、 3、界面:、界面: 完整的完整的编码编码如下:如下: import import java.awtjava.awt. .* *; ; import import javax.swingjavax.swing. .* *; ; import import javax.swing.eventjavax.swing.event. .* *; ; public class public class binaryjframebinaryjframe extends extends jframejframe implements implements caretlistenercaretlistener
24、 private private jtextfieldjtextfield texts; texts; public public binaryjframebinaryjframe()() super( super(十进制整数转换十进制整数转换); ); this.setbounds(300,240,440,140); this.setbounds(300,240,440,140); this.setresizable(falsethis.setresizable(false);); this.setbackground(color.lightgraythis.setbackground(co
25、lor.lightgray); ); this.setdefaultcloseoperation(exit_on_closethis.setdefaultcloseoperation(exit_on_close); ); this.getcontentpane().setlayout(newthis.getcontentpane().setlayout(new flowlayout(flowlayout.rightflowlayout(flowlayout.right); ); string string labelstrlabelstr=十进制十进制,二进制二进制,八进制八进制,十六进制十六
26、进制; texts = new texts = new jtextfieldlabelstr.lengthjtextfieldlabelstr.length; for ( for (intint i=0; i i=0; itexts.lengthtexts.length; i+); i+) this.getcontentpane().add(newthis.getcontentpane().add(new jlabel(labelstrijlabel(labelstri);); textsitextsi = new jtextfield(32); = new jtextfield(32); t
27、extsi.seteditable(falsetextsi.seteditable(false); ); this.getcontentpane().add(textsithis.getcontentpane().add(textsi); ); texts0.seteditable(true); texts0.seteditable(true); texts0.settext(-1); texts0.settext(-1); texts0.addcaretlistener(this); /texts0.addcaretlistener(this); /注册文本编辑事件监注册文本编辑事件监 听器
28、听器 this.caretupdate(nullthis.caretupdate(null);); this.setvisible(truethis.setvisible(true); ); public void public void caretupdate(careteventcaretupdate(caretevent e) / e) /文本编辑事件文本编辑事件 处理方法处理方法 try try intiinti=integer.parseint(texts0.gettext();=integer.parseint(texts0.gettext(); texts1.settext(in
29、teger.tobinarystring(i); texts1.settext(integer.tobinarystring(i); / /二进制二进制 texts2.settext(integer.tooctalstring(i); texts2.settext(integer.tooctalstring(i); /八进制八进制 texts3.settext(integer.tohexstring(i); /texts3.settext(integer.tohexstring(i); /十六进制十六进制 /或或 / texts2.settext(string.format(%o, i); /
30、 texts2.settext(string.format(%o, i); /八进制八进制 / texts3.settext(string.format(%x, i); / texts3.settext(string.format(%x, i); /十六进制十六进制 catch(numberformatexceptioncatch(numberformatexception nfenfe) ) joptionpane.showmessagedialog(this,+texts0.gettextjoptionpane.showmessagedialog(this,+texts0.gettext
31、()+()+不能转换,请重新输入不能转换,请重新输入!); !); finally finally public static void public static void main(stringmain(string argarg) new new binaryjframebinaryjframe();(); 八八、系统测试和分析系统测试和分析 1.程序运行情况程序运行情况: 程序正常的响应按钮事件。程序正常的响应按钮事件。 运行显示:运行显示: 输入一个整数,如输入一个整数,如45,运行结果如图:,运行结果如图: 输入的数值长度受变量输入的数值长度受变量length的限定。的限定。 当整
32、数太大的时候,有可能超出可能表示的最大值,(结果溢出)。当整数太大的时候,有可能超出可能表示的最大值,(结果溢出)。 则显示消息提示:则显示消息提示: 若输入的是非整数,则同样弹出消息提示:如输入若输入的是非整数,则同样弹出消息提示:如输入1.2和和k; 这是程序进行的异常处理,使用这是程序进行的异常处理,使用try-catch,捕捉输入整数的方法,捕捉输入整数的方法 抛出的异常对象。此时只要重输即可。抛出的异常对象。此时只要重输即可。 (3)分析讨论: 运行结果基本上完成了实验题目所要求的功运行结果基本上完成了实验题目所要求的功 能。能。 使用方便明了,设计上有层次,立体使用方便明了,设计上
33、有层次,立体 感强。感强。 可是这个整数进制转换器和可是这个整数进制转换器和windowswindows上面的仍上面的仍 有很大差距,主要表现在功能方面的不完善有很大差距,主要表现在功能方面的不完善 和不健全。如果需要改进,可在以下三个方和不健全。如果需要改进,可在以下三个方 面改进:面改进: 布局上面:基本的方位布局不变,可以分别在二进制、八进布局上面:基本的方位布局不变,可以分别在二进制、八进 制、十六进制对应的文本行末尾添加转换按钮,方便输出用制、十六进制对应的文本行末尾添加转换按钮,方便输出用 户需要的进制即可。将一些功能按钮比如清零按钮,退格按户需要的进制即可。将一些功能按钮比如清零
34、按钮,退格按 钮,确定按钮放在文本框下面,采用流式布局,另外对于组钮,确定按钮放在文本框下面,采用流式布局,另外对于组 件之间的间隙也要规划好,实现美观大方。件之间的间隙也要规划好,实现美观大方。 添加菜单栏:标准的进制添加菜单栏:标准的进制 转换器具有菜单栏,包括转换器具有菜单栏,包括 “编辑编辑”,“查看查看”, “帮助帮助”三个主菜单项,三个主菜单项, 在每个主菜单项里面都有在每个主菜单项里面都有 若干子菜单项。这样使的若干子菜单项。这样使的 功能跟全面,更规范。功能跟全面,更规范。 添加功能:可以添加功能:可以 实现各个进制之实现各个进制之 间的互换,而不间的互换,而不 只是十进制转换
35、只是十进制转换 为二、八、十六为二、八、十六 进制。进制。 a、 b、c、 九、难点及关键技术分析九、难点及关键技术分析 难点分析:难点分析: 框架的合理布局。对于一个应用程序,界面的简单明框架的合理布局。对于一个应用程序,界面的简单明 了是很重要的,既要简单明了还要实用,不能华而了是很重要的,既要简单明了还要实用,不能华而 不实。不实。 异常处理的实现。对于一个独立运行的程序,能够独异常处理的实现。对于一个独立运行的程序,能够独 立的处理运行中的问题,并提示错误也是很重要的立的处理运行中的问题,并提示错误也是很重要的 。 关键技术分析:关键技术分析: 创建对话框,并设置监听器处理相应的事件,例如语句:创建对话框,并设置监听器处理相应的事件,例如语句: texts0.addcaretlistener(this);texts0.addcaretlistener(this);用于监听第一个文本行用于监听第一个文本行 的事件。的事件。 实现十进制与二进制、八进制、十六进制之间的转换
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 绢人工岗位安全培训考核试卷含答案
- 玻璃绝缘子烧结工岗中能力考核试卷含答案
- 汽车货运理货员环保知识评优考核试卷含答案
- 2026年智慧能耗高级管控工程师招聘笔试试卷 招录14人完整版
- 2026年芯片制程高级研发专家招聘笔试试卷 招录12人大全
- 2026年广东省廉江市高三数学下册期末考试模拟测试卷含答案(综合卷)
- 2026年浙江省温岭市高三数学下册期末考试模拟卷及1套完整答案
- 2026年吉林省图们市高三数学下册期末考试模拟测试卷(满分必刷)附答案
- 2026年江苏省太仓市高三数学下册期末考试模拟卷含完整答案【必刷】
- 2026年河南省新密市高三数学下册期末考试模拟卷(培优)附答案
- 大学生职业生涯规划与发展知到智慧树章节测试课后答案2024年秋东北农业大学
- 《工程勘察设计收费标准》(2002年修订本)
- 农田灌溉国民经济效益费用流量表
- JT-T-1230-2018机动车发动机冷却液无机阴离子测定法离子色谱法
- 知服定制产品系列考试附有答案
- 风湿免疫疾病的凝血异常
- 人工智能创新大赛报告模板案例
- 体质测试成绩表(自动统计数据)(小学、初中)
- 第二单元6简易木艺作品我制作(课件)-五年级上册劳动人教版
- 山洪灾害中设计暴雨计算方法
- 英语戏剧俱乐部-English-Drama-club课件
评论
0/150
提交评论