企业内部通信系统的设计与实现本科毕业设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

毕业论文声明
本人郑重声明:
1.此毕业论文是本人在指导教师指导下独立进行研究取得的成果。

除了特别加以标注地方外,本文不包含他人或其它机构已经发表或撰写过的研究成果。

对本文研究做出重要贡献的个人与集体均已在文中作了明确标明。

本人完全意识到本声明的法律结果由本人承担。

2.本人完全了解学校、学院有关保留、使用学位论文的规定,同意学校与学院保留并向国家有关部门或机构送交此论文的复印件和电子版,允许此文被查阅和借阅。

本人授权大学学院可以将此文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本文。

3.若在大学学院毕业论文审查小组复审中,发现本文有抄袭,一切后果均由本人承担,与毕业论文指导老师无关。

4.本人所呈交的毕业论文,是在指导老师的指导下独立进行研究所取得的成果。

论文中凡引用他人已经发布或未发表的成果、数据、观点等,均已明确注明出处。

论文中已经注明引用的内容外,不包含任何其他个人或集体已经发表或撰写过的研究成果。

对本文的研究成果做出重要贡献的个人和集体,均已在论文中已明确的方式标明。

学位论文作者(签名):
年月
关于毕业论文使用授权的声明
本人在指导老师的指导下所完成的论文及相关的资料(包括图纸、实验记录、原始数据、实物照片、图片、录音带、设计手稿等),知识产权归属华北电力大学。

本人完全了解大学有关保存,使用毕业论文的规定。

同意学校保存或向国家有关部门或机构送交论文的纸质版或电子版,允许论文被查阅或借阅。

本人授权大学可以将本毕业论文的全部或部分内容编入有关数据库进行检索,可以采用任何复制手段保存或编汇本毕业论文。

如果发表相关成果,一定征得指导教师同意,且第一署名单位为大学。

本人毕业后使用毕业论文或与该论文直接相关的学术论文或成果时,第一署名单位仍然为大学。

本人完全了解大学关于收集、保存、使用学位论文的规定,同意如下各项内容:
按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存或汇编本学位论文;学校有权提供目录检索以及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版,允许论文被查阅和借阅。

本人授权大学可以将本学位论文的全部或部分内容编入学校有关数据库和收录到《中国学位论文全文数据库》进行信息服务。

在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。

论文作者签名:日期:
指导教师签名:日期:
本科毕业设计(论文)
题目:企业内部通信系统的设计与实现
院系:计算机科学系
专业:计算机科学与技术
摘要
随着企业的不断增多,社会经济的飞速发展,越来越多的企业开始使用内部通信软件来解决人员的工作沟通问题,它成本低,通信速度快,不仅方便人员的技术交流,还解决了电话的单线程通讯和费用高昂等问题。

企业内部通信软件可以很好的解决企业内部通信问题,使每个员工都能及时的了解自己的工作内容和获取需要的资料,加强了团队的沟通。

此系统基于UDP/IP协议,采用Java语言设计和实现,使用Eclipse和WindowBuilder Pro插件进行开发。

系统实现了信息通信、系统设置、搜索用户、访问公共资源、互访对方主机五大功能。

本系统结构清晰、界面友好、操作简单、通用性强,可以大大提高了企业的工作效率。

关键词:企业;信息通信;Java;UDP/IP
Abstract
With the incresing of the enterprises ,and the rapid economic development of society, 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 ,not only facilitate the technology transfer but also 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 based on UDP/IP,uses the Java language design and implementation, use Eclipse and WindowBuilder Pro plugin development. This system realizes five functions including the information communication, system settings, search users, visit the public resources and other host visits,This system structure is clear, friendly interface ,easy to operate. strong universability, it could be greatly improve the efficiency of enterprises.
Keywords:Enterprise ;Information communication ;Java;UDP/IP
目录
摘要..................................................................................................................................... I II Abstract................................................................................................................................ I V 第一章前言 (1)
第二章概述 (2)
第一节开发背景 (2)
第二节课题现状 (2)
第三节软硬件需求 (2)
第三章系统分析 (3)
第一节需求功能分析 (3)
第二节可行性分析 (3)
一、可行性要求、目标 (3)
二、技术可行性分析 (3)
三、经济可行性分析 (4)
第四章系统设计 (5)
第一节系统目标 (5)
第二节系统功能 (5)
第三节数据库结构设计 (5)
一、数据库分析 (5)
二、企业内部通信系统的E-R图 (6)
三、数据库结构设计 (7)
第五章详细设计和代码实现 (7)
第一节主窗体模块的设计与实现 (7)
一、界面设计 (7)
二、实现过程 (8)
第二节公共模块的设计与实现 (10)
一、界面设计 (10)
二、实现过程 (10)
第三节系统托盘模块的设计与实现 (12)
一、界面设计 (12)
二、实现过程 (13)
第四节系统工具模块的设计与实现 (14)
一、界面设计 (14)
二、实现过程 (15)
第五节用户管理模块的设计与实现 (17)
一、界面设计 (17)
二、实现过程 (18)
第六节通信模块的设计与实现 (21)
一、界面设计 (21)
二、实现过程 (24)
第六章总结 (28)
致谢 (29)
参考文献 (30)
第一章前言
从20世纪90年代开始,公共的即时消息和实时通信逐渐成为了人们重要的沟通工具,如MAIL、QQ、MSN等。

但是,公共的即时信息给人们带来方便的同时,也带来了极大的安全隐患,当今网络,木马程序、病毒和其他恶意软件横行,稍不注意,电脑就会中毒。

对于企业,使用公共的即时消息是一种安全威胁,企业的IT部门对于公共即时消息的使用计划无法控制。

公共的即时通信,正成为病毒和其他恶意软件入侵企业计算机的一个渠道,这意味着最终用户能够把敏感的数据外传。

为此企业内部通信工具应运而生,本工具从源头上解决了这一隐患,专为企业而设计,通信服务器就直接置于企业内部,所有信息由企业自己管理,让企业以更安全、更可伸缩和更易于管理的方式灵活方便地使用协同和通信服务的功能。

企业内部通信工具可以很好的解决企业通信问题,面对工作目标和团队工作中可能出现的问题,必须加强团队的沟通,使每个员工都能及时地了解自己的工作内容和获取需要的资料。

为解决这一问题,开发一个界面友好、易于操作的内部通信软件成为企业的首选。

本系统应用了JDK 6.0新增的系统托盘技术和JavaDB数据库。

系统托盘可以在程序主窗体最小化之后,使用托盘控制窗体的相应操作,例如打开主窗体;JavaDB使用灵活,可以应用到不同的系统平台中,只要该平台有支持Java的环境。

整个系统从操作简便、界面友好、灵活、实用、安全的要求出发,实现信息通信、系统设置、搜索用户、访问公共资源、互访对方主机等功能。

第二章概述
第一节开发背景
近几年,随着网络的迅速发展和全球信息化速度的加快,网络通信已经不算是新鲜事物了,但大多数网络通信需要借助Internet上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题,如遭遇到网络攻击、病毒入侵等等。

由于互联网上的网络通信工具有时会给企业内部信息交流带来不便,所以为了方便企业内部用户之间的沟通、保证企业内部局域网的安全,需要开发一个基于局域网的信息收发系统的即时通信工具。

第二节课题现状
企业内部通信系统是基于局域网的即时通信工具,可以说是一个internet通信工具的小规模版本,一般采用UDP或者TCP协议体系等来实现,开发技术已经比较成熟,国外的通信工具较有名的有ICQ、MSN Messenger、国产的QQ、新浪UC都实现了广域网的即时通信。

在最近几年,国内的局域网通信工具较有代表性有飞鸽传书、飞秋,这两款软件的快速、实效、迷你、简单的特点受到了广大企业的好评。

这些工具的实现方式具体细节不易得之,但它无非是利用各种平台上的网络通信接口,基于TCP/IP或者UDP/IP协议架构下的软件产品。

对于一个企业内网,这些功能的实现相比于广域网更加简单。

所以还是有很大研究价值的[1]。

第三节软硬件需求
本系统运行时需要以下条件。

硬件平台:
CPU:Pentium4 1.8GHz
内存:128MB以上
硬盘空间:100MB
软件平台:
操作系统:Windows 2000、Windows XP、Windows 2003等
开发工具:Eclipse、JDK6.0
数据库:JavaDB
第三章系统分析
第一节需求功能分析
本系统的设计目标是实现一个企业内部局域网通信系统,企业内部职工可以方便的进行交流,可以大大的提高职工的工作效率。

根据企业对局域网通信的需求,本系统主要包括信息通信、系统设置、搜索用户、访问公共资源、访问对方主机五大功能。

各功能概述:
信息通信:信息通信是企业内部通信系统的核心功能,它用于不同职工之间的通信,这种通信方式能够实现多个职工之间的通信,而不存在类似电话占线的问题,增加了任务分配的新方式,从而提高企业的工作效率。

系统设置:系统设置用于设置用户界面、公共路径、公告栏等的功能。

用户搜索:用户搜索用于搜索企业局域网内的其他用户,系统会根据用户所设置的IP搜索范围搜索所有计算机上的用户。

访问公共资源:访问公共资源用于实现企业内部公共服务器上资源访问的功能。

访问对方主机:访问对方主机用于两人聊天情况下对对方主机的访问和控制的功能。

第二节可行性分析
一、可行性要求、目标
企业内部通信系统必须提供网络通信功能,在通信过程中禁止使用聊天表情、文件传送等功能,避免资料外泄,或因发送错误而导致上机资料的丢失以及其他损失。

最重要的是必须适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。

另外,系统不需要使用服务器中转和记录通信内容,可以独立完成通信任务,排除职工对领导监视工作进度等行为的逆反心理。

企业内部通信系统的目标是实现企业的信息化通信,提高企业通信能力,提高任务理解和执行能力,减少没有必要的人员流动和资金损耗,以最快的速度提升企业的市场竞争力。

二、技术可行性分析
局域网通信系统的技术已经非常成熟,首先,从硬件上讲,计算机硬件速度
现在已经不是问题,高速便捷的网络已经十分普遍,这些为本系统的运行打下坚实的基础。

从软件的角度上讲,数据库技术已经相当成熟(目前用得比较多的有SQL Server, JavaDB等),并且处理能力也非常强,这为海量数据的存储和处理打下了坚实的基础,同时,使用java开发图形界面程序也相当普遍。

有了这些技术的支持,我们成功开发一个局域网通信系统没有任何技术风险。

三、经济可行性分析
经济可行性主要是对项目的经济效益进行评价。

本系统开发完成后可缩减工作时间,提高工作效率,而且简单易操作,不需对使用人员进行培训,不管是在资金上还是效率上都能达到预期的效果。

本系统开发经费对于企业在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以该企业内部通信系统在经济上是可行的。

第四章系统设计
第一节系统目标
系统根据企业对内部通信系统的要求,本系统可以实现以下目标:
1.操作简单、界面简洁美观。

2.更方便访问企业公共资源。

3.及时显示企业公共信息。

4.在通信窗口显示对方IP信息。

5.局域网内网用户自动搜索。

6.系统运行稳定、安全可靠。

第二节系统功能
系统功能结构图如下:
图4.1系统功能结构图
第三节数据库结构设计
一、数据库分析
该系统是一个桌面应用程序,它不像web应用那样需要配置到指定的服务器上,所以数据库和该系统应存在于同一计算机中,这样,不仅节省了开销,而
且还提高了系统的安全性。

该系统所用数据库为JA V ADB数据库。

由于该数据库的运行环境平台要求较低,一般的电脑都可以满足它的硬件条件[2]。

二、企业内部通信系统的E-R图
该系统的实体包括用户和窗口位置两个实体,分别记录着通信窗口的绝对位置和用户的信息。

(1)用户实体
用户实体主要包括IP信息、PC名称、用户信息、系统信息等,它记录了搜索到的用户和所有的用户信息。

用户实体的E-R图如下所示:
图4.2用户实体E-R图
(2)窗口位置实体
窗口位置实体记录着窗体最后的移动位置和窗体大小等信息,主要包括窗体位置的横坐标和竖坐标(下图用X、Y轴坐标表示)、窗体的高度和宽度。

窗口实体的E-R图如下所示:
图4.3窗口实体E-R图
三、数据库结构设计
在该系统中的数据库db_EQ包含两个数据表,分别为用户信息表tb_users 和窗体位置信息表tb_location。

(1)tb_users(用户信息表)
用户信息表用来保存企业内的通信用户,表tb_users如下所示:
表4.1用户信息表—tb_users
(2)tb_location(窗体位置信息表)
窗体位置表用来保存窗体的位置和大小,表tb_location如下所示:
表4.2 窗体位置信息表—tb_location
第五章详细设计和代码实现
第一节主窗体模块的设计与实现
一、界面设计
主窗体界面是本系统的用户列表,它由用户列表、系统选项卡、公告提示等组成。

其中系统选项卡用于切换不同的管理界面,包括系统设计和系统工具界面
[3]。

主窗体的效果图如下所示:
图5.1主窗体界面示意图
二、实现过程
主窗体实现部分包括创建主窗体和记录窗体位置。

其中创建主窗体的步骤如下:
(1)创建JXCFrame类,在类中创建窗体的对象,为窗体添加选项卡面板,并添加用户列表、系统工具、系统设置3个选项卡和状态栏标签、公告按钮等属性。

在构造方法中初始化窗体上的控件。

数据库操作类、首选项对象等属性,为窗体添加时间监听器、为公告信息按钮添加监听器等。

(2)初始化Socket服务器,指定端口为1111,如初始化失败,则提示服务器端口被占用或本软件已运行,并退出本系统。

用于接收其他用户发送的通信信息。

关键代码如下:
try {// 启动通讯服务端口
ss = new DatagramSocket(1111);
} catch (SocketException e2) {
if (e2.getMessage().startsWith("Address already in use"))
showMessageDialog("服务端口被占用,或者本软件已经运行。

");
System.exit(0);
}
(3) checkPlacard方法,用于检测系统公告,当公告路径中存在系统公告时,将从文件中获取完整信息,调用pushMessage()方法将信息压入公告信息栈中。

关键代码如下:
private void checkpacard() { // 检测公告信息方法
String placardDir = preferences.get("placardPath", null);
if (placardDir == null) {
pushMessage("未设置公告路径");
return;
}
File placard = new File(placardDir);
try {
if (placard.exists() && placard.isFile()) {
StringBuilder placardStr = new StringBuilder();
Scanner sc = new Scanner(new FileInputStream(placard));
while (sc.hasNextLine()) {
placardStr.append(sc.nextLine());
}
pushMessage(placardStr.toString());
} catch (FileNotFoundException e) {
pushMessage("公告路径错误,或公告文件不存在");
}
(4)initUserInfoButton()方法用于初始化本地用户信息,并在主窗体左上角显示本地用户的头像和名称,会在用户更改本地用户名称时同步更新。

(5) main()方法,本方法首先获取用户设置的界面外观,然后调用UIManager 类设置指定的外观,生成主窗体对象。

最后初始化服务器端口和系统栏图标。

关键代码如下:
public static void main(String args[]) {
try {
String laf = preferences.get("lookAndFeel", "java默认");//获取用户选
择的外观
if (laf.indexOf("当前系统")>-1)
UIManager.setLookAndFeel(UIManager
.getSystemLookAndFeelClassName());//设置外观
EQ frame = new EQ();
frame.setVisible(true);//显示窗体
frame.SystemTrayInitial();// 初始化系统栏
frame.server();//启动服务端口
frame.checkPlacard();//检测系统公告
} catch (Exception e) {
e.printStackTrace();
}
}
记录窗体的位置步骤如下:
(1)为窗体添加监听器,当改变窗体的位置和大小时,将调用saveLocation()方法将窗体和位置大小保存到数据库中。

(2)saveLocation(),该方法中调用了DAO类中的updateLocation将窗体的位置和大小保存到数据库中。

第二节公共模块的设计与实现
一、界面设计
在本系统的项目空间中,有部分模块是公用的,或者多个模块甚至整个系统的配置信息是被多个模块重复调用完成业务的逻辑。

其中有关数据库的操作、连接数据库、创建本机IP的默认用户(并添加到数据库中)、从数据库中获取窗体位置和大小、添加或删除指定用户、更新用户信息等[4]。

二、实现过程
公共模块包括数据库操作类和系统工具类。

其中DAO类主要负责有关数据库的操作,该类在构造方法中驱动并连接数据库,然后将构造方法设置为private 私有属性,通过静态的getdao()获取DAO类的实例对象,这是简单的单例模式。

在连接数据库时,可以指定create参数为true直接创建数据库,但在此之前需要
调用dbExist()方法判断数据库是否存在。

Dao类的关键代码如下:
public class Dao {
// 数据库驱动
private static final String driver = "org.apache.derby.jdbc.EmbeddedDriver";
private static String url = "jdbc:derby:db_EQ";// 数据库URL
private static Connection conn = null;// 数据库连接
private static Dao dao = null;
private Dao() {
try {
Class.forName(driver);
if (!dbExists()) {
conn = DriverManager.getConnection(url + ";create=true");
createTable();
} else
conn = DriverManager.getConnection(url);
addDefUser();
} catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, "数据库连接异常,或者本软件已经运行。

");
System.exit(0);
}
}
private boolean dbExists() {// 测试数据库是否存在
boolean bExists = false;
File dbFileDir = new File("db_EQ");
if (dbFileDir.exists()) {
bExists = true;
}
return bExists;
}
public static Dao getDao() {// 获取DAO实例
if (dao == null)
dao = new Dao();
return dao;
}
public List<User> getUsers() {// 获取所有用户
List<User> users = new ArrayList<User>();
try {
String sql = "select * from tb_users";
Statement stm = conn.createStatement();
ResultSet rs = stm.executeQuery(sql);
while (rs.next()) {
User user = new User();
user.setIp(rs.getString(1));
user.setHost(rs.getString(2));
user.setName(rs.getString(3));
user.setTipText(rs.getString(4));
user.setIcon(rs.getString(5));
users.add(user);
}
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
return users;
}
Resource类是企业内部通信系统中的工具类,该类中的方法都是静态的,可以直接调用,而不用创建Resource类的实例对象。

这些工具方法包括搜索用户的方法、登录公共资源的方法、信使群发的方法和单条信息发送的方法。

第三节系统托盘模块的设计与实现
一、界面设计
系统托盘模块用于定义系统栏图标。

本系统的主窗体是继承对话框窗体编写的,该窗体在系统任务栏不会显示任务标题,如果主窗体最小化之后将会隐藏,这时必须使用快捷键或者系统托盘中的图标执行显示窗体的命令。

系统托盘包含相应的菜单,右键点击会弹出选择菜单,菜单包括三个选项,分别是:“访问服务器”、“打开”、“退出”。

系统托盘的设计效果图如下所示:
图5.2系统托盘示意图
二、实现过程
在JDK6.0中,AWT新增加了SystemTray类和TrayIcon类,它们可以在系统托盘区创建一个托盘程序。

SystemTray类表示桌面右下角的系统托盘,系统托盘由运行在桌面上的所有应用程序共享,可以使用getSystemTray()方法获取系统托盘对象,该方法总是对每个应用程序返回相同的实例。

并不是所有的操作系统都支持系统托盘,如果当前系统不支持托盘的话,该方法将自动抛出异常。

为避免程序出现错误,在获取系统托盘实例之前,需要检查系统托盘是否支持。

可以调用isSupport()来实现[5]。

Systemtray类可以包含一个或多个TrayIcon类的实例,即系统栏图标,可以使用add()将它们添加到托盘,TrayIcon对象由图像、弹出菜单和一组相关监听器组成。

创建系统托盘的关键代码如下:
try {
String title = "EQ通讯软件";//系统栏提示文本的标题
String company = "贵州省XXX科技有限公司";//系统栏提示文本SystemTray sysTray = SystemTray.getSystemTray();//获取系统托盘对象Image image = Toolkit.getDefaultToolkit().getImage(
EQ.class.getResource("/icons/sysTray.png"));// 系统栏图标
trayicon = new TrayIcon(image, title + "\n" + company, createMenu()); //创建系统栏图标对象
trayicon.setImageAutoSize(true);//设置自动大小
trayicon.addActionListener(new SysTrayActionListener());//添加监听器
sysTray.add(trayicon);//添加系统栏图标到系统托盘
trayicon.displayMessage(title, company, );
} catch (Exception e) {
e.printStackTrace();
}
第四节系统工具模块的设计与实现
一、界面设计
本系统的工具模块起到维护系统的作用,包括更换程序外观、。

设置IP范围、用户搜索和系统更新、设置系统公告路径、设置公共程序路径、系统登录等功能。

在该系统第一次运行的时,用户搜索功能可以搜索内部网络中所有正在运行的计算机。

本系统工具模块中使用了Java的LookAndFeel外观技术,不同的外观中控件的外观也会不同,就比如我们常用的电脑中,windows经典样式和windowsXP 样式外观的按钮、列表、菜单、工具栏甚至窗体的外观都不相同。

在本系统中提供了“当前系统”和“JA V A默认值”两个外观选项,其中“JA V A默认值”是Swing默认的外观,不需要特别设置,而“当前系统”外观需要使用相应的方法获取当前系统的外观名称,然后将该外观应用于默认的外观[6]。

系统工具的设计效果图如下所示:
图5.3系统工具界面示意图
二、实现过程
(1)createSysToolPanel()方法,用于创建系统工具选项卡,在该选项卡中包括界面选择、用户搜索和系统操作3部分,其中系统操作用于程序更新,它们都被添加到系统工具面板中,createSysToolPanel()方法必须设置好面板的布局和初始化工作。

关键代码如下:
private JScrollPane createUserList() {// 用户列表面板
JScrollPane scrollPane = new JScrollPane();
scrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZON
TAL_SCROLLBAR_NEVER);
addUserPopup(chatTree, getPopupMenu());// 为用户添加弹出菜单
scrollPane.setViewportView(chatTree);
scrollPane.setBorder(new EmptyBorder(0, 0, 0, 0));
chatTree.addMouseListener(new ChatTreeMouseListener());
return scrollPane;
}
(2)在createSysToolPanel()方法中创建界面选择部分,该部分以列表控件显示了两种外观选择,当用户选择其中以种外观并单击“确定”按钮之后,选择外观会保存到首选项中,然后提示重新运行本软件。

(3)在createSysToolPanel()方法中创建用户搜索部分,包括搜索列表、搜索进度条和“搜索新用户”3个控件,当单击“搜索新用户”按钮时,系统会根据用户在系统设置界面所设置的IP搜索范围搜索所有计算机信息,并创建相应的用户对象,然后保存到数据库中。

(4)创建“搜索新用户”按钮的事件监听器SearchUserActionListener类,调用Resource工具类的searchUsers()方法搜索指定IP范围内的所有用户。

系统工具类中的searchUsers()方法,该方法用于搜索局域网内的通信用户,也就是搜索企业内的所有职工。

本方法将获取用户指定的IP范围,并在该范围内搜索所有可以访问的计算机,如果用户没有指定IP范围,系统默认的是192.168.0.1-192.168.0.255。

关键代码如下:
try {
for (int l = ipsInt[0]; l <= ipeInt[0]; l++) {
boolean b0 = l < ipeInt[0]; // 记录第一层循环的条件
int k = l != ipsInt[0] ? 0 : ipsInt[1]; // 从第二次循环以后k赋值0
for (; b0 ? k < 256 : k <= ipeInt[1]; k++) {
boolean b1 = b0 || k < ipeInt[1]; // 记录第二层循环的条件
int j = k != ipsInt[1] ? 0 : ipsInt[2]; // 从第二次循环以后j 赋值0
for (; b1 ? j < 256 : j <= ipeInt[2]; j++) {
boolean b2 = b1 || b1 ? j < 256 : j < ipeInt[2];
int i = j != ipsInt[2] ? 0 : ipsInt[3];
for (; b2 ? i < 256 : i <= ipeInt[3]; i++) {
if(!button.isSelected()){
progressBar.setIndeterminate(false);
return;
}
Thread.sleep(100);//线程休息100毫秒
String ip = l + "." + k + "." + j + "." + i;
progressBar.setString("正在搜索:" + ip);//取消进度条的滚动
if (tree.addUser(ip, "search"))//添加新用户
model.addElement("<html><b><font
color=green>添加"
+ ip + "</font></b></html>");
}catch(Exception e){
e.printStackTrace();
}
第五节用户管理模块的设计与实现
一、界面设计
用户管理模块类似于聊天软件的好友列表,其中包含所有用户信息,另外在用户名称上单击鼠标右键,会弹出相应的管理菜单,在该菜单中包含“添加用户”、“更名”、“删除用户”、“信使群发(在没有多选用户的情况下无法进行信使群发)”、“访问主机资源”和“访问公共程序”,其中“访问主机资源”是访问该用户的共享文件夹[7]。

界面设计的效果图如下所示:。

相关文档
最新文档