局域网聊天软件课程设计毕业设计.docx

上传人:b****5 文档编号:6433591 上传时间:2023-01-06 格式:DOCX 页数:33 大小:229.16KB
下载 相关 举报
局域网聊天软件课程设计毕业设计.docx_第1页
第1页 / 共33页
局域网聊天软件课程设计毕业设计.docx_第2页
第2页 / 共33页
局域网聊天软件课程设计毕业设计.docx_第3页
第3页 / 共33页
局域网聊天软件课程设计毕业设计.docx_第4页
第4页 / 共33页
局域网聊天软件课程设计毕业设计.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

局域网聊天软件课程设计毕业设计.docx

《局域网聊天软件课程设计毕业设计.docx》由会员分享,可在线阅读,更多相关《局域网聊天软件课程设计毕业设计.docx(33页珍藏版)》请在冰豆网上搜索。

局域网聊天软件课程设计毕业设计.docx

局域网聊天软件课程设计毕业设计

课程设计报告

 

课程名称:

《面向对象程序设计》

课程设计题目:

贵师院局域网聊天软件

姓名:

学号:

组员:

学院:

数学与计算机科学

专业:

计算机科学与技术

年级:

2011级

指导教师:

二○一三年七月

 

 

摘要

随着互联网的发展,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多。

本次实验将依照腾讯公司聊天工具QQ的设计,实现局域网网络通信的基本功能,以便在用户在不联网的情况下也可以进行通信。

本文所写的“贵师院局域网聊天软件”是为了解决师院为了解决广大师院同学们上网困难,网费透支,网速慢等困难。

该软件主要包括:

服务器响应,登录系统,注册,好友界面,聊天界面等。

在这次的课程设计中,我们应用了MyEclipse6.0开发工具在WINDOWS平台上开发了一个基于WINDOWS平台的局域网通信工具,我们充分学习了JAVASwing和awt界面开发技术,使自己在界面应用和界面布局方面得到更多的实践,应用Socket技术实现网络的连接功能,对网络的实现和通信方面有了进一步的理解,多线程方面的应用,使得客户端和服务端可以实现多任务功能。

关键词:

Java,MyEclipse,通讯,局域网,聊天

 

Abstract

WiththedevelopmentoftheInternet,peoplerelyonnetworkmoreandmore,moreandmoreinseparablefromthenetwork,theresultingchattools,moreandmore.ThisexperimentwillbeinaccordancewiththedesignoftencentchattoolQQ,realizethebasicfunctionoftheLANnetworkcommunication,sothattheusersinthecaseofnotconnectedtotheInternetcanalsocommunicate.

Thisarticlewrittenbythe"yourLANchatsoftwarecollege"istosolveinordertosolvethegeneralteacherscollegestudentssurfingtheInternetisdifficult,netchargeoverdraft,networkspeedisslowanddifficult.Thesoftwaremainlyincludes:

theserverresponse,loginsystem,registration,friendinterface,chatinterface,etc.Inthecurriculumdesign,weappliedtheMyEclipse6.0developmenttoolsinWINDOWSplatformbasedonWINDOWSplatformtodevelopalocalareanetwork(LAN)communicationtools,wefullylearnedJAVASwingandawtinterfacedevelopmenttechnology,makeoneselfintheaspectofapplicationinterfaceandinterfacelayouttogetmorepractice,Sockettechnologyisappliedtoimplementthenetworkconnection,fortherealizationofthenetworkandcommunicationshaveafurtherunderstandingofmulti-threadedapplications,makingtheclientandtheservercanimplementmultitaskingcapabilities.

Keywords:

Java,MyEclipse, communication,Localareanetwork,chat

 

1引言

随着Internet的发展,Internet将提供越来越多的服务。

就目前而言,网民使用较多的主要有以下服务:

电子邮件(E-mail),文件传输(网络通讯),远程登录(Telnet),万维网(worldwideweb),新闻组和电子公告牌(BBS),聊天系统(Chat)等。

Internet如此流行,其中网络通讯功不可没。

成钱上网的数据,软件分布在世界各地,有了网络通讯,足不出户,只要敲几个字,就能轻而易举地得到想要的。

目前世界已有1000多个网络通讯文件服务器对所有的Internet用户开放,用户可以通过与Internet相连的计算机,把自己需要的文件传输过来。

现在,许多互联网站点都建立了可供大众访问的资料库,这些资料都可以通过网络通讯获取。

即时通讯的发展初期以其娱乐性引起了人们的广泛关注,但是现在在其快速增长的切用户表明这一技术已经开始融入现在商务活动中。

为适应新的经济竞争环境,现在企业的沟通越来越快,对效率的要求也越来越高,特别是企业内部团队工作中的协调沟通必须即刻达成,否则将影响项目的整体推进,也难以迅速应对瞬息变化的市场需求。

目前,越来越多的国内外企业开始关注企业即时通信产品,他们看中的是其降低交流成本、提高沟通效率的优势。

跨越物理空间距离、实现即时交流通信系统最吸引企业之处。

据美国著名公司Garnter调查显示,在2008年以后,企业即时通信产品将以350%的速度飞速增长,可以说,企业即时通信具有广泛的发展前景。

为了保障通信安全,建设内网、专网是一个解决这一问题的方法,凡是随着企业业务范围的不断扩大,网络规模也在扩大,采用该方案飞话,成本的代价必然非常高。

由于公众信息网是对整个社会开放飞公众基础网络,具有覆盖性范围广、速度快、费用低、使用方便等特点,但同时也存在着安全性差的问题。

用户通过公众信息网传输的信息,在传输的过程中可能被窃取、篡改和伪造,信息的安全性和可靠性因此大大的降低了。

习惯了通过类似于QQ,MSN之类的程序和天南地北的朋友聊天、发信息,不过所有聊天程序都需要Internet的支持,而无法在局域网内部大显身手,那么是否想到过要让单位内部的员工,寝室周围的同学,不用和上Internet就可以轻松体验到内网聊天的乐趣呢?

有了这种想法,开发局域网聊天程序就有了必要性,让单位员工或者寝室同学不出内网就能自由聊天。

随着网络技术的发展和国际互联网在全球的开通,计算机在教学领域中的应用得到了迅速地发展,多种类型的网校、教育网站、网络远程教育学院如雨后春笋般蓬勃兴起,使得网上教育成为当今教育的热点。

人们禁不住向往着一个全新的教育体制—基于Internet/Intranet教育网的教育体制,在这种体制下,不受时间、空间和地域的限制,不受应用软件的限制,通过计算机网络可扩展至全社会的每一个角落,甚至是全世界,这是真正意义上的开放大学。

在基于Internet的教育网络环境下,方便教师对学生作业的管理,同时可以最大限度地发挥学习者的主动性、积极性、探索精神,既可以进行个性化教学,又可以进行协作型教学。

局域网QQ软件是一个即时通信工具。

通过该网络程序的编制和实践,对自己所学习的知识进行了一次综合和提高,有更深层次的理解和掌握,在这个过程中,激发自己的学习潜力,提高软件开发的能力,加深对网络协议和Windows环境下网络编程的理解和掌握。

通过自己完成的需求分析,小组内经过讨论和商定,最终确定了我们小组开发的局域网QQ有以下几大功能:

文字聊天主要功能。

作为计算机网络的应用之一聊天工具,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大的加深了人们之间的联系。

从单一的文本聊天,到语音聊天以及到现在的图像、视频聊天、及时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。

聊天工具的开发主要用到了网络通信技术、语音的采集、压缩、传输、解压缩以及回放等技术、文件传输技术、windows的多线程技术以及视频的采集、压缩解压缩技术等。

该聊天软件基于WINSOCK通信,在此基础上,实现点对点聊天、广播聊天、一对多聊天以及文件的传输。

该聊天工具可以运行于任何支持tcp/ip,upd,ftp协议的机器上。

由于系统采用C/S结构,客户端与客户端以及客户端与服务器端需要传送一些控制消息。

2.设计的目的

为了熟练掌握面向对象编程的技巧和计本知识,掌握面向对象编程的基本思路和方法,深刻感受编程的乐趣,以及解决广大师院同学上网困难,网费透支,网速慢等困难,本小组采用了java语言程序设计,编写了一个“贵师院局域网聊天软件”。

局域网QQ软件是一个即时通信工具。

通过该网络程序的编制和实践,对自己所学习的知识进行了一次综合和提高,有更深层次的理解和掌握,在这个过程中,激发自己的学习潜力,提高软件开发的能力,加深对网络协议和Windows环境下网络编程的理解和掌握。

网络聊天成为现代人们生活必不可缺的一部分,它增强了人与人之间的沟通,当下的腾讯QQ为我国的大众平台,本次实验将依照腾讯公司聊天工具QQ的设计,实现局域网网络通信的基本功能,以便在不联网的情况下用户也可以进行通信。

局域网聊天程序的实现,主要为需要局域网内聊天的用户设计一个聊天平台;本系统的目的是为了让局域网内的计算机用户如寝室、办公室能随时随地通过网络进行交流。

局域网聊天程序的设计目标为一个高性能的,易于使用的,面向局域网的即时信息软件。

3.设计的内容

局域网QQ软件是一个即时通信工具。

主要有以下几个功能:

(1)连接服务器;

(2)用户注册;

(3)用户登录;

(4)多帐号登录;

(5)用户聊天。

本小组设计的聊天软件的开发主要是用MyEclipse开发工具,在WINDOWS平台上进行开发,我们充分学习了JAVASwing和awt界面开发技术,应用Socket技术实现网络的连接功能。

软件还涉及数据库的设计,用于存放注册用户信息。

C/S结构是本软件系统的体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。

在设计时,QQ用户登录框,我们要从两个方面去考虑:

一是QQ帐号,二是QQ密码。

就拿QQ帐号这一个输入框,你怎么去考虑进行测试用例的设计?

目前,一个QQ服务器就允许有10万以上个用户同时登录进行即时聊天,有多少个QQ帐号啊?

现在一个人还不只一个QQ号呢。

如果有很多QQ帐号的话,怎么进行测试呢?

如果只测试几个,覆盖率不足;全部都测试一遍,不可能有那么长时间,而且太多了也不好实施。

所以,QQ帐号的测试就陷入了僵局?

我们先分析一下QQ帐号:

由6-10位自然数构成。

一是位数长度有一定的限制,二是类型是固定的,由0-9自然数构成。

要想测试覆盖全面,又要节省时间,最好的办法是尽量简化测试用例的设计。

通过对以上QQ帐号的分析,可以看到有效的帐号有它自己的特点:

长度与类型要符合要求,这样只要在腾讯公司的服务器上申请了帐号,就可以进行即时通信了。

那么,这样就有一个解决问题的方法了:

进行类别的划分。

我们知道软件的功能测试要进行两个方面的测试:

通过测试和失败测试。

要进行通过测试的话,帐号要符合规范,要进行失败测试的话,就要破坏帐号的规范。

好,这样的话,QQ帐号的测试我们就可以进行了。

把QQ帐号进行分类:

有效的和无效的。

有效的:

(1)长度在6-10位之间

(2)类型是0-9自然数

无效的:

(1)长度小于6

(2)长度大于10

(3)负数

(4)小数

(5)英文字母

(6)字符

(7)特殊字符

中文

(1)编程语言中的转义字符

(2)空

这样就可以看出来,有效的当中只要取1或几个就可以通过测试了,在无效的当中取1或几个就可以进行失败测试了,所以这样的方法很简单、高效。

4.概要设计

4.1局域网聊天QQ的功能

检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。

就将在线用户发给该用户,并将该用户的状态发给各在线用户。

同时在服务器端显示出来。

建立与服务器的连接并登陆,能显示登陆错误信息。

用户登陆成功,将保存其号码,以便下次登陆时,不必再输入而可以直接选择,显示登陆时间。

因为每个用户的QQ号码和密码都是不相同的,因此必须要求后台管理系统能根据系统需求,动态的、准确的更新系统数据。

4.2局域网聊天QQ的功能模块如下:

(1)服务器界面:

如图2

图2服务器界面

Fig2Theserverinterface

(2)登录界面:

如图3

图3登录界面

Fig3Logininterface

(3)注册界面:

如图4

图4注册界面

Fig4Registrationinterface

(4)找回密码界面:

如图5

图5找回密码界面

Fig5Passwordretrievalinterface

 

(5)好友列表界面:

如图6

图6好友列表界面

Fig6Buddylistinterface

(6)聊天界面设计:

如图7

图7聊天界面设计

Fig7Thechatinterfacedesign

5.详细设计

5.1编写服务器端程序

5.1.1问题陈述

(1)接受用户注册信息并保存在数据库里面。

(2)能够允许注册过的用户登录聊天界面并可以聊天。

(3)能够接收私聊信息并发送给特定的用户。

(4)服务器运行在自定义的端口9999上。

5.1.2解决方案

5.1.2.1数据库设计

基于服务跨平台运行的构想,服务器数据库使用Mysql。

数据库表:

如图9

图9数据库设计

Fig9Databasedesign

5.1.2.2用户注册

(1)客户端请求注册:

客户端通过Register.java请求注册,填写注册信息,并验证密码是否符合规定,是否两次入一致,如不一致会提示重新输入,最后将请求信息发送给服务器端。

(2)服务器端响应:

服务器端得到注册请求会将对象输入流转化为文件输出流,并反馈给客户端。

客户端得到注册信息后会在前台填写注册信息,然后创建文件输出流,再用对象输出流包装后写入本地文件将其持久化。

最后关闭对象输出流和文件输入流。

(3)给客户端返回信息:

将用户注册成功或失败的信息用打印流包装Socket以后,输出给客户端注册结果的详细信息。

5.1.2.3用户登录

(1)去数据库读数据库数据

(2)验证用户名是否存在

5.1.2.4接收用户聊天信息

(1)接收用户聊天信息

当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象。

(2)过滤用户聊天内容的非法信息

分析聊天信息对象的聊天内容,用语言过滤类将非法字符过滤掉。

语言过滤的时候将会打开“badword.txt”文件,不允许出现的关键词将会存储在文件中,关键字之间以逗号分割。

当聊天内容中出现要过渡的关键字是将会被系统屏蔽,而聊天内容正常发送给接收端。

(3)接收服务器端的系统消息

当有其他用户登陆时,系统会给在线的所有用户发送用户登陆信息,并且通过服务器可以给各用户发送系统消息。

系统消息发出后,如再有登录者也可以接收到系统消息。

(4)返回给客户端

当以上信息都封装成功后,打开与客户端连接的Socket的输出流,然后再用ObjectOutputStream对象输出流包装后输出给客户端。

5.2客户端程序编写

程序将通过QQregister.java用户注册界面收集用户的昵称、姓名、性别、年龄、所在地。

(1)用户登录

程序将通过QqClientLogin.java用户登录界面收集用户userId。

(2)好友列表

当用户登录成功后,用户的登录界面将会隐藏,然后创建用户好友列表窗口,当界面的标题栏将会显示当前用户的userId,以防止机器上的用户开多个账号后分不清是哪个用户登录。

第一行显示好友的列表,第二行是陌生人列表,第三行是黑名单列白。

好友列表里面显示的是好友的userId。

(3)聊天室

当在好友界面里面点击一个在线的好友时会弹出一个用户与好友聊天的窗口。

在界面上标题栏上显示好友userId的界面。

用户需要发送信息时,在聊天内容里写下要发送的内容,然后点击发送就可一发送到好友的客户端。

6.总结

Java向对象程序设计是一门应用广泛面实用性极强的程序设计语言。

通过本次课程设计,我对项目的各个阶段的任务有一定的了解。

设计开始阶段必须明确设计的目的与需求分析,总体设计要全面分析聊天室的系统构建。

客户端发送信息时,将要发送的内容(包括聊天信息标识。

聊天对象,聊天对象,状态、表情、内容)以及用户列表通过消息框进行发送,发给某个用户则是通过消息框发送信息。

服务器端和客户端接受消息时,先读取聊天信息标识,做出判断,依次读取、处理信息,并在界面上显示。

服务器端还要将准备好的信息发送给指定的用户。

服务器端帧听到有用户下线后,讲删出用户结点,并在界面显示用户下线,发送新用户列表。

服务端停止服务,也会向客服端发送服务器已关闭,客户讲不再可以聊天。

在这过程中哪怕只是一点点的错误,却要花出号几个此傲视甚至几天的时间才把它找出来。

所以在这过程中我们不能急于求成,要很有耐心的反复调试程序,查资料,找出错误。

7.参考资料 

[1]胡伏湘,雷军环.Java程序设计实用教程.清华大学出版社.2005年. 

[2]LemayLaura.21天学通Java.人民邮电出版社.2001年. 

[3]cays.horstmann.JAVA核心技术(第二版).电子工业出版社.2005年. 

[4]陆光义.Java游戏编程导学.清华大学出版社.2004年. 

[5]郭谦.Java程序性能优化.铁路计算机应用.2003年.

[6]Y.DanielLiang.Java语言程序设计基础篇.机械工业出版社.2011年.

[7]Y.DanielLiang.Java语言程序设计进阶篇.机械工业出版社.2011年.

8.附录

(1)启动服务器MyServerFrame.java代码:

publicclassMyServerFrameextendsJFrameimplementsActionListener{

JPaneljp1;

JButtonjb1,jb2;

publicstaticvoidmain(String[]args){

MyServerFramef=newMyServerFrame();

}

publicMyServerFrame()

{

jp1=newJPanel();

jb1=newJButton("启动服务器");

jb1.addActionListener(this);

jb2=newJButton("关闭服务器");

jp1.add(jb1);

jp1.add(jb2);

this.add(jp1);

this.setSize(500,400);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

}

publicvoidactionPerformed(ActionEvente){

//TODOAuto-generatedmethodstub

if(e.getSource()==jb1)

{newMyQqServer();}}}

(2)QQ注册界面QQregister.java代码:

publicclassQQregisterextendsJFrameimplementsActionListener{

static{

try{

Class.forName("com.mysql.jdbc.Driver");

System.out.println("SuccessloadingDriver!

");

}

catch(Exceptione){

e.printStackTrace();

}}

Stringurl="jdbc:

mysql:

//localhost:

3306/qqdb";

StringuserName="root";

Stringpassword="111111";

Connectionconn=null;

Statementsql;

StringuserId=null;

JLaeljbl1,jp2_jl1,jp2_jl2,jp2_jl3,jp2_jl4,jp2_jl5,jp2_jl6,jp2_jl7;

JPaneljp1,jp2;

JTextFieldjp2_jtf11,jp2_jtf12,jp2_jtf3,jp2_jtf4;

JPasswordFieldjp2_jpf1,jp2_jpf2;

JButtonjb1;

JRadioButtonjb2,jb3;

Boxb1;

ButtonGroupbtg;

charb;

publicstaticvoidmain(String[]args){

QQregisterf=newQQregister();

}

publicQQregister()

{setLayout(newBorderLayout());

//处理北部

jbl1=newJLabel(newImageIcon("image/6.png"));

//处理中部

jp2=newJPanel(newGridLayout(7,2));

jp2_jl1=newJLabel("昵称:

",JLabel.CENTER);

jp2_jl2=newJLabel("姓名:

",JLabel.CENTER);

jp2_jl3=newJLabel("密码:

",JLabel.CENTER);

jp2_jl4=newJLabel("确认密码:

",JLabel.CENTER);

jp2_jl5=newJLabel("性别:

",JLabel.CENTER);

b1=Box.createHorizontalBox();

jb2=newJRadioButton("男");

jb3=newJRadioButton("女");

b1.add(jb2);

b1.add(jb3);

btg=newButtonGroup();

btg.add(jb2);

btg.add(jb3);

jp2_jl

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

当前位置:首页 > 工程科技 > 能源化工

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

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