综合专题学期实训IV综合报告
题目 基于Java的聊天系统设计与实现
所在院系 计算机与信息工程学院
学科专业名称 计算机科学与技术
导师及职称 夏端峰(副高)、黄烜(讲师)
撰写时间 2023年6月16日
目 录
1 概述 1
2 相关技术 1
2.1 服务器软件 2
2.2 DBMS选用 2
2.3 开发工具 2
3 系统需求分析 2
3.1 功能需求描述 2
3.2 非功能需求描述 2
4 系统概要设计 4
4.1 系统总体结构 4
4.2 功能模块划分 5
4.3 接口设计 6
5 数据库设计 6
5.1 概念模型设计 6
5.2 逻辑模型设计与规范化 7
6 系统详细设计 8
6.1 子系统划分与界面 8
6.2 子系统各模块的详细设计 16
7 系统测试 18
7.1 测试计划 18
7.2 测试用例 20
7.3 测试结果分析与建议 29
参考文献 31
基于Java的聊天系统设计与实现
1 概述
互联网技术的迅速发展,使得互联网成为了各类企业必须涉及的部分,同时互联网技术的发展更为成熟,使得各种基于互联网开发的信息系统变成了企业公司、部门单位提高工作效率的优秀方法。另外,即时通讯系统的开发已经很多的实例,技术的要求度并不高,各类进行开发的软件获取并不困难,所以成功开发是可行的。通信软件为我们提供了诸多的方便,使我们逐步享受信息时代的便捷。大家最熟悉的即时通信软件就是QQ了,因为它几乎已经融入了我们每个人的日常生活。由此可见,生活在信息时代的人们对即时通信、聊天软件有巨大的需求,这样的软件也将为我们节省大量的时间和金钱,或许还能成为我们发家致富的工具,比如:产品的推介、售后服务及技术交流等。仿QQ聊天系统是基于MySQL数据库开发工具进行设计,理论研究与实践相结合,利用数据库技术,Java技术等对聊天系统的开发设计进行研究。以Java技术为核心,利用计算机局域网通信机制原理(例如TCP/IP协议、客户端/服务器端模式)、网络编程设计方法等完成了一款适合局域网的聊天系统。
2 相关技术
仿QQ聊天系统是基于MySQL数据库开发工具进行设计,理论研究与实践相结合,利用计算机技术、数据库技术,java技术等对腾讯QQ聊天系统的开发设计进行研究以JAVA技术为核心,利用计算机局域网通信机制原理(例如TCP/IP协议、客户端/服务器端模式(C/S模式)、网络编程设计方法等)完成了一款适合局域网的仿QQ聊天系统。该系统主要由一个聊天服务器端程序和一个聊天客户端程序两块组成。前者通过Socket套接字建立服务器,服务器能读取、转发客户端发来的信息,并能刷新用户列表;后者通过与服务器建立连接来进行客户端与客户端的信息交流。
2.1 服务器软件
默认情况下,MySQL 绑定地址是127.0.0.1,只有 localhost 用户可以与 MySQL数据库交互。
2.2 DBMS选用
选择MySQL作为DBMS,MySQL数据库系统具有非常强大的查询功能,如创建数据库、编写和修改表等。MySQL为用户提供了高级的数据库功能,可以支持多种数据库应用程序,包括关系型数据库管理系统、批量报告处理系统、远程数据库存取系统、数据库搜索引擎、索引文件管理系统等。
2.3 开发工具
Eclipse是一个开放源代码的软件开发项目,专注于为高度集成的工具开发提供一个全功能的、具有商业品质的工业平台。它主要由Eclipse项目、Eclipse工具项目和Eclipse技术项目三个项目组成,具体包括四个部分组成——Eclipse Platform、JDT、CDT和PDE.JDT支持Java开发、CDT支持C开发、PDE用来支持插件开发,Eclipse Platform则是一个开放的可扩展IDE,提供了一个通用的开发平台。
3 系统需求分析
3.1 功能需求描述
系统功能有注册、编辑个人资料、好友管理、聊天记录管理等,使用用例图描述如图3-1所示。
3.2 非功能需求描述
(1)用户界面需求
主界面为类似于qq的好友列表为主,显示出用户头像、用户名、状态等等,还能通过好友列表查看哪些好友在线并进行聊天。不过在登录前,还有启动服务器和注册的界面,登录界面中应含有记住密码和自动登录的选项,颜色应简约大气,减少用户发生错误选择的可能,与平时qq聊天系统颜色相近,字体大小应清晰,布局合理。
(2)性能需求
软件开发工具:eclipse、MySQL
运行平台:window7以上
响应时间:<100ms
更新处理时间:<1min
本系统为普通聊天系统,处理数据量相对有限,故仅适合于网络用户等,性能较好。
(3)可靠性需求
硬件可靠性:硬件要能稳定运⾏,⽆故障。另⼀⽅⾯,设备要⽀持冗余备份,如系统⽀持双电源,当⼀个电源坏了时,另⼀个仍然可⽤。
软件可靠性:为了避免硬件故障导致软件不可⽤,我们将软件安装在多台设备上。此时,如果⼀台设备坏掉了,也不会影响软件的使⽤。定期进⾏数据备份,这样软件就可以快速从错误中恢复,也避免⼈为因素造成系统损坏。
总的来说,要及时更新系统。
(4)可扩展性需求
在⽹络拓扑结构⽅⾯,所选择的拓扑结构是⽅便扩展,要能满⾜⽤户⽹络规模发展需求。在⽹络拓扑结构中,⽹络扩展需求全⾯体现在⽹络拓扑结构的三层,在⽹络应⽤系统功能配置上⼀⽅⾯要全⾯满⾜当前及可预见的未来⼀段时间内的应⽤需求,另⼀⽅⾯要能⽅便地进⾏功能扩展,可灵活地增、减功能模块。
(5)安全需求
主要表现在三个方面,一是操作系统本身的缺陷带来的不安全因素,主要包括身份认证、访问控制和系统漏洞等;二是对操作系统的安全配置问题;三是病毒对操作系统的威胁。
(6)故障处理需求
磁盘碎片过多,数据库存储空间不够,引起数据库访问变慢等问题需要对磁盘进行扩展和维护。执行程序非正常退出,响应确实,修改源代码前应备份。数据库没启动引起访问问题,须启动数据库服务器。
图3-1 系统用例图
4 系统概要设计
4.1 系统总体结构
系统分为服务器和客户端两个独立的程序,通过socket进行通信,采用IPv4,TCP协议进行传输。如图4-1所示。![在这里插入图片描述](https://img-blog.csdnimg.cn/2089ae0b1a7a4775a25511364d8d0620.png
图4-1 流程图
4.2 功能模块划分
该项目管理系统主要基于C/S设计模式,系统设计的功能有:登陆注册功能和发送消息模块功能。其功能模块图如图2-1所示:
图4-2 功能层次图
4.3 接口设计
本系统采用图形用户接口,以鼠标和键盘为用户接口,方便用户对系统数据的操作。
模块调用的数据传递方式:
采用Java进行编写编译,与MySQL数据库进行连接,用户可以对数据库进行添加、删除、修改等操作。
5 数据库设计
5.1 概念模型设计
使用PowerDesinger绘制出对应的概念模型以及物理模型。
图5-1 概念模型
图5-2 物理模型
5.2 逻辑模型设计与规范化
按照转换原则将ER图转换成关系模式,并设计表对象的结构
关系模式:
聊天室:(账号,在线人数,在线列表,内容,指定人)
用户:(账号,密码,个性签名,邮箱,性别,生日)
服务器:(账号,当前状态,最后一次登录时间,最后一次在线时间)
查看(账号,密码)
对应的数据库表构建:
图5-3服务器表
图5-4 用户表
6 系统详细设计
6.1 子系统划分与界面
(1)子系统划分
a、服务器端模块介绍:
该模块服务器管理子模块。服务器管理是指用户进入到服务器端界面后,对系统的服务器端所做的一些操作,如启动、停止服务器,查看当前总在线人数。
b、客户端模块介绍:
该模块分为用户登录和聊天室两个子模块。首先,用户登录是指用户通过输入用户名和密码进入到聊天室中,并且聊天室自动连接上服务器。聊天室模块是指系统聊天室所具有的基本功能,如发送、接收信息,查看当前和服务器连接状态,显示发送和接收的信息。
图6-1 聊天系统子系统划分
(2)界面
1)服务器界面:启动服务器
图6-2 启动mysql
图6-3 连接mysql
2)注册界面:用户名,密码,重复密码,选择性别,E-mail,生日,个性签名,选择头像,立即注册和返回按钮
图6-4 注册
3)登录界面:输入账号、密码,记住密码,自动登录,登录按钮以及跳转至注册按钮
图6-5 登录
4)主面板:所有在线用户,所有不在线用户,个人管理
图6-6 查看好友
图6-7 修改个人信息
图6-8 查看好友
5)聊天窗口:显示聊天信息,表情包,文件
图6-9 发送消息
a
图6-10 实现聊天功能
6.2 子系统各模块的详细设计
(1)下面对服务器管理程序流程图做简要叙述。首先,用户运行进入服务器界面。在此界面中可以实现对系统服务器的启动和关闭。启动服务器后,可自动显示当前总在线人数以及自动连接数据库。服务器管理模块流程图如图6-11所示:
图6-11 服务器管理模块流程图
(2)下面对用户登录程序流程图做简要叙述。首先,用户在登录界面中输入用户名和密码,系统在数据库中查询是否有这条数据。如果有,进入聊天室界面,并且在服务器端有用户登录的提示。如果没有,提示用户名或密码错误。用户登录模块流程图如图6-12所示。
图6-12 用户登录模块流程图
(3)下面对聊天室程序流程图做简要叙述。首先,用户在登录界面中输入用户名和密码经过系统验证后进入到聊天室中。在此界面中用户可以实现向其他用户发送信息,接收其他用户发送的信息,查看当前和服务器的连接状态。聊天室模块流程图如图6-13所示。
图6-13 聊天室模块流程图
7 系统测试
7.1 测试计划
(1)测试方法:
a、功能测试/黑盒测试(Functional testing)
功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品。功能测试也叫黑盒测试或数据驱动测试,只需考虑需要测试的各个功能,不需要考虑整个软件的内部结构及代码。一般从软件产品的界面、架构出发,按照需要编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。
在本次测试当中,我们对所有涉及到的功能全都进行了功能测试,我们以产品特性、操作描述和用户方案来帮助我们全面的测试,从而,极尽可能满足用户需求。
本次测试,我们使用了较为稳定的Google Chrome 88.0.4324.104浏览器去进行Client端的测试工具。详细测试平台及开发所涉及技术如表所示7-1所示。
项目 系统软件说明
操作系统 Windows10
数据库 MySQL
开发语言 Java
浏览器 Google Chrome
表7-1 测试系统及运行环境
b、用户界面测试(UI)测试
为了核实用户与软件之间的交互,确保用户界面会通过测试对象的功能来为用户提供相应的访问或浏览功能,确保UI中的对象按照预期的方式运行,确保各个窗口风格(包括颜色、字体、提示信息、图标、等等)都与需求保持一致,或符合可接受标准,能够保证用户界面的友好性、易操作性,而且符合用户操作习惯。
c、流程测试
核实实际业务流程在系统中的完整正确实现。应确保各业务流程内部数据流转及流程之间接口数据的正确,确保角色权限对流程的操作的限制的正确性。
安全性测试
由于本次开发的特殊性,我们对系统的保密性做了专业的安全性测试。从而确保用户、管理员的密码管理安全、应用程序级别与系统级别的安全的安全性。
兼容性测试
确保系统在各种 不同版本不同类项浏览器均能正常实现其功能。
d、白盒测试
在本次测试中,由于系统的特殊性我们也使用了条件组合覆盖和路径覆盖。
条件组合覆盖:在白盒测试中, 选择足够的测试用例,使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。
路径覆盖:是每条可能执行到的路径至少一次。
(2)测试环境与辅助工具
图7-1 网络拓扑
(4)人员与任务表
表7-2 资源消耗
测试时间 2023年6月15日至2023年6月16日共2天
测试人力 1人×2天+2人×1天=4人天
硬件资源 服务器:PC 2台
客户端:PC 2台
7.2 测试用例
选择聊天软件的2至3个重要的功能进行测试。建议系统测试进行浏览器兼容性测试、分辨率配置测试和功能测试。功能测试的内容包括登录、联系人列表、两人对话。
测试用例 测试记录
用例编号 测试目的/对应需求 输入/预置条件 预期结果 操作过程 结果
1 设置电脑桌面在不同的分辨率的时候,qq的运行情况 设置不同分辨率 qq均能正常运行,只是清晰程度不同
分别设置不同的分辨率,并运行qq查看结果
成功
2 测试登录,当用户名和密码均正确时qq的登录情况
输入正确的用户名,密码
成功登录 输入正确的用户名,密码 成功登录
3 测试登录,当用户名正确和密码不正确时qq的登录情况
输
正确的用户名,
输入错误的密码
报错,不能成功登录 输入正确的用户名,错误的密码 不成功
4 测试登录当用户名不正确但密码正确时qq的登录情况
输
错误的用户名,
输入正确的密码
报错,不能成功登录 输入错误的用户名,正确的密码 不成功
5 测试登录,当用户名和密码均不正确时qq的登录情况 输入错误的用户名,密码 报错,不能成功登录 输入错误的用户名,密码 不成功
6 测试输入一个不存在的用户名,登录情况
输入一个不存在的用户名
报错,不能成功登录 输入一个不存在的用户名 不成功
7 测试自动登录 输入正确的用户名密码,并点击自动登录按钮
下次重新开启qq时系统会自动登录
输入正确的用户名密码,手点击自动登录按针
成功
8 测试同时和多个好友一起聊天
同时和多个好友
一起聊天,打开窗口
可以同时和多个好友聊天
同时和多个好友一起聊打开窗口
成功
9 测试发送表情包 向好友发送表情包 可以向好友发送表情包 点击表情包发送 成功
1)服务器界面:启动服务器
2)启动mysql
3)链接mysql
4)注册界面:用户名,密码,重复密码,选择性别,E-mail,生日,个性签名,选择头像,立即注册和返回按钮
5)登录界面:输入账号、密码,记住密码,自动登录,登录按钮以及跳转至注册按钮
6)主面板:所有在线用户,所有不在线用户,个管理
7)修改个人信息
8)登录多个用户
9)聊天窗口:显示聊天信息,表情包,文件
10)实现聊天功能
7.3 测试结果分析与建议
(1)功能性
系统正确实现了用户所提出的需求,实现了用户的启动与登录、数据库功能、发送消息功能、发送表情包各项功能。
(2)易用性
现有系统实现了易用性,其包括系统中所涉及的查询、添加、删除、修改操作相关提示信息的一致性和可理解性。使用了下拉列框限定名词,使用了更加友好的UI设计等。
(3)可靠性
现有系统容错性较高,数据库稳定性较高。
(4)兼容性
现有系统支持市面上所涵盖的所有操作系统。现有系统未进行其他兼容性测试。
(5)安全性
系统采用C/S设计模式且采用了最先进、稳定的MVC框架作为支撑,在密码传输以及数值计算等方面全部采用了特殊加密传输/存储算法来保证数据的保密性。以及同一用户同一终端多浏览器登录测试和同一用户多终端浏览器登录。
在项目开始时应该制定编码标准,数据库标准,需求变更标准,开发和测试人员都严格按照标准进行,可以在后期减少因为开发,测试不一致而导致的问题,同时也可以降低沟通成本。
项目开发过程当中,应与用户保持较多的沟通,通过沟通之后,能够在很大程度上避免一次性软件开发错误,提升用户满意度。
发布版本的时候,正确布置测试环境,减少因为测试环境,测试数据库的问题而出现的无效bug。开发人员解决bug的时候,填写bug原因以及解决方式,方便bug的跟踪。开发人员在开发版本上发现bug,可以及时与测试人员进行沟通。因为开发人员发现的bug很有可能在测试版本上出现,而测试人员和开发人员的思路不同,有可能测试人员没有发现该bug,而且,这样可以保证发现的bug都能够被跟踪。
参考文献
[1]罗军舟等编著.《TCP/IP协议及网络编程技术》清华大学出版社.
[2]谢希仁.《计算机网络(第八版)》电子工业出版社.
[3]李军译.《即时消息传递系统编程源代码解析》北京:电子工业出版社.