张林博.docx
- 文档编号:30733907
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:36
- 大小:553.25KB
张林博.docx
《张林博.docx》由会员分享,可在线阅读,更多相关《张林博.docx(36页珍藏版)》请在冰豆网上搜索。
张林博
课程设计说明书
题目名称:
GUI编程及网络编程
系部:
计算机工程系
专业班级:
软件13-1
学生姓名:
张林博
学号:
2013234193
指导教师:
杨杰王爱民
完成日期:
2015.7.1
新疆工程学院
课程设计评定意见
设计题目GUI编程及网络编程
系部计算机工程系专业班级软件技术13-1班
学生姓名_______张林博______学生学号2013234193
评定意见:
评定成绩:
指导教师(签名):
2015年7月1日
(此页背书)
评定意见参考提纲:
1、学生完成的工作量与内容是否符合任务书的要求。
2、学生的勤勉态度。
3、设计或说明书的优缺点,包括:
学生对理论知识的掌握程度、实践工作能力、表现出的创造性和综合应用能力等。
新疆工程学院
计算机工程系学生课程设计任务书
2014-2015学年下学期2015年6月20日
专业
软件技术
班级
13-1
课程名称
面向对象程序设计(Java)
设计题目
GUI编程及网络编程
指导教师
杨杰王爱民
起止时间
2015.6.22--2015.7.1
周数
2
设计地点
B504
设计目的:
1.巩固和加深学生对Java语言课程的基本知识的理解和掌握
2.培养锻炼学生的自学能力
2. 掌握Java语言编程和程序调试的基本技能
3. 掌握书写程序设计说明文档的能力
设计任务或主要技术指标:
1. 分析课程设计题目的要求
2. 写出详细设计说明
3. 编写程序代码,调试程序使其能正确运行
4. 设计完成的程序要能够解决问题并便于操作和使用
5. 设计完成后提交课程设计报告
设计进度与要求:
6.22:
阅读理解设计题目,查找资料
6.23:
理解掌握设计题目需要的知识点
6.24-6.28:
编写调试程序
6.29-6.30:
写课程设计报告,指导老师核查程序运行结果、审核报告。
学生查缺补漏,修改报告,通过后打印设计报告。
7.1上午10点以组为单位进行考核。
主要参考书及参考资料:
1.耿祥义.Java2实用教程(第4版),清华大学出版社,2014.2.
2.
教研室主任(签名)系(部)主任(签名)
摘要
为了巩固Java语言程序设计课程的主要知识,提高编程实际的开发能力,基于课程的技术要求和作业标准,设计并实现了GUI编程、网络编程。
GUI编程设计的主要功能是控制字体的样式以及前景色,网络编程设计的主要功能是,分别建立服务器端和客户端的java源程序。
完成服务器端和客户端的连接。
使客户端能够向服务器端发送消息且服务器端能够接收客户端发来的信息。
最终服务器端能够将客户端发来的信息显示到屏幕上。
系统的开发语言是JAVA,开发环境是eclipse。
本系统具有的特点是:
程序小巧、操作简单,优点是:
界面美观、灵活、实用、安全。
关键词:
Java语言GUI编程网络编程eclipse
目录
1课程设计任务要求及目标1
1.1课程设计过程概述1
1.2课程设计要求1
1.2.1GUI编程1
1.2.2网络编程1
1.3课程设计目标1
2需求分析1
2.1功能需求2
2.1.1GUI字体编程2
2.1.2网络连接编程2
2.2开发及运行环境分析2
3详细设计及思路2
3.1GUI应用程序设计2
3.1.1GUI应用程序所用类和类的层次结构2
3.1.2常用组件简介4
3.1.3JFrame对象4
3.1.4事件处理5
3.1.5事件监听器7
3.1.6事件处理的基本步骤8
3.1.7菜单设计8
3.2网络连接编程设计10
3.2.1网络连接编程功能模块图10
3.2.2网络基础知识10
3.2.3客户端网络编程步骤12
3.2.4服务器端网络编程步骤13
4实现与调试14
4.1GUI编程运行结果14
4.1.1主窗体实现运行14
4.1.2字型大小改变14
4.1.3字体颜色改变14
4.1.4字体样式改变15
4.2网络编程运行结果15
4.2.1客户端运行15
4.2.2服务器端运行15
4.2.3客户端和服务端一起运行15
5附:
程序代码16
5.1GUI字体程序代码16
5.2网络连接程序代码19
5.2.1服务端代码19
5.2.2客户端代码20
总结22
参考文献23
1课程设计任务要求及目标
1.1课程设计过程概述
《JAVA课程设计》是一门实践性很强的计算机专业基础课程,更是我们软件技术专业学习完该课程后进行的一次较全面的综合练习。
其目的在于通过实践加深学生对面向对象程序设计的理论、方法和基础知识的理解,掌握使用Java语言进行面向对象设计的基本思路和方法;加强学生研发、调试程序的能力;培养学生分析、解决问题的能力;提高学生的实践论文写作能力、学会结合面向对象程序设计课程,培养我们面向对象软件开发的思维,初步了解软件开发的一般流程,提高用JAVA编程的实际动手能力并增强大家对面向对象的了解。
这次课程设计的主要内容是GUI编程、网络编程。
1.2课程设计要求
1.2.1GUI编程
控制字体的样式以及前景色。
1.2.2网络编程
分别建立服务器端和客户端的java源程序。
(1)建立服务器端和客户端的连接。
(2)客户端能够向服务器端发送消息。
(3)服务器端能够接收客户端发来的信息。
(4)服务器端能够将客户端发来的信息显示到屏幕上。
(5)客户端可以多次向服务器发送信息。
1.3课程设计目标
(1)复习、巩固Java语言的基础知识,进一步加深对Java语言的理解和掌握;
(2)课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼学生的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力;
(3)培养学生在项目开发中团队合作精神、创新意识及能力。
2需求分析
Java是一种被广泛使用的网络编程语言。
随着Internet的发展,Java语言以其强大的生命力得到了越来越广泛的应用。
Java语言具有面向对象、可移植性好、与硬件无关、系统强健安全、提供了并发机制、性能高的众多优点,并提供了茶叶网站分布性、多线程、动态性的支持。
GUI指的就是采用图形方式显示的计算机操作用户界面,实现GUI编程的必不可少的三个条件是组件、容器、事件。
一个软件是否为优秀的软件,用户界面的设计直观重要。
开发人员在进行GUI设计时,需要与软件的用户进行充分的沟通,确定用户的需求和使用习惯,在实用性与美观之间达到平衡。
2.1功能需求
2.1.1GUI字体编程
程序包括字体改变、字型大小、颜色改变、字体加粗、字体倾斜等功能,采用图形方式显示的计算机操作用户界面。
2.1.2网络连接编程
程序包括端口连接、信息传递、信息显示等功能,采用搭建服务器端对客户端的连接进行响应,实现服务器向客户端广播数据。
2.2开发及运行环境分析
1.硬件平台2.软件平台
CPU:
P1.60GHZ操作系统:
Windowsxp//Window7/Window8等
内存:
128MB以上开发工具:
Eclipse
3详细设计及思路
3.1GUI应用程序设计
(1)引用需要的包和类;
(2)设置一个顶层的容器;
(3)根据需要为容器设置布局管理或使用默认布局管理器;
(4)将组建田家栋容器内,位置自行设计;
(5)为响应事件的组件编写事件处理代码。
3.1.1GUI应用程序所用类和类的层次结构
类名
含义
说明
Component
组件类
所有图形用户界面类的超类
Container
容器类
Component类的一个子类,是一种可以容纳其他组件和容器的组件
JComponent
轻量组件类
所有轻量组件类的超类,它的子类都在javax.swing包中,如JButton、JLabel、JMenu、JRadioButton、JList、JTextField、JTextArea、JscrollPane等
Graphics
图形类
抽象类,提供了在容器中绘制字符串和简单图形的图形环境
Color
颜色类
这个类用来处理图形和组件的颜色。
例如,可以为JFrame、JPanel等组件指定背景色和前景色,也可以指定绘制的线条、图形和字符串的颜色
Font
字体类
在使用绘图对象绘制字符串时可以指定字体,其中包括字体、字型和大小
JApplet
小程序类
Applet类的子类,创建基于Swing的Java小应用程序需要继承JApplet类
JFrame
框架窗口类
顶级窗口。
在Java图形应用程序中,它是包含其他Swing组件的最外层容器
JDialog
对话框类
弹出式对话框,一般用来接收用户的输入和显示有关信息
表3.1常用类
Java.awt包中一部分类的层次关系如图所示
3.1.2常用组件简介
JApplet:
java.lang.Applet的扩展版本。
JButton:
按钮或命令按钮。
JCheckBox:
复选框。
JCheckBoxMenuItem:
复选菜单项。
JComboBox:
组合框。
JComponent:
Swing组件的基类。
JDialog:
对话框窗口的基类。
JLabel:
标签项。
JList:
列表框。
JMenu:
菜单。
JMenuBar:
菜单条。
JMenuItem:
菜单项。
JPanel:
通用的轻量容器。
JPasswordField:
文本框(用来输入口令)
3.1.3JFrame对象
1、Frame(JFrame)窗体容器
向Frame中添加组件,可直接向Frame对象添加
this.add(newButton(“确定”));
向JFrame对象中添加组件,要先获取ContentPane对象,然后再使用add()方法把组件添加到ContentPane。
Conteinerc=getContentPane();
c.add(newJButton(“退出”));
2、JPanel(Panel)面板容器,也称画布、白板。
3、按钮:
命令按钮:
Button(JButton)
单选按钮:
RadioButton(JRadioButton)
RadioButtonGroup(按钮组)
复选框:
CheckBox
4、JLabel(Lable)标签
主要用于显示字符串,输出一些信息及提示;
5、文本框
文本框即能输入又能输入字符串,而Lable只能输出,有三种文本框:
单行文本框:
TextField(JTextField)
多行文本框:
TextArea(JTextArea)
口令框:
PassWordField
6、列表框,组合框
列表框:
JList(List),下拉式列出选项;
组合框:
JComboBox(CombBox),如同List,但最上面为可编辑区,可进行输入编辑,也可从下拉列表中选项到编辑区;
演示例程:
list_combBox.java
7、其它组件
滚动条:
Slider;
表格:
Table;
树:
Tree;
滚动栏:
ScollBar;
滚动面板:
ScollPane;
标签面板:
TabbedPane;
3.1.4事件处理
1事件处理模型
2事件类
3事件监听器
4事件处理的基本步骤
5常见的事件处理
6事件适配器类
事件类
事件类型
事件名称
产生事件的组件
ActionEvent
动作事件
JButton,JTextField, JMenuItem,JList
AdjustmentEvent
调整事件
JScrollBar
ComponentEvent
组件事件
JComponent类及其子类
ContainerEvent
容器事件
JContainer类及其子类
FocusEvent
焦点事件
同ComponentEvent
ItemEvent
选项事件
JCheckbox, JCheckboxMenuItem, JList , JComboBox
KeyEvent
键盘事件
同ComponentEvent
MouseEvent
鼠标事件
同ComponentEvent
TextEvent
文本事件
JTextField, JtextArea
WindowEvent
窗口事件
JFrame, JWindow, JDialog
表3.2事件类型
3.1.5事件监听器
事件的处理必须由实现了相应的事件监听器接口的类对象处理。
Java为每类事件定义了相应的接口。
事件类和接口都是在java.awt.event包中定义的。
表2列出了常用的事件监听器接口、接口中定义的方法以及所处理的事件。
接口中定义了一个或多个方法,这些方法都是抽象方法,必须由实现接口的类实现,Java程序就是通过这些方法实现对事件的处理的。
监听器接口
接口中的方法
所处理的事件
ActionListener
actionPerformed(ActionEvent e)
ActionEvent
ItemListener
itemStateChanged(ItemEvent e)
ItemEvent
MouseListener
mouseClicked(MouseEvent e)
mouseEntered(MouseEvent e)
mouseExited(MouseEvent e)
mousePressed(MouseEvent e)
mouseReleased(MouseEvent e)
MouseEvent
MouseMotionListener
mouseMoved(MouseEvent e)
mouseDragged(MouseEvent e)
MouseEvent
KeyListener
keyPressed(KeyEvent e)
keyReleased(KeyEvent e)
keyTyped(KeyEvent e)
KeyEvent
FocusListener
focusGained(FocusEvent e)
focusLost(FocusEvent e)
FocusEvent
表3.3事件监听
AdjustmentListener
AdjustmentValueChanged(AdjustmentEvent e)
AdjustmentEvent
CompomentListener
componentMoved(ComponentEvent e)
componentHiden(ComponentEvent e)
componentResized(ComponentEvent e)
componentShown(ComponentEvent e)
ComponentEvent
WindowListener
windowOpened(WindowEvent e)
windowClosing(WindowEvent e)
windowClosed(WindowEvent e)
windowActivated(WindowEvent e)
windowDeactivated(WindowEvent e)
windowIconified(WindowEvent e)
windowDeiconified(WindowEvent e)
WindowEvent
ContainerListener
componentAdded(ContainerEvent e)
componentRemoved(ContainerEvent e)
ContainerEvent
TextListener
textValueChanged(TextEvent e)
TextEvent
3.1.6事件处理的基本步骤
处理事件必须注册监听器:
只有为组件注册了监听器后,在程序运行时,当发生该事件时才能由监听器对象处理,否则即使发生了相应的事件,事件也不会被处理。
一个事件源,发生多种事件,由多个事件监听器处理。
一个监听器对象,处理多个事件源的同一类型的事件(如下述程序两个按钮可以用一个监听器对象处理。
)
窗口事件:
最常用的窗口是JFrame对象。
在窗口对象上可以发生如下7种事件:
打开窗口、正在关闭窗口、关闭窗口、激活窗口、非激活窗口、窗口图标化和窗口还原事件。
要处理窗口事件需实现WindowListener接口并为窗口对象注册事件监听器。
3.1.7菜单设计
Java语言支持两种类型的菜单:
下拉式菜单和弹出式菜单。
可在Swing的所有顶级容器(JFrame、JApplet、JDialog)中添加菜单。
Java提供了6个实现菜单的类:
JMenuBar、JMenu、JMenuItem、JCheckBoxMenuItem、JRadioButtonMenuItem、JPopupMenu。
JMenuBar是最上层的菜单栏,用来存放菜单。
JMenu是菜单,由用户可以选择的菜单项JMenuItem组成。
JCheckBoxMenuItem和JRadioButtonMenuItem分别是检查框菜单项和单选按钮菜单项
JPopupMenu是弹出菜单。
(1)首先创建一个顶级容器,然后创建菜单栏并与顶级容器关联
JMenuBarjmb=newJMenuBar();//创建菜单栏对象
frame.setJMenuBar(jmb);//将菜单栏与框架关联
(2)创建菜单,把菜单添加到菜单栏上
JMenufileMenu=newJMenu("File");//创建菜单
JMenuhelpMenu=newJMenu("Help");
jmb.add(fileMenu);//将菜单添加到菜单栏上
jmb.add(helpMenu);
(3)创建菜单项并添加到菜单上
依次将菜单项New、Open、分隔线、Print添加到File菜单上。
fileMenu.add(newJMenuItem("New"));
fileMenu.add(newJMenuItem("Open"));
fileMenu.addSeparator();
fileMenu.add(newJMenuItem("Print"));
(4)创建子菜单项
由于JMenu是JMenuItem的子类,JMenu对象可以作为JMenuItem对象使用,因此可以将JMenu对象添加到另一个JMenu对象上,创建二级菜单。
MenufontMenu=newJMenu("Font");
fontMenu.add(newJMenuItem("Bold"));
editMenu.add(fontMenu);
colorMenu=newJMenu("Color");
editMenu.add(colorMenu);
jmiRed=newJRadioButtonMenuItem("Red");
jmiGreen=newJRadioButtonMenuItem("Green");
jmiBlue=newJRadioButtonMenuItem("Blue");
ButtonGroupbtg=newButtonGroup();
btg.add(jmiRed);
btg.add(jmiGreen);
btg.add(jmiBlue);
colorMenu.add(jmiRed);
colorMenu.add(jmiGreen);
colorMenu.add(jmiBlue);
(7)为菜单项设置图标、热键和快捷键
为菜单设置图标需调用菜单项的setIcon()方法,例如:
jmiNew.setIcon(newImageIcon("images/new.gif"));
jmiOpen.setIcon(newImageIcon("images/open.gif"));
为菜单或菜单项设置热键(同时按Alt键和热键选择菜单或菜单项),使用setMnemonic()方法,例如:
fileMenu.setMnemonic('F');
jmiOpen.setMnemonic('O');
还可以使用setAccelerator()方法为菜单或菜单项设置快捷键(同时按下CTRL键和快捷键直接选择菜单项)。
相比之下,快捷键更为方便。
下面把CTRL+O设为菜单项Open的快捷键。
jmiOpen.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_O,ActionEvent.CTRL_MASK));
方法setAccelerator()需要一个KeyStroke类对象。
这里通过KeyStroke类的静态方法getKeyStroke()创建一个按键的实例,常量VK_O代表O键,常量CTRL_MASK表示同时按下Ctrl键。
3.2网络连接编程设计
(1)分别建立服务器端和客户端的java源程序;
(2)建立服务器端和客户端的连接;
(3)客户端向服务器端发送消息;
(4)服务器端接收客户端发来的信息;
(5)服务器端将客户端发来的信息显示到屏幕上。
3.2.1网络连接编程功能模块图
3.2.2网络基础知识
网络上的计算机要互相通信,必须遵循一定的协议。
目前使用最广泛的网络协议是Internet上所使用的TCP/IP协议。
在TCP/IP协议中IP层主要负责网络主机的定位,数据传输的路由,由IP地址可以唯一地确定Internet上的一台主机。
而TCP层则提供面向应用的可靠的或非可靠的数据传输机制,这是网络编程的主要对象,一般不需要关心IP层是如何处理数据的。
网络编程主要解决两大问题:
(1)如何准确的定位网络上一台或多台主机
(2)找到主机后如何可靠高效的进行数据传输。
目前较流行的网络编程模型是客户机/服务器(C/S)结构。
即通信双方一方作为服务器等待客户提出请求并予以响应。
客户则在需要服务时向服务器提出申请。
服务器一般作为守护进程始终运行,监听网络端口,一旦有客户请求,就会启动一个服务进程来响应该客户,同时自己继续监听服务端口,使后来的客户也能及时得到服务。
IP地址:
标识计算机等网络设备的网络地址,由四个8位的二进制数组成,中间以小数点分隔。
比如166.111.136.3 , 166.111.52.80
主机名(hostname):
网络地址的助记名,按照域名进行分级管理。
端口号(port number):
网络通信时同一机器上的不同进程的标识。
服务类型(service):
网络的各种服务。
在Internet上IP地址和主机名是一一对应的,通过域名解析可以由主机名得到机器的IP,由
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 张林博