课程设计(论文)基于Java的聊天系统

上传人:仙*** 文档编号:28544626 上传时间:2021-08-30 格式:DOC 页数:33 大小:783.50KB
收藏 版权申诉 举报 下载
课程设计(论文)基于Java的聊天系统_第1页
第1页 / 共33页
课程设计(论文)基于Java的聊天系统_第2页
第2页 / 共33页
课程设计(论文)基于Java的聊天系统_第3页
第3页 / 共33页
资源描述:

《课程设计(论文)基于Java的聊天系统》由会员分享,可在线阅读,更多相关《课程设计(论文)基于Java的聊天系统(33页珍藏版)》请在装配图网上搜索。

1、攀枝花学院学生课程设计(论文)题 目: Java课程设计 聊天程序 学生姓名: 学 号:院(系): 计算机学院 专 业: 计算机科学与技术 班 级: (一)班 指导教师: 职称: 讲师 2011 年 05 月 30 日攀枝花学院教务处制攀枝花学院本科学生课程设计任务书题目聊天程序1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等)该程序实现聊天功能,包括服务器段程序和客户端程序。要求:(1)客户端程序:可连接到服务器,并将消息发

2、送到服务器端和接受服务器端发送来的消息。(2)服务器端程序:可将消息发送到客户端和接受客户端发送来的消息。3、主要参考文献1朱福喜.Java语言程序设计(第二版).科学出版社2陈国君等.Java程序设计基础(第二版).清华大学出版社3 Deitel.Java大学基础教程(第六版).电子工业出版社 4 MaryCampione.Java语言导学(第四版).机械工业出版社5 Y.Daniel Liang.Java语言程序设计基础篇(第六版). 机械工业出版社6 Kathy Sierra.Head First Java(第二版).东南大学出版社4、课程设计工作进度计划序号时间(天)内容安排备注11分

3、析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日课程设计(论文)指导教师成绩评定表题目名称聊天程序评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析

4、,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规

5、范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日攀枝花学院java课程设计摘 要如何与别人更好地交流, 是当前人们普遍关心的问题。人们通过互联网可以展示产品,发布最新动态,与用户进行交流和沟通,与合作伙伴建立联系,以及开展电子商务等。其中网上聊天系统是构成网站的一个重要组成部分,为人们之间进行交流和联系提供的一个平台。Java是一种程序设计语言,它具有简单的、完全面向对象以及与平台无关的结构,也具有可移植性、高性能和安全

6、性,并提供了多线程的功能,而Java语言最大的成功之处在于它的平台无关性和具有强大的网络编程1功能,基于Java网络编程的强大功能本人将用Java编写一个聊天系统。一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQL Server2000完成并通过JDBC-ODBC桥访问数据库。聊天系统完成后将可进行多人对多人的聊天,对新用户的注册,发送消息、

7、接受消息等等功能。关键字 互联网聊天,Java,客户机/服务器,多线程,数据库管理系统I攀枝花学院java课程设计目 录摘 要I1 绪 论11.1 课程背景11.2 课题的研究工作12 需求分析22.1 系统的总体需求22.1.1 服务器的需求22.1.2 客户端的需求22.2 系统的需求分析22.2.1 服务器的功能32.2.2 客户端的功能32.3 系统的应用平台33 概要设计43.1 各模块详细功能43.1.1 服务器端结构43.1.2 客户端结构43.1.3 用户注册流程53.1.4 用户登录流程53.1.5 用户聊天流程63.1.6 用户退出流程63.2 各模块的功能73.2.1 用

8、户注册功能73.2.2 户登录功能73.2.3 用户退出功能73.2.4 接收用户聊天信息功能83.2.5 服务器踢人83.2.6 服务器公告84 详细设计94.1 服务器启动界面的设计94.1.1 服务器登录界面的分析94.1.2 服务器信息的管理104.1.3 服务器踢人104.1.4 服务器公告114.2 用户登录界面的设计114.2.1 聊天室的登录界面的分析114.2.2 聊天室用户注册界面分析124.3 用户聊天室界面设计144.3.1 聊天室界面分析144.3.2 聊天室用户聊天信息14II4.3.3 保存用户消息164.3.4 用户非法信息的屏蔽174.3.5 用户聊天时间的监

9、听175 结论18参考文献19附件:程序主要源代码20III1 绪 论聊天是Internet中广泛应用的服务之一,随着网络技术的和软件技术的不断发展,而Java是Sun公司推出的新的一代面向对象程序设计语言,特别适合于Internet应用程序开发。基于Java语言对网络编程的支持为了更好地实现聊天系统的网络传输功能,使客户端和服务器能够更好的通信,本系统的编写采用了Java语言。1.1 课程背景伴随着网络时代潮流的到来使得人与人之间又多了一种交流方法,那就是通过网络实现跨区域的间接交流,但是网络只是提供了硬件上的支持想通过网络实现无地域局限性的交流还需要有软件方面的支持,迫于市场的需求关系聊天

10、系统诞生了,最早的聊天系统只是在UNIX环境上,使用talk指令建立用户间纯文字的在线交谈,其所提供的功能仅能传输一般ASC码文字而已。于是寻找更好的人与人之间通过网络交流的方法就为编程人员提出了新的课题,大家为了寻找一种更好的聊天方法一时间聊天系统变成了一个大金矿,也为编程人员提出了新的要求同时也提供了一个新的舞台。1.2 课题的研究工作此聊天系统是一个典型的网络传输程序,同时还要连接数据库。该程序分两大部分来编写,服务器端和客户端。服务器端用来响应客户端所发出的请求,同时还要连接数据库,对数据库里的数据进行增加和删除。客户端用来接收用户的请求,然后做出相应的操作,同时还要向服务器端发出申请

11、,从而完成对数据库的增加和删除操作。其中网络传输的实现和多线程技术是此聊天系统的核心部分,而Java提供的API函数中针对网络编程的Socket类正是针对网络编程的,Java语言是一种支持多线程的语言,多线程在服务器端主要是要满足支持多个用户的同时登陆,在客户端主要满足一对多的同时聊天。1攀枝花学院java课程设计2 需求分析2.1 系统的总体需求要制作的聊天系统是一个简单、方便的通信系统,为两部分:服务器端和客户端。此聊天系统要可以方便用户之间进行交流,信息即时发送,即时回复。2.1.1 服务器的需求实现服务器的监控聊天内容,服务器过滤非法内容、发送通知、服务器踢人、保存服务器日志和用户聊天

12、信息等功能。2.1.2 客户端的需求实现与聊天室成员一起聊天、与聊天室成员私聊、改变聊天室内容风格、用户注册(含头像)、用户登录的等功能。2.2 系统的需求分析任何聊天系统不外乎由服务器端和客户端两部分组成,本聊天系统也不例外也是由服务器端和客户端组成,其中服务器端主要是完成对数据库的操作、监听客户端、和建立连接三个部分既可,客户端则要完成用户的新建、用户的登陆、聊天功能,这样就基本完成了系统功能模块的划分,其功能图如图2.1。聊天系统客户端服务器聊天用户注册用户登录监听客户操作数据库建立连接2.1 系统的功能图22.2.1 服务器的功能服务器信息管理:显示当前服务器状态、在线人数、服务器名称

13、、服务器IP地址、保存服务器日志、服务器端口号和使用的通信协议等。用户信息管理:显示当前在线用户列表和用户聊天信息、给在线用户发送系统通知、从聊天服务器中踢出不合法用户等。2.2.2 客户端的功能用户注册:通过提供基本信息注册成为聊天系统的合法用户,并判断用户输入密码与确认密码是否一致。用户登录:注册用户可以通过输入用户名和密码登录系统以便于其他用户进行聊天,并判断用户输入密码是否正确。收发信息功能:收发信息是本聊天系统的核心部分,也是本系统网络传输的体现所在。两个客户端可以通过HTTP协议直接通信,找到你想要聊天的对象通过HTTP协议给他(她)发送消息,同时也可以接受其发给你的消息。2.3

14、系统的应用平台Java聊天室系统的开发环境为Eclipse,它是一个开放源代码的、基于Java的可扩展开发平台,它只是一个框架和一组服务,用于插件组件构建开发环境,其附带了一个标准的插件集,包括Java开发工具(Java Development Tols,JDT)。该系统还需要安装JDK1.4.0或以上版本的JDK在Windows98或Windows98以上操作系统的满足内存为128M以上计算机里运行。系统中的数据可以用SQL Srver 2000数据库。33 概要设计3.1 各模块详细功能3.1.1 服务器端结构AppServer启动服务器监听ServerFrame服务器控制监听窗体Conn

15、ection处理所有用户请求WordFilter聊天内容过滤器3.1 服务器端的结构图AppServer.java:为服务器端监听类,负责服务器的启动,包括启动监听端口等。ServerFrame.java:为服务器端主窗体类,负责服务器监听服务器信息和客户端用户信息。 Connection.java:为服务器端用户信息类,负责处理所有用户的请求。 WordFilter.java:为服务器端对用户信息的监听类,负责对用户聊天内容的过滤。3.1.2 客户端结构Login启动客户端ChatClient用户登录窗体ChatRoom用户聊天窗体Clock时钟窗体Register用户注册窗体Windowc

16、lose用户窗体监听器3.2 客户端的结构图ChatRoom.java:为客户端程序启动类,负责客户端的启动和退出。Login.java:为客户端程序登录界面,负责用户账号信息的验证与反馈。Register.java:为客户端程序注册界面,负责用户帐号信息的注册验证与反馈。ChatRoom.java:为客户端程序聊天室主界面,负责接收、发送聊天内容与服4务器端的Connection.java亲密合作。Windowclose.java:为ChatRoom.java内部类,负责监听聊天室用户的操作。Clock.java:为ChatRoom.java内部类,负责监听聊天室用户操作的时间。3.1.3

17、用户注册流程Login启动客户端ChatClient用户登录窗体ChatRoom用户聊天窗体Clock时钟窗体Register用户注册窗体Windowclose用户窗体监听器Register_Customer注册用户数据类型Connection处理所有用户请求AppServer启动服务器监听ServerFrame服务器控制监听窗体WordFilter聊天内容过滤器3.3 用户注册流程图3.1.4 用户登录流程Login启动客户端ChatClient用户登录窗体ChatRoom用户聊天窗体Clock时钟窗体Register用户注册窗体Windowclose用户窗体监听器Customer登录用户数

18、据类型Connection处理所有用户请求AppServer启动服务器监听ServerFrame服务器控制监听窗体WordFilter聊天内容过滤器3.4 用户登录流程图53.1.5 用户聊天流程Login启动客户端ChatClient用户登录窗体ChatRoom用户聊天窗体Clock时钟窗体Windowclose用户窗体监听器Chat聊天数据类型Connection处理所有用户请求AppServer启动服务器监听ServerFrame服务器控制监听窗体WordFilter聊天内容过滤器Register用户注册窗体Message聊天数据类型3.5 用户聊天流程图3.1.6 用户退出流程Logi

19、n启动客户端ChatClient用户登录窗体ChatRoom用户聊天窗体Clock时钟窗体Windowclose用户窗体监听器Connection处理所有用户请求AppServer启动服务器监听ServerFrame服务器控制监听窗体WordFilter聊天内容过滤器Register用户注册窗体Exit退出用户数据类型3.6 用户退出流程图63.2 各模块的功能3.2.1 用户注册功能去数据库读数据:首先创建一个File文件类,载入“user.txt”,再用对象输入流ObjectInputStream包装File文件类,将存储在“user.txt”的向量对象Vector中载入内存中,现在系统中

20、的向量就是对象型数据库,存储着每条用户信息对象。验证用户名是否存在:在对象数据库中查找是否有与登录用户的用户名相同的记录,如果没有继续注册,否则退出验证,返回“此用户不存在”的错误。验证用户输入口令是否一致:验证用户两次输入的口令是否一致,如果一致继续注册,否则退出验证,返回“密码两次输入不一致,请重新输入”的错误。验证用户年龄输入是否合法:验证用户输入的年龄是否符合逻辑,如果符合就继续注册,否则退出验证处理,返回“年龄输入不合法”的错误。验证用户年龄电子邮件输入是否合法:验证用户输入的电子邮件是否含义“”字符,如果有就继续注册,否则退出验证处理,返回“电子邮件输入不合法”的错误。创建文件输出

21、流,再用对象输出流包装后写入本地文件将其持久化。最后关闭对象输出流和文件输入流。给客户端返回信息:将用户注册成功或失败信息用打印流包装Socket以后,输出给客户端注册结果的详细信息。关闭Socket连接:当以上程序正常运行后,需要关闭Socket连接,否则将会浪费服务器与客户端之间的资源。3.2.2 户登录功能去数据库读用户数据:打开用户数据库“user.txt”,将用户数据对象集载入内存,以供以下程序使用。验证用户名是否存在:在对象数据库中查找是否有与登录用户的用户名相同的记录,如果有继续验证,否则退出验证处理,返回“没有此用户”的错误。验证用户密码是否正确:如果有与登录用户的用户名相同的

22、记录,接着判断密码是否正确,如果密码正确,进入聊天室,否则退出验证处理,返回“密码不正确”的错误。3.2.3 用户退出功能接收退出信息:当用户退出时,客户端将会用基于Scoket的对象输出流发给服务器退出对象。7在线列表中删除用户:用户退出后应该把用户从在线列表中删除,否则用户退出用户还在在线列表中,那么该用户下次将会无法登录。更新在线列表:用户退出后将从服务端监控界面的用户列表更新,否则用户数据将会不同步。3.2.4 接收用户聊天信息功能接收用户聊天信息:当用户发送聊天信息时,服务端将会收到客户端用Socket传输过来的聊天信息对象,然后将其强制转换为Chat对象。过滤用户聊天内容的非法信息

23、:分析聊天信息对象的聊天内容,用语言过滤类将非法字符过滤掉。语言过滤的时候将会打开“badword.txt”文件,不允许出现的关键词将会存储在文件中,关键字之间以逗号分割。当聊天内容中出现要过滤的关键字时,将会被系统屏蔽,而聊天内容也将替换成“非法内容,系统屏蔽”。添加到聊天信息列表:当用户想要保存聊天内容时,用户保存的聊天信息将保存到“用户名_Message.txt”的文件类中。3.2.5 服务器踢人服务器将要踢的人的用户名存到变量sFrams.ti中,下发给客户端。当客户端发现自己是被踢对象后就会自动退出聊天室并给服务器返回退出信息。3.2.6 服务器公告服务器将要下发的公告信息存到sFr

24、ame.serverMessage中,在聊天信息下发给客户端时,客户端将对比公告是否更新,如果更新将显示在用户聊天信息中。84 详细设计4.1 服务器启动界面的设计4.1.1 服务器登录界面的分析聊天室系统的服务器应用程序用于服务器端的启动。服务器信息管理显示服务器的状态、名称及IP,服务器端的端口号、服务器日志和聊天室在线用户人数及其最多在线人数,如下图4.1所示。4.1 服务器信息管理用户信息管理显示在线用户列表和用户消息,如下图4.2所示。4.2 用户信息管理94.1.2 服务器信息的管理服务器将用户的聊天和其他信息保存到log.txt文件中,如下图4.3所示。4.3 服务器日志保存10

25、服务器日志保存的文件log.txt文件的显示如下图4.4所示。4.4 服务器日志文件4.1.3 服务器踢人服务器将要踢的人的用户名选中后,选择“踢人”后,被踢的对象自动退出聊天室并给服务器返回信息。4.5 客户端用户退出聊天室4.6服务器返回信息114.1.4 服务器公告服务器在用户信息管理界面内发送系统公告,显示在用户聊天室的用户信息中,如下图4.7所示。4.7 客户端聊天室用户信息4.2 用户登录界面的设计4.2.1 聊天室的登录界面的分析聊天室系统的登录程序用于实现用户登录,程序通过Login.java向已注册用户通过输入用户名和密码在聊天服务器端进行验证,登录界面如下:4.8 用户登录

26、界面4.2.1.1 验证用户密码是否为空即用户名和密码的字符长度不为0,如果验证通过,就登陆进入聊天室界面,否则返回“用户名或密码不能为空”的错误,如下图4.9所示。124.9 验证用户登陆用户名和密码是否为空4.10 验证用户名是否被注册4.2.1.2 验证用户是否被注册即服务器端是否有该用户的数据库消息,如果验证通过,就登陆进入聊天室界面,否则返回“没有这个用户,请先注册”的错误,如下图4.10所示。4.2.1.3 验证用户密码是否正确验证用户密码是否与服务器端的数据库中的一致,如果验证通过,就登陆进入聊天室界面,否则返回“用户名或密码不能为空”的错误,如下图4.11所示。4.11 验证用

27、户密码是否正确4.2.2 聊天室用户注册界面分析程序将通过Register.java用户注册界面收集用户的用户名、密码、年龄、电子邮箱,如下图4.12所示。4.12用户注册界面4.2.2.1 验证用户名是否重复验证用户名是否被其他的用户注册过,保证用户名不重复,防止因为用户名重复发生的错误,如下图4.13所示。134.13 验证用户名是否重复4.14验证用户注册密码是否为空4.2.2.2 验证用户密码是否为空即密码的字符长度不为0,如果验证通过,就进行下面的验证,否则返回“用户密码为空”的错误,如下图4.14所示。4.2.2.3 验证用户密码的一致性验证密码两次输入是否一致,如果验证通过,就进

28、行下面的验证,否则返回“密码两次输入不一致,请重复输入”的错误,如下图4.15所示。4.15 验证用户注册密码是否一致4.16验证用户注册年龄是否合法4.2.2.4 验证用户年龄的合法性验证用户输入年龄是否合法,如果验证通过,就进行下面的验证,否则返回“年龄输入不合法”的错误,如上图4.16所示。4.2.2.5 验证用户电子邮箱的格式是否正确验证用户电子邮箱字符串必须有“”,如果验证通过,就进行下面的验证,否则返回“电子邮箱不合法”的错误,如下图4.17所示。4.17验证用户注册电子信箱是否合法4.18 用户注册成功4.2.2.6 注册成功用户注册通过所有的验证,返回“用户名+注册成功”的消息

29、,如上图4.18所示。4.3 用户聊天室界面设计4.3.1 聊天室界面分析程序将通过ChatRoom.java用户聊天室界面收集用户的在线用户列表、在线人数、聊天内容等,如下图4.19所示。4.19 聊天室用户daili的界面4.3.2 聊天室用户聊天信息接收用户的聊天信息是由多线程技术实现的,因为客户端必须时时关注更新服务器上是否有最新消息,在本程序中设定的是3秒刷新服务器一次,如果间隔时间太短将会增加客户端与服务器端的通信负担,而间隔时间长就会让人感觉没有时效性,所以经过权衡认为3秒最佳,因为每个用户都不可能在3秒内连续发送信息。当每次用户接收到聊天信息后将会开始分析聊天信息然后将适合自己

30、的信息人性化地显示在聊天信息界面上,如上图4.19所示。144.3.2.1 聊天室的用户私聊当用户想要和他的好友聊天,而不被其他的用户看到其聊天的内容,只需要双击该用户的用户名后,再把聊天室中的“私聊”按钮选中则,该用户和其好友的聊天信息将不会出现在其他的用户聊天界面的聊天信息中,如下图4.3.2.1中用户wt与上图4.3.1中用户daili私聊时的聊天信息只在他们的聊天室界面中显示,在其他用户中该聊天内容是不显示的如下图4.20所示。4.20 聊天室用户wt的界面4.21 聊天室用dl的界面154.3.2.2 聊天室的其他功能用户在聊天的时候可以对聊天的内容的字体及其颜色进行设置,还可以选择

31、收听聊天室里的音乐。这些功能使得聊天室更人性化。4.3.3 保存用户消息当用户需要保存聊天记录时可以直接点击“保存”按钮,为了防止多用户聊天记录文件冲突问题,聊天记录将会以“用户名_message.txt”为文件名将信息保存在当前应用程序目录下,如下图4.22所示。4.22 聊天室用户wt聊天信息的保存用户聊天信息的保存文件“用户名_message.txt”的显示,如下图4.23所示。4.23 聊天室用户wt的聊天信息16攀枝花学院java课程设计4.3.4 用户非法信息的屏蔽程序将通过WorldFiler.java对用户聊天室聊天内容进行过滤,如果该用户聊天信息为过滤内容,将把该信息屏蔽,并

32、将该屏蔽的内容存入文件“bad.txt”文件中,如下图4.24所示。4.24 聊天室聊天信息的非法屏蔽4.3.5 用户聊天时间的监听程序将通过Clock.java对用户在线聊天进行监听,如下图4.25的时钟界面所示。4.25 聊天室时钟界面175 结论 本文讨论了如何利用java技术开发聊天室系统,基本满足了结构化,界面友好、速度快、安全性以及稳定性等特点。系统着重研究并实现了网络应用的部分。根据实现的情况看,具有较好的聊天界面生成效果,以及流畅的网络通信效果。生成的聊天室可以达到基本的聊天要求,具有较高的研究价值。系统具有目前聊天室的基本功能:包括支持多种头像,字色,语气选择,支持emoto

33、,支持私聊,支持在线聊友查找,支持分屏显示,支持友好定制自己的私人头像,支持脏话过滤,支持在线音乐的收听,可以给所有的聊友发公共信息。具有速度快、高稳定性,占用系统资源少,用户界面友好等特点。通过这次的课程设计,发现自己在理论研究和实际工作能力等方面都得到了提高,受益匪浅。同时在老师的指导和课题组同学的共同帮助下,即使总结研究成果,这些无疑会对我今后的工作和学习带来很大的帮助。18参考文献1 朱福喜,Java语言程序设计(第二版),科学出版社,20012 陈国君等.,Java程序设计基础(第二版),清华大学出版社,20013 Deitel.,Java大学基础教程(第六版),电子工业出版社,20

34、104 MaryCampione,Java语言导学(第四版),机械工业出版社,20015 Y.Daniel Liang,Java语言程序设计基础篇(第六版),机械工业出版社,20066 Kathy Sierra,Head First Java(第二版),东南大学出版社,20057 黄嘉辉, Java网络程序设计, 清华大学出版社,20028 飞思科技产品研发中心, Java灵感编程, 电子工业出版社,20029 李荣贵、邓必孟等, Java2.0网络多线程实例教程,北京希望电子出版社,200110 林智扬、范明翔、陈锦辉, 精通Java Swing程序设计, 中国铁道出版社,200211 何雄

35、,JSP网络程序设计,人民邮电出版社。200012 萨师煊,王珊,数据库系统概述,高等教育出版社,200013 Bruce Eckel, Thinking in java,200014 Brett Spell, Profession Java Programming,Wrox,200115 Danny Ayers, Professional Java Data, Wrox,200216 唐晓军 朱福喜 , JAVA项目设计与开发范例,电子工业出版社,200317 Elliotte Rusty Harold ,Java网络编程,中国电力出版社,200518 郭立山游泳明,Java函数使用手册,

36、冶金工业出版社,200419 孙印杰刘斌孙玉强,Java编程案例精解, 电子工业出版社,200420 闪四清 , SQL Server使用简明教程, 清华大学出版社,200619附件:程序主要源代码/login.java主要源代码20public class Login extends JFrame implements ActionListener private static final long serialVersionUID = -8965773902056088264L;private JPanel pnlLogin;private JButton btnLogin, btnReg

37、ister, btnExit;private JLabel lblServer, lblUserName, lblPassword, lblLogo;private JTextField txtUserName, txtServer;private JPasswordField pwdPassword;private String strServerIp;private Dimension scrnsize; public Login() /构造登陆窗体方法super(登录聊天室);pnlLogin = new JPanel();this.getContentPane().add(pnlLog

38、in);lblServer = new JLabel(服务器(S):);lblUserName = new JLabel(用户名(U):);lblPassword = new JLabel(口 令(P):);txtServer = new JTextField(20);txtServer.setText(172.16.17.154);txtUserName = new JTextField(20);pwdPassword = new JPasswordField(20);btnLogin = new JButton(登录(L);btnLogin.setToolTipText(登录到服务器);b

39、tnLogin.setMnemonic(L);btnRegister = new JButton(注册(R);btnRegister.setToolTipText(注册新用户);btnRegister.setMnemonic(R);btnExit = new JButton(退出(X);btnExit.setToolTipText(退出系统);btnExit.setMnemonic(X);/组件的布局及其构造方法 / 构造方法结束public static void main(String args) /启动登陆窗体new Login();/AppServer.java程序源代码public

40、class AppServer extends Thread private ServerSocket serverSocket;private ServerFrame sFrame;private static Vector userOnline = new Vector(1, 1);private static Vector v = new Vector(1,1);public AppServer() / 创建服务器 启动服务监听1001端口sFrame = new ServerFrame();try serverSocket = new ServerSocket(1001);/ 获取服务

41、器的主机名和IP地址InetAddress address = InetAddress.getLocalHost();sFrame.txtServerName.setText(address.getHostName();sFrame.txtIP.setText(address.getHostAddress();sFrame.txtPort.setText(1001); catch (IOException e) fail(e, 不能启动服务!);sFrame.txtStatus.setText(已启动.);this.start(); / 启动线程public static void fail(

42、Exception e, String str) /退出服务器System.out.println(str + 。 + e);public void run() /监听客户的请求,当有用户请求时创建 Connection线程try while (true) / 监听并接受客户的请求Socket client = serverSocket.accept();new Connection(sFrame, client, userOnline, v); / 支持多线程 catch (IOException e) fail(e, 不能监听!);public static void main(Strin

43、g args) /启动服务器new AppServer(); /Chat.java源代码public class Chat implements Serializableprivate static final long serialVersionUID = 4058485121419391969L;public String chatUser; /发言人用户名public String chatMessage; /聊天内容public String chatToUser;/ 接受对象用户名public String emote; /聊天语气public boolean whisper;/ 是

44、否私聊 /ChatClient.java源代码public class ChatClient /设置服务器IP地址public ChatClient() public static void main(String args) new Login();/ChatRoom.java源代码public class ChatRoom extends Thread implements ActionListener private JComboBox daXiaoComboBox;private JComboBox yangShiComboBox;private JComboBox zitiCombo

45、Box;private JComboBox emote;static JFrame frmChat;public ChatRoom(String name, String ip) / 构造方法String list = 所有人 ;btnCls = new JButton(清屏(C);btnExit = new JButton(退出(X);21btnSend = new JButton(发送(N);btnSave = new JButton(保存(S);btnTimer = new JButton(时钟(T);btnBfmusic=new JButton(播放);btnXhmusic=new J

46、Button(循环);btnTzmusic=new JButton(停止);lblUserList = new JLabel(【在线用户列表】);lblUserMessage = new JLabel(【聊天信息】);lblSendMessage = new JLabel(聊天内容:);lblChatUser = new JLabel(你对:);lblUserTotal = new JLabel(在线人数:);chPrivateChat = new JCheckBox(私聊);public static void main(String args) new ChatRoom(测试用户, 172

47、.31.5.1);/ Register.java主要源代码public class Register extends JFrame implements ActionListenerprivate JComboBox comboBox;private static final long serialVersionUID = 9019746127517522180L; public Register(String ip)/构造方法super(聊天室注册窗口);strServerIp=ip;pnlRegister=new JPanel();this.getContentPane().add(pnl

48、Register);lblUserName=new JLabel(用 户 名:);lblGender=new JLabel(性 别:);lblAge=new JLabel(年 龄:);lblPassword=new JLabel(口 令:);lblConfirmPass=new JLabel(确认口令:);lblEmail=new JLabel(电子邮件:);rbtnMale=new JRadioButton(男,true);rbtnFemale=new JRadioButton(女); btngGender=new ButtonGroup(); btnOk=new JButton(确定(O); btnOk.setMnemonic(O); btnOk.setToolTipText(保存注册信息);btnCancel=new JButton(返回(B);btnCancel.setMnemonic(B);btnCancel.setToolTipText(返回登录窗口);btnClear=new JButton(清空(L);btnClear.setMnemonic(L);btnClear.setToolTipText(清空注册信息);public static void main(String args)new Register(172.31.5.1); 22

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!