毕业设计(论文)-基于socket的即时通讯的研究.doc_第1页
毕业设计(论文)-基于socket的即时通讯的研究.doc_第2页
毕业设计(论文)-基于socket的即时通讯的研究.doc_第3页
毕业设计(论文)-基于socket的即时通讯的研究.doc_第4页
毕业设计(论文)-基于socket的即时通讯的研究.doc_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

分类号 TP31 编号 烟 台 大 学 毕 业 论 文(设 计) 基于基于 socket 的即时通讯的研究的即时通讯的研究 申请学位: 工学学士 院 系: 计算机学院 专 业: 计算机科学与技术 姓 名: 学 号: 指导老师: 2015 年 5 月 30 日 烟台大学计算机与控制工程学院 基于基于 socket 的即时通讯的研究的即时通讯的研究 姓 名: 肖祥炜 导 师: 宋宜斌 2015 年 5 月 30 日 烟台大学计算机与控制工程学院 烟台大学毕业论文(设计)任务书烟台大学毕业论文(设计)任务书 院(系): 姓名肖祥炜学号201158501103 毕业届 别 2011专业 计算机科学与技 术 毕业论文(设计) 题目 基于 socket 的即时通讯研究 指导教师宋宜斌学历硕士职称教授所学专业计算机 具体要求(主要内容、基本要求、主要参考资料等): 本系统是一个基于局域网的 socket 连接的即时通讯的软件,使用的是 TCP/IP 协 议,只要用户登录了本系统就可以和同一个网络下的其他客服端进行通信,本系统参 考的主要资料有:熊晓敏,刘瑛,陈惠清.基于 Java 的网络即时通讯系统的设计与实现 J.计算机与现代化,2005(12): 89-92, 百度百科,李斌,王睿. 关于 java 的继承 性的探讨 学术期刊 进度安排: 3 月:查询相关资料并提交开题报告 4 月:实现程序并完成论文初稿 5 月:完成论文 6 月:准备终期答辩 指导教师(签字): 年 月 日 院(系)意见: 教学院长(主任) (签字): 年 月 日 备注: 烟台大学毕业论文(设计) 摘要摘要 近年来,随着互联网技术的不断更新普及,人们的联系方式也发生着重大的 改变。从当初的写信到现在的 QQ 和微信,这些无不说明着时代在进步。现在,市面上的 即时通讯软件多种多样,比如 QQ、微信、米聊和陌陌等,早已经改变了人们的交流方式, 使人们能够随时随地地进行交流,分享身边的新鲜事。 而我们现有所熟悉的通信方式,已经满足不了日益加快的生活节奏的要求,实时准 确的沟通成为必需。即时通讯软件作为一款加强人与人之间交流的软件应运而生,为我 们的工作与生活带来了极大的方便,很大程度上提高了人们工作与学习的效率,加大了人 际交往圈。良好的用户界面,简便的操作,无不显示着这类应用的广阔市场。 各个中小型企业更是建起了自己的局域网聊天平台。在局域网内,人们可以快速的 分享文件与资料,不再需要面对面使用 U 盘拷贝了。在此背景下,我开发了一款基于局 域网的 socket 即时通讯项目,方便在此局域网内的人员沟通与交流。本项目包括客户端 与服务器端。客户端主要包括用户的注册登录、聊天、分组、群聊,和个人信息修改等。 服务器端实现聊天信息的转发、数据库数据的修改。其中,服务器端在设计与实现过程 中,采用的是多线程技术,使用了连接池,可以在单个程序中同时运行多个不同的线程, 执行不同的任务,不同的客户端登陆时就开启一个线程监听。 关键词关键词 socket;动态更新;即时;TCP/UDP 烟台大学毕业论文(设计) Abstract: With the updating and popularizing of the internet technology continually in recent years,the way of People contacting with each other is changing significantly.From the papers to the qq and weixin today,all that show the progress of the era.there are many kinds of instant communication softwares on the market,such as qq、weixin and so on,they have already changed the peoples Communication pattern,so that people can communicate anytime and anywhere,sharing anything new around. However,the way to communicate that we are familiar now,has failed to meet the increasingly accelerated pace of life requirements,real time accurate communication become essential.The instant communication software as a software to enhance the exchange between people came into being,which has brought great convenience to our work and life,greatly improved the efficiency of peoples work and learning,and increased interpersonal circle,Good user interface and simple operation, they are all show the broad market for this kind of application. Many SMEs has built their own LAN chat platform.In the LAN, you can quickly share files and information,no longer need to use U disk to copy face to face.Under this background,I developed a socket instant communication project based on the LAN,to facilitate peoples communication in the LAN.The project includes client and server.The client mainly includes user registration registry, chat, groups, group chat,and personal information changes, etc.The server achieves chat information forwarding and database modification.Among them, the server in the design and implementation process,I use the multi thread technology,which can run multiple different threads simultaneously in a single program,perform different tasks,as different client login,it will open a thread monitor. Key words: socket;dynamic updates; instant; TCP / UDP 烟台大学毕业论文(设计) 目 录 1 绪 论 .1 1.1 本课题的研究意义及必要性.1 1.2 相关领域国内外应用的现状及发展趋势.1 1.3 JAVA语言.1 1.3.1 java 发展史.1 1.3.1 java 的网络应用 .2 1.3.2 socket 通信原理 .3 1.4 MYSQL简介.4 1.4.1 Mysql 的优点.4 1.4.2 Mysql 的特点.5 2 系统分析 .6 2.1 系统功能要求.6 2.2 系统开发功能.6 2.3 系统的可行性分析.7 3 详细设计 .8 3.1 功能模块划分.8 3.1.1 注册模块设计 .8 3.1.2 登录模块设计 .8 3.1.3 聊天模块设计 .9 3.1.4 文件传输模 .9 3.2 数据库设计.9 3.2.1 设计原则 .9 3.2.1 具体步骤 .10 4 系统实现 .13 4.1 客户端的实现.13 4.1.1 登录模块的实现 .13 4.1.2 注册模块的具体实现 .14 4.1.3 聊天信息界面的实现 .16 4.2 数据库端的实现 .18 5 综合测试 .21 5.1 简单功能 .21 5.1.1 登录和注册界面 .21 5.1.2 聊天界面 .22 5.2 查找好友功能 .23 5.3 好友分组的移动与新建界面.24 结 束 语 .25 烟台大学毕业论文(设计) 致 谢 .26 参考文献 .27 附录 A 部分代码 .28 烟台大学毕业论文(设计) 1 绪 论 1.1 本课题的研究意义及必要性 我们已经步入了互联网时代,在这个网络无所不在的今天,即时通讯通过网络无 限的缩小了人与人之间的距离,整个地球也就显得越来越小,更有了地球村的说法。 比如你在福建却能与远在千里之外的人聊天,这在互联网普及之前是完全不可思议的 事情。现在只有你能连上网络不管你在哪里,只要打开这些即时通讯软件你就可以给 他发消息不管他是否在线。 正如我们所知的,国内的中小型企业纷纷建起了自己的局域网既方便员工的内部 交流又增加了企业内部的安全性。在局域网内交流,不需要使用 Internet 网络,这样的 好处是可以节省很多网络资源,又充分的利用现有的网络资源一举多得。在公司内部 的交流就可以自由的交流,分享文件极大的提高了人们的工作效率。 1.2 相关领域国内外应用的现状及发展趋势 在国内做即时通讯聊天的公司有很多,据我所知的就有:网易泡泡,通讯 qq,微 信,易信,还有近期网络上很火那个开源的蘑菇街的公司内部通讯 TeamTalk。本人选 取了比较典型的代表腾讯 qq 进行了一些研究,作为这次课题的准备。 现如今国内最大的通信软件是腾讯 qq,这个通讯软件占据了中国的 70%以上的手 机移动即通讯市场,自从 1999 年以来进入国内的手机移动端等就迅速的占领我国的即 时通讯市场,国内的用户量始终占其榜首。即使最近几年微信与陌陌的异军突起,但 是腾讯 qq 还是稳坐钓鱼台每年还是保持稳定的增长,究其原因还是因为 qq 它不断的 完善和越来越友好的用户界面。本项目就是基于 socket 的 TCP 即时通讯项目,采用单 服务器模式,使用 android 语言编写客服端,java 语言编写服务器。 1.3 java 语言 1.3.1 java 发展史 Java 发展于 1995 年,一开始还是一个名不经传的小语言,但是该语言的具有的特 性使迅它迅速吸引了当时所有的程序员和软件公司的关注。该语言的特点有安全性, 跨平台性,面对对象还可以使用网络等特点无不使它能够让更多人接受。那个时候互 联网主要是以 web 平台模式发展,而 java 语言的推出立马就让程序员与软件公司接受, 众多程序员纷纷尝试使用 java 语言编写自己的网络程序,并且将其发布于全世界各地。 正如 java 语言的跨平台性,使其立马在世界各地推广开来。包括 oracle,微软, Apple,IBM 等公司都与 sum 公司签订合同,使用 java 平台语言的技术。微软的总裁 大 boos 还曾说过:“Java 语言是长时间以来最卓越的程序设计语言” 。正如他所意料 的 java 语言目前已经成为了当下最盛行的网络编程言语,世界各地大大学也纷纷开设 烟台大学毕业论文(设计) 了 java 课程,为后来 android 系统的流行积累下了深厚的基础,目前流行的 android 系 统也正是基于 java 语言编写的。Java 语言已经成为了世界上程序员运用最多,市场率 占有量最高的语言了。 随着科技的发展,在计算机领域通常有着 18 个月更新一个技术就如我们的计算模 式在经历过以大型机为代表的集中计算和以 pc 机为代表的分散计算后,现在已近步入 互联网计算的时代。互联网就是把所有的计算机组成起来形成一个网络分享我们的数 据而互联网计算的最大特色就是计算机的异构,即计算机操作系统和计算机的类型都 是不一样的,比如 sum 公司而言,据调查显示它们使用的软件是 UNIX 中的 solaris 操 作系统但是使用工作站的硬件却是 sparc 体系,pc 机的硬件是 INTEL 体系,操作系统 是 windows 或者是 Linux,为什么它们的软件可以通用呢?当初相应的编程语言基本上 是适用于单机系统的。网络计算的另外一个特色就是代码可以在网络上传播,可以再 各个计算机上正常的运行,无论这台计算机是什么操作系统,什么硬件设施。这就迫 切要求一种跨平台的编程语言的,java 语言就应运而生。Java 语言的各种特性让它获 得了巨大的成功。 我们可以想象一下,在 pc 机下使用 windows 系统下编写的程序可以直接在 Unix 系统上运行吗?答案当然是不可能的了,因为程序不认识这个语言啊。程序的执行最 终是要转换成计算机硬件的机器指令来执行的。而那些专门为某种计算机硬件与操作 系统编写的程序显然是不能直接在其他的计算机上直接的,要运行也行,那么就必须 要做移植工作。这是一个做无用功的过程,而且又非常的繁琐。所以一款可以再不同 平台下运行的语言的呼声日益增高。Java 语言的各种特性也正满足了这一要求。 Java 应用与 C+语言之后,java 是完全面对对象的1,它吸收了 C+语言的所有 优点,采取了当初程序员的所熟知的 c+和 c 语法规则,同时又摈弃了 c 之中的众多不 影响内存的部分,可是说 java 的发展是在 c+的基础上改造而来的。 Java 编程语言当初的设计目标就是为了跨平台,所以在编写的时候采取的是解释 执行的运行环境,在根据不同的平台硬件解释成不同的计算机机器指令,这样就完美 的实现了程序的跨平台。而且为了适应网络计算模式的特性,java 语言还提供了动态 下载机制,程序可以把自己需要的代码动态的从网络上下载到本地的服务器中执行, 这个机制在这个语言之前没有一种语言能够实现这点。 1.3.1 java 的网络应用 在和网络通信方面,客户端和服务器的数据交换方式主要是可以分为两种情况: 一是 Http 通信,一是 Socket 通信。它们的两者的区别在于:http 使用的是请求响应 模式,即请求时建立连接,连接之后客服端发送请求服务器端才能返回请求的数据。 Socket 通讯是在双方建立连接通讯通道之后直接进行数据的交换,服务器端可以主动 推送数据到客服端,不需要请求才返回数据。那么,什么是 socket?Socket 连接我们 可以理解成是套接字连接,它的工作原理是通过监听网络上面的一个端口号创建一个 通信信道来进行数据的传输。socket 的主要特点有数据丢失率低,使用简单且易于移 植。 我们可以理解 Socket 就是一种抽象层,应用程序可以通过这个抽象层来收放数据, 烟台大学毕业论文(设计) 因此我们可以使用 Socket 将程序添加到网络上面,和在同一个网络中的其他设备进行 通讯。 Socket 不同的实现方式是根据它底层使用不同的通信协议。在本项目中运用的是 基于 TCP/IP 协议的,在这个协议里 socket 的主要类型为流套接字和数据报套接。我们 可以理解为流套接字就是 tcp 协议,它将 tcp 作为接口协议,提供一个字节流的服务。 当然除了 tcp 协议还有 UDP 协议,即数据报协议,它的工作原理是把数据直接打包发 送的,不需要建立连接只要知道目的地址就好了。 下面,我们来认识一下这两种 Socket 类型的基本实现模型。 图 1.1 TCP 通信过程 图 1.2 UDP 通信过程 1.3.2 socket 通信原理 (1)基于 TCP 协议的 Socket 首先在服务器端里要先声明一个 ServerSocke 对象并且要指定端口号,这个端口号 要是系统没有使用的,或则不能进行通信。然后调用 Serversocket 的 accept()方法, 烟台大学毕业论文(设计) 监听客服端发送的消息。而 accept 方法在没有进行数据接收的时候是一种处于等待的 状态,也就是一直监听客服端的消息在等待。一旦客服端有数据传输过来的时候,通 过 inputstream 对象来读取 socket 里面的数据进行处理和转发。 其次要在客服端创建一个 socket 对象,这里当然也要指定端口号,这个端口号和 服务器的端口号要一样,还需要指定服务器端的 ip 地址(socket socket=new scoket(ip,port), 最后将这些要发送的数据使用 outputstream 发送,这样就可以使用 TCP 协议进行 socket 数据传输了。 (2)基于 UDP 协议的数据传输 服务器端首先创建一个 DatagramSocket 对象,并且指点监听的端口。接下来创建 一 个空的 DatagramSocket 对象用于接收数据(data,data.length)),使用 DatagramSocket 的 receive 方法接收客户端发送的数据,receive()与 serversocket 的 accepet()类似, 在没有数据进行接收的处于堵塞状态。 客户端也创建个 DatagramSocket 对象,并且指点监听的端口。接下来创建一个 InetAddress 对象,这个对象类似与一个网络的发送地址如下: (InetAddressserveraddress=InetAddress.getByName(01)创建一个要发送的 数据的字符串数据,并且创建一个 DatagramPacket 的对象,还要确定的是要发送的网 络的 ip 地址和端口号,当然最后我们要发送这个数据,使用 DatagramPacket 的 send()发送。 1.4 Mysql 简介 Mysql 是当前的一个小型的数据库软件,它是开源的,它是由 MysqlAB 独立开发 的并且负责维护这个数据库软件的后期支持,这里稍微提及一下 MysqlAB,它是一家基 于 sql 开发的商业软件公司,它使用了一种新的成功的商业模式来结合开源的价值来二 次开发的开源公司。 1.4.1 Mysql 的优点 (1)Mysql 的一个数据库是一个结构化数据的集合。 Mysql 服务器它支持很多系统的使用,比如支持关键任务、重负载生产的系统的 应用,它可以内嵌到其他大型的软件里面使用。 Mysql 是一个多线程的,多用户的 sql 体系的数据服务器。 Mysql 的数据库存储的类型可以是一个简单的表,也可以是一个图书馆的所有的数 据集合、或者是一个集团的庞大的信息集合。我们有存储数据集合的地方当然也是需 要有一个能够添加、访问和管理数据集合的数据库管理软件系统。Mysql 数据库管理软 件就是这样一个系统,它可以很好的支持多个用户的数据操作与访问并且每个用户都 是独立的并发的进行。 (2)MySQL 是一个关系数据库管理系统。 烟台大学毕业论文(设计) 所谓的关系型数据库就是把数据都存放在不同的独立的表格里面,这样做的好处 就是方便我们管理和使用数据库查询与管理,提高了数据库管理的灵活性。 (3)MySQL 是开源的,对外开放的。 开源也就是说所有的人都可以使用该系统,还可以修改 MySQL 的软件源码,对它 进行二次开发而不需要支付任何费用。Mysql 使用的是 GPL(通用公共许可)协议,当 然这里面还是有一些限制的,开源并不意味着可以无限制的使用。 (4)MySQL 是一个可靠的、快速的、轻量级的数据库服务器。 虽然说 MySQL 服务器是在原本开放的开源的数据库上二次开发而来的,但是它已 经成功的用于多种复杂的环境里面并且完美的提供了一个丰富的有用的功能集合。它 的安全性和快速性使其在访问网络的数据库毫无问题。 (5)Mysql 服务器可以工作在客户/服务器甚至还可以直接内嵌到系统中。 Mysql 服务器它是由多线程的 sql 服务器构成的,可以支持在不同的平台,多个不 同的客户端和管理工具。可以直接内嵌到你需要的大型数据库里面。 1.4.2 Mysql 的特点 1Mysql 数据库是使用 C 和 C+编写,并进行了多种情况的测试,源码具有可移 植性。 2支持多种操作系统。 3给很多的编程语言都编写了 API。 4多线程 5本身优化了 sql 的查询算法。 6提供多种语言的支持。 7提供了多种数据库操作的管理工具便于管理。 2 系统分析 2.1 系统功能要求 开发一个项目的时候,首先我们需要做的事情就是对项目进行前期的需求分析。 前期的需求分析对一个系统的开发来说是非常重要的一部分,前期的需求分析如果能 够对整个项目提出一个准确的、清晰的、具体的要求,那么后期将会减少非常多的工 作量。在本个项目里首先最大的需要就是服务器需要同时连接多个用户,并且还有对 这些用户的各种请求作出响应,所以这就要求服务器能同时并发的处理多个 Socket 连 接请求服务。在服务器的设计模型我们一般可以分为并发服务器和循环服务器,在这 里循环数据库是不满足本系统的要求。因为循环服务器的工作原理是同一时间只能有 一个用户连接服务器。因此在本系统里面我采用的是多线程的设计模式来设计我的服 务器端。 2.2 系统开发功能 本项目可以分为三个部分进行开发,分别是:客户端、服务器端和数据库三个部 分,在本项目是一个基于 socket 的局域网即时通讯项目,我们需要对其进行一些业务 流程的分析,这样可以帮助我们更好的理解这个系统的业务处理过程,帮助我们发现 和处理系统可能会发生的错误和调查工作的欠缺,修改系统里面哪些不合理的地方。 系统流程图如下 图 2.1 系统流程图 1、首先我们需要先打开服务器端得服务,运行程序进入登陆界面。 2、如果没有注册账号我们需要点击注册,跳转到登陆界面,注册账号如果成功的 话返回一个注册的唯一 id,我们登录的时候使用这个 id 登录。 3、用提示的账号登录,客服端发送登录请求,服务器端将对用户的账号和密码对 数据库进行匹配,若数据库里面存在,则进入主界面。没有的话提示用户密码错误。 4、用户登录成功之后可以进行聊天,查找好友等具体的操作。 5、如果用户进行聊天的话服服务器端接收到消息之后需要发送一个消息的广播, 即转发这条消息,让聊天用户接收。 2.3 系统的可行性分析 可行性分析(Feasibility Analysis)也称为可行性研究。它是从不同的角度来分析 一个系统是否值得进行后期的继续投资的前期行为。一般是从经济、技术等角度进行 市场的调查研究。 在经济角度进行分析这个系统开发的初步成本几乎对于每个企业都是可以接受的, 它只需要一个小型的服务器和各种开发技术就行,而开发软件在网络上面我们都可以 下载的到甚至还可以免费使用。开发的周期初步估计也就是在一个月左右,但是我们 必须要保证自己的需求分析的明确性。 在技术上面使用的 android 技术,android 语言的开发是由 java 发展来的,android 语言经过多年的发展它的 api 已经很成熟了,而且各种技术都非常的到位,很多功能我 们都是有办法去实现的,在技术上暂时说是没有问题的。 所以说不管在技术可行性还是经济可行性来说,这个项目都是可以很好的实现的, 腾讯 qq 就是一个很好的见证。 3 详细设计 3.1 功能模块划分 本系统总的来说包括两个部分:服务器端和客户端。在服务器端主要是服务器控 制模块,接收客户端发来的连接请求,根据客户端的要求将信息准确的转发到客户端。 客户端主要包括四个模块,分别是注册模块、登录模块、文件传输模块和聊天模块。 当用户使用本系统第一次登录的时候,首先要进行注册,服务器接收用户注册的信息 并且保存数据,返回一个账号给用户;用户注册后使用提示的账号直接进行登录如果 勾选了保存用户信息的话下次登录的时候就可以记住密码和账号了,登录时客户端将 用户填写的账户和密码发送到服务器端,服务器端将用户信息与数据库里面的数据进 行匹配,若但前的用户未登录且信息存在的话,就返回登录成功;用户登录成功后就 进入到主界面,用户可以看到在线好友,点击单个用户就可以进行私聊。功能模块如 图 3.1 所示。 0 5 10 15 20 25 30 35 一月二月三月四月五月六月 食物 天然气 旅馆 图 3.1 系统结构图 3.1.1 注册模块设计 登录系统之后,本系统会自动判断是否连接了服务器,如果连接服务器了,用户 填写注册的用户名,密码和邮箱之后,客服端会向向服务器端发送用户的基本信息, 服务器端在接收到信息之后,将这些信息保存到数据库里面,并且会新建一个用户好 友表,并向客服端提醒注册成功。如果注册失败提示用户数据库里面已经存在这个用 户。 3.1.2 登录模块设计 1、用户注册后,直接点击登录按钮,就可以直接进入主界面。若用户之前已经注 系统结构模块 服务器端客服端 控制模块 注册模块 登录模块 文件传输 模块 聊天模块 册,那么登录时,用户需要填写用户名、密码和性别。 2、用户填写资料后,点击登录按钮。客户端向服务器发送登录请求。登录时,如 用户点击退出按钮,则用户将退出登录系统;若不退出,服务器接收到客户端发送的 登录请求后,将用户信息与数据库中存储的用户信息进行匹配。 3、服务器异常,若连接服务器失败,则显示错误,系统将停留在登录界面。 4、 若通过验证,返回用户信息,同时向用户显示在线好友信息。 3.1.3 聊天模块设计 1、用户登录成功后,进入主界面,可以看到自己的好友分组。点开好友分组可以 看到好友列表。 2、点击用户进行聊天,进入好友信息表。 3、点击聊天进行私聊 4、聊天的时候可以发送动态表情,也也以发送文本信息。 5、用户可以在聊天界面上看到自己的聊天信息。 3.1.4 文件传输模 1、用户在聊天界面点击打开文件按钮,可以打开本地内存卡里面的文件,选择将 要发送的具体文件,可以多选。 2、选择好文件以后,点击确定,然后选择的文件就会出现在用户发送文件的框中。 3、这个时候文件就已经发送出去了。 3.2 数据库设计 3.2.1 设计原则 数据库设计的好坏直接关系到一个程序的运行的效率的好坏,在设计数据库的过 程中会遇到很多我们意想不到的问题,比如数据的乱码,数据的不正确,类型不匹配 更有数据的丢失等问题。我们数据库设计的不合理维护起来既麻烦又不方便查询,还 会造成数据的冗余。因此为了设计出一个好的数据库,必须要遵循一定的设计原则。 在数据库的设计规范中2,实体是要和表一一对应的。一个实体要建立一张表结构, 一张表必须要有一个主键,可以没有外键。但是实体间的联系可以有一对一,一对多, 多对多的关系,这个时候数据库表的设计就需要仔细的规划了。这里就用到了主键和 外键的配对。我们还需注意的一点就是在创建表的时候一定要保持表的原子性,既表 中的所有的字段都是不能再分解了; 在数据库的设计模式里面,实体和数据库里面的数据可以是一对一、一对多、多 对多的关系。一个实体可以没有外键但是必须要有个主键,主键是区分每条记录的唯 一标识,是实体的高度抽象的体现,主键和外键的关系代表的是实体之间的联系。在 数据库里面数据的操作是由事物来提交的,事物的定义2:所谓事务,它是一个操作 序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。说到事 物那么就不得不提一下事物的四大特征:原子性,一致性,隔离性和持久性(ACID)。 原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不 发生; 一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。 这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性;隔离性,多 个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果;持 久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库 之中,并不会被回滚。 在设计过程中设计范式的要求3是: 1、第一范式(1NF):数据库中的每一列都是不可分割的基本数据项,同一列中不 能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。 2、第二范式(2NF):要求数据库表中的每个实例或行必须可以被唯一区分。为实 现区分,通常需要为表加上一个列,用来储存各个实例的唯一标识。 3、第三范式(3NF)要求数据库表中不包含已在其他表中已包含的非主关键字信息。 3.2.1 具体步骤 1、数据库需求分析 数据库的的设计在整个项目的编写过程中其至关重要的地位。数据库的需求分析 也就尤为重要了,数据库分析步骤为:调查机构的具体情况,明确用户的需求,熟悉 业务流程,分析我们编写系统的功能,分析系统都要用到的哪些数据最后总结分析报。 在这个过程中我们必须要和客户深入的交流,获取客户的实际需求,因为有时客户提 的需求它们本身就不是很明确,这个就需要我们自己去了解。 2、数据库概念结构设计 本系统的数据模型的设计并不复杂,所以其概念设计6采用自顶向下地进行需求分 析,和自底向上地设计概念结构。 举个例子就比如这个系统的一个实体来说,即用户实体,其中实体图如下: 图 3.2 用户实体图 在该系统中,我们得知一个用户是可以和多个用户进行聊天的,不同的用户可以 和不同的人进行聊天所以它们的关系可以说是多对多的关系,即 m 对 n 的联系,所以 该系统用户聊天的用例图如下: 图 3.3 客服端的用例图 3.、数据库逻辑结构设计 数据库的概念设计也就是对用户的需求的抽象的表示,每个实体对应的是一张数 据库存储的表。它是独立的,不属于任何一个数据模型。但是我们需要将这些 E-R 模 型转换成某一数据库支持的数据模型,这些数据模型需要根据逻辑设计的准则,数据 的规划理论等对数据模型进行适当的调整和优化以便形成合理的全局逻辑结构,并设 计出用户子模式。这就是数据库逻辑设计所要完成的任务。 对于该系统,可以将逻辑概念结构转换为一般的关系模型。该系统所涉及到的数 据表有一张,用来存放用户信息。 表 3.4 user(用户表)对应的实体是用户,用来存放用户信息,用户信息包括用户名 和用户密码。 idnamepasswordemailisonlineimgtime 2025小超123456.00. 2026小明12345645200. 图 3.4 user 用户表 表 3.5 group(好友组表)对应的实体是分组,用来存放每个用户的好友分组,包括 好友的 id,好友分组的名称,好友分组的 id。 idUser_idGroup_idGroup_name 120251我的好友 图 3.5 group 好友分组表 表 3.6 _2025(好友表) 这个表是以生存的 id 命名的,这个用来存放每个用户添加的 好友的信息,包括用户的基本信息,是否在线等情况,如下表所示。 idnameisonlinegroup User_idimgemail 1小明0120240. 图 3.6 _2025 好友表 4 系统实现 4.1 客户端的实现 在前面我们已经详细的介绍了服务器的实现,但是对于一个 C/S 模式的项目来说, 我们还必须对客户端进行设计和实现,下面的就是对客户端的设计。 在本项目里面客户端和服务器端是通过 socket 建立连接通道进行数据交换的。服 务器与客户都通过构造 ObjectOutputStream、ObjectInputStream 来建立输入流和输出流, 双方通过该输入流和输出流来相互传递信息。只要收到客户端的连接请求,服务器利 用 accept()函数返回一个新建的 Socket 对象,随后客户端向服务器发送消息,比如注册、 登录和查找同事等请求,服务器收到请求后,针对不同的消息处理请求。 本系统是基于 socket 的局域网即时通讯,本系统的客户端是用 android 语言编写的 移动客服端,使用了 mvc 设计模型技术5。即显示与控制的代码是分开写的,这样减 少了各个模块的耦合性,提高了这个项目的可维护性。 4.1.1 登录模块的实现 首先我们先来整理下登录模块的运行的机制,正如我们所知的,在通讯领域里面 登录模块是一个很重要的模块。在客户端里面输入你的用户账号与密码登录,那么此 时服务器接收到账号和密码后和数据库里面的用户表匹配,判断是否登录成功。 登陆的的时候先判断 socket 是否连接了。只有前台与后台连接了才把当前用户提 交给后台,判断用户表里面是否存在了这个用户,后台数据库的 sql 语句的实现为: String sql = select * from user where _id=? and _password=?; 前台提交数据代码的实现: /* * 提交账号密码信息到服务器 */ private void login() String accounts = mAccounts.getText().toString(); String password = mPassword.getText().toString(); if (accounts.length() = 0 | password.length() = 0) DialogFactory.ToastDia

温馨提示

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

评论

0/150

提交评论