“基于Java的聊天室”——作业报告word+源代码

“基于Java的聊天室”

——作业报告           

目录

一、功能模块... 2

二、所用技术... 4

三、数据库表设计... 5

三、运行效果... 7

一、功能模块

1、登录

  1. 输入数字“1”,进入登录界面,通过用户输入的昵称和密码,在数据库中查询匹配的记录,若存在匹配则登录成功,否则登录失败,需要重新输入昵称和密码,直到输入成功。

(特殊情况:

提示用户输入昵称,并将用户输入存储在昵称变量中。

    1. 如果用户输入为空,则自动将“冰可乐”赋值给昵称。
    2. 如果用户输入为单个空格,则自动将“可可豆”赋值给昵称。
    3. 如果用户输入为两个连续空格,则“豆沙糕”赋值给昵称。

提示用户输入密码,并将用户输入存储在密码变量中。

    1. 如果用户输入为空,则“abc”赋值给密码。
    2. 如果用户输入为单个空格,则“123”赋值给密码。
    3. 如果用户输入为两个连续空格,则“1234”赋值给密码。

2、添加好友

首先查询数据库users表中的所有未添加且不是本身的用户,显示编号(编号从1开始以此递增),学号、昵称,根据用户输入的编号,找出对应的昵称,然后再查看一次好友表中的是否存在,双重保障,如果不存在,则可最后执行插入操作将好友关系添加到数据库中。

3、删除好友

首先查询数据库中的当前登录用户所有的好友信息(学号、昵称)与编号对应,

根据用户输入的编号,然后找到对应的学号,执行删除操作将好友关系从数据库中删除。

4、进入聊天室

可以实现许多用户进入聊天室私聊,通过解析消息内容,每次输入信息,传出当前客户端信息、目标客户端信息和私聊消息内容到客户端,服务器将相应信息传到目标客户端或者当前客户端,如果客户在线,则私聊消息会传到目标客户端,如果不在线,会提示当前客户端,目标客户不在线。

二、所用技术

1、JDBC(Java Database Connectivity)

使用JDBC与数据库进行交互。通过JDBC提供的API,可以连接数据库、执行SQL语句、获取结果集等操作。

2、Socket通信

Socket通信涉及两个主要组件:服务器端和客户端。服务器端监听着一个特定的网络端口,等待客户端发送连接请求。客户端则发起连接请求,并与服务器建立起连接后进行数据传输。

3、多线程编程

通过创建线程实现客户端的消息接收和发送功能。代码中使用了Thread类创建了一个接收消息的线程。

4. park() 和 unpark()

是用于线程同步和线程间通信的方法,它们是 java.util.concurrent.locks.LockSupport 类的静态方法。

5、Scanner

通过Scanner类获取用户在控制台输入的内容,并根据用户的选择执行相应的操作。

6、HashMap集合:使用HashMap来存储客户端的输出流。将客户端的名称作为键,输出流(PrintWriter)作为值,方便后续根据客户端名称查找其对应的输出流。

三、数据库表设计

chatroom数据库中一共有两个表:users表,friend表,login表。

下面是详细的表格信息:

friend表设计:

列名

数据类型

说明

id

INT(11)

唯一标识好友关系的ID

sNo1

INT(11)

学号1(学生ID

sNo2

INT(11)

学号2(学生ID

这个表格表示了一个名为friend的表格,其中包含了三列:id、sNo1和sNo2。

id 列被指定为主键(PRIMARY KEY),以确保每个好友关系在表中具有唯一的标识。

users表设计:

下面是表格列的详细信息:

列名

数据类型

说明

sNo

INT(11)

学号(学生ID

nname

VARCHAR(60)

昵称

sex

VARCHAR(12)

性别

birth

DATE

出生日期

age

INT(4)

年龄

address

VARCHAR(300)

地址

这个表格命名为 users,包含了六个列。

sNo 列用于存储学号(学生ID),数据类型为整数(integer),长度为11个字符。它被指定为主键,确保每个用户在表中具有唯一的学号。

login表设计:

下面是表格列的详细信息:

列名

数据类型

说明

nname

VARCHAR(60)

昵称

password

VARCHAR(90)

用户密码

这个表格命名为 login,包含了两个列。

nname 列用于存储用户名或昵称,数据类型为变长字符串(varchar),最大长度为60个字符。它被指定为主键,确保每个用户名在表中具有唯一的标识。

四、运行效果

1、启动服务器

2、登录

情况一:

输入1进入登录界面

接着,输入昵称和密码,如果输入错误,则提示重新输入,知道输入成功。

情况二:

选择1可不能输入,按换行符,可自动填充1

输入昵称可不输入:

按换行符,可自动填充冰可乐

按空格+换行符,可自动填充可可豆      

按空格+空格+换行符,可自动填充豆沙糕

输入密码可不输入:

按换行符,可自动填充abc

按空格+换行符,可自动填充123          

按空格+空格+换行符,可自动填充234

登录成功后给出提示,并输出功能菜单

3、添加好友

首先查询数据库中的所有为未添加且不是本身的用户,显示编号,学号、昵称,

根据用户输入的编号,找出对应的昵称,然后再查看一次好友表中的是否存在,双重保障,如果不存在,则可最后执行插入操作将好友关系添加到数据库中。

4、删除好友

首先查询数据库中的当前登录用户所有的好友信息(学号、昵称)与编号对应,

根据用户输入的编号,然后找到对应的学号,执行删除操作将好友关系从数据库中删除,输入错误会要求重新输入。

5、进入聊天室私聊

客户冰可乐给客户可可豆聊天:

客户kkd给客户冰可乐聊天:

客户豆沙糕给客户可可豆聊天:

客户可可豆退出(输入exit)与客户冰可乐的私聊,选择和客户豆沙糕私聊:

聊天内容:

服务器:

“1”,表示一个服务器接受套接字

  • 30
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值