ImageVerifierCode 换一换
格式:DOCX , 页数:37 ,大小:275.17KB ,
资源ID:20403863      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20403863.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(校内通信Java课程设计论文Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

校内通信Java课程设计论文Word格式.docx

1、2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表、53KF、live800等校园企业内部通信工具可以很好的解决企业通信问题,面对工作目标和团队工作中可能出现的问题,必须加强团队的沟通,使每个用户都能及时地了解自己的工作内容和获取需要的资料。系统托盘可以在程序主窗体最小化之后,使用托盘控制窗体的相应操作,例如打开主窗体;JavaDB使用灵活,可以应用到不同的系统平台中,只要该平台有支持Java的环境2概述2.1 开发背景近几年,随着网络的迅速发展和全球信息化速

2、度的加快,网络通信已经不算是新鲜事物了,但大多数网络通信需要借助Internet上的服务器,这就给那些具有大规模内部网络的用户造成了许多问题,如遭遇到网络攻击、病毒入侵等等。由于互联网上的网络通信工具有时会给企业内部信息交流带来不便,所以为了方便校园和内部用户之间的沟通、保证校园内部局域网的安全,需要开发一个基于局域网的信息收发系统的即时通信工具。2.2 课题现状校园内部通信系统是基于局域网的即时通信工具,可以说是一个internet通信工具的小规模版本,一般采用UDP或者TCP协议体系等来实现,开发技术已经比较成熟,国外的通信工具较有名的有ICQ、MSN Messenger、国产的QQ、新浪

3、UC都实现了广域网的即时通信。在最近几年,国内的局域网通信工具较有代表性有飞鸽传书、飞秋,这两款软件的快速、实效、迷你、简单的特点受到了广大用户的好评。这些工具的实现方式具体细节不易得之,但它无非是利用各种平台上的网络通信接口,基于TCP/IP或者UDP/IP协议架构下的软件产品。对于一个企业内网,这些功能的实现相比于广域网更加简单。所以还是有很大研究价值的1。2.3 软硬件需求本系统运行时需要以下条件。硬件平台:CPU:Pentium4 1.8GHz内存:128MB以上硬盘空间:100MB软件平台:操作系统:Windows 2000、Windows XP、Windows 2003等开发工具:

4、Eclipse、JDK6.0数据库:JavaDB3系统分析3.1 需求功能分析本系统的设计目标是实现一个校园局域网通信系统,可以方便的进行交流,可以大大的提高校园企业内部的工作效率。根据内部局域网通信的需求,本系统主要包括信息通信、系统设置、搜索用户、访问公共资源、访问对方主机五大功能。各功能概述:信息通信:信息通信是内部通信系统的核心功能,它用于不同职工之间的通信,这种通信方式能够实现多个职工之间的通信,而不存在类似电话占线的问题,增加了任务分配的新方式,从而提高企业的工作效率。系统设置:系统设置用于设置用户界面、公共路径、公告栏等的功能。用户搜索:用户搜索用于搜索局域网内的其他用户,系统会

5、根据用户所设置的IP搜索范围搜索所有计算机上的用户。访问公共资源:访问公共资源用于实现内部公共服务器上资源访问的功能。访问对方主机:访问对方主机用于两人聊天情况下对对方主机的访问和控制的功能。3.2 可行性分析3.2.1可行性要求、目标企业内部通信系统必须提供网络通信功能,在通信过程中禁止使用聊天表情、文件传送等功能,避免资料外泄,或因发送错误而导致上机资料的丢失以及其他损失。最重要的是必须适应任何操作系统,也就是实现跨平台技术,因为企业内部的工作需要,工作环境中使用了多个操作系统来完成不同的工作。另外,系统不需要使用服务器中转和记录通信内容,可以独立完成通信任务,排除职工对领导监视工作进度等

6、行为的逆反心理。企业内部通信系统的目标是实现企业的信息化通信,提高企业通信能力,提高任务理解和执行能力,减少没有必要的人员流动和资金损耗,以最快的速度提升企业的市场竞争力。3.2.2技术可行性分析局域网通信系统的技术已经非常成熟,首先,从硬件上讲,计算机硬件速度现在已经不是问题,高速便捷的网络已经十分普遍,这些为本系统的运行打下坚实的基础。从软件的角度上讲,数据库技术已经相当成熟(目前用得比较多的有SQL Server, JavaDB等),并且处理能力也非常强,这为海量数据的存储和处理打下了坚实的基础,同时,使用java开发图形界面程序也相当普遍。有了这些技术的支持,我们成功开发一个局域网通信

7、系统没有任何技术风险。3.2.3经济可行性分析经济可行性主要是对项目的经济效益进行评价。本系统开发完成后可缩减工作时间,提高工作效率,而且简单易操作,不需对使用人员进行培训,不管是在资金上还是效率上都能达到预期的效果。本系统开发经费对于企业在经济上是可以接受的,并且本系统实施后可以显著提高工作效率,有助于企业的信息化管理,所以该企业内部通信系统在经济上是可行的。4系统设计4.1系统目标系统根据企业对内部通信系统的要求,本系统可以实现以下目标:1.操作简单、界面简洁美观。2.更方便访问企业公共资源。3.及时显示企业公共信息。4.在通信窗口显示对方IP信息。5.局域网内网用户自动搜索。6.系统运行

8、稳定、安全可靠。4.2 系统功能系统功能结构图如下:图4.1系统功能结构图4.3数据库结构设计4.3.1数据库分析该系统是一个桌面应用程序,它不像web应用那样需要配置到指定的服务器上,所以数据库和该系统应存在于同一计算机中,这样,不仅节省了开销,而且还提高了系统的安全性。该系统所用数据库为JAVADB数据库。由于该数据库的运行环境平台要求较低,一般的电脑都可以满足它的硬件条件2。4.3.2校园企业内部通信系统的E-R图该系统的实体包括用户和窗口位置两个实体,分别记录着通信窗口的绝对位置和用户的信息。 (1)用户实体用户实体主要包括IP信息、PC名称、用户信息、系统信息等,它记录了搜索到的用户

9、和所有的用户信息。用户实体的E-R图如下所示: (2)窗口位置实体窗口位置实体记录着窗体最后的移动位置和窗体大小等信息,主要包括窗体位置的横坐标和竖坐标(下图用X、Y轴坐标表示)、窗体的高度和宽度。窗口实体的E-R图如下所示:图4.3窗口实体E-R图4.3.3数据库结构设计在该系统中的数据库db_EQ包含两个数据表,分别为用户信息表tb_users和窗体位置信息表tb_location。(1)tb_users(用户信息表)用户信息表用来保存内的通信用户,表tb_users如下所示:表4.1用户信息表tb_users字段名数据类型是否为空是否主键默认值描述iPVarchar(16)NOYES用户

10、IPhostVarchar(30)NULL主机名称nameVarchar(20)姓名tooltipVarchar(50)提示文本icon头像图标(2)tb_location(窗体位置信息表)窗体位置表用来保存窗体的位置和大小,表tb_location如下所示:表4.2 窗体位置信息表tb_locationxLocationIntX轴坐标yLocationY轴坐标height窗体高度width窗体宽度5详细设计和代码实现5.1主窗体模块的设计与实现代码 public EQ() super(new Frame(); frame = this; dao = Dao.getDao(); locatio

11、n = dao.getLocation(); setTitle(郑科校内通); setBounds(location); progressBar = new JProgressBar(); progressBar.setBorder(new BevelBorder(BevelBorder.LOWERED); tabbedPane = new JTabbedPane(); popupMenu = new JPopupMenu(); chatTree = new ChatTree(this); user_dir = System.getProperty(user.dir / 程序执行路径用于系统更

12、新 localFile = new File(user_dir + File.separator + EQ.jar/ 本地EQ文件 stateLabel = new JLabel(); / 状态栏标签 addWindowListener(new FrameWindowListener();/ 添加窗体监视器 addComponentListener(new ComponentAdapter() public void componentResized(final ComponentEvent e) saveLocation(); public void componentMoved(final

13、 ComponentEvent e) ); try / 启动通讯服务端口 ss = new DatagramSocket(1111); catch (SocketException e2) if (e2.getMessage().startsWith(Address already in use) showMessageDialog(服务端口被占用,或者本软件已经运行。 System.exit(0); / 初始化公共信息按钮 messageAlertIcon = new ImageIcon(EQ.class .getResource(/image/messageAlert.gif); mess

14、ageAlertNullIcon = new ImageIcon(EQ.class/image/messageAlertNull20.gif messageStack = new Stack(); messageAlertButton = new JButton(); messageAlertButton.setHorizontalAlignment(SwingConstants.RIGHT); messageAlertButton.setContentAreaFilled(false); final JPanel BannerPanel = new JPanel(); BannerPanel

15、.setLayout(new BorderLayout(); add(BannerPanel, BorderLayout.NORTH); userInfoButton = new JButton(); BannerPanel.add(userInfoButton, BorderLayout.WEST); userInfoButton.setMargin(new Insets(0, 0, 0, 10); initUserInfoButton();/ 初始化本地用户头像按钮 BannerPanel.add(messageAlertButton, BorderLayout.CENTER); mess

16、ageAlertButton.addActionListener(new ActionListener() public void actionPerformed(final ActionEvent e) if (!messageStack.empty() showMessageDialog(messageStack.pop(); ); messageAlertButton.setIcon(messageAlertIcon); showMessageBar(); add(tabbedPane, BorderLayout.CENTER); tabbedPane.setTabPlacement(S

17、wingConstants.LEFT); ImageIcon userTicon = new ImageIcon(EQ.class .getResource(/image/tabIcon/tabLeft.PNG tabbedPane.addTab(null, userTicon, createUserList(), 用户列表 ImageIcon sysOTicon = new ImageIcon(EQ.class/image/tabIcon/tabLeft2.PNG tabbedPane.addTab(null, sysOTicon, createSysToolPanel(), 系统操作 Im

18、ageIcon sysSTicon = new ImageIcon(EQ.class/image/tabIcon/tabLeft3.png tabbedPane.addTab(null, sysSTicon, createSysSetPanel(), 系统设置 setAlwaysOnTop(true); 5.1.1界面设计主窗体界面是本系统的用户列表,它由用户列表、系统选项卡、公告提示等组成。其中系统选项卡用于切换不同的管理界面,包括系统设计和系统工具界面3。主窗体的效果图如下所示:图5.1 主窗体界面示意图5.1.2实现过程主窗体实现部分包括创建主窗体和记录窗体位置。其中创建主窗体的步骤如下

19、:(1)创建JXCFrame类,在类中创建窗体的对象,为窗体添加选项卡面板,并添加用户列表、系统工具、系统设置3个选项卡和状态栏标签、公告按钮等属性。在构造方法中初始化窗体上的控件。数据库操作类、首选项对象等属性,为窗体添加时间监听器、为公告信息按钮添加监听器等。(2)初始化Socket服务器,指定端口为1111,如初始化失败,则提示服务器端口被占用或本软件已运行,并退出本系统。用于接收其他用户发送的通信信息。关键代码如下:try / 启动通讯服务端口(3) checkPlacard方法,用于检测系统公告,当公告路径中存在系统公告时,将从文件中获取完整信息,调用pushMessage()方法将

20、信息压入公告信息栈中。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 = ne

21、w Scanner(new FileInputStream(placard); while (sc.hasNextLine() placardStr.append(sc.nextLine(); pushMessage(placardStr.toString(); catch (FileNotFoundException e) 公告路径错误,或公告文件不存在(4)initUserInfoButton()方法用于初始化本地用户信息,并在主窗体左上角显示本地用户的头像和名称,会在用户更改本地用户名称时同步更新。(5) main()方法,本方法首先获取用户设置的界面外观,然后调用UIManager类设

22、置指定的外观,生成主窗体对象。最后初始化服务器端口和系统栏图标。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.SystemTrayIni

23、tial();/ 初始化系统栏 frame.server();/启动服务端口 frame.checkPlacard();/检测系统公告 catch (Exception e) e.printStackTrace(); 记录窗体的位置步骤如下:(1)为窗体添加监听器,当改变窗体的位置和大小时,将调用saveLocation()方法将窗体和位置大小保存到数据库中。(2)saveLocation(),该方法中调用了DAO类中updateLocation将窗体的位置和大小保存到数据库中。5.2公共模块的设计与实现5.2.1界面设计在本系统的项目空间中,有部分模块是公用的,或者多个模块甚至整个系统的配置

24、信息是被多个模块重复调用完成业务的逻辑。其中有关数据库的操作、连接数据库、创建本机IP的默认用户(并添加到数据库中)、从数据库中获取窗体位置和大小、添加或删除指定用户、更新用户信息等4。5.2.2实现过程公共模块包括数据库操作类和系统工具类。其中DAO类主要负责有关数据库的操作,该类在构造方法中驱动并连接数据库,然后将构造方法设置为private私有属性,通过静态的getdao()获取DAO类的实例对象,这是简单的单例模式。在连接数据库时,可以指定create参数为true直接创建数据库,但在此之前需要调用dbExist()方法判断数据库是否存在。Dao类的关键代码如下:public clas

25、s 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() 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, 数据库连接异常,或者本软件已经运行。 private b

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1