1、本科毕业设计(论文)1本科生毕业设计(论文)基于 Java 的网络通信系统设计与实现学 院、系: 计算机与通信学院 专 业: 通信工程 学 生 姓 名: 班 级: 学号 指导教师姓名: 职称 最终评定成绩 本科生毕业设计(论文)I摘 要在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,例如,国外的 ICQ、国内腾讯公司开发的 OICQ。随着网络聊天一类的聊天系统的发展日新月异,因此产生了制作一个类似 QQ 的网络聊天工具。Java 是一种程序设计语言,它具有简单的、完全面向对象以及与平台无关的结构,也具有可移植性、高性能和安全性,并提供了多线程的
2、功能,而 Java 语言最大的成功之处在于它的平台无关性和具有强大的网络编程功能,基于 Java 网络编程的强大功能,本人将用 Java 编写一个网络聊天系统。论文首先论述了系统的开发背景,并对所用到的开发工具与关键技术做了简单的介绍。接着对系统的研究意义,研究现状及设计目标进行分析,通过对系统需求和可行性进行分析,确定了系统的功能模块,并画出相应的功能结构图、模块图和数据流图。其次按系统总体设计的结果,对系统中的数据库进行结构设计。一般来说,聊天工具大多数由客户端程序和服务器程序,外加服务器端用于存放客户数据的数据库组成,本系统采用客户机/服务器架构模式,通过 Java 提供的Socket
3、类来连接客户机和服务器并使客户机和服务器之间相互通信,由于聊天是多点对多点的,而 Java 提供的多线程功能,用多线程可完成多点对多点的聊天。数据库管理系统用 SQL Server2000,完成并通过 JDBC-ODBC 桥访问数据库。聊天系统完成后将可进行多人对多人的聊天,对好友进行添加、删除,对新用户的注册,发送消息、接受消息,传输文件等功能。界面设计细分化,方便使用者操作和理解。服务器实现了查询和修改等功能,程序逻辑联系较紧密。关键词:JAVA,C/S,SQL Server 2000, 多线程, 数据库管理系统本科毕业设计(论文)IIABSTRACTMore and more devel
4、oped in the network today, people rely on more and more networks, and can not leave with out it. This caused the chat materials become more numerous, as the overseas ICQ system, the OICQ system that invented by Tencent Co., and so on. So we create a network chat medium just like the QQ.Java is a pro
5、gramming language with the simple construction which is completely object-oriented 。Java also possess the portability, high performance and security, and provide the multi thread function. The best success is its and its strong network programming function, base on this, I will use Java to write a n
6、etwork chat system.Firstly, the paper discussed the development background of the system, and made a briefly introduction to the development tool and key technologies. Then analyzed the systems research significance , research present situation and project objective .According to the requirement ana
7、lysis and feasibility analysis ,it can confirm the systems functional module and draw corresponding functional configuration chart ,module chart and data stream chart. On the basis of the result of system designing, the paper design database by structured design method. Generally speaking, most chat
8、 medium consist the client program, server program and the server which is use to content the database. This system adopt client/server pattern and the Socket class provide by Java to communicate the client and server. Because of chat is many to many, the multithreading function can implement the ma
9、ny-many chat, database management system use SQL Server2000 and JDBC-ODBC bridge to visit the database.When chat system is achieved, it can possess functions like chat in a many-many way, add and delete the intimate, the new users registration, and sending and receiving message, transferring files a
10、nd so on. The refinement of interface designing would facilitate user operation and understanding. The contact surface has the thin differentiation designs; modules have realized the functions such as inquiry, revision and so on. The logic relationship in this program is closed.Keyword: Java, Multit
11、hreading, Client/Server, SQL Server2000,Database Management System本科毕业设计(论文)III目 录第 1 章 绪论 .11.1 课题选择的背景 .11.2 课题选择意义 .11.3 系统开发技术简介 .21.3.1 Java 简介 .21.3.2 JDBC 技术简介 .21.3.3 数据库 Microsoft SQL-Server 2000 简介 .41.3.4 多线程介绍 .4第 2 章 系统分析 .62.1 系统需求 .62.1.1 系统的特点分析 .62.1.2 网络聊天系统需要解决的问题 .62.2 系统设计思想 .62
12、.3 系统实现功能分析 .72.4 系统开发及运行环境 .7第 3 章 系统总体设计 .83.1 总体构架 .83.2 系统整体功能 .83.3 系统模块功能设计 .9第 4 章 数据库设计 .124.1 系统 E-R 图 .124.2 数据字典 .124.3 各个数据表的创建 .124.4 数据库的连接 .13第 5 章 系统实现与编码 .155.1 服务器功能模块的设计 .155.1.1 Socket 和 ServerSocket 介绍 .15本科毕业设计(论文)IV5.2 服务器功能模块的实现 .165.2.1 多线程服务器模块实现 .165.2.2 在线用户管理模块实现 .185.2.
13、3 部门管理模块实现 .205.2.4 用户管理模块实现 .215.2.5 日志管理模块实现 .225.3 协议设计与实现 .235.3.1 协议规则 .235.3.2 协议实现 .245.4 客户端功能模块的设计与实现 .275.4.1 登陆认证模块 .275.4.2 主界面模块 .275.4.3 聊天模块 .285.4.4 文件传输模块 .29第 6 章 系统测试 .336.1 系统测试概述 .336.1.1 测试目标 .336.1.2 测试实例研究与选择 .336.1.3 系统测试环境 .336.2 测试内容 .346.2.1 服务器模块测试 .346.2.2 客户端模块测试 .346.
14、2.3 平台兼容性测试 .356.3 测试结果分析评价 .35结 论 .36参考文献 .37致 谢 .38本科毕业设计(论文)1第 1 章 绪论1.1 课题选择的背景信息时代的到来引发了一场知识和信息革命,计算机和现代网络技术的广泛应用极大地促进了社会经济的发展,同时也带来了一些新兴产业的发展,比如聊天软件。随着计算机网络日新月异的发展,人们的交流方式越来越多,传统的交流方式已经难以满足人们的交流的需求了,网络聊天已经慢慢成为人们生活的一部分,呈现出良好的势头和广阔的发展前景。在互联网上即时的和好友取得联系,已经成为当今社会人们主流的联系方式。同时,即时通信系统对现代企业也有着重大意义,它能实
15、现快速人际交流、数据共享,从而提高效率和生产力。实时通信为诸多企业开拓了网络应用的新领域。自从它诞生以来,以实时交互、资费低廉等优点,受到广大个人用户的喜爱,已经成为网络生活中不可或缺的一部分。越来越多的企业已开始认识到即时通信工具能够带来极高的生产力,并借助它的应用,来提高业务协同性及反馈的敏感度和快捷度。网上聊天系统是为人们之间进行交流和联系提供的一个平台。通过提供完善的网上聊天系统服务,可以达到增进彼此之间的了解,增进人与人之间的感情交流。因此,两台计算机之间进行即时通讯、发送文件等交流方式已经成为必然潮流。于是出现了QQ、UC 等聊天工具,然而QQ、UC 等聊天工具虽然方便、实用,但是
16、,娱乐功能太多,有很多吸引人的娱乐功能,从一定程度上来说,是一种娱乐工具,不能作为用于即时通讯的专用工具。目前,用于实现单一的即时通讯的软件实在太少,为此,我们决定开发一个专用于实现多台计算机之间即时通讯的软件,以方便多台计算机之间信息的快速交流。1.2 课题选择意义计算机越来越成为我们生活中的重要工具,自从1968年世界上第一个计算机网络-ARPA网(美国国防部高级研究计划网)投入运行以来,计算机网络技术在全世界范围内迅速发展,犹如雨后春笋,各种网络纷纷涌现。不同国家的计算机网络相互连接,形成跨国计算机网络,促进了世界各国之间的科技、文化和经济交流。在电子商务的应用中,计算机网络作为基础设施
17、,将分散在各地的计算机系统连接起来,使得计算机之间的通讯在商务活动中发挥了重要的作用,从此计算机的作用不再那么单调,现在Internet把几乎全球的服务器相互连接起来,这样不仅使网络上的计算机之间进行相互访问并下载对自己有用的资源,还可以用来写信、听音乐、看电视、通过可视电话进行通信,通过Internet网进行信息查询、网上购物等。计算机正在改变我们的通本科毕业设计(论文)2信、工作和娱乐的方式。1.3 系统开发技术简介1.3.1 Java 简介Java 是 由 Sun Microsystems 公 司 于 1995 年 5 月 推 出 的 Java 程 序 设 计 语言 ( 以 下 简 称
18、Java 语 言 ) 和 Java 平 台 的 总 称 。 它以 C+为基础,但是却是一个全新的软件开发语言。Java 是一个简单,面象对象,分布式,解释性,强壮,安全,与系统无关,可移植,高性能,多线程和动态的语言-这是 Sun 给 Java 的定义。Java 平 台 由 Java 虚 拟 机 ( Java Virtual Machine) 和 Java 应 用 编 程 接 口( Application Programming Interface、 简 称 API) 构 成 。 Java 应 用 编 程 接 口为 Java 应 用 提 供 了 一 个 独 立 于 操 作 系 统 的 标 准
19、接 口 , 可 分 为 基 本 部 分 和 扩 展 部 分 。在 硬 件 或 操 作 系 统 平 台 上 安 装 一 个 Java 平 台 之 后 , Java 应 用 程 序 就 可 运 行 。 现在 Java 平 台 已 经 嵌 入 了 几 乎 所 有 的 操 作 系 统 。Java 是 一 种 简 单 的 , 面 向 对 象 的 , 分 布 式 的 , 解 释 型 的 , 健 壮 安 全 的 , 结 构中 立 的 , 可 移 植 的 , 性 能 优 异 、 多 线 程 的 动 态 语 言 。 Java 对开发者具有不可估量的价值,使他们可以: 在一个平台上编写软件,然后即可在几乎所有其他
20、平台上运行 创建可在 Web 浏览器和 Web 服务中运行的程序 开发适用于在线论坛、存储、投票、HTML 格式处理以及其他用途的服务器端应用程序 将采用 Java 语言的应用程序或服务组合在一起,形成高度定制的应用程序或服务 为移动电话、远程处理器、低成本的消费产品以及其他任何具有数字核心的设备编写强大而高效的应用程序 Sun 公司的口号就是“网络就是计算机“,Java 能使所有东西从桌面计算平稳的转变为基于网络的计算,它是专门为此而建立的,并显然是为了完成这个任务而来的。使用 Java,我们可以相对轻松的一天编写一个有条理的网络程序。今天,Java 的网络功能正在飞跃发展,不断有新的特性增
21、加到这个有价值的基础上,JavaSoft 实验室正在不断努力使 Java 更加完善。本科毕业设计(论文)31.3.2 JDBC 技术简介JDBC( Java Data Base Connectivity,java 数 据 库 连 接 ) 是 一 种 用 于 执 行SQL 语 句 的 Java API, 可 以 为 多 种 关 系 数 据 库 提 供 统 一 访 问 , JDBC 是 Java 的开发者 Sun 的 Javasoft 公司制定的。它 由 一 组 用 Java 语 言 编 写 的 类 和 接 口 组 成 。JDBC 为 工 具 /数 据 库 开 发 人 员 提 供 了 一 个 标
22、准 的 API, 据 此 可 以 构 建 更 高 级 的 工具 和 接 口 , 使 数 据 库 开 发 人 员 能 够 用 纯 Java API 编 写 数 据 库 应 用 程 序 。有 了 JDBC, 向 各 种 关 系 数 据 发 送 SQL 语 句 就 是 一 件 很 容 易 的 事 。 换 言 之 , 有了 JDBC API, 就 不 必 为 访 问 Sybase 数 据 库 专 门 写 一 个 程 序 , 为 访 问 Oracle 数据 库 又 专 门 写 一 个 程 序 , 或 为 访 问 Informix 数 据 库 又 编 写 另 一 个 程 序 等 等 , 程序 员 只 需
23、用 JDBC API 写 一 个 程 序 就 够 了 , 它 可 向 相 应 数 据 库 发 送 SQL 调 用 。 同时 , 将 Java 语 言 和 JDBC 结 合 起 来 使 程 序 员 不 必 为 不 同 的 平 台 编 写 不 同 的 应 用 程序 , 只 须 写 一 遍 程 序 就 可 以 让 它 在 任 何 平 台 上 运 行 , 这 也 是 Java 语 言 “编 写 一次 , 处 处 运 行 ”的 优 势 。Java 数 据 库 连 接 体 系 结 构 是 用 于 Java 应 用 程 序 连 接 数 据 库 的 标 准 方 法 。JDBC 对 Java 程 序 员 而 言
24、 是 API, 对 实 现 与 数 据 库 连 接 的 服 务 提 供 商 而 言 是 接 口模 型 。 作 为 API, JDBC 为 程 序 开 发 提 供 标 准 的 接 口 , 并 为 数 据 库 厂 商 及 第 三 方 中间 件 厂 商 实 现 与 数 据 库 的 连 接 提 供 了 标 准 方 法 。 JDBC 使 用 已 有 的 SQL 标 准 并 支持 与 其 它 数 据 库 连 接 标 准 , 如 ODBC 之 间 的 桥 接 。 JDBC 实 现 了 所 有 这 些 面 向 标 准的 目 标 并 且 具 有 简 单 、 严 格 类 型 定 义 且 高 性 能 实 现 的 接
25、 口 。 Java 具 有 坚 固 、 安 全 、 易 于 使 用 、 易 于 理 解 和 可 从 网 络 上 自 动 下 载 等 特 性 ,是 编 写 数 据 库 应 用 程 序 的 杰 出 语 言 。 所 需 要 的 只 是 Java 应 用 程 序 与 各 种 不 同 数据 库 之 间 进 行 对 话 的 方 法 。 而 JDBC 正 是 作 为 此 种 用 途 的 机 制 。ODBC 在 Windows 系列平台应用程序中和 JDBC 在 Web 和 Internet 应用程序中的作用的作用类似。ODBC(OpenData Base Connectivity),称为开放式数据库互联技术
26、,是由 Microsoft 公司倡导并得到业界普遍响应的一门数据库连接技术。 JDBC 现在可以连接的数据库包括:xbase、Oracle、Sybase、Aceess 以及 Paradox 等。JDBC 的工作机制 :JDBC 定义了 Java 语言同 SQL 数据之间的程序设计接口。JDBC有一个非常独特的动态连接结构,它使得系统模块化。使用 JDBC 来完成对数据库的访问包括以下四个主要组件:Java 的应用程序、JDBC 驱动器管理器、驱动器和数据源。 JavaSoft 公司开发了 JDBC API,JDBC API 是一个标准统一的 SQL 数据存取接口。 JDBC 在 Interne
27、t 中的作用与 ODBC 在 Windows 系列中的作用类似。它为 Java 程序提本科毕业设计(论文)4供了一个统一缝地操作各种数据库的接口,程序员编程时,可以不关心它所要操作的数据库是哪个厂家的产品,从而提高了软件的通用性,而且在 Internet 上确实无法预料你的用户想访问什么类型的数据库。只要系统上安装了正确的驱动器组,JDBC应用程序就可以访问其相关的数据库。1.3.3 数据库 Microsoft SQL-Server 2000 简介Microsoft SQL-Server(简称 SQL-Server)是微软公司推出的一个高性能的关系型数据库管理系统,随着其产品性能的不断提高,使
28、之在数据库系统领域中占有重要地位。Microsoft SQL-Server 2000 是继 SQL-Server 6.5 和 SQL-Server 7.0 以后,推出的又一改进的关系型数据库管理系统,它能使用户快捷地管理数据库和开发应用程序。SQL-Server 2000 使用了最先进的数据库结构,与 Windows DNA 紧密集成,具有强大的 Web 功能,它可以利用高端硬件平台以及最新网络和存储技术,可以为最大的 Web 站点和企业应用提供优良的扩展性和可靠性,使用户能够在 Internet 领域快速建立服务系统,为占领市场赢得宝贵的时间。同时,SQL-Server 2000 还为用户提
29、供了重要的安全性功能的增强,为用户的数据安全提供了可靠的保证。另外,SQL-Server 2000 在数据库服务器自动管理技术方面处于数据库领域的领先地位,它可以使用户免去繁琐复杂的工作量,从而又精于处理更重要的问题,使系统在商业战略上占得先机。SQL-Server 数据库系统特点:与 Internet 高度集成;高伸缩性和适应性;企业级数据库功能强。存储过程是存储在服务器上的预先编译好的 SQL 语句,可以在服务器上的 SQL Server 环境下运行 12。使用存储过程有如下的好处:执行时间短;客户/服务器开发分离;安全性高。SQL-Server 2000 工具界面与标准 Windows
30、界面非常类似,具有菜单栏、图标、树状视图控件、单选按钮等。这些熟悉的界面使以前即使从没有见到过这些应用程序的人也能够很快地了解一些基本的功能。1.3.4 多线程介绍Java 支持内置多线程编程。多线程程序包括两条或两条以上并发运行的部分。程序中每个这样的部分都叫一个线程,每个线程都是独立的执行路径。因此,多线程是多任务处理的一种特殊形式。 多任务处理有两种截然不同的类型:基于进程的和基于线程的。进程本质上一个正在执行的程序。因此,基于进程的多任务处理的特点是允许你的计算机同时运行两个或更多的程序。举例来说,基于进程的读任务处理使你在运行文本编辑器的时候可以同时运行Java 编译器。在基于进程的
31、多任务处理中,程序是调度程序多分派的最小代码。也就是说,进程是资源申请、调度和独立运行的单位,因此,它使用系统中本科毕业设计(论文)5的运行资源。在基于线程的多任务处理环境中,线程是最小的执行单位。线程是进程中的一个单一的连续控制流程。一个进程可以拥有多个线程。这意味着一个程序可以同时执行两个或多个任务的功能。例如,一个文本编辑器可以在打印的同时格式化文本。所以,多进程程序处理大局问题,而多线程程序处理细节问题。 多线程程序比多进程程序需要更少的管理开销。进程是重量级的任务,需要分配它们自己独立的地址空间。进程间通信是昂贵和受限的。进程间的转换也是很需要花费的。另一方面,线程是轻量级的选手,它和进程一样拥有独立的执行控制,由操作系统负责调度。区别在于线程没有独立的存储空间,而是和所属进程的其他线程共享一个存储空间,因此,线程间通信是容易的,线程间的转换也是低开销的。当Java 程序使用多进程的任务处理环境时,多进程的程序不受Java 的控制,而多线程则受控于Java。 多线程可以帮会你写出CPU 最大利用率的高效程序,因为空闲时间保持最低。这对Java 运行的交互式的网络互联环境至关重要,因为空闲时间是公共的,举个例子来说,网络的数据处理传输速率远低于计算机处理能力,本地文