目录
1.1 课程设计的目的
1.2 课程设计的要求
2 系统描述
2.1 界面设计
2.2 注册事件
3 概要设计
3.1 概要设计(体现系统的设计思路和主要功能)
3.2 系统用例图
3.3 系统用例
3.4 开发环境
4详细设计
4.1 系统的类图
4.2 主要算法的流程图
4.3 数据分析与定义
4.3.1 QQLogin
4.3.2 QQMain
4.3.3 QQServer
4.4.4 MyServer
4.4 系统界面设计
5 测试方法和测试结果
5.1 测试用例1
5.1 测试用例2
5.1 测试用例3
5.1 测试用例4
结论和展望
结论
展望
学习编译技术课程的体会和对本门课程的评价
参 考 文 献
1 课程设计的目的和要求
1.1 课程设计的目的
本次设计的时间为1周,目的是通过使用高级语言实现部分算法加强对计算机网络的理解。设计的题目要求具有一定的规模,应涵盖本课程内容和实际应用相关的主要技术。
1.2 课程设计的要求
1、与计算机网络相关。
2、远程CentOS7环境,安装配置 docker,并在上面成功部署MaraiDB。
3、深入理解计算机Socket编程,网络流传输。
4、深入理解线程之间通信
5、深入理解数据库OJBC使用
2 系统描述
本次实验使用CentOS7的vim和VSCode软件,利用Java实现事实聊天软件,和QQ类似的聊天功能。
2.1 界面设计

登入页面

聊天页面
其中组成部件如下
1.JPanel――画布
JPanel可以放在JFrame上面,也可以放在JPanel上面
2.JLabel――文本提示
3.JTextField――单行文本输入
4.JPasswordField――密码

5.JComboBox――下拉框
6.JTextArea――多行文本输入
7.JScrollpane――滚动条

2.2 注册事件
参数应该是实现接口的类的对象
QQLogin e = new QQLogin();
btnLogin.addActionListener(e);
btnReg.addActionListener(e);
btnCancel.addActionListener(e);
如果 getActionCommand 的内容和声明的时候不一致就会出错
3 概要设计
3.1 概要设计(体现系统的设计思路和主要功能)
1、首先用户需要输入正确密码才能登入,否则失败,用户信息存储在数据库里面。
2、相应“发送”按钮事件。将JFrame里面用户输入的内容要转移到JTextArea中
3、将输入的内容村到聊天记录文件
4、用户登入QQ的时候读取聊天文件,内容显示在JTextArea中。
5、显示同时登入的人员,之间可以通过建立网络连接来实现通信。
3.2 系统用例图

图3-1 建立网络连接

图3-2 线程之间通信
3.3 系统用例
表3-4 聊天软件
用例名称
在线聊天软件
简述
通过网络传输,进行聊天
角色
多名用户
前置条件
已经在数据库中的人员
基本流
1. 首先用户需要输入正确密码才能登入,否则失败,用户信息存储在数据库里面。
2. 相应“发送”按钮事件。将JFrame里面用户输入的内容要转移到JTextArea中
3. 将输入的内容村到聊天记录文件
4. 用户登入QQ的时候读取聊天文件,内容显示在JTextArea中。
5. 显示同时登入的人员,之间可以通过建立网络连接来实现通信。
后置条件
成功
特殊需求
无
待解决问题
高并发
3.4 开发环境



4详细设计
4.1 系统的类图

4.2 主要算法的流程图


图4-1 程序流程图
4.3 数据分析与定义
4.3.1 QQLogin
QQLogin的主要功能就是将用户的用户名与密码传输到数据库中进行比对,根据服务器段返回的比对结果,成功切换到QQMain程序执行,失败则退出程序。
数据元素
类型定义
名称
用户名
JLabel
labUser
密码
JLabel
labPass
登入
JButton
btnLogin
注册
JButton
btnReg
取消
JButton
btnCancel
输入面板
JPanel
panInput
4.3.2 QQMain
QQMain就是本程序客户端核心程序,主要就是聊天面板,用户选择聊天人员,即将发送的内容,聊天记录,发送的功能组成。
数据元素
类型定义
名称
发送按钮
JButton
btnSend
小面板
JPanel
panSmall
大面板
JPanel
panBig
4.3.3 QQServer
QQServer的主要功能就是在服务器端进行端口监听,等待其中的一个客户端程序发送聊天消息,并在服务器端实现多个用户之间线程通信,找到需要发送信息的线程,最终该线程将结果发到另一个用户的界面。
数据元素
类型定义
名称
端口监听
ServerSocket
ss
4.4.4 MyServer
MyServer的功能就是与客户端建立联系,将客户端发来的用户名和密码在服务器端的数据库进行匹配,如果存在,则说明成功,如果不存在,则说明失败,并将结果发回到客户端。
数据元素
类型定义
名称
套接字
Socket
s
4.4 系统界面设计
下图是模拟两个用户在远程连接服务器之后,进行的通信界面

5 测试方法和测试结果
5.1 测试用例1
测试目的:服务器段程序是否正常执行

程序5-1 测试用例1
5.1 测试用例2
测试目的:检验登入界面是否正常


5.1 测试用例3
测试目的:检验多用户登入界面是否正常

5.1 测试用例4
测试目的:检验发送信息是否正常


结论和展望
(主要为研制过程,本设计的评价、特点、不足、收获与体会等)
结论
本次实验做的比较简单,但是可以涵盖javaSE的全部知识以及javaEE的数据库操作,在网络编程的地方,传输字符流
展望
本次实验的不足还有很多,路漫漫其修远兮,吾将上下而求索
学习编译技术课程的体会和对本门课程的评价
参 考 文 献
[1] 效果演示 https://www.bilibili.com/video/BV19E411N7CG/
[2] 如何安装MariaDB https://mariadb.com/kb/en/mariadb-package-repository-setup-and-usage/
[3] 杨秉学博客:Mariadb基本操作:https://mp.weixin.qq.com/s?__biz=MzU1OTM3ODQ0MA==&mid=2247486201&idx=7&sn=de1af246628be3bacbdef981fd89f89a&chksm=fc19739ecb6efa880c3e4f4121c97ddf440a8644028ce66db46608f3740fea96beb05bdb500f&mpshare=1&scene=1&srcid=01206GOmlI3ERaOwSZeiOFJC&sharer_sharetime=
[4] 杨秉学博客Docker基础:https://mp.weixin.qq.com/s?__biz=MzU1OTM3ODQ0MA==&mid=2247486201&idx=4&sn=6516ee82a3ed16114134540c14149306&exportkey=AUUgs%2FrAPLEMQwXbP%2BcIoqc%3D&pass_ticket=uprqBeZcd7t1t9eXBZRBE6cz%2FSwMnG7%2BO1kEPaTWIdQ%3D
[5] 杨秉学博客VIM 使用:https://mp.weixin.qq.com/s?__biz=MzU1OTM3ODQ0MA==&mid=2247487277&idx=3&sn=0047fb27a72d665eb8c3f43692d0d801&chksm=fc19764acb6eff5c13f34340182adecfcf754c26c213fe6865811e6c120fe4a45f738d5cec03&mpshare=1&scene=1&srcid=0322LQQvGS7lsmfSRE6j9hGF&sharer_sharetime=