《java课程设计-聊天程序.doc》由会员分享,可在线阅读,更多相关《java课程设计-聊天程序.doc(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、攀枝花学院Java程序设计课程设计题 目: 聊天程序 学生姓名: Puter 学 号: 201310803036 所在院(系): 数学与计算机学院 专 业: 网络工程 班 级: 2013级网本 指 导 教 师: 吴建斌 职称: 导师 2014 年 12 月 31 日3) + ) . ) ) ( ) ( )( ) ) ( = =.) , . . . . ) . ) +( _ ) = ( ) ) ( . ) ! ) . ) 0 ( ) , ,新 ) . ) . ) . ) )( . ( )( . ) = )0 ) ) ) , ), . . ) ) ) ) , ( ) ) . , ) 0 = ) )
2、 ), 楷 . ) . ) . . ) , ( ) ) () . ) ,( . ) )0, . 楷 ) 0 ( ) ( ) . ) ( . ) , 0 ) ) . ) ) , . ( . ) 比( * *) ( ) 叫 . ) )( ) ) . ) ) ( ( ) ) )0, 软( ) = ) ._ ) . ), ,( _ ) ,新 _ ). ( ) .) ) , ,( ) , 新 ) ) . ( ) ) ( ) ) ), 0 0 .)0 ,新( ( ( .) . ) . 名 ( * *) ) * * ) = ) . . . . . . . . . . . 端 = . ) ( ) .( = (
3、 . ) . ( ) . = ) . . . . . . ) ) . = ) ) ) . = )( ( ) )( ( ) . = )( )( )( . ( ( = = . ) . . . )( . . )( . )( )( ) ) . )!被客+ 第 . )( . + ) = ) ) )被待( . )( . ( ) 0 ) . . . . 器)址 电所“” 的客内局户动才服先版学东版第 . 版版械.第篇计序语 . .版业机)第导言 版出.版教学 版出清版第基设 等陈版版.二计序 朱文考参% % %-(:结端现体科部的冯整资调科整的任冯查料一科测序理综冯、分姓分验息息服收新要户,的发务就方要最词
4、总学自这是,程务熟性的队会多结显/ + .) . ) = ) 接/ ) 信收器务一) ) ) ( )( . = 线/( 例实过/ . ) , ( = 信信界/ 部实华户/ . . . . . ) ._ ) + . ) ( ) ( . ) =( ) . ) 0 ) , 体 ) . 上附后户面聊刻线/) .) . ) ) ( ) ) , ( ) )_ ) ) ) . 体( ( )( ) ( ) , , . ) . ) ,宋( . ) ( ) . ) ) , . ( . ) ) ( ( ) , . ) ) )( ) ) ( ), . 楷 . ) 0 ) ( . ) ) 0 . ) .) ) .( )
5、 , 楷( . ) 室聊( 界聊 * *) ( ) . +我( 界录隐) ( 界聊示录/) ) ) ( . ) ) ( .) , . ). ), 软微 ( . ) = ) . )_ .( ), 0 _ ) 宋 . ) ) .) , ), . ,新( ) ( ) ) ( = ) ) .) _ . )0 0 0 )0 新( ( ) . 天 = 界登 * *) )( = * * = = )( ) = ) _ 界端/ . . . . . . . . . . 码了聊人可样聊才,天入时启.名的聊设面. .如端 = ( . ) = ( . )( ( = . . = 保链通 连端户保 . . . . . .
6、) ( . ( )( 信送客所/) ( = )( . ) )( ( . 通户客与/( 线/( 信信户接/ ( . ( = ) 接连个多,/ . . . . . . . . )( . ) . )( 连端客,线/) )!连户 + . ( ) . ( 数接户/ ( . ) ) = )被待( ) . ( 务建/ )( 0 信客表定/) 实功务 . . . . 码接待等状入服. .如行分示示在空不息取服直个一编面要户。天内局而端户息发连端所表过时送务服客息端存义通信器服接个现过,信接直循通服,个务户写要, 设. 如。信中务才,的直不端两且的直 端客户总、服务多 定以节各运讯观通及,络多。分和断 成讯增然
7、率占的,攻 对近,榜终量国其场市并讯入 自霸场通国。备系聊为,一行 的最取。 跨) 为版新 有,泡易浪 腾有内琅品产公系做内设要00 、 表型商的网子用一话沟务验以软装安客媒网助接软即形这形/览,/采 、新 度、有表,软装下中用使形务户客,/种 式 目件交聊现来通过统时。应实能晰思确晰序通 使提。两天多室一能界形使求技语 握,回总的方及思象向对, 握的时容程门 掌好分 ; ;器机;:。息接、,册用,、进对,多多可后系 。用资务程增大的不程线多时中个以,线多中过计器务 用发写编 使。 过间务与客以客客构 统则计对术象了使统上台 立。一聊在可客器服包端端有必,天使域 到没在能的 脱是要服它者网要足
8、的们但,越功聊各在据访 - 过成0 用理库,的对成线用程多 而点点聊由互相器机并务户客类 提 式架/户统,库据户放于务序程序户数具聊。聊写 用业本,的编 于 发讯腾 外如,来天聊此由开越多来的络,今发来网 . .工 .析试 .细.目 签评师成解特或突进工 创 学科析正;谨结,论论解,整 质)书 求条件本化;定规相程程)计、篇纸0 质成力的综、析收强 力析济、力综能的果0等等助处、搜进算能;理运的能能机0整完路思靠正,工等操、置行案验设能设案能验0力的新获种加收有施题地并能研事献文能能0论的有得论行对据实确,问解与能识 能知0 水能满饱作的定作0料材计设与渠产生文、调、0度作科好具苦工纪态00表
9、工内得分项程名定评教)论写师教书 :字 月见意室 日字签天总周考周报设周阶试周准计备安天序计度工设版出东版第 . 版业械 六篇计程语 . 版业械版四导 社业.)础学 . 版出华版(基设 .国版学科第序 喜朱文文息息发户接客发消可器务息消发端服器到息并务到:端求。程客段器包功现等等、术、原(和内程力能编高知学用和、地较以发和有设象面的面生使程目的程务任课科学 职 吴师 网 工网 学计数) 000 : 序聊 目 设设设程学程设 聊 0 )学 网 网 师 任程使面面和地和高能和、等现段。端务到服务消客息文朱序学国设(版 础)社 四械 计械 . 版出工序计试阶考天签 见 : 师论教程得表态苦科、生设材
10、0的水知识解,对得有能献并题收新力能能行、工思整能能;算、等能、析收、力质、)相化条书 解,;析 进或师评 . .工. 来,来多此天外讯 编业 聊聊序程户,统 客机互由 用成,用 过-各越们要者是 没 ,端服可一。统象计 客与间。使用务计中个多不的资。系多、用接息:器;分 容的 象方总握语界一两提通确晰应统通件 种户使下装、 、/形接网安验务用的型、0做公琅腾泡 为 )。 行聊。场霸讯其终,对,率讯 和络通运以 服总直的直,中 .要务,通接个接义端务时表发而内。编直不示行 .待码 . . . 务 定客 ) 建 . 待 ) ( /数 .户) ),客 . . . 多连 ) = ( 户信 / / )
11、 ) . ( 所 .). . . 保端 通 . = ( ) ( ( 如 聊.时才可码 . . . . . 端 _ ) * * ( 登 0 0 .) ) ( , 宋 , (. ) , . . ). ) /界 )录 + 聊 (聊 楷 . ) ) 0 ). ) ) ) ) ( , ) () ) .) ) () , ) , ( ( ) ( ).线户附 体 ) ) ) ( ( ) . . . 实 = /例 / . ) 一收 ) ) ) 显多的务是自词就发要服验姓综理一任科资部体:- 考朱序二陈等基清版学版出 言机业 语篇械版 . 第学先局客 所 . = ) ) ) ) ) .) (= . ( . 端 .
12、 . . = ) * ) 新 ,) ) .) ) 新 ) (, ) ) _ , )_ , . ) ) () ) ) ( ) . ) )* 比 . . ) ) 0, ( ) )( 0 .0 ( . () ( ). ) ) ) ) ) , ) . .) , = ( ( ) ) ) ) 新, ) ) ) = + ) ) . . ) ) ( ). ) 攀枝花学院本科学生课程设计任务书题目聊天程序1、课程设计的目的通过本课程设计使学生能够较全面的掌握面向对象程序设计的有关概念和开发方法,以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力。2、课程设计的内容和要求(包括原始数据、技术要求、工
13、作要求等)该程序实现聊天功能,包括服务器段程序和客户端程序。要求:(1)客户端程序:可连接到服务器,并将消息发送到服务器端和接受服务器端发送来的消息。(2)服务器端程序:可将消息发送到客户端和接受客户端发送来的消息。3、主要参考文献1朱福喜.Java语言程序设计(第二版).科学出版社2陈国君等.Java程序设计基础(第二版).清华大学出版社3 Deitel.Java大学基础教程(第六版).电子工业出版社 4 MaryCampione.Java语言导学(第四版).机械工业出版社5 Y.Daniel Liang.Java语言程序设计基础篇(第六版). 机械工业出版社6 Kathy Sierra.H
14、ead First Java(第二版).东南大学出版社4、课程设计工作进度计划序号时间(天)内容安排备注11分析设计准备周一22编程调试阶段周二至周三31编写课程设计报告周四41考核周五总计5(天)指导教师(签字)日期年 月 日教研室意见:年 月 日学生(签字): 接受任务时间: 年 月 日注:任务书由指导教师填写。课程设计(论文)指导教师成绩评定表题目名称聊天程序评分项目分值得分评价内涵工作表现20%01学习态度6遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。02科学实践、调研7通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。03课题工作量7按期圆满完成规定的任务
15、,工作量饱满。能力水平35%04综合运用知识的能力10能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。05应用文献的能力5能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。06设计(实验)能力,方案的设计能力5能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。07计算及计算机应用能力5具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。08对计算或实验结果的分析能力(综合分析能力、技术经济分析能力)10具有较强
16、的数据收集、分析、处理、综合的能力。成果质量45%09插图(或图纸)质量、篇幅、设计(论文)规范化程度5符合本专业相关规范或规定要求;规范化符合本文件第五条要求。10设计说明书(论文)质量30综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。11创新10对前人工作有改进或突破,或有独特见解。成绩指导教师评语指导教师签名: 年月日目录摘要.1一、 需求分析.1二、 概要设计.3三、 详细设计.4四、 调试分析.4五、结论.14六、实验分工.14七、参考文献.1422摘 要 在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越
17、多,例如,国外的ICQ、国内腾讯公司开发的OICQ。基于Java网络编程的强大功能,本次毕业设计使用Java编写一个聊天系统。一般来说,聊天工具大多数由客户端程序和服务器程序外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式通过Java提供的Soket类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的而Java提供的多线程功能用多线程可完成多点对多点的聊天,数据库管理系统用SQLServer2000完成并通过JDBC-ODBC桥访问数据库。现在的各种聊天工具功能越来越强大,但是它们的唯一的不足就是必须要联网或者下载到它们的服务端,要不然是没法脱
18、离Intenet使用的。为了能在一个没有连接到Intenet的局域网使用聊天工具,那就必须要有服务器端。本系统就是包括服务器端与客户端,可以在局域网聊天的一个工具。建立在JAVA平台上,系统的设计使用了面向对象技术和面向对象的设计原则。系统采用C/S结构,客户端与客户端以及客户端与服务器端之间通过Socket传送消息。使用JAVA语言编写,开发工具采用Eclipse。服务器端设计与实现过程中,采用了多线程技术,可以在单个程序当中同时运行多个不同的线程,执行不同的任务。大大增强了程序对服务器资源的利用。 聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受
19、消息等等功能。关键词:多线程;客户机/服务器;JAVA;Socket;Eclipse;TCP/IP一、 需求分析为了更好的掌握java这门课程的内容,同时更好的理解与掌握socket编程,对所有面向对象的编程思想以及编程方法的一个总结、回顾和实践,掌握Java语言编程技巧。要求使用图形用户界面。能实现一个聊天室中多人聊天。可以两人私聊。(提示:使用socket通信)程序描述清晰准确,思路清晰,程序能够实现相应的功能。聊天时系统是通过即时通讯技术来实现在线聊天、交流的软件。目前有2种架构形式,1、一种是C/S架构,采用客户端/服务器形式,用户使用过程中需要下载安装客户端软件,典型的代表有:QQ、
20、百度HI、SkypeQQVSGU、Gtalk、新浪UC、MSN等;2、采用B/S架构,即浏览器/服务端形式,这种形式的即时通讯软件,直接借助互联网为媒介、客户端无需安装任何软件,既可以体验服务器端进行沟通对话,一般运用在电子商务网站的服务商,典型的代表有Websitelive、53KF、live800等二、概要设计目前国内外做聊天系统的公司很多,产品也琳琅满目,国内有诸如腾讯QQ、新浪UC、网易泡泡等,国外有著名的MSN(新版改名为LiveMessenger)以及跨平台Gaim等。本人取最具代表性的QQ和MSN进行了一些研究,作为我开发聊天系统的准备。腾讯无疑是国内即时通讯市场的霸主,自从99
21、年进入即时通讯领域并迅速占市场之后,其在国内用户数量始终高居榜首,即使近几年面对微软MSN的强大攻势,腾讯QQ的时常占有率依然稳步增长。腾讯的成功与其对QQ的不断创新和完善是分不开的。参考了许多网络上的资料,以及自己通过观察腾讯QQ运行时的各种细节。可以确定腾讯QQ是以多服务器提供服务、服务器总控客户端、客户端之间UDP直连通信的。并且在两个客户端之间不能建立直连的情况下,才由服务器进行中转通信。其模型如图1-1图1.1三、 详细设计通过TCP网络编程,主要编写有客户端与服务器端两个部分,服务器端通过循环一直从客户端接收信息,并通过线程实现多个客户端连接。服务器发送信息则通过定义链表保存客户端
22、信息。每个客户端向服务器发送信息时,则通过链表中的所有客户端的连接而发送信息给所有客户端界面从而实现局域网内多人聊天。而客户端则主要是界面的编写,通过一个线程一直从服务器获取信息,如果不为空时就在界面上显示。四、 调试分析1、 首先运行服务器如图1.2:图1.2分析:服务器进入阻塞状态。等待连接。主要代码:package .server;import java.io.IOException;import .ServerSocket;import .Socket;import java.util.ArrayList;import java.util.List;import .server.thr
23、ead.ThreadServer;public class Server /服务器功能实现private ServerSocket server = null ;public static List list = new ArrayList() ;/定义链表储存客户信息private Socket client = null ;private int count = 0 ;public Server()try server = new ServerSocket(8888) ;/创建服务器 catch (IOException e1) e1.printStackTrace();System.ou
24、t.println(等待服务器被连接);boolean flag = true ;while(flag)synchronized(this)try client = server.accept() ;count+;/记录客户连接数目 catch (IOException e1) e1.printStackTrace();list.add(client) ;System.out.println(第+count+客户端被连接!);try new Thread(new ThreadServer(client).start();/定义线程,实现多个客户端连接 catch (Exception e) e
25、.printStackTrace();flag = false ;try server.close(); catch (IOException e) e.printStackTrace();package .server.thread;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import .Socket;import java.util.Iterator;import .server.util.ListCO;public class ThreadServe
26、r implements Runnable/定义线程,实现多个客户端连接private BufferedReader buf = null ;private Socket client = null ;public ThreadServer(Socket client) throws Exceptionthis.client = client ;buf=new BufferedReader(new InputStreamReader(this.client.getInputStream() ;/连接从客户端获取信息Overridepublic void run()/线程String str = null ;boolean f = true ;while(f)/一直与连接的客户端通讯try str = buf.readLine() ; catch (Exception e) f = false ;if(bye.equals(str)f = false ;elseListCO lout = null ;try lout = new ListCO(); catch (Exception e) e.printSt