




免费预览已结束,剩余27页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
企业内部通讯系统毕业设计XX大学毕业设计(论文)题 目: 企业内部即时通讯工具 指导教师: 职称: 学生姓名: 学号: 专 业: 院(系): 完成时间: 年 月 日企业内部即时通讯工具作者姓名: 作者专业及班级: XXXXXXXXXXXXXXX X班指导教师: 【摘要】 随着企业的不断增多,促进了社会经济化的发展,越来越多的企业开始使用内部通讯软件来解决人员的工作沟通问题,它成本低,通讯速度快,方便资料的传递和技术交流。解决了电话的单线程通讯和费用高昂等问题。企业即时通讯工具软件可以很好的解决企业内部通讯问题,使每个员工都能及时的了解自己的工作内容和获取需要的资料,加强了团队的沟通。此系统采用Java语言设计和实现,使用Eclipse开发工具和WindowBuilder Pro插件。系统主要包括通讯列表维护模块、系统操作模块、系统设置模块、任务栏操作模块、系统公告管理模块和系统升级模块。服务器通过局域网的IP地址添加用户,具有对用户删除、改名和群发信使等操作。此系统还应用了JDK 6.0新增的系统托盘技术和JavaDB数据库。系统托盘可以在程序主窗体最小化之后,使用托盘控制窗体的相应操作,例如打开主窗体;JavaDB使用灵活,可以应用到不同的系统平台中,只要该平台有支持Java的环境。【关键字】内部即时通讯、Java、模块、窗体、用户 【Abstact】As enterprises continue to increase and promote the socio-economic-oriented development, more and more of the enterprises are starting to use internal communications software solving communication problem of staff. It is low cost, high speed communications to facilitate the exchange of information and technology transfer. Solve the single-threaded calls communication and costly problems.Enterprise instant messaging software can solve internal communication problems, so that every employee is able to understand their work content and access to required information enhance communication between the team. This system uses the Java language design and implementation, using the Eclipse development tools and WindowBuilder Pro plug-ins. System includes a list of maintenance of communication modules, system operation modules, system settings module, the task bar operation module, the system management module and system upgrades announced modules. Server through the LAN IP address to add users with the user to delete, rename, and bulk operations such as courier. This system also applies the new JDK 6.0 technology and JavaDB database system tray. System Tray can minimize the main form in the program, use the appropriate form tray control operations, such as opening the main form; JavaDB flexible in use, can be applied to different platforms, as long as the platforms that support Java environment.【Key Words】Internal instant messaging, Java, modules, forms, user前言从20世纪90年代开始,公共的即时消息和实时通讯逐渐成为了人们重要的沟通工具, 如MAIL、QQ、MSN等。但是,公共的即时信息给人们带来方便的同时,也带来了极大的安全隐患,当今网络,木马程序、病毒和其他恶意软件横行,稍不注意,电脑就会中毒。对于企业,使用公共的即时消息是一种安全威胁,企业的IT部门对于公共即时消息的使用计划无法控制。公共的即时通讯,正成为病毒和其他恶意软件入侵企业计算机的一个渠道,这意味着最终用户能够把敏感的数据外传。为此企业内部即时通讯工具应运而生,本工具从源头上解决了这一隐患,专为企业而设计,通讯服务器就直接置于企业内部,所有信息由企业自己管理,让企业以更安全、更可伸缩和更易于管理的方式灵活方便地使用协同和通讯服务的功能。企业即时通讯:简称EIM(Enterprise Instant Messaging),它是一种面向企业终端使用者的沟通工具服务,使用者可以通过安装了即时通信的终端机进行两人或多人之间的实时沟通。企业即时通讯工具可以很好的解决企业通讯问题,面对工作目标和团队工作中可能出现的问题,必须加强团队的沟通,使每个员工都能及时地了解自己的工作内容和获取需要的资料。为解决这一问题,开发一个界面友好、易于操作的内部通讯软件成为企业的首选。整个系统从操作简便、界面友好、灵活、实用、安全的要求出发,实现通讯人员列表的维护、信息的发送与接收、搜索用户、访问资源、信使群发等功能。目录前言3第1章 系统分析61.1 需求分析61.2 可行性分析6第2章 总体设计62.1 项目规划62.2 系统功能结构图7第3章 系统设计83.1 设计目标83.2 开发及运行环境83.3 数据库设计83.3.1 数据表概要说明93.3.2 数据表的结构93.3.3 E-R图:10第4章 技术准备104.1 Java系统托盘104.2 嵌入式连接JavaDB数据库11第5章 系统功能架构设计12第6章 系统公共类设计126.1 编写访问数据库的DAO类136.2 编写代码创建系统托盘136.3 编写系统工具类14第7章 系统主要功能模块设计157.1 主窗体设计157.1.1 界面设计157.1.2 代码设计167.2 用户列表模块187.2.1 界面设计197.2.2 代码设计197.3 用户通讯模块207.3.1 界面设计217.3.2 代码设计217.4 系统工具模块227.4.1 界面设计227.4.2 代码设计227.5 系统设置模块237.5.1 界面设计237.5.2 代码设计24致谢24参考文献25第1章 系统分析1.1 需求分析根据一些大、中、小型企业和商业公司的实际需求,需要本系统具有以下功能。统一友好的操作界面,能保证系统的易用性。规范、完善的通讯列表维护功能。全方位、多功能信息通讯功能。提供系统升级功能。提供信使群发功能,方便消息广播。程序缩放到系统任务栏中,提供最大的可以屏幕空间。1.2 可行性分析计算机技术的飞速发展,使计算机应用技术在企业管理中也得到了迅速的普及,人们开始通过计算机对实务工作中的各项信息进行管理,以帮助企业提高生产、运作的效率。企业员工之间的信息沟通也是信息化管理的一部分,利用计算机实现工作中的各种问题的沟通,例如工作任务通知、技术资料传递等。本系统根据企业工作中可能遇到的各种沟通问题开发而成,能够很好的避免工作中的错误,真正实现了企业的信息化管理。第2章 总体设计2.1 项目规划企业即时通讯工具软件使用了JDK6.0新增的JavaDB数据库,系统主要由通讯列表维护、系统操作、系统设置、任务栏操作、系统公告管理和系统升级等6部分组成。通讯列表维护通讯列表维护包括用户改名、添加用户、删除用户、显示列表访问主机和信使群发等6部分。系统操作系统操作包括选择界面外观、搜索用户、系统更新。系统设置系统操作包括系统路径设置、登录信息设置、IP搜索范围设置。任务栏操作任务栏操作包括打开窗体、访问服务器、退出。公告管理公告管理用于向所有用户显示企业公告。系统升级系统升级可以维护系统的最新版本。2.2 系统功能结构图第3章 系统设计3.1 设计目标对于典型的信息通讯管理系统,尤其是用于企业内部通讯的管理系统,数据信息流量比较大,必须满足用户方便、操作灵活、安全可靠等设计需求。本系统在设计时应该满足以下几个目标。系统运行稳定、安全可靠。界面设计美观,人机交互界面友好。系统最大限度的实现了易安装性、易维护性和易操作性。强大的信息通讯功能。基础信息设置规范、完善。可以根据指定IP范围搜索网络用户。3.2 开发及运行环境本系统运行时需要以下条件。硬件平台:CPU:Pentium4 1.8GHz。内存:128MB以上。软件平台:操作系统:Windows 2000、Windows XP、Windows 2003、Linux、Mac等。开发工具:Eclipse、JDK6.0分辨率:最佳效果1024像素*768像素3.3 数据库设计本系统数据库采用JavaDB数据库,系统数据名称为DB_EQ,共包含2张表。下面将给出数据表概要说明及数据表的结构。3.3.1 数据表概要说明从读者角度出发,为了让读者对本系统的数据库中数据表有一个更清晰的认识,设计了一个数据表树形结构图,如右图所示,该数据表树形结构图包含系统所有数据表。3.3.2 数据表的结构内部通讯系统的数据表结构如下。tb_location(定位信息表)定位信息表主要用来保存通讯窗体的位置和窗体大小。表tb_location的结构如表1所示。表1 表tb_location的结构字段名数据类型是否为空是否主键描述xLocationintYesx轴坐标yLocationintYesy轴坐标widthintYes窗体宽度heightintYes窗体高度tb_users(用户信息表)用户信息表主要用来保存企业内部的通讯用户列表。用户信息表的结构如表2所示。表2 表tb_users的结构字段名数据类型长度是否主键描述ipvarchar16是用户IP地址hostvarchar30主机名称namevarchar20姓名tooltipvarchar50提示文本iconvarchar50头像3.3.3 E-R图:用户用户IP地址姓名通讯窗体X轴坐标Y轴坐标提示文本主机名称窗体高度窗体宽度使用11第4章 技术准备4.1 Java系统托盘Java从jdk6.0之后提供了SystemTtay 类,使用该类可以创建系统托盘对象,系统托盘由运行在桌面上的所有应用程序共享。系统托盘图标将显示在操作系统的任务栏通知区域,并且可以激活功能菜单执行不同的功能。任务栏图标是工具软件最长使用的功能,它可以将软件窗体隐藏,只在任务栏的通知区域显示一个软件图标。在某些平台上,可能不存在或不支持系统托盘,在这种情况下,必须使用isSupported()方法检查系统托盘是否受支持。如果该方法返回false,说明该平台不支持系统托盘。 系统托盘使用SystemTray类的getSystemTry()方法获取实例对象,它总是对每个应用程序返回相同的实例。 系统托盘可以添加TrayIcon类的实例对象,也就是系统托盘图标,该图标对象将显示在系统托盘中,它支持弹出菜单和气泡式的信息提示。 可重用业务和数据访问对象。这样的对象可以在不同J2EE环境(Web或EJB)、独立应用程序、测试环境之间重用。可以使用SystemTray类的add()方法为系统托盘添加相应的图标对象。TrayIcon类的常用方法如表3所示。表3方法名方法描述TrayIcon(Image image)以image对象构建指定图像对象DisplayMessage(String caption,String text,TrayIcon.MessageType messageType)在托盘图标位置显示弹出消息。消息将在一段时间之后或用户在消息上单击时消失。单击消息可能触发ActionEventsetImageAutoSize(Boolean autosize)是托盘图标的图像自动调整大小setPopupMenu(PopupMenu popup)设置托盘图标的弹出菜单4.2 嵌入式连接JavaDB数据库JavaDB是java的小型数据库,它可以像MySQL那样以服务器模式运行,也可以像Access那样嵌入到应用程序中,不同的是,该数据库可以应用到不同的系统平台中,只要该平台有支持Java的环境。 本系统使用JavaDB数据库的嵌入式应用模式,在系统启动时会判断数据库是否建立,如果没有建立数据库,则花费一定时间创建一个新的数据库,并添加各种默认数据。以嵌入模式使用JavaDB数据库需要设置以下属性:数据库驱动类使用derby.jar中提供的“org.apache.derby.jdbc.EmbeddedDriver”访问数据库的URL为:“jbdc:derby:DatabaseName”。其中DatabaseName是数据库名称。如果为URL添加“;create = true”信息,将使用DatabaseName指定的数据库名称创建一个新的数据库。第5章 系统功能架构设计内部通讯系统维护联系人列表收/发通讯信息系统设置系统更新选择外观搜索用户信使群发访问资源第6章 系统公共类设计多个模块或者整个系统可能重复调用一些类,完成指定的业务逻辑,所以先编写系统公共类,方便后面的使用。6.1 编写访问数据库的DAO类该公共类包含在com.lzw.dao包中,用来实现对数据库的各种操作,包括数据的插入、更新和查询。整个系统的数据库访问工作全部由该类完成。编写DAO公共类的方法如下:1 在Eclipse中新建一个名为EQ的Java项目,然后在项目的源文件夹中建立一个Java包com.lzw.dao,用来存放数据库操作类。为了在整个工程中使用JDBC操作JavaDB数据库,必须在项目中建立lib文件夹,将JavaDB的数据库驱动包复制到该文件夹中,然后将文件夹中的驱动包添加到项目的构建路径中。2 在com.lzw.dao包下建立一个类Dao.java文件,在编辑器中,编写导入所需的各种类库包,关键代码如下:package com.lzw.dao;import java.awt.Rectangle;import java.io.File;import .*;import java.sql.*;import java.util.*;import javax.swing.JOptionPane;import com.lzw.userList.User;2 编写数据库驱动和连接数据库的代码,本系统使用JavaDB数据的嵌入式连接方式,它会创建指定的数据库文件夹,所以在连接数据库时先使用dbExits()方法判断数据库文件夹是否存在,如果存在,说明数据库已经创建。另外Dao类使用getDao()方法获取惟一的实例对象。3 定义类的不同公共方法,用来实现对数据库的插入、更新和查询等各种操作,引用实体对象作为方法参数6.2 编写代码创建系统托盘本系统的公共部分包括创建系统托盘的创建,该系统托盘可以在程序主窗体最小化之后,使用托盘控制窗体的相应操作,例如打开主窗体。1 建立Java包com.lzw,在它下建立MainFrame.java文件,该类继承Frame类成为String的窗体类,该类是程序的主类,其中包括了系统托盘的创建与菜单设置。SystemTrayInitial()方法用于初始化系统托盘,系统托盘图标的单价事件处理关键代码如下:trayicon.addActionListener(new ActionListener()public void actionPerformed(ActionEvent e)setVisble(true);toFront()l;);2 编写createMenu()方法,在初始化系统托盘时调用了createMenu()方法创建系统托盘的弹出菜单,主要包括“打开”、“访问服务器”和“退出”命令。6.3 编写系统工具类在com.lzw.system包下建立文件Resource公共类,该公共类主要用于执行一些系统功能,例如发送信使、打开系统文件夹等。1 在Resource类中编写loginPublic()方法,该方法用于登录服务器进行升级服务,根据用户指定的升级路径、用户名和密码,通过Runtime类执行外部命令“net use”访问服务器2 在Resource类中编写sendMessage()方法,该方法用于发送信使信息到对方通讯用户,信使信息可以在对方没有启动本系统时,收到操作系统的提示信息,这种信息虽然没有本系统中的通讯方式方便,但是它不需要服务器,更 通讯软件,所有能够与没有安装本系统的用户通讯或者提示对方启动本系统。3 在Resource类中编写sendGroupMessage()方法,该方法用于执行信使群发命令,信使群发也可以用来发送临时系统公告,它可以向指定的用户群体发送信使信息,而不用分别选择用户进行信使发送。该方法在线程中执行信使群发,避免系统因长时间的工作而导致瘫痪和缓慢现象。另外信使群发将启动状态提示窗口,提示每个信使的发送状态,成功或者失败。4 在Resource类中编写starFolder()方法,该方法将通过调用Runtime类的exec()方法打开系统文件夹,在本系统中将调用该方法访问通讯对方的共享文件夹。关键代码如下:public static void startFolder(String str)tryRuntime.getRuntime().exec(“cmd/c start”+str);catch(IOException e)e.printStackTrace();5 在Resource类中编写searchUsers()方法,该方法将根据用户设置的IP搜索范围,在网络中搜索所有IP地址,如果有IP地址可以访问,就以该IP的主机名称作为用户名称,创建用户实体对象,添加到数据库中,并且在用户列表中也会添加该用户。该方法在执行用户搜索时,会操作进度条组件,显示当前搜索进度,并在添加搜索到的用户时,在List列表组件中添加提示信息。第7章 系统主要功能模块设计7.1 主窗体设计用户启动企业即时通讯工具软件之后,将启动程序主窗体和系统托盘界面,其中主窗体包括系统的所有功能模块,例如用户列表、系统工具面板和系统设置面板以及公告信息按钮等。7.1.1 界面设计1 在Eclipse的“包资源管理器”视图中选择“EQ”项目,在项目的“src”文件夹上单击鼠标右键,选择“新建”/“其他”菜单项,在弹出“新建”对话框“输入过滤文本”文件框中输入“JFrame”,然后选择“Designer”/“Swing”/“JFrame”节点,单击下一步按钮。2 在“New Swing JFrame”对话框中,创建“MainFrame”类。单击“完成”按钮。3 单击编辑器左下角的“Designer”选项卡,打开UI设计器,设置布局管理器类型为BorderLayout。4 从Palette组件托盘选择“JPanel”组件,放置到窗体容器中,设置该JPanel组件的布局管理器为BorderLayout,设置Border边框属性为“Line Border”,variable属性设置为“mainPanel”。5 在mainPanel面板组件上放置两个JPanel面板组件,分别设置它们的variable属性为“BannerPanel”和“statePanel”,至于这两个面板组件的布局管理器,统一设置为“BorderLayout”。再从Palette组件托盘选择“JTabbedPane”组件添加到该面板中,并设置variable属性为“tabbedPane”;设置“tabPlacement”属性为“left”。6 在BannerPanel面板组件中添加JPanel组件,设置variable属性为“titlePanel”,设置布局管理器layout属性为“BordorLayout”,设置constraints属性为“north”。在该面板组件中添加窗体标题图标和关闭按钮组件。7.1.2 代码设计1 单击MainFrame类文件编辑器的source选项卡,在这里会看到WindowBulider插件自动生成的源代码。在代码中,导入程序运行所需要的类以及申明的实力变量,其中的实例变量mainFrame类型为自定义的主窗体对象。mainFrame类的关键代码如下:package com.lzw;import java.awt.*;import java.awt.Color;import java.awt.Cursor;import java.awt.Point;import java.awt.Toolkit;import java.awt.TrayIcon.MessageType;import java.awt.event.*;import java.io.*;import .*;import java.util.*;import java.util.prefs.Preferences;import javax.swing.*;import javax.swing.border.*;import javax.swing.tree.*;import com.lzw.Combo;import com.lzw.dao.Dao;import com.lzw.frame.TelFrame;import com.lzw.system.Resource;import com.lzw.userList.*;public class MainFrame extends JFrameprivate JLabel resizeHander; private JButton closeButton; private JPanel titlePanel;private JPanel mainPanel;private JLabel frameTitleLable;private JLabel ipAddLabel;private JLabel dateLabel;private Combo myStatusChooser;private JLabel myStatusLabel;private JToolBar toolBar;public static MainFrame frame=null;private JTabbedPane tabbdePane;private DatagramSocket ss;private final JLabel statusLabel;private JButton messageAlertButton;private ImageIcon messageAlertIcon;private ImageIcon messageAlertNullcon;private Rectangle location;private Dao dao;private JButton userInfoButton;private ImageIcon userTicon;private ImageIcon sys()Ticon;private ImageIcon sysSTicon;private ImageIcon closeWB1;private ImageIcon closeWB2;2 myStatusChooser变量是Combo组件类的实例对象,而Combo组件是继承JComboBox组件自定义的新组件,该组件取消了外观的绘制,直接在组件上显示内容,这需要重写父类的paint()方法。3 frameTitleLabel变量是JLabel组件的实例对象,本系统使用该组件作为窗体对象的窗体标题栏,其中窗体对象已经设置Undecorated属性为“true”,取消了原窗体的外观修饰,所有frameTitleLabel组件需要添加处理窗体移动事件的监听器,这就需要设置该组件的MouseListener和MouseMotionListener事件监听器。4 resizerHander变量是JLabel组件类的实例对象,本系统将该对象放置在窗体右下角,使用该组件实现窗体大小的调整。这就需要为该组件添加MouseMotionListener监听器,在监听器中处理调整窗体大小的事件。5 编写getMainPanel()方法创建窗体的mainPanel主面板,该面板组件用于显示主窗体中的所有组件,设置其布局管理器layout属性为BorderLayout,设置面板的border边框属性为LineBorder,在主面板中添加主窗体是所有其他面板和组件。7.2 用户列表模块通讯软件也需要一个类似电话薄的功能,用户列表模块就是用于实现记录用户信息、更改用户姓名、删除通讯用户等与电话薄功能类似的模块,它是主窗体最先显示的模块界面,包含了当前系统数据库中记录的所有通讯用户信息并以列表行事显示到界面中。7.2.1 界面设计 用户列表模块的界面设计主要包括自定义的ChatTree树组件和它的JLabel标题组件。界面设计的注意工作是代码设计。7.2.2 代码设计1 在MainFrame类中编写getUserList()方法,该方法用于初始化用户列表模块的界面,在该方法中创建一个JScrollPane滚动面板组件的实例对象,该滚动面板将容纳显示用户列表的ChatTree自定义和显示标题信息的JLabel组件。这两个组件是通过不同的方法进行初始化的。2 编写getChatTreeLabel()方法,该方法用于初始化chatTreeLabel对象,该对象是JLavel组件的实例,用于显示用户列表的标题。3 编写getChatTree()方法,该方法用于初始化chatTree对象,它是自定义的ChatTree树组件的实例,用于显示数据库中的所有通讯用户,而且可以对用户进行管理,例如添加、删除等。4 继承MouseAdapter类编写用户列表的鼠标事件监听器类ChatTreeMouseListener,当在用户列表中双击某个用户时,该监听器将获取选择的用户信息,并获取该用户的User尸体对象,根据该对象的属性信息打开相应的通体窗体。5 编写getPopMenu()方法,该方法用于创建弹出菜单,这个弹出菜单在用户列表上单击鼠标右键时被弹出,主要包括“更名”、“添加用户”、“删除用户”、“信使群发”、“访问主机资源”和“访问公共程序”命令。6 编写addUserPopup()方法,该方法将为ChatTree用户列表添加弹出菜单,这个弹出菜单是由getPopupMenu()方法创建并初始化的。addUserPopup()方法在MouseListener事件中判断用户的鼠标按键事件来显示弹出菜单,并且根据用户列表的选择,确定菜单中的命令是否可用。处理鼠标按键的按下和释放事件方法的关键代码如下:public void mousePressed(MouseEvent e)if(e.isPopupTrigger()showMenu(e);public void mouseReleased(MouseEvent e)if(e.isPopupTrigger()showMenu(e);7 为弹出菜单中的“更名”菜单项创建事件监听器,该监听器的名称为RenameActionListener,它实现了ActionListener接口,并在actionPerformed()方法中处理菜单项的鼠标单击事件,完成更改通讯用户姓名的业务逻辑。7 为弹出菜单中的“添加用户”菜单项创建事件监听器,该监听器的名称为AddUserActionListener,它实现了ActionListener接口,并在actionPerformed()方法中处理菜单项的鼠标单击事件,完成为系统添加新用户的业务逻辑。8 为弹出菜单中的“删除用户”菜单项创建事件监听器,该监听器的名称为delUserActionListener,它实现了ActionListener接口,并在actionPerformed()方法中处理菜单项的鼠标单击事件,完成从用户列表和数据库删除用户的业务逻辑。9 为弹出菜单中的“信使群发”菜单项创建事件监听器,该监听器的名称为messagerGrouSendActionListener,它实现了ActionListener接口,并在actionPerformed()方法中处理菜单项的鼠标单击事件,完成为选定的用户范围发送信使群发信息的业务逻辑。10 为弹出菜单中的“访问主机资源”和“访问公共程序”两个菜单项创建事件监听器,该监听器的名称为accessFolderActionListener,它实现了ActionListener接口,并在actionPerformed()方法中处理菜单项的鼠标单击事件,完成访问选定用户主机资源或访问公告程序服务器的业务逻辑。7.3 用户通讯模块在用户列表中选择并双击用户头像,将启动该用户的通讯窗体。通过窗体可以和对方互通文本信息和信使信息,在窗体右侧会显示通讯对方的用户信息,例如对方的主机名、用户名和IP地址。7.3.1 界面设计(1) 在项目的src文件夹中,单击鼠标右键,选择“新建”/“其他”菜单项,在弹出“新建”对话框的“输入过滤文本”文本框中输入“JFrame”,然后选择“Designer”/“Swing”/“JFrame”节点,单击“下一步”按钮。(2) 然后打开UI设计器,设置窗体的undecorated属性为“ture”取消窗体修饰。设置contentPane容器的布局管理器类型BorderLayout。(3) 在contentPane容器中添加一个JPanel面板组件,其variable属性设置为“content”,在content面板上添加两个面板组件JPanel,其variable属性分别设置为“titlePanel”和“infoPanel”,这两个面板的constrainsts属性分别为“north”和“east”。再添加一个JSplitPanel分割面板组件,设置variable属性为“mainPanel”,设置constraints属性为“center”。(4) 在mainPanel分割面板中的top顶层位置放置JScrollPane滚动面板组件,在滚动面板中放置JTextPane文本面板组件,设置variable属性为“receiveText”。(5) 在mainPanel分割面板中的botton底层位置放置JPanel面板组件,variable属性采用默认值“panel_2”,设置布局管理器layout属性为“BorderLayout”,在该面板中分别放置3个JPanel面板组件,它们的variable属性使用默认值“sendButton”和“messageButton”,设置sendButton按钮的text属性为“发送”,设置messageButton按钮的text属性为“信使”。7.3.2 代码设计(1) 在TelFrame类的程序代码中,导入程序运行所需要的类以及声明的实例变量,其中的实例变量instance用于保存所有窗体实例对象,以确保每个用户的通讯窗体在系统中的惟一性。(2) 编写TelFrame类的getInstance()方法,该方法用户获取指定用户的通讯窗体对象,本系统的所有通讯窗体在创建之后都会保存在instance集合变量中。如果在该集合变量中已经存在要通讯的用户窗体,该方法将直接使用这个窗体对象,否则调用构造方法创建一个新窗体,并保存在instance集合变量中。(3) 编写TelFrame类的构造方法,该构造方法在创建用户的通讯窗体时,进行一些初始化工作。初始化的内容包括初始化Dao公共类的对象、初始化用户实体类、初始化获取通讯IP、初始化窗体位置、关闭方式等。另外,构造方法还初始化了窗体工具栏中按钮的图标对象。(4) 编写receiveInfo()方法,该方法用于将接收到的信息添加到信息接收文本面板中,而且在信息的首行会使用蓝色字体显示信息发送者的姓名和日期。(5) 编写“发送”按钮的事件监听器SendActionListener类,该类事项了ActionListener接口,并在actionPerformed()方法中实现信息发送的业务逻辑,其中调用了getSendInfo()方法获取发送信息文本面板中的文本信息,调用了inserUserInfoToReceiveText()方法将用户信息插入到信息接收文本面板中,然后使用UDP数据报将信息发送到对方主机。(6) 编写“信使”按钮事件监听器MessageButtonActionListener类,该类事项了ActionListener接口,并在actionPerformed()方法中实现发送信使的业务逻辑,其中调用了insertUserInfoReceiveText()方法向对方主机发送信使信息。7.4 系统工具模块系统工具模块包括选择系统界面、搜索网络用户和系统升级功能,其中搜索系统用户功能可以在指定IP范围内搜索所有正在运行着的计算机用户,搜索到的用户会保存到数据库,并添加到用户列表中。系统更新可以从服务器下载最新程序更新本地系统,而界面选择功能可以选择系统使用的外观样式,这将改变本系统的按钮、滚动条、文本框等组件的外观样式。7.4.1 界面设计系统工具模块的界面设计并不是十分复杂,主要工作也是代码设计。系统界面7.4.2 代码设计(1)在MainFrame类中编写createSysToolPanel()方法,该方法用于创建系统工具面板,在该面板中将放置界面选择、搜索用户、系统升级等功能的面板和组件。(2)在createSysToolPanel()方法中创建界面选择功能的interfacePanel面板。将该面板添加到系统工具面板的NORTH方向。设置布局管理器为BorderLayout。为面板添加一个Lisa组件的实例对象faceList,主要用于选择不同的系统界面,另外,还需要为界面选择功能面板添加一个“确定”按钮,并设置该按钮的事件监听器。(3) 在createSysToolPanel()方法中创建搜索用户功能的searchUserPanel面板。将该面板添加到界面的Center位置,设置布局管理器为BorderLayout,为面板添加一个List组件对象searchUserList和一个“搜索新用户”按钮,并为按钮添加时间监听器。(4) 编写“搜索新用户”按钮的事件监听器类SearchUserActionListener,该类实现了ActionListener接口,并在actionPerformed()方法中创建新的线程调用Resource公共类的searchUsers()方法执行搜索网络用户的业务。(5) 在createSysToolPanel()方法中创建系统更新功能的sysUpdatePanel面板。将该面板添加到界面的SOUTH位置,设置布局管理器为GridBagLayout,为面板添加多个显示系统信息的JLabel标签组件的对象和一个“系统更新”按钮,并为按钮添加时间监听器。(6) 编写“系统根系”按钮的事件监听器类SysUpdateListener,该类实现了ActionListener接口,并在actionPerformed()方法中掉头Resource公共类的loginPublic()方法登录升级服务器,调用updateProject()方法更新系统文件。聊天窗口7.5 系统设置模块系统设置模块用于设置系统参数,它主要包括系统路径设置功能、服务器登录信息的设置功能和设置IP搜索范围的设置功能。7.5.1 界面设计在Eclipse中使用WindowBuilder插件进行界面设计。7.5.2 代码设计(1) 在MainFrame类中编写createSysSetPanel()方法,该方法用于创建系统设置面板sysSetPanel,在该面板中包括系统路径面板sysPathPanel、登录面板loginPanel和IP面板ipPanel,它们分别用于系统设置模块的不同功能。sysSetPanel面板需要设置滚动面板,设置布局管理器为BoxLayout。(2) 在createSysSetPanel()方法中创建设置系统路径功能的sysPathPanel面板。将该面板添加到系统工具面板中。设置布局管理器为GridLayout,为面板添加多个JLabel标签组件和多个JTexField文件框组件,设置系统路径信息,并添加一个“确定”按钮,并为该按钮添加时间监听器。(3) 在createSysToolPanel()方法中创建设置登录升级服务器信息的loginPanel面板。将该面板添加到界面中。设置布局管理器为GridLayout,为面板添加设置用户名与密码的标签组件和文本框组件。创建一个“确定”按钮并设置按钮的事件监听器。(4) 在createSysToolPanel()方法中创建设置网络IP搜索范围的ipPanel面板,将该面板添加到界面中。设置布局管理器为GridLayout,为面板添加其实IP和终止IP的标签与文本框组件。创建一个“确定”按钮并设置按钮的世界监听器。(5) 编写系统设置功能的事件监听器SysSetPanelOKListener类,该类用于处理界面上3个“确定”按钮的单价事件。它实现了ActionListener接口并在actionPerformed()方法中判断不同的按钮事件,处理不同的业务逻辑。第8章 系统使用说明8.1 系统介绍企业内部通讯系统必须提供网络通讯功能、在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025江苏盐城市第七人民医院招录政府购买服务用工14人模拟试卷完整答案详解
- 2025河南三联科技工程有限公司招聘模拟试卷及完整答案详解1套
- 2025广东江门新会区会城街道今古洲社区公益性岗位招聘1人考前自测高频考点模拟试题及答案详解(名校卷)
- 2025安徽宣城市中心医院第一批次招聘22人模拟试卷及答案详解(历年真题)
- 书店图书订购协议5篇
- 2025辽宁沈阳市浑南区森工林业集团有限公司招聘56人模拟试卷及1套参考答案详解
- 班组建设与安全培训课件
- 班组年后复岗安全培训课件
- 2025黑龙江绥化海伦市民政服务站招聘46人考前自测高频考点模拟试题附答案详解(典型题)
- 2025辽宁鞍山立山区教育局招聘2人考前自测高频考点模拟试题及1套参考答案详解
- 劳动课冰箱清洁课件
- 2025年公共基础知识考试试题及参考答案详解
- 建筑设计数字化协同工作方案
- 新入行员工安全教育培训课件
- 原生家庭探索课件
- 2024年四川省广安市中考数学试题(含答案逐题解析)
- 员工上下班交通安全知识培训课件
- 产品质量法-企业培训讲座
- 塑胶模具报价表范例
- 三阶魔方七步还原图文教程
- 肌肉注射评分标准
评论
0/150
提交评论