




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、面向对象程序设计之,姓名:咸麻锐 学号:12009242518 指导老师:郭辉,局域网通讯系统分析,一、系统设计,1.1、系统功能结构,图1.1 局域网内部通讯系统功能机构图,1.2、局域网内部通信系统的E-R图,头像,用户名,提示文本,主机名,IP地址,图1.2 用户实体E-R图,数据库设计,三、公共模块设计,数据库操作类 系统工具类,四、系统托盘模块设计,4.1、系统托盘模块设计概述 4.2、系统托盘设计技术分析 4.3、系统托盘模块实现过程,4.1、系统托盘模块设计概述,系统托盘模块用于定义系统蓝图标。局域网内部通信系统的主要窗体时继承对话窗体编写的,该窗体在系统任务栏中不会显示相应的任
2、务标题,主窗体最小化后将会隐藏,这时必须使用快捷建或者系统托盘中的图标执行显示窗体的命令。,4.2、系统托盘设计技术分析,系统托盘模块使用了JDK6.0提供的新功能,其中包含SystemTray类和TrayIcon类,他们分别用与创建系统托盘和系统图标对象。另外,系统蓝图标试用了弹出菜单技术,为局域网内部同性系统提供了部分快捷操作。创建弹出菜单和菜单项由PopuMenu类和MenuItem类实现。一个PopuMenu对象可以使用add()方法添加多个MenuItem对象。每个MenuItem对象必须使用addActionListener()方法添加实现指定的菜单项业务逻辑的监听器,其监听的实现
3、和普通按钮相同。,4.3、系统托盘模块实现过程,在程序主类中创建SystemTrayInitial()方法,该方法用于初始化托盘。 创建createMenu()方法,该方法用于创建系统蓝图标的弹出菜单。包括打开,退出,访问 服务器3个菜单项。 创建SysTrayActionListener内部类,用于实现ActionListener接口,是系统蓝图标的双击事件监听器,用于用户在双击系统图标后,激活监听器将主窗口的显示事件实现。,五、系统工具设计,5.1、系统工具模块概述 5.2、系统工具模块分析 5.3、系统工具模块实现过程 使用的数据表是:tb_users,5.1、系统工具模块概述,局域网内
4、部通信系统工具模块起到维护的作用,包括用户搜索,更新程序外观(未实现),系统升级(未实现)。在程序启动时系统将会主动搜索内部网络中所有的主机或路由器,并使用计算机的信息创建用户对象,然后将该用户对象保存到数据库中。,5.2、系统工具模块分析,系统工具模块使用了Java的lookAndFeel外观技术,每个LookAndFeel外观技术会包含不同的空间的UI界面,不同的外观中控制外观也会不同,例如Windows系统的“Window经典样式”和“Window XP样式”外观按钮,列表,表格,菜单,工具栏甚至窗体的外观都不会相同。 使用UImanager类的setLookAndFeel()方法可以设
5、置不同的LookAndFeel外观。其中本系统默认的外观时Java默认的“Swing”默认的外观。而使用getSystemLookAndFeelClassName()方法用于获取“当前系统”的外观名称,然后调用setLookAndFeel()方法将外观名称设置为“默认外观”。 必须在创建窗体和空间之前使用UIManager类中的setLookAndFeel()方法设置外观,否则会出现bug.,5.3、系统工具模块实现过程,在程序珠泪中编写createSysToolPanel()方法,用于创建系统工具选项卡。在该选项卡中包含界面选择,用户搜索,系统操作(程序更新)3个部分。createSysTo
6、olPanel()方法需设置好该界面的布局和初始化工作。 在createSysToolPanel()方法中创建界面选择部分,该部分用以列出空间显示的两种外观选择,当用户选择其中一个外观并单击“确定”时后,该外观会保存,然后提示用户创新运行软件,改外观才会被使用。 在createSysToolPanel()方法中创建用户搜索部分。 在createSysToolPanel()方法中创建系统的操作部分(未实现)。 创建搜索新用户的方法:使用按钮事件监听器SearchUserActionListener类,该监听器中调用Resource工具类中的searchUsers()方法搜索指定IP范围的所有用户
7、的 计算机信息。(在这会出现死锁现象,大概是因为线程逻辑使用不当导致的,目前我无法解决,所以只能将ip的范围缩小到x.x.x.0-x.x.x.10这么个网段的范围内!)。,六、用户管理模块设计,6.1、用户管理模块概述 6.2、用户管理模块技术分析 6.3、用户管理模块实现过程 6.4、单元测试,6.1、用户管理模块概述,用户管理模块类似于聊天工具的好友列表,其中包括用户信息,另外在用户名单上单击鼠标,在但出的快捷菜单中提供了“更名”,“添加用户”,“删除用户”,“发送信息”等功能。,6.2、用户管理模块技术分析,用户管理模块主要用于显示用户列表,这个用户列表时使用JTree树空间实现的。其中
8、TreeCellRenderer接口用于创建自定义的图标的树单元格,(通俗的将就是加个头像,让他更像专业的东东)。 TreeCellRenderer接口之定义了一个getTreeCellTendererComponent()方法,该方法将关于树节点的全部信息作为参数,在实现自己饿树单元格时,可以忽略不要的参数,也可以直接访问value参数,6.2.1、getTreeCellRendererComponent()方法的参数说明,6.3、用户管理模块实现过程,创建UserTreeRanderer类,该类继承JPanel类成为一个面板空间,同时该类也实现了TreeCellRenderer接口成为树节
9、点的渲染器。该类的构造方法中接受了3个图标参数,分别用于打开,关闭,和叶节点的图标。 在UserTreeRanderer类中重写父类的getTreeCellRendererComponent()方法,他负责渲染界面样式。用于获取主窗体的宽度,并使用该宽度设置节点的宽度,世界店与窗体同款。当某个节点(用户被选中时)被选中时,该方法会使用指定的颜色绘制节点便捷,以突出被选中效果(显得更专业一些)。 创建ChatTree类,该类继承JTree类实现了自定义的树控件,并且试用了之前的UserTreeRanderer树节点渲染器,在构造方法初始化类的属性,在调用sortUsers()方法添加并且显示用户
10、列表。 在ChatTree类编写sortUsers()方法,该方法的主题是一个内部线程,其首先获取本地的IP地址(localhostIp),使用该地址从数据库中获取本地用户的对象,并将用户显示在用户列表的首位,然后从数据库中获取所有用户对象,将除自己以外 的用户分别添加到用户列表中。最后是第一个用户处于被选择的状态,并更新状态蓝标签中显示的用户数量。 在ChatTree类中编写delUser()方法,用于删除当前用户列表中被选中的用户的对象。该方法首先获取选择的树节点,从该节点中获取绑定的用户对象,然后以对话框的形式提示用户是否确认删除,如果确认,将会调用delUser()方法,从数据库中删除
11、用户的信息,最后调用根节点的remove()方法,删除该用户节点。,6.4、单元测试,用户管理模块中定义了封装用户信息的User类,该类除了封装用户的IP,hostName,Name等属性以外,还提供了获取用户的头像的getIconImg()方法,此方法返回的时Icon类的实例。可以直接添加到相应的空间中。(如果User类中出现故障,整个用户列表界面都将会被破坏),七、通信系统设计,7.1、通信模块概述 7.2、通信模块技术分析 7.3、通信模块实现过程,7.1、通信模块概述,通信模块是局域网内部通信系统的核心模块。用于不同计算机之间的通信。这种通信方式能够实现多泰计算机之间的通信,而不存在类
12、似电话占线的问题(但是本系统的出现了只能允许两台计算机之间的通信的尴尬局面,这不是设计的初衷,应该还是线程逻辑的问题,目前我无法解决)。,7.2、通信模块技术分析,Java中对UDP数据报的发送和连接时通过DatagramSocket类实现的,DatagramPacket类表示UDP数据包,他封装了数据报的属性和数据,两个类的工作流程如下所示: 通信模块使用基于UDP协议的数据报可套接字事先计算机之间的信息通信。UDP协议十一中无连接的协议,在用该协议进行数据传输时,发送放只需要知道对方的IP地址和端口号即可,不需要连接,当连接的远程主机端口号处于监听状态时,UDP自然会处于连接状态。,7.2
13、.1、DatagramSocket类和DatagramPacket类的工作流程,图7.1.1 DatagramSocket类和DatagramPacket类的工作流程,7.3、通信模块实现过程,创建TelFrame类,该类必须继承JFrame类实现Swing的窗体,在类的空间声明代码中定义各种窗体需要的所有空间,例如接受信息的文本框,输入信息的文本框,发送按钮,信息按钮以及各种滚动条,另外,还需要定义访问数据库的Dao实例,在通信窗口右侧显示的用户信息需要使用Dao实例从数据库中获取。 编写getInstance()方法,用于获取唯一的窗体的实例,该方法创建的所有窗体实例都会保存到Map的实例
14、中。除非退出局域网内部痛心系统,否则窗体实例对象会一直保存在这个集合类中。当用户再次打开已存在的窗体时,将直接从集合类总获取,不再创建窗体实例。 在构造方法中初始化TelFrame类的所有控件属性。该构造方法接受DatagramSocket,DatagramPacket和ChatTree类的3个参数,他们分别时数据Socket服务,数据报和用户列表的实例对象,在痛心窗体中需要使用它们。,编写receiveInfo()方法,该方法用于接受其他用户发送来的信息。首先会从数据报中获取发送信息的用户IP地址,然后从数据库中获取该IP地址的用户姓名,同时将这些用户信息显示在信息文本框中,最后将数据报的通
15、信信息追加到信息文本框中。 创建发送按钮事件监听器“sendActionListener类”他是一个内部类,并且该类实现了ActionListener接口。拥有处理按钮时间的功能,他在actionPerformed()方法中获取数据报的通信信息。,八、开发过程中的难点分析和JDK6.0新增的系统托盘技术,资源路径问题: URL path=EQ.class.getResource(“/NEWFACE/”+faceNum+”.png”); ImageIcon img=new ImageIcon(path); 使用JDK6.0新增的系统托盘功能: 在jdk6中awt新增了SystemTray类和TrayIcon类,他们可以在系统托盘区创建一个托盘程序。 SystemTray类表示桌面右下角的系统托盘,系统托盘由运行在桌面上的说有应用程序共享。可以使用getSystemTray()方法获取系统托盘对象,该方法总是对每个应用程序返回形同的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 老年心理护理中音乐治疗的未来发展趋势预测
- 绘画培训机构课件
- 铝厂技能培训课件题目
- 农业物联网终端市场前瞻性研究报告
- 推行临床路径管理办法
- 援外培训项目管理办法
- 支局管理长效管理办法
- 收到电子发票管理办法
- 改造渔业船舶管理办法
- 政企渠道拓展管理办法
- 大连海事大学毕业成绩表
- 尾矿库模施袋筑坝工艺在施工中的应用
- 公路施工组织与概预算教学课件汇总整本书电子教案全套教学教程完整版电子教案(最新)
- 中国34个省级行政区轮廓图
- 人教版三年级下册数学(全册)同步随堂练习一课一练
- 肺小结节定位和肺段切除规划PPT学习课件
- 精品专题资料(2022-2023年收藏)国家电网公司智能电网知识竞赛题目
- 0上海市康复治疗质量控制中心推荐病史及记录单
- (完整word版)sppb简易体能状况量表
- 民用航空安全信息管理规定培训考试
- AHRI 的标准目录
评论
0/150
提交评论