java课设正文.docx
- 文档编号:6458807
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:27
- 大小:263.44KB
java课设正文.docx
《java课设正文.docx》由会员分享,可在线阅读,更多相关《java课设正文.docx(27页珍藏版)》请在冰豆网上搜索。
java课设正文
1引言
1.1背景
当今主流的聊天工具有QQ,ICQ,MSNMessenger,YahooMessenger等,国内最热门的当属QQ,腾讯QQ(OICQ)是由深圳市腾讯计算机系统公司开发的,基于Internet的即时寻呼软件。
您可以使用QQ和好友用户进行交流,信息即时发送,即时回复,收发及时、功能全面。
此外QQ还具有BP机网上寻呼、聊天室、传输文件、语音邮件、手机短讯服务等功能,QQ不仅仅是虚拟的网络寻呼机,更可与传统的无线寻呼网、GSM移动电话的短消息系统互联,目前QQ和全国多家寻呼台、移动通信公司有业务合作。
是国内不可多得的中文网络寻呼机。
QQ支持显示朋友在线信息、即时传送信息、即时交谈、即时发送文件和网址。
QQ可以在Win95/98/NT/2000操作系统下运行,是十分灵活的网络寻呼工具。
它会自动检查您是否已联网,如果您的电脑已连入Internet,可以搜索网友、显示在线网友,可以根据QQ号、昵称、姓名、email地址等关键词来查找,找到后可加入到通讯录中。
当您的通讯录中的网友在线时,QQ中朋友的头像就会显示在线,根据提示就可以发送信息,如果对方登记了寻呼机或开通了GSM手机短消息,即使离线了,您也可及时将信息传递给您的好友。
虽然以上这些软件是免费的,并且功能越来越强大。
但是它们的唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱离Intenet使用的。
为了能在一个没有连接到Intenet的局域网使用聊天工具,那就必须要有服务器端。
本系统就是包括服务器端与客户端,可以在局域网聊天的一个工具。
1.2课程设计内容
实现的是局域网中的聊天功能,运行服务程序后,服务器创建成功,然后使服务器对某一个设定的端口处于监听状态,当有客户端请求建立连接时,服务器就可接受请求,建立连接,这样服务器和客户端就可相互发送消息,实现聊天功能,系统的功能要求:
服务器端主要功能如下:
(a)在特定端口上进行侦听,等待客户端连接。
(b)用户可以配置服务器端的侦听端口,默认端口为8086。
(c)向已经连接到服务器端的用户发送系统消息。
(d)统计在线人数。
(e)当停止服务时,断开所有的用户连接。
客户端的主要功能如下:
(a)连接到已经开启聊天服务的服务器端。
(b)用户可以配置要连接的服务器端的IP地址和端口号。
(c)用户可以配置连接后显示的用户名。
(d)当服务器端开启的话,用户可以随时登录和注销。
(e)用户可以向所有人或某一个人发送消息。
2聊天室系统
2.1聊天室系统概述
聊天室是一种基于互联网的即时交流系统,最初是ICQ,也称网络寻呼机。
此类软件使得人们可以运用连上INTERNET网的电脑用户可以随时跟另外一个在线网民交谈,甚至可以通过视频看到对方的适时图像。
使人们不必担心昂贵的话费而畅快交流,并工作、交流两不误。
2.1.1聊天室系统的定义
聊天时系统是通过即时通讯技术来实现在线聊天、交流的软件。
目前有2种架构形式,1、一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:
QQ、XXHI、SkypeQQVSGU、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话。
2.1.2聊天室系统的任务及目的
本系统主要通过客户端,服务器端来体现聊天系统的基本功能,服务器功能为:
(a)处理用户注册
(b)处理用户登录
(c)处理用户发送信息,服务器监控聊天内容,服务器过滤非法内容
(d)处理用户得到信息
(e)处理用户退出
(f)服务器踢人。
客户端功能为:
(a)用户注册界面及结果
(b)用户登录界面及结果
(c)用户发送信息界面及结果
(d)用户得到信息界面及结果
(e)用户退出界面及结果
(f)用户修改密码界面
2.2主要聊天室系统介绍
目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台Gaim等。
本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。
腾讯无疑是国内即时通讯市场的霸主,自从99年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。
腾讯的成功与其对QQ的不断创新和完善是分不开的。
参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。
可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。
并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信;其模型如图2-1:
图2-1腾讯QQ服务器-客户端模型1
与腾讯QQ不同,微软的MSNMessenger只使用了TCP作为传输层通信协议,所有客户端与服务器进行连接,然后通过与服务器的TCP连接进行中转通信。
其模型如图2-2:
图2-2MSN服务器-客户端模型2
腾讯使用的模型中,服务器主要处理客户端各种状态的控制,可以极大减轻服务器的处理压力,但其内部协议和实现复杂度都较高。
而MSNMessenger所有数据都要经过服务器,服务器压力可想而知(难怪平时很少见到使用MSN进行语音视频聊天的)。
2.3本章小结
这一章介绍了当前聊天室系统应该具备的功能模块,并提供了市面上比较流行的聊天室系统作为参考。
在这一章中,我们可以了解什么是聊天室系统,当前聊天室系统的市场需求,还有一个聊天室系统应该的开发目标。
3聊天室系统的设计
3.1系统需求分析
聊天室的设计目标:
通过做巩固所学Java语言基本知识,增进Java语言编辑基本功,掌握JDK、ORCL等开发工具的运用,拓宽常用类库的应用,用JAVA实现基于C/S模式的聊天室系统。
3.2本次系统开发及运行环境
硬件平台:
(a)CPU:
InterCorei3。
(b)内存:
2G。
软件平台:
(a)操作系统:
Windows07。
(b)运行环境:
JDKVersion1.6。
3.3系统模块化分析
3.3.1聊天室系统总体结构
主要功能框架如下图所示:
图3-1主要功能框架图
各功能模块实现的功能为:
服务器:
端口设置:
设置倾听的端口号,默认为8888。
启动服务:
开启倾听端口,允许客户端连接。
系统消息:
服务器启动后可以在聊天室内发送消息。
停止服务:
关闭倾听端口,中断所有客户端的连接。
退出:
关闭服务器。
客户端:
用户设置:
设置聊天时显示的名称,默认为匆匆过客。
连接设置:
设置要连接的服务器所在主机的IP地址和倾听端口。
登录:
连接服务器。
发送消息:
进行聊天,可单独发送消息给聊天室中的一个人。
注销:
与服务器断开连接。
退出:
关闭客户端。
3.3.2聊天室系统各模块介绍
服务器包含服务、帮助、聊天三大模块,其中服务模块包含端口设置、启动服务、停止服务和退出四个小模块聊天模块可以向聊天室内所有人或个人发送系统消息或以管理员身份与其他人聊天。
表3-1服务器各模块名称功能汇总表
序号
模块名
基本功能
1
端口设置
设置倾听的端口号,默认为8888。
2
启动服务
开启倾听端口,允许客户端连接。
3
停止服务
关闭倾听端口,中断所有客户端的连接。
4
退出
关闭服务器。
5
帮助
显示各个模块的功能及操作方法。
6
发送
向聊天室内发送系统消息。
客户端包含操作、设置、帮助、聊天四大模块,其中操作包含用户登录、用户注销和退出三个小模块,设置包含用户设置和连接设置两个小模块聊天模块除具备普通聊天功能外,还能进行聊天时的表情选择。
表3-2客户端各模块名称功能汇总表
序号
模块名
基本功能
1
用户设置
设置聊天时显示的名称,默认为匆匆过客。
2
连接设置
设置要连接的服务器所在主机的IP地址和倾听端口。
3
用户登录
连接到服务器端。
4
用户注销
与服务器断开连接。
5
退出
关闭客户端。
6
发送
发送聊天内容
7
悄悄话
聊天内容不会被服务器和说话对象以外的人看到
3.4系统数据流图
图3-2图系统数据流图
3.5本章小结
本章是聊天室系统的具体设计过程,有具体的需求分析、系统功能模块、系统数据流图。
这里我们开始接触聊天室系统开发的最初步骤,也是很重要的一步。
4系统的具体实现
界面是系统之间最直接的交互界面,界面的友好性体现了软件设计的质量,并在很大程度上决定了软件是否成功。
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程序设计及调试运行
按功能模块结构设计菜单,布置各明细模块工作界面,编写各个模块的程序代码,进行编译连接运行,经过反复调试修改,以达到系统功能要求。
这个过程具有大量的工作量,应仔细对每个程序细节进行分析思考、编写程序并调试,做到程序简洁清楚,尽量避免可能潜在的程序错误,并在必要的地方加以注释,以便于程序阅读和修改。
4.3本章小结
本章介绍了系统的具体实现和部分关键代码,其中包括用户登录所要用到的函数和主界面的框架设计。
5设计体会及今后的改进意见
本文简单介绍了Java版的局域网聊天室,实现了局域网内的好友之间的聊天,删除添加好友,注册账号和服务器端的控制等功能。
此次功能的实现是很不易的,每一个功能模块的实现都话费了大量的时间和精力,正是由于这样,我对Java基础的理解和应用有了很大的提高,由于每个功能的实现的框架基本都是相同的,所以在前期的实现比较困难,但是在后期的编程还是相对比较简单,代码的编写是一个技术的问题更是一个时间的问题,我们只有通过不断的编程和调试才能写出更好的程序。
本次的局域网聊天中未能很好的完成用户信息的管理,在实现的方法上没有将多个线程包装成一个超类,所有从客户端到服务器和服务器到客户端的信息只通过一个模型进行传输,在这方面我还是需要很好的理解多态处理机制。
参考文献
[1]朱庆生.Java程序设计[M].北京.清华大学出版社,2011
[2]王伟平.Java编程[M].北京.清华大学出版社,2010
[3]叶乃文.Java核心技术[M].北京.机械工业出版社,2009
附录
1包的设计
主要源代码:
/**
*客户端界面
*/
packagecom.lyz.view;
importjava.awt.BorderLayout;
importjava.awt.Dimension;
importjavax.swing.BorderFactory;
importjavax.swing.ImageIcon;
importjavax.swing.JButton;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTextField;
importcom.lyz.controller.client.AddDelHandler;
importcom.lyz.controller.client.ClientFrameHandler;
importcom.lyz.controller.clientListener.AddDelListener;
importcom.lyz.controller.clientListener.ClientListener;
importcom.lyz.controller.clientListener.FriListListener;
importcom.lyz.controller.clientListener.LeaveMesListener;
importcom.lyz.controller.clientListener.MesListener;
importcom.lyz.controller.clientListener.TypeListener;
importcom.lyz.controller.clientSend.SendMes;
importcom.lyz.model.FinalFile;
importcom.lyz.model.ParentModel;
importcom.lyz.util.ScreenSize;
publicclassClientFrameextendsJFrame{
privateFriPanelfriPanel;
privateParentModelpm;
privateFriListListenerfriListener;
privateMesListenermesListener;
privateTypeListenertypeListener;
privateLeaveMesListenerleaveMesListener;
privateMyPanelpan;
privateJTextFieldchoserJtf;
privateJLabelqqLab,addLab,picLab;
privateJButtondelBut,addBut;
privateJPaneladd_del_pan,topPan;
publicClientFrame(ParentModelpm){
super("客户端");
//将用户模型传给登陆用户界面
this.pm=pm;
this.setBounds(ScreenSize.width-300,50,230,600);
//添加好友面板
friPanel=newFriPanel();
this.add(newJScrollPane(friPanel),BorderLayout.CENTER);
topPan=newJPanel(newBorderLayout());
topPan.setBounds(0,0,200,70);
topPan.setBorder(BorderFactory.createEtchedBorder());
//显示图像
picLab=newJLabel();
topPan.add(picLab,BorderLayout.WEST);
//显示QQ号
qqLab=newJLabel();
topPan.add(qqLab,BorderLayout.CENTER);
//确认
addLab=newJLabel();
addLab.setToolTipText("双击确定");
topPan.add(addLab,BorderLayout.EAST);
this.add(topPan,BorderLayout.NORTH);
add_del_pan=newJPanel();
add_del_pan.setBounds(5,500,200,70);
add_del_pan.setBorder(BorderFactory.createEtchedBorder());
//查询
choserJtf=newJTextField("");
choserJtf.setBounds(5,50,90,15);
add_del_pan.add(choserJtf);
addBut=newJButton("添加");
addBut.setBounds(100,40,30,30);
addBut.setContentAreaFilled(false);
addBut.setFont(newjava.awt.Font("宋体",1,13));
add_del_pan.add(addBut);
delBut=newJButton("删除");
delBut.setBounds(130,40,30,30);
delBut.setContentAreaFilled(false);
delBut.setFont(newjava.awt.Font("宋体",1,13));
add_del_pan.add(delBut);
this.add(add_del_pan,BorderLayout.SOUTH);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
//添加离线信息监听器
ClientFrameHandlerch=newClientFrameHandler(this);
this.addWindowListener(ch);
//添加客户端监听
ClientListenerclientListener=newClientListener(this);
clientListener.setDaemon(true);
clientListener.start();
//添加好友监听器
AddDelHandlerah=newAddDelHandler(this);
this.delBut.addActionListener(ah);
this.addBut.addActionListener(ah);
this.addLab.addMouseListener(ah);
//发送登陆信息
SendMes.sendServerMes(FinalFile.SER,pm);
}
publicvoidcloseService(){
this.friListener.close();
this.typeListener.close();
this.mesListener.close();
this.leaveMesListener.close();
}
publicclassMyPanelextendsJPanel{
publicDimensiongetPreferredSize(){
returnnewDimension(230,600);
}
}
publicvoidsetReplyPic(booleanflag){
if(flag==true){
this.picLab.setIcon(newImageIcon("image/add_mes.gif"));
}else{
this.picLab.setIcon(newImageIcon("image/recieved.gif"));
}
}
}
/**
*服务器端界面
*/
packagecom.lyz.view;
importjavax.swing.JFrame;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTable;
importjavax.swing.table.TableModel;
importcom.lyz.controller.serverListener.AddDelFriListener;
importcom.lyz.controller.serverListener.MesListener;
importcom.lyz.controller.serverListener.RegistListener;
importcom.lyz.controller.serverListener.ServerListener;
importcom.lyz.model.dao.Dao;
importcom.lyz.util.ScreenSize;
publicclassServerFrameextendsJFrame{
privateJTabletab;
privateTableModelmodel;
privateJPaneltypePanel;
privateJLabeltypeLabel;
privateDaodao=newDao();
publicServerFrame(){
super("服务器端");
this.setBounds((ScreenSize.width-400)/2,(ScreenSize.height-300)/2,400,300);
tab=newJTable();
refreashModel();、
this.add(newJScrollPane(tab));
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//线程--服务器监听
ServerListenerserverListener=newServerListener(this);
serverListener.setDaemon(true);
serverListener.start();
}
/**
*刷新表格数据
*/
publicvoidrefreashModel(){
model=dao.getLoginTableModel();//java.lang.NullPointerException----判断dao是否是空对象
this.tab.setModel(model);
}
}
/**
*服务器端监听
*/
publicclassServerListenerextendsThread{
privateServerSocketserver;
privateSocketsc;
privatebooleanflag
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 正文