基于socket的即时通讯的研究毕业设计

用户点击退出按钮,则用户将退出登录系统;若不退出,服务器接收到客户端发送的登录请求后,将用户信息与数据库中存储的用户信息进行匹配。

3、服务器异常,若连接服务器失败,则显示错误,系统将停留在登录界面。 4、若通过验证,返回用户信息,同时向用户显示在线好友信息。

3.1.3 聊天模块设计

1、用户登录成功后,进入主界面,可以看到自己的好友分组。点开好友分组可以看到好友列表。

2、点击用户进行聊天,进入好友信息表。 3、点击聊天进行私聊

4、聊天的时候可以发送动态表情,也也以发送文本信息。 5、用户可以在聊天界面上看到自己的聊天信息。

3.1.4 文件传输模

1、用户在聊天界面点击打开文件按钮,可以打开本地内存卡里面的文件,选择将要发送的具体文件,可以多选。

2、选择好文件以后,点击确定,然后选择的文件就会出现在用户发送文件的框中。 3、这个时候文件就已经发送出去了。

3.2 数据库设计

3.2.1 设计原则

数据库设计的好坏直接关系到一个程序的运行的效率的好坏,在设计数据库的过程中会遇到很多我们意想不到的问题,比如数据的乱码,数据的不正确,类型不匹配更有数据的丢失等问题。我们数据库设计的不合理维护起来既麻烦又不方便查询,还会造成数据的冗余。因此为了设计出一个好的数据库,必须要遵循一定的设计原则。

在数据库的设计规范中[2],实体是要和表一一对应的。一个实体要建立一张表结构,一张表必须要有一个主键,可以没有外键。但是实体间的联系可以有一对一,一对多,多对多的关系,这个时候数据库表的设计就需要仔细的规划了。这里就用到了主键和外键的配对。我们还需注意的一点就是在创建表的时候一定要保持表的原子性,既表中的所有的字段都是不能再分解了;

在数据库的设计模式里面,实体和数据库里面的数据可以是一对一、一对多、多对多的关系。一个实体可以没有外键但是必须要有个主键,主键是区分每条记录的唯一标识,是实体的高度抽象的体现,主键和外键的关系代表的是实体之间的联系。在数据库里面数据的操作是由事物来提交的,事物的定义[2]:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。说到事物那么就不得不提一下事物的四大特征:原子性,一致性,隔离性和持久性(ACID)。原子性是指事务是一个不可再分割的工作单位,事务中的操作要么都发生,要么都不发生; 一致性是指在事务开始之前和事务结束以后,数据库的完整性约束没有被破坏。这是说数据库

9

事务不能破坏关系数据的完整性以及业务逻辑上的一致性;隔离性,多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果;持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

在设计过程中设计范式的要求[3]是:

1、第一范式(1NF):数据库中的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

2、第二范式(2NF):要求数据库表中的每个实例或行必须可以被唯一区分。为实现区分,通常需要为表加上一个列,用来储存各个实例的唯一标识。

3、第三范式(3NF)要求数据库表中不包含已在其他表中已包含的非主关键字信息。

3.2.1 具体步骤

1、数据库需求分析

数据库的的设计在整个项目的编写过程中其至关重要的地位。数据库的需求分析也就尤为重要了,数据库分析步骤为:调查机构的具体情况,明确用户的需求,熟悉业务流程,分析我们编写系统的功能,分析系统都要用到的哪些数据最后总结分析报。在这个过程中我们必须要和客户深入的交流,获取客户的实际需求,因为有时客户提的需求它们本身就不是很明确,这个就需要我们自己去了解。 2、数据库概念结构设计

本系统的数据模型的设计并不复杂,所以其概念设计[6]采用自顶向下地进行需求分析,和自底向上地设计概念结构。

举个例子就比如这个系统的一个实体来说,即用户实体,其中实体图如下:

图3.2 用户实体图

在该系统中,我们得知一个用户是可以和多个用户进行聊天的,不同的用户可以和不同的人进行聊天所以它们的关系可以说是多对多的关系,即m对n的联系,所以该系统用户聊天的用例图如下:

10

图3.3 客服端的用例图

3.、数据库逻辑结构设计

数据库的概念设计也就是对用户的需求的抽象的表示,每个实体对应的是一张数据库存储的表。它是独立的,不属于任何一个数据模型。但是我们需要将这些E-R模型转换成某一数据库支持的数据模型,这些数据模型需要根据逻辑设计的准则,数据的规划理论等对数据模型进行适当的调整和优化以便形成合理的全局逻辑结构,并设计出用户子模式。这就是数据库逻辑设计所要完成的任务。

对于该系统,可以将逻辑概念结构转换为一般的关系模型。该系统所涉及到的数据

表有一张,用来存放用户信息。

表3.4 user(用户表)对应的实体是用户,用来存放用户信息,用户信息包括用户名和用户密码。 id 2025 2026

图 3.4 user用户表

表 3.5 group(好友组表)对应的实体是分组,用来存放每个用户的好友分组,包括好友的id,好友分组的名称,好友分组的id。

id 1 User_id 2025

图3.5 group好友分组表

name 小超 小明 password email isonline img .. 452 0 0 0 0 time .. .. 123456 123456 Group_id 1 Group_name 我的好友 表3.6 _2025(好友表) 这个表是以生存的id命名的,这个用来存放每个用户添加的好友的信息,包括用户的基本信息,是否在线等情况,如下表所示。

11

id 1 name 小明 isonline 0 group 1

图3.6 _2025 好友表

User_id img 2024 0 email ... 12

联系客服:779662525#qq.com(#替换为@)