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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

java课设正文Word下载.docx

1、2.1.1 聊天室系统的定义聊天时系统是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、XXHI 、Skype QQ VS GU、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话。2.1.2 聊天室系统的任务及目的本系统主要通过客户端,服务器端来体现聊天系统的基本功能,服务器功能为: (a)处理用户注册(b)处理用户登录(c)处理用户发送信息,服务器监

2、控聊天内容,服务器过滤非法内容(d)处理用户得到信息(e)处理用户退出 (f)服务器踢人。 客户端功能为:(a)用户注册界面及结果(b)用户登录界面及结果(c)用户发送信息界面及结果(d)用户得到信息界面及结果(e)用户退出界面及结果(f)用户修改密码界面2.2 主要聊天室系统介绍目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为Live Messenger)以及跨平台Gaim等。本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之

3、后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信;其模型如图2-1:图2-1 腾讯QQ服务器-客户端模型1与腾讯QQ不同,微软的MSN Messenger只使用了TCP作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。其模型如图2-2:图2-

4、2 MSN服务器-客户端模型2腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。而MSN Messenger所有数据都要经过服务器,服务器压力可想而知(难怪平时很少见到使用MSN进行语音视频聊天的)。2.3 本章小结这一章介绍了当前聊天室系统应该具备的功能模块,并提供了市面上比较流行的聊天室系统作为参考。在这一章中,我们可以了解什么是聊天室系统,当前聊天室系统的市场需求,还有一个聊天室系统应该的开发目标。3 聊天室系统的设计3.1 系统需求分析聊天室的设计目标:通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握

5、JDK、ORCL等开发工具的运用,拓宽常用类库的应用,用JAVA实现基于C/S模式的聊天室系统。3.2 本次系统开发及运行环境硬件平台: (a)CPU:Inter Core i3。 (b)内存:2G。软件平台: (a)操作系统:Windows 07。 (b)运行环境:JDK Version1.6 。3.3系统模块化分析3.3.1 聊天室系统总体结构主要功能框架如下图所示:图3-1 主要功能框架图各功能模块实现的功能为:服务器: 端口设置:设置倾听的端口号,默认为8888。 启动服务:开启倾听端口,允许客户端连接。 系统消息:服务器启动后可以在聊天室内发送消息。 停止服务:关闭倾听端口,中断所有

6、客户端的连接。 退出:关闭服务器。 客户端: 用户设置:设置聊天时显示的名称,默认为匆匆过客。 连接设置:设置要连接的服务器所在主机的IP地址和倾听端口。 登录:连接服务器。 发送消息:进行聊天,可单独发送消息给聊天室中的一个人。 注销:与服务器断开连接。关闭客户端。3.3.2 聊天室系统各模块介绍服务器包含服务、帮助、聊天三大模块,其中服务模块包含端口设置、启动服务、停止服务和退出四个小模块聊天模块可以向聊天室内所有人或个人发送系统消息或以管理员身份与其他人聊天。表3-1 服务器各模块名称功能汇总表序号模块名基本功能1端口设置2启动服务3停止服务4退出5帮助显示各个模块的功能及操作方法。6发

7、送向聊天室内发送系统消息。客户端包含操作、设置、帮助、聊天四大模块,其中操作包含用户登录、用户注销和退出三个小模块,设置包含用户设置和连接设置两个小模块聊天模块除 具备普通聊天功能外,还能进行聊天时的表情选择。表3-2 客户端各模块名称功能汇总表用户设置连接设置用户登录连接到服务器端。用户注销发送聊天内容7悄悄话聊天内容不会被服务器和说话对象以外的人看到3.4 系统数据流图图3-2 图系统数据流图3.5 本章小结本章是聊天室系统的具体设计过程,有具体的需求分析、系统功能模块、系统数据流图。这里我们开始接触聊天室系统开发的最初步骤,也是很重要的一步。4系统的具体实现界面是系统之间最直接的交互界面

8、,界面的友好性体现了软件设计的质量, 并在很大程度上决定了软件是否成功。4.1界面设计(a)服务器启动界面图图4-1 服务器启动界面图(b)服务器启动成功界面图图4-2 服务器启动成功界面图(c)客户端界面图图4-3 客户端登陆界面(d)用户成功登录界面图图4-4 用户成功登陆界面(e)两人私聊界面图图4-5 两人私聊界面图(f)添加删除好友图4-6 客户端删除好友图图4-7 客户端添加好友图图4-8 添加好友成功图图4-9 添加删除好友界面图(g)注册账户图4-10 注册账户界面图图4-11 注册成功提示图图4-12 注册账户界面图4.2程序设计及调试运行按功能模块结构设计菜单,布置各明细模

9、块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。4.3 本章小结本章介绍了系统的具体实现和部分关键代码,其中包括用户登录所要用到的函数和主界面的框架设计。5 设计体会及今后的改进意见 本文简单介绍了Java版的局域网聊天室,实现了局域网内的好友之间的聊天,删除添加好友,注册账号和服务器端的控制等功能。 此次功能的实现是很不易的,每一个功能模块的实现都话费了大量的时间和精力,正是由于这样

10、,我对Java基础的理解和应用有了很大的提高,由于每个功能的实现的框架基本都是相同的,所以在前期的实现比较困难,但是在后期的编程还是相对比较简单,代码的编写是一个技术的问题更是一个时间的问题,我们只有通过不断的编程和调试才能写出更好的程序。 本次的局域网聊天中未能很好的完成用户信息的管理,在实现的方法上没有将多个线程包装成一个超类,所有从客户端到服务器和服务器到客户端的信息只通过一个模型进行传输,在这方面我还是需要很好的理解多态处理机制。参 考 文 献1朱庆生.Java程序设计M.北京.清华大学出版社,20112王伟平.Java编程M.北京.清华大学出版社,20103叶乃文.Java核心技术M

11、.北京.机械工业出版社,2009附录 1 包的设计主要源代码: /*客户端界面*/package com.lyz.view;import java.awt.BorderLayout;import java.awt.Dimension;import javax.swing.BorderFactory;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swi

12、ng.JScrollPane;import javax.swing.JTextField;import com.lyz.controller.client.AddDelHandler;import com.lyz.controller.client.ClientFrameHandler;import com.lyz.controller.clientListener.AddDelListener;import com.lyz.controller.clientListener.ClientListener;import com.lyz.controller.clientListener.Fri

13、ListListener;import com.lyz.controller.clientListener.LeaveMesListener;import com.lyz.controller.clientListener.MesListener;import com.lyz.controller.clientListener.TypeListener;import com.lyz.controller.clientSend.SendMes;import com.lyz.model.FinalFile;import com.lyz.model.ParentModel;import com.ly

14、z.util.ScreenSize;public class ClientFrame extends JFrame private FriPanel friPanel; private ParentModel pm; private FriListListener friListener; private MesListener mesListener; private TypeListener typeListener; private LeaveMesListener leaveMesListener; private MyPanel pan; private JTextField cho

15、serJtf; private JLabel qqLab,addLab,picLab; private JButton delBut,addBut; private JPanel add_del_pan,topPan; public ClientFrame(ParentModel pm) super(客户端); /将用户模型传给登陆用户界面 this.pm=pm; this.setBounds(ScreenSize.width-300,50,230,600); /添加好友面板 friPanel=new FriPanel(); this.add(new JScrollPane(friPanel)

16、,BorderLayout.CENTER); topPan=new JPanel(new BorderLayout(); topPan.setBounds(0,0,200,70); topPan.setBorder(BorderFactory.createEtchedBorder(); /显示图像 picLab=new JLabel(); topPan.add(picLab,BorderLayout.WEST); /显示QQ号 qqLab=new JLabel(); topPan.add(qqLab,BorderLayout.CENTER); /确认 addLab=new JLabel();

17、addLab.setToolTipText(双击确定 topPan.add(addLab,BorderLayout.EAST); this.add(topPan,BorderLayout.NORTH); add_del_pan=new JPanel(); add_del_pan.setBounds(5,500,200,70); add_del_pan.setBorder(BorderFactory.createEtchedBorder(); /查询 choserJtf=new JTextField( choserJtf.setBounds(5,50,90,15); add_del_pan.ad

18、d(choserJtf); addBut=new JButton(添加 addBut.setBounds(100,40,30,30); addBut.setContentAreaFilled(false); addBut.setFont(new java.awt.Font(宋体, 1, 13); add_del_pan.add(addBut); delBut=new JButton(删除 delBut.setBounds(130,40,30,30); delBut.setContentAreaFilled(false); delBut.setFont(new java.awt.Font( ad

19、d_del_pan.add(delBut); this.add(add_del_pan,BorderLayout.SOUTH); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setVisible(true); /添加离线信息监听器 ClientFrameHandler ch=new ClientFrameHandler(this); this.addWindowListener(ch); /添加客户端监听 ClientListener clientListener=new ClientListener(this); cli

20、entListener.setDaemon(true); clientListener.start(); /添加好友监听器 AddDelHandler ah=new AddDelHandler(this); this.delBut.addActionListener(ah); this.addBut.addActionListener(ah); this.addLab.addMouseListener(ah); /发送登陆信息 SendMes.sendServerMes(FinalFile.SER, pm); public void closeService() this.friListene

21、r.close(); this.typeListener.close(); this.mesListener.close(); this.leaveMesListener.close(); public class MyPanel extends JPanel public Dimension getPreferredSize() return new Dimension(230,600); public void setReplyPic(boolean flag) if (flag=true) this.picLab.setIcon(new ImageIcon(image/add_mes.g

22、if); elseimage/recieved.gif /*服务器端界面import javax.swing.JTable;import javax.swing.table.TableModel;import com.lyz.controller.serverListener.AddDelFriListener;import com.lyz.controller.serverListener.MesListener;import com.lyz.controller.serverListener.RegistListener;import com.lyz.controller.serverLi

23、stener.ServerListener;import com.lyz.model.dao.Dao;public class ServerFrame extends JFrame private JTable tab; private TableModel model; private JPanel typePanel; private JLabel typeLabel; private Dao dao=new Dao(); public ServerFrame()服务器端 this.setBounds(ScreenSize.width-400)/2,(ScreenSize.height-3

24、00)/2,400,300); tab=new JTable(); refreashModel();、 this.add(new JScrollPane(tab); /线程-服务器监听 ServerListener serverListener=new ServerListener(this); serverListener.setDaemon(true); serverListener.start(); * 刷新表格数据 */ public void refreashModel() model=dao.getLoginTableModel();/ java.lang.NullPointerException-判断dao是否是空对象 this.tab.setModel(model);*服务器端监听public class ServerListener extends Thread private ServerSocket server; private Socket sc; private boolean flag

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

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