询信息给服务器端,如果找到就返回用户服务信息。打开一个用户信息显示界面,该界面会提供一个"添加为好友"按钮,点击后可将此人加为好友。如果未找到,弹出一个信息提示框。
8)查找群并加入群
输入要查找的群ID号,客户端发送一个查询信息给服务器端,如果找到就返回用户服务信息。打开一个群信息显示界面,该界面会提供一个"加入此群"按钮,点击后可将此人加为好友。如果未找到,则弹出一个信息提示框。
9)文件共享
在启动文件传输服务器的共享文件功能之前,要设置它的IP号和端口,如果设置不好。好友将无法下看到这些共享的文件。还有一个重要的步骤就是添加共享文件或目录。最后启动文件共享。
10)下载文件
使用文件传输的客户端要正确配置好服务器的IP和端口号,以及下载好的文件的存放目录。如果其中之一配置不好,文件下载将会失败。设置好以后,点击"连接"按钮,如果配置正确,这时将会看到服务器共享的文件。目前不能支持文件夹下载,当看到一个文件夹以后,可以双击该文件夹并查看文件夹里面的文件。
2.2.2性能分析
本系统由于采用免费的oracle数据库软件,连接数最多不能超过200,所以并发访问数据库的人数不能超过200人。
2.2.3用例图
图2-1系统用例图
2.2.4时序图
客户登陆、注册时的服务器端时序图
图2-2注册、登陆时的服务端的时序图
本图说明:
服务器接每次与一个客户连接以后,就会去创建一个监听线程。通过线程来接收客户端发送的所有数据。如果要查询数据库,监听线程会请求获得一个数据库连接.如果数据库连接已经获得,就把连接交给DBOperation对象,通过此对象可以返回给监听线程必要的结果。最后监听线程会通过Socket将结果返回给客户端。
2.2.5活动图
1)用户登陆活动图
图2-3用户登陆活动图
本图说明:首先填写登陆信息,提交以后服务器会对用户名和密码进行验证。如果不正确,返回一个提示信息。如果登陆成功,就更新在线状态。通知所有好友自己已经上线。
2)客户之间的通信活动图
图2-4客户通信活动图
本图说明:短消息发送以后,服务器端对应的监听线程会接收到一个数据包。此包中包含接收者的信息,如果接收者在线,数据包将会转发到接收者。如果不在线,就写入数据库。
3)客户之间的文件传送活动图
本图说明:客户端向服务器发送文件下载请求。如果服务器端同意下载,就读取文件流并将数据流写入到客户端。客户端读取到文件名之后,立刻创建一个新的文件并将读取的数据写入到文件中。
图2-5文件传送活动图
4)新增好友活动图
根据好友ID号查找好友,如果此ID存在,就将用户信息发送到客户端。同时将好友关系写入到数据库。
图2-6新增好友活动图
5)删除好友活动图
此图说明:客户向服务器发送删除好友请求。服务器接收到删除好友请求以后,将好友关系从数据库中删除。
图2-7删除好友活动图
3. 总体设计
3.1功能模块图
本系统主要由由两个子系统组成:1)文件传输系统;2)聊天子系统。
文件传输系统的功能主要有:1)共享文件;2)查看并下载文件。
聊天子系统的功能有:1)注册;2)登陆;3)添加群;4)查找群5)私聊;6)群聊;7)查看好友资料;8)查找好友;9)添加好友;10)创建好友分组。
图3-1系统功能模块图
3.2数据库设计
3.2.1 E-R图
用户表(QQUser):
属性:id,account(登陆账号),pwd,nickname,sign(个性签名),sex,email,head(头像)
关系:
一个用户可以有多个好友分组。
一个用户可以有多个群。
一个用户可以有多条留言。
好友分组表(Qqperson_group):
属性:id,userid(创建者ID),name(分组名)
关系:一条记录只对应一个用户,但是可以拥有多个组成员。
群表(Qqpublic_group):
属性:id,userid(创建者ID号),name(群名),sign(群公告)
关系:一个群只有一个创建者,但是可以拥有多个群成员。
图3-4系统各表之间的联系图
3.2.2表结构设计
表3-1 客户信息表(qquser)
1 自动id号 Id 整数 2 用户账号 Account 整数 3 用户密码 Pwd 字符 4 用户昵称 Nickname 字符 5 用户签名 sign 字符 6 用户性别 Sex 字符 7 用户邮箱 email 字符 8 用户头像 Head 字符
表3-2 Qq消息表(QQMessage)
1 自动ID ID 整数 2 发信人 Account_from 整数 3 收信人 Account_to 整数 4 发送内容 Content 字符
表3-3 用户分组表(qqpersongroup)
1 自动ID ID 整数 2 拥有者Id userid 整数 3 分组名称 name 字符
表3-4 公共群表(qqpublic_group)
1 自动ID ID 整数 2 创建人 userid 整数 3 群名称 name 整数 4 群的公共消息 sign 字符
表3-5 用户与群的中间表(qquser_publicgroup)
1 自动ID ID 整数 2 加入的群ID groupid 整数 3 加入的用户的ID userid 整数 表3-6 用户与分组的中间表(QQuser_persongroup)
1 自动ID ID 整数 2 加入的分组的id groupid 整数 3 加入分组的用户的id userid 整数 以上各表创建的代码如下:
1)创建用户表
create table qquser(
number primary key,
account number unique,
nickname varchar(100),
sign varchar(500),
sex varchar(10),
email varchar(100),
head varchar(200));
2)创建分组表
create table qqperson_Group(
id number primary key,
userid references qquser(id),
name varchar(100));
3)创建群表
create table qqpublic_group(
id number primary key,
userid number references qquser(id),
name varchar(100),
sign varchar(800));
4)创建消息表
create table qqmessage(
id number primary key,
account_from number,
account_to number,
content varchar(1000));
5)创建用户与群的中间表
create qquser_publicgroup (
id number primary key,
groupid number references qqpublic_group(id) ,
userid references qquser(id););
6)创建用户与分组的中间表
create qquser_persongroup(
id number primary key,
groupid number references qqpublic_group(id) ,
userid references qquser(id));
7)为用户表插入数据
insert into qquser values(1,1,'long','I'm long','male','helongyang@163','48.gif');
insert into qquser values(2,2,'a','aa','male','a@13','48.gif');
insert into qquser values(3,3,'b','bb','male','a@13','48.gif');
insert into qquser values(4,4,'c','cc','male','a@13','48.gif');
insert into qquser values(5,5,'d','dd','male','a@13','48.gif');
8)为分组表和群表插入数据
insert into qqperson_group values(1,1,'my friend');
into qqpublic_group values(1,1,'ha ha','my new group');
9)为用户与群中间表插入数据
insert into qqperson_group(1,1,1);
insert into qqperson_group(1,1,2);
insert into qqperson_group(1,1,3);
insert into qqperson_group(1,1,4);
insert into qqperson_group(1,1,5);
10)为用户与分组中间表加入数据
insert into qqpublic_grou
上一篇:
基于JAVA的android即时通讯软件_毕业论文
下一篇:
高陈基于Java超市账单管理系统