精品校内通信Java毕业论文论文.docx

上传人:b****0 文档编号:17392728 上传时间:2023-07-24 格式:DOCX 页数:34 大小:150.06KB
下载 相关 举报
精品校内通信Java毕业论文论文.docx_第1页
第1页 / 共34页
精品校内通信Java毕业论文论文.docx_第2页
第2页 / 共34页
精品校内通信Java毕业论文论文.docx_第3页
第3页 / 共34页
精品校内通信Java毕业论文论文.docx_第4页
第4页 / 共34页
精品校内通信Java毕业论文论文.docx_第5页
第5页 / 共34页
精品校内通信Java毕业论文论文.docx_第6页
第6页 / 共34页
精品校内通信Java毕业论文论文.docx_第7页
第7页 / 共34页
精品校内通信Java毕业论文论文.docx_第8页
第8页 / 共34页
精品校内通信Java毕业论文论文.docx_第9页
第9页 / 共34页
精品校内通信Java毕业论文论文.docx_第10页
第10页 / 共34页
精品校内通信Java毕业论文论文.docx_第11页
第11页 / 共34页
精品校内通信Java毕业论文论文.docx_第12页
第12页 / 共34页
精品校内通信Java毕业论文论文.docx_第13页
第13页 / 共34页
精品校内通信Java毕业论文论文.docx_第14页
第14页 / 共34页
精品校内通信Java毕业论文论文.docx_第15页
第15页 / 共34页
精品校内通信Java毕业论文论文.docx_第16页
第16页 / 共34页
精品校内通信Java毕业论文论文.docx_第17页
第17页 / 共34页
精品校内通信Java毕业论文论文.docx_第18页
第18页 / 共34页
精品校内通信Java毕业论文论文.docx_第19页
第19页 / 共34页
精品校内通信Java毕业论文论文.docx_第20页
第20页 / 共34页
亲,该文档总共34页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

精品校内通信Java毕业论文论文.docx

《精品校内通信Java毕业论文论文.docx》由会员分享,可在线阅读,更多相关《精品校内通信Java毕业论文论文.docx(34页珍藏版)》请在冰点文库上搜索。

精品校内通信Java毕业论文论文.docx

精品校内通信Java毕业论文论文

 

XXXX学院

Java课程设计

 

设计(论文)题目:

校内通信

所在院:

专业班级:

学生姓名:

学号:

指导教师:

年月日

XXXX学院

课程设计(论文)任务书

设计题目:

校内通信

专业班级:

学号姓名

主要内容

校园企业内部通信工具可以很好的解决企业通信问题,使每个用户都能及时地了解自己的工作内容和获取需要的资料。

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

本系统应用了JDK6.0新增的系统托盘技术和JavaDB数据库。

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

基本要求:

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

完成期限:

年月日

指导教师签名:

评审小组负责人签名:

目录

1前言1

2概述1

2.1开发背景1

2.2课题现状2

2.3软硬件需求2

3系统分析3

3.1需求功能分析3

3.2可行性分析3

3.2.1可行性要求、目标3

3.2.2技术可行性分析4

3.2.3经济可行性分析4

4系统设计5

4.1系统目标5

4.2系统功能5

4.3数据库结构设计6

4.3.1数据库分析6

4.3.2校园企业内部通信系统的E-R图6

4.3.3数据库结构设计7

5详细设计和代码实现8

5.1主窗体模块的设计与实现代码8

5.1.1界面设计11

5.1.2实现过程12

5.2公共模块的设计与实现14

5.2.1界面设计14

5.2.2实现过程14

5.3系统托盘模块的设计与实现17

5.3.1界面设计17

5.3.2实现过程18

5.4系统工具模块的设计与实现19

5.4.1界面设计19

5.4.2实现过程20

5.5用户管理模块的设计与实现23

5.5.1界面设计23

5.5.2实现过程24

6通信模块的设计与实现29

6.1界面设计29

6.2实现过程33

7总结37

8致谢37

参考文献38

1前言

要问到网络时代发展最快的领域,无疑的,答案是即时通讯。

即时通讯工具的实时交互、资费低廉等优点深受用户的喜爱,已经成为网络生活中不可或缺的一部分,比如大家都很熟悉的腾讯QQ,MSN等。

网民们通过即时通信进行沟通交流、结识新朋友、娱乐消遣时间、实现异地文字、语音、视频的实时互通交流。

同时,人们也认识到即时信息工具能够带来极高的生产力,诸多企事业单位借助它的使用,来提高业务协同性及反馈的敏感度和快捷度。

作为使用频率最高的网络软件,即时通讯已经突破了作为技术工具的极限,被认为是现代交流方式的象征。

即时通讯软件是通过即时通讯技术来实现在线聊天、交流的软件。

目前有2种架构形式,1、一种是CS架构,采用客户端服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:

QQ、XXHI、Skype、Gtalk、新浪UC、MSN等;2、采用BS架构,即浏览器服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表、53KF、live800等校园企业内部通信工具可以很好的解决企业通信问题,面对工作目标和团队工作中可能出现的问题,必须加强团队的沟通,使每个用户都能及时地了解自己的工作内容和获取需要的资料。

本系统应用了JDK6.0新增的系统托盘技术和JavaDB数据库。

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

2概述

2.1开发背景

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

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

2.2课题现状

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

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

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

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

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

2.3软硬件需求

本系统运行时需要以下条件。

硬件平台:

CPU:

Pentium41.8GHz

内存:

128MB以上

硬盘空间:

100MB

软件平台:

操作系统:

Windows2000、WindowsXP、Windows2003等

开发工具:

Eclipse、JDK6.0

数据库:

JavaDB

3系统分析

3.1需求功能分析

本系统的设计目标是实现一个校园局域网通信系统,可以方便的进行交流,可以大大的提高校园企业内部的工作效率。

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

各功能概述:

信息通信:

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

系统设置:

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

用户搜索:

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

访问公共资源:

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

访问对方主机:

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

3.2可行性分析

3.2.1可行性要求、目标

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

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

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

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

3.2.2技术可行性分析

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

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

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

3.2.3经济可行性分析

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

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

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

4系统设计

4.1系统目标

系统根据企业对内部通信系统的要求,本系统可以实现以下目标:

1.操作简单、界面简洁美观。

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

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

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

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

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

4.2系统功能

系统功能结构图如下:

图4.1系统功能结构图

4.3数据库结构设计

4.3.1数据库分析

该系统是一个桌面应用程序,它不像web应用那样需要配置到指定的服务器上,所以数据库和该系统应存在于同一计算机中,这样,不仅节省了开销,而且还提高了系统的安全性。

该系统所用数据库为JAVADB数据库。

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

4.3.2校园企业内部通信系统的E-R图

该系统的实体包括用户和窗口位置两个实体,分别记录着通信窗口的绝对位置和用户的信息。

(1)用户实体

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

用户实体的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

字段名

数据类型

是否为空

是否主键

默认值

描述

iP

Varchar(16)

NO

YES

用户IP

host

Varchar(30)

YES

NO

NULL

主机名称

name

Varchar(20)

YES

NO

NULL

姓名

tooltip

Varchar(50)

YES

NO

NULL

提示文本

icon

Varchar(50)

YES

NO

NULL

头像图标

(2)tb_location(窗体位置信息表)

窗体位置表用来保存窗体的位置和大小,表tb_location如下所示:

表4.2窗体位置信息表—tb_location

字段名

数据类型

是否为空

是否主键

默认值

描述

xLocation

Int

YES

NO

NULL

X轴坐标

yLocation

Int

YES

NO

NULL

Y轴坐标

height

Int

YES

NO

NULL

窗体高度

width

Int

YES

NO

NULL

窗体宽度

5详细设计和代码实现

5.1主窗体模块的设计与实现代码

publicEQ(){

super(newFrame());

frame=this;

dao=Dao.getDao();

location=dao.getLocation();

setTitle("郑科校内通");

setBounds(location);

progressBar=newJProgressBar();

progressBar.setBorder(newBevelBorder(BevelBorder.LOWERED));

tabbedPane=newJTabbedPane();

popupMenu=newJPopupMenu();

chatTree=newChatTree(this);

user_dir=System.getProperty("user.dir");程序执行路径用于系统更新

localFile=newFile(user_dir+File.separator+"EQ.jar");本地EQ文件

stateLabel=newJLabel();状态栏标签

addWindowListener(newFrameWindowListener());添加窗体监视器

addComponentListener(newComponentAdapter(){

publicvoidcomponentResized(finalComponentEvente){

saveLocation();

}

publicvoidcomponentMoved(finalComponentEvente){

saveLocation();

}

});

try{启动通讯服务端口

ss=newDatagramSocket(1111);

}catch(SocketExceptione2){

if(e2.getMessage().startsWith("Addressalreadyinuse"))

showMessageDialog("服务端口被占用,或者本软件已经运行。

");

System.exit(0);

}

{初始化公共信息按钮

messageAlertIcon=newImageIcon(EQ.class

.getResource("imagemessageAlert.gif"));

messageAlertNullIcon=newImageIcon(EQ.class

.getResource("imagemessageAlertNull20.gif"));

messageStack=newStack();

messageAlertButton=newJButton();

messageAlertButton.setHorizontalAlignment(SwingConstants.RIGHT);

messageAlertButton.setContentAreaFilled(false);

finalJPanelBannerPanel=newJPanel();

BannerPanel.setLayout(newBorderLayout());

add(BannerPanel,BorderLayout.NORTH);

userInfoButton=newJButton();

BannerPanel.add(userInfoButton,BorderLayout.WEST);

userInfoButton.setMargin(newInsets(0,0,0,10));

initUserInfoButton();初始化本地用户头像按钮

BannerPanel.add(messageAlertButton,BorderLayout.CENTER);

messageAlertButton.addActionListener(newActionListener(){

publicvoidactionPerformed(finalActionEvente){

if(!

messageStack.empty()){

showMessageDialog(messageStack.pop());

}

}

});

messageAlertButton.setIcon(messageAlertIcon);

showMessageBar();

}

add(tabbedPane,BorderLayout.CENTER);

tabbedPane.setTabPlacement(SwingConstants.LEFT);

ImageIconuserTicon=newImageIcon(EQ.class

.getResource("imagetabIcontabLeft.PNG"));

tabbedPane.addTab(null,userTicon,createUserList(),"用户列表");

ImageIconsysOTicon=newImageIcon(EQ.class

.getResource("imagetabIcontabLeft2.PNG"));

tabbedPane.addTab(null,sysOTicon,createSysToolPanel(),"系统操作");

ImageIconsysSTicon=newImageIcon(EQ.class

.getResource("imagetabIcontabLeft3.png"));

tabbedPane.addTab(null,sysSTicon,createSysSetPanel(),"系统设置");

setAlwaysOnTop(true);

}

5.1.1界面设计

主窗体界面是本系统的用户列表,它由用户列表、系统选项卡、公告提示等组成。

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

主窗体的效果图如下所示:

图5.1主窗体界面示意图

5.1.2实现过程

主窗体实现部分包括创建主窗体和记录窗体位置。

其中创建主窗体的步骤如下:

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

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

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

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

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

关键代码如下:

try{启动通讯服务端口

ss=newDatagramSocket(1111);

}catch(SocketExceptione2){

if(e2.getMessage().startsWith("Addressalreadyinuse"))

showMessageDialog("服务端口被占用,或者本软件已经运行。

");

System.exit(0);

}

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

关键代码如下:

privatevoidcheckpacard(){检测公告信息方法

StringplacardDir=preferences.get("placardPath",null);

if(placardDir==null){

pushMessage("未设置公告路径");

return;

}

Fileplacard=newFile(placardDir);

try{

if(placard.exists()&&placard.isFile()){

StringBuilderplacardStr=newStringBuilder();

Scannersc=newScanner(newFileInputStream(placard));

while(sc.e){

pushMessage("公告路径错误,或公告文件不存在");

}

(4)initUserInfoButton()方法用于初始化本地用户信息,并在主窗体左上角显示本地用户的头像和名称,会在用户更改本地用户名称时同步更新。

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

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

关键代码如下:

publicstaticvoidmain(Stringargs[]){

try{

Stringlaf=preferences.get("lookAndFeel","java默认");获取用户选择的外观

if(laf.indexOf("当前系统")>-1)

UIManager.setLookAndFeel(UIManager

.getSystemLookAndFeelClassName());设置外观

EQframe=newEQ();

frame.setVisible(true);显示窗体

frame.SystemTrayInitial();初始化系统栏

frame.server();启动服务端口

frame.checkPlacard();检测系统公告

}catch(Exceptione){

e.printStackTrace();

}

}

记录窗体的位置步骤如下:

(1)为窗体添加监听器,当改变窗体的位置和大小时,将调用saveLocation()方法将窗体和位置大小保存到数据库中。

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

5.2公共模块的设计与实现

5.2.1界面设计

在本系统的项目空间中,有部分模块是公用的,或者多个模块甚至整个系统的配置信息是被多个模块重复调用完成业务的逻辑。

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

5.2.2实现过程

公共模块包括数据库操作类和系统工具类。

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

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

Dao类的关键代码如下:

publicclassDao{

数据库驱动

privatestaticfinalStringdriver="org.apache.derby.jdbc.EmbeddedDriver";

privatestaticStringurl="jdbc:

derby:

db_EQ";数据库URL

privatestaticConnectionconn=null;数据库连接

p

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2