1、局域网qq课程设计报告书 课 程 设 计 报 告课 程 名 称:面向对象程序设计课程设计题目:贵师院局域网聊天软件姓 名:罗义秀学 号:24 组 员:宪文、武慕雪、景荣、王丹学 院:数学与计算机科学专 业:计算机科学与技术年 级:2011级 指 导 教 师:向程冠 二一三 年 七 月 1.设计的目的 12设计的容 13概要设计 33.1局域网聊天QQ的功能 33.2局域网聊天QQ的能模块如下: 34详细设计 54.1编写服务器端程序 54.1.1问题述 54.1.2解决方案 64.2客户端程序编写 75总结 86参考资料 87.附录 8摘 要随着互联网的发展,人们对网络的依赖越来越多,越来越离
2、不开网络,由此而产生的聊天工具越来越多。本次实验将依照腾讯公司聊天工具QQ的设计,实现局域网网络通信的基本功能,以便在用户在不联网的情况下也可以进行通信。 本文所写的“贵师院局域网聊天软件”是为了解决师院为了解决广大师院同学们上网困难,网费透支,网速慢等困难。该软件主要包括:服务器响应,登录系统,注册,好友界面,聊天界面等。在这次的课程设计中,我们应用了MyEclipse 6.0开发工具在WINDOWS平台上开发了一个基于WINDOWS平台的局域网通信工具,我们充分学习了JAVA Swing和awt界面开发技术,使自己在界面应用和界面布局方面得到更多的实践,应用Socket技术实现网络的连接功
3、能,对网络的实现和通信方面有了进一步的理解,多线程方面的应用,使得客户端和服务端可以实现多任务功能。关键词:Java, MyEclipse, 通讯, 局域网,聊天 AbstractWith the development of the Internet, people rely on network more and more, more and more inseparable from the network, the resulting chat tools, more and more. This experiment will be in accordance with the de
4、sign of tencent chat tool QQ, realize the basic function of the LAN network communication, so that the users in the case of not connected to the Internet can also communicate. This article written by the your LAN chat software college is to solve in order to solve the general teachers college studen
5、ts surfing the Internet is difficult, net charge overdraft, network speed is slow and difficult. The software mainly includes: the server response, login system, registration, friend interface, chat interface, etc. In the curriculum design, we applied the MyEclipse 6.0 development tools in WINDOWS p
6、latform based on WINDOWS platform to develop a local area network (LAN) communication tools, we fully learned JAVA Swing and awt interface development technology, make oneself in the aspect of application interface and interface layout to get more practice, Socket technology is applied to implement
7、the network connection, for the realization of the network and communications have a further understanding of multi-threaded applications, making the client and the server can implement multitasking capabilities. Keywords : Java, MyEclipse, communication, Local area network, chat 1 引言随着Internet的发展,I
8、nternet将提供越来越多的服务。就目前而言,网民使用较多的主要有以下服务:电子(E-mail),文件传输(网络通讯),远程登录(Telnet),万维网(world wide web),新闻组和电子公告牌(BBS),聊天系统(Chat)等。Internet如此流行,其中网络通讯功不可没。成钱上网的数据,软件分布在世界各地,有了网络通讯,足不出户,只要敲几个字,就能轻而易举地得到想要的。目前世界已有1000多个网络通讯文件服务器对所有的Internet用户开放,用户可以通过与Internet相连的计算机,把自己需要的文件传输过来。现在,许多互联点都建立了可供大众访问的资料库,这些资料都可以通过
9、网络通讯获取。即时通讯的发展初期以其娱乐性引起了人们的广泛关注,但是现在在其快速增长的切用户表明这一技术已经开始融入现在商务活动中。为适应新的经济竞争环境,现在企业的沟通越来越快,对效率的要求也越来越高,特别是企业部团队工作中的协调沟通必须即刻达成,否则将影响项目的整体推进,也难以迅速应对瞬息变化的市场需求。目前,越来越多的国外企业开始关注企业即时通信产品,他们看中的是其降低交流成本、提高沟通效率的优势。跨越物理空间距离、实现即时交流通信系统最吸引企业之处。据美国著名公司Garnter调查显示,在2008年以后,企业即时通信产品将以350%的速度飞速增长,可以说,企业即时通信具有广泛的发展前景
10、。为了保障通信安全,建设网、专网是一个解决这一问题的方法,凡是随着企业业务围的不断扩大,网络规模也在扩大,采用该方案飞话,成本的代价必然非常高。由于公众信息网是对整个社会开放飞公众基础网络,具有覆盖性围广、速度快、费用低、使用方便等特点,但同时也存在着安全性差的问题。用户通过公众信息网传输的信息,在传输的过程中可能被窃取、篡改和伪造,信息的安全性和可靠性因此大大的降低了。习惯了通过类似于QQ,MSN之类的程序和天南地北的朋友聊天、发信息,不过所有聊天程序都需要Internet的支持,而无法在局域网部大显身手,那么是否想到过要让单位部的员工,寝室周围的同学,不用和上Internet就可以轻松体验
11、到网聊天的乐趣呢?有了这种想法,开发局域网聊天程序就有了必要性,让单位员工或者寝室同学不出网就能自由聊天。随着网络技术的发展和国际互联网在全球的开通,计算机在教学领域中的应用得到了迅速地发展,多种类型的网校、教育、网络远程教育学院如雨后春笋般蓬勃兴起,使得网上教育成为当今教育的热点。人们禁不住向往着一个全新的教育体制基于Internet/Intranet教育网的教育体制,在这种体制下,不受时间、空间和地域的限制,不受应用软件的限制,通过计算机网络可扩展至全社会的每一个角落,甚至是全世界,这是真正意义上的开放大学。在基于Internet的教育网络环境下,方便教师对学生作业的管理,同时可以最大限度
12、地发挥学习者的主动性、积极性、探索精神,既可以进行个性化教学,又可以进行协作型教学。局域网QQ软件是一个即时通信工具。通过该网络程序的编制和实践,对自己所学习的知识进行了一次综合和提高,有更深层次的理解和掌握,在这个过程中,激发自己的学习潜力,提高软件开发的能力,加深对网络协议和Windows环境下网络编程的理解和掌握。通过自己完成的需求分析,小组经过讨论和商定,最终确定了我们小组开发的局域网QQ有以下几大功能:文字聊天主要功能。作为计算机网络的应用之一聊天工具,受到了用户的普遍爱好,它把人们带进了一个虚拟的网络世界,大大的加深了人们之间的联系。从单一的文本聊天,到语音聊天以及到现在的图像、视
13、频聊天、及时短信的发送和在线游戏等功能的开发,已经大大的拓展了聊天工具的概念,它将会作为未来人们通过因特网相互联系和娱乐的主要平台。聊天工具的开发主要用到了网络通信技术、语音的采集、压缩、传输、解压缩以及回放等技术、文件传输技术、windows的多线程技术以及视频的采集、压缩解压缩技术等。该聊天软件基于WINSOCK通信,在此基础上,实现点对点聊天、广播聊天、一对多聊天以及文件的传输。该聊天工具可以运行于任何支持tcp/ip,upd,ftp协议的机器上。由于系统采用C/S结构,客户端与客户端以及客户端与服务器端需要传送一些控制消息。2.设计的目的为了熟练掌握面向对象编程的技巧和计本知识,掌握面
14、向对象编程的基本思路和方法,深刻感受编程的乐趣,以及解决广大师院同学上网困难,网费透支,网速慢等困难,本小组采用了java语言程序设计,编写了一个“贵师院局域网聊天软件”。局域网QQ软件是一个即时通信工具。通过该网络程序的编制和实践,对自己所学习的知识进行了一次综合和提高,有更深层次的理解和掌握,在这个过程中,激发自己的学习潜力,提高软件开发的能力,加深对网络协议和Windows环境下网络编程的理解和掌握。网络聊天成为现代人们生活必不可缺的一部分,它增强了人与人之间的沟通,当下的腾讯QQ为我国的大众平台,本次实验将依照腾讯公司聊天工具QQ的设计,实现局域网网络通信的基本功能,以便在不联网的情况
15、下用户也可以进行通信。局域网聊天程序的实现,主要为需要局域网聊天的用户设计一个聊天平台;本系统的目的是为了让局域网的计算机用户如寝室、办公室能随时随地通过网络进行交流。局域网聊天程序的设计目标为一个高性能的,易于使用的,面向局域网的即时信息软件。3设计的容局域网QQ软件是一个即时通信工具。主要有以下几个功能:(1)连接服务器;(2)用户注册;(3)用户登录;(4)多登录;(5)用户聊天。本小组设计的聊天软件的开发主要是用MyEclipse开发工具,在WINDOWS平台上进行开发,我们充分学习了JAVA Swing和awt界面开发技术,应用Socket技术实现网络的连接功能。软件还涉及数据库的设
16、计,用于存放注册用户信息。C/S结构是本软件系统的体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。在设计时,QQ用户登录框,我们要从两个方面去考虑:一是QQ,二是QQ密码。就拿QQ这一个输入框,你怎么去考虑进行测试用例的设计?目前,一个QQ服务器就允许有10万以上个用户同时登录进行即时聊天,有多少个QQ啊?现在一个人还不只一个QQ号呢。 如果有很多QQ的话,怎么进行测试呢?如果只测试几个,覆盖率不足;全部都测试一遍,不可能有那么长时间,而且太多了也不好实施。所以,QQ的测试就陷入了僵局?我们先分析一下QQ:由6-10位
17、自然数构成。一是位数长度有一定的限制,二是类型是固定的,由0-9自然 数构成。要想测试覆盖全面,又要节省时间,最好的办法是尽量简化测试用例的设计。通过对以上QQ的分析,可以看到有效的有它自己的特点:长度与类 型要符合要求,这样只要在腾讯公司的服务器上申请了,就可以进行即时通信了。那么,这样就有一个解决问题的方法了:进行类别的划分。我们知道软件的功能测试要进行两个方面的测试:通过测试和失败测试。要进行通过测试的话,要符合规,要进行失败测试的话,就要破坏的规。好,这样的话,QQ的测试我们就可以进行了。把QQ进行分类:有效的和无效的。有效的:(1)长度在6-10位之间(2)类型是0-9自然数无效的:
18、(1)长度小于6(2)长度大于10(3)负数(4)小数(5)英文字母(6)字符 (7)特殊字符中文(1)编程语言中的转义字符(2)空 这样就可以看出来,有效的当中只要取1或几个就可以通过测试了,在无效的当中取1或几个就可以进行失败测试了,所以这样的方法很简单、高效。4概要设计4.1局域网聊天QQ的功能检查登陆信息是否正确,并向客户端返回登陆信息,如信息正确。就将在线用户发给该用户,并将该用户的状态发给各在线用户。同时在服务器端显示出来。建立与服务器的连接并登陆,能显示登陆错误信息。用户登陆成功,将保存其,以便下次登陆时,不必再输入而可以直接选择,显示登陆时间。因为每个用户的QQ和密码都是不相同
19、的,因此必须要求后台管理系统能根据系统需求,动态的、准确的更新系统数据。4.2局域网聊天QQ的功能模块如下:(1)服务器界面:如图2 图2 服务器界面 Fig2 The server interface(2)登录界面:如图3 图3 登录界面Fig3 Login interface(3)注册界面:如图4 图4 注册界面 Fig4 Registration interface(4)找回密码界面:如图5 图5 找回密码界面 Fig5 Password retrieval interface(5)好友列表界面:如图6 图6 好友列表界面 Fig6 Buddy list interface(6)聊天界面
20、设计:如图7 图7 聊天界面设计 Fig7 The chat interface design5详细设计 5.1编写服务器端程序5.1.1问题述(1)接受用户注册信息并保存在数据库里面。(2)能够允许注册过的用户登录聊天界面并可以聊天。(3)能够接收私聊信息并发送给特定的用户。(4)服务器运行在自定义的端口9999上。5.1.2解决方案5.1.2.1数据库设计基于服务跨平台运行的构想,服务器数据库使用Mysql。数据库表:如图9图9数据库设计 Fig9 Database design 5.1.2.2用户注册(1)客户端请求注册:客户端通过Register.java请求注册,填写注册信息,并验证
21、密码是否符合规定,是否两次入一致,如不一致会提示重新输入,最后将请求信息发送给服务器端。(2)服务器端响应:服务器端得到注册请求会将对象输入流转化为文件输出流,并反馈给客户端。客户端得到注册信息后会在前台填写注册信息,然后创建文件输出流,再用对象输出流包装后写入本地文件将其持久化。最后关闭对象输出流和文件输入流。(3)给客户端返回信息:将用户注册成功或失败的信息用打印流包装Socket以后,输出给客户端注册结果的详细信息。5.1.2.3用户登录(1)去数据库读数据库数据(2)验证用户名是否存在5.1.2.4 接收用户聊天信息(1)接收用户聊天信息当用户发送聊天信息时,服务端将会收到客户端用So
22、cket传输过来的聊天信息对象,然后将其强制转换为Chat对象。(2)过滤用户聊天容的非法信息分析聊天信息对象的聊天容,用语言过滤类将非法字符过滤掉。语言过滤的时候将会打开“badword.txt”文件,不允许出现的关键词将会存储在文件中,关键字之间以逗号分割。当聊天容中出现要过渡的关键字是将会被系统屏蔽,而聊天容正常发送给接收端。(3)接收服务器端的系统消息当有其他用户登陆时,系统会给在线的所有用户发送用户登陆信息,并且通过服务器可以给各用户发送系统消息。系统消息发出后,如再有登录者也可以接收到系统消息。(4)返回给客户端当以上信息都封装成功后,打开与客户端连接的Socket的输出流,然后再
23、用ObjectOutputStream对象输出流包装后输出给客户端。5.2客户端程序编写程序将通过QQregister.java用户注册界面收集用户的昵称、性别、年龄、所在地。(1)用户登录程序将通过QqClientLogin.java用户登录界面收集用户userId。(2)好友列表当用户登录成功后,用户的登录界面将会隐藏,然后创建用户好友列表窗口,当界面的标题栏将会显示当前用户的userId,以防止机器上的用户开多个账号后分不清是哪个用户登录。第一行显示好友的列表,第二行是陌生人列表,第三行是黑列白。好友列表里面显示的是好友的userId。(3)聊天室当在好友界面里面点击一个在线的好友时会弹
24、出一个用户与好友聊天的窗口。在界面上标题栏上显示好友userId的界面。用户需要发送信息时,在聊天容里写下要发送的容,然后点击发送就可一发送到好友的客户端。6总结 Java向对象程序设计是一门应用广泛面实用性极强的程序设计语言。通过本次课程设计,我对项目的各个阶段的任务有一定的了解。设计开始阶段必须明确设计的目的与需求分析,总体设计要全面分析聊天室的系统构建。 客户端发送信息时,将要发送的容(包括聊天信息标识。聊天对象,聊天对象,状态、表情、容)以及用户列表通过消息框进行发送,发给某个用户则是通过消息框发送信息。服务器端和客户端接受消息时,先读取聊天信息标识,做出判断,依次读取、处理信息,并在
25、界面上显示。服务器端还要将准备好的信息发送给指定的用户。 服务器端帧听到有用户下线后,讲删出用户结点,并在界面显示用户下线,发送新用户列表。服务端停止服务,也会向客服端发送服务器已关闭,客户讲不再可以聊天。在这过程中哪怕只是一点点的错误,却要花出号几个此傲视甚至几天的时间才把它找出来。所以在这过程中我们不能急于求成,要很有耐心的反复调试程序,查资料,找出错误。7参考资料1胡伏湘,雷军环.Java程序设计实用教程.清华大学.2005年.2LemayLaura.21天学通Java.人民邮电.2001年.3cays.horstmann.JAVA核心技术(第二版).电子工业.2005年. 4陆光义.J
26、ava游戏编程导学.清华大学.2004年.5郭谦.Java程序性能优化.铁路计算机应用.2003年. 6Y.DanielLiang.Java语言程序设计 基础篇.机械工业.2011年.7Y.DanielLiang.Java语言程序设计 进阶篇.机械工业.2011年.8.附录(1)启动服务器MyServerFrame.java代码:public class MyServerFrame extends JFrame implements ActionListener JPanel jp1; JButton jb1,jb2; public static void main(String args)
27、MyServerFrame f=new MyServerFrame(); public MyServerFrame() jp1=new JPanel(); jb1=new JButton(启动服务器); jb1.addActionListener(this); jb2=new JButton(关闭服务器); jp1.add(jb1); jp1.add(jb2); this.add(jp1); this.setSize(500,400); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); pub
28、lic void actionPerformed(ActionEvent e) / TODO Auto-generated method stub if(e.getSource()=jb1) new MyQqServer();(2)QQ注册界面QQregister.java代码:public class QQregister extends JFrame implements ActionListener static try Class.forName(.mysql.jdbc.Driver); System.out.println(Success loading Driver!); catc
29、h(Exception e) e.printStackTrace(); String url = jdbc:mysql:/localhost:3306/qqdb; String userName = root; String password = 111111; Connection conn=null; Statement sql; String userId = null;JLael jbl1,jp2_jl1,jp2_jl2,jp2_jl3,jp2_jl4,jp2_jl5,jp2_jl6,jp2_jl7; JPanel jp1,jp2; JTextField jp2_jtf11,jp2_j
30、tf12,jp2_jtf3,jp2_jtf4; JPasswordField jp2_jpf1,jp2_jpf2; JButton jb1; JRadioButton jb2,jb3; Box b1; ButtonGroup btg; char b; public static void main(String args) QQregister f=new QQregister(); public QQregister() setLayout(new BorderLayout(); /处理北部 jbl1=new JLabel(new ImageIcon(image/6.png); /处理中部
31、jp2=new JPanel(new GridLayout(7,2); jp2_jl1=new JLabel(昵称:,JLabel.CENTER); jp2_jl2=new JLabel(:,JLabel.CENTER); jp2_jl3=new JLabel(密码:,JLabel.CENTER); jp2_jl4=new JLabel(确认密码:,JLabel.CENTER); jp2_jl5=new JLabel(性别:,JLabel.CENTER); b1=Box.createHorizontalBox(); jb2=new JRadioButton(男); jb3=new JRadioButton(女); b1.add(
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1