zoukankan      html  css  js  c++  java
  • 聊天程序项目规划(张晨 宋浪峰 贺小宽组)

    小组成员:张晨 宋浪峰 贺小宽

    项目名称:聊天系统

    小组分工:核心功能:张晨,宋浪峰 界面:贺小宽 调试:张晨,宋浪峰

    完成设想:

    运行环境:eclipse

    使用语言:Java语言。

    使用数据库:SQL server 数据库。

    功能需求

    (1)客户端:提供登录、主窗体及聊天等界面及对应的业务,向服务器发送相应的服务请求,并接受相应的处理结果。客户端只负责链接远程服务器,并发出相应的服务请求,不进行核心业务的处理。具体的处理交给服务器,而客户端只接收服务器处理的结果并显示给用户。

    (2)服务器:监控登录信息及在线用户信息,接收客户端的服务请求,并做相应的处理,然后将处理结果发送给客户端。服务器负责处理核心的业务,并负责连接数据库,保存和读取数据。

    (3)客户端TCP通信设计

    设计ClientToServer类,该类实现了Runnable接口,是一个线程。

    主要方法:

    [1] boolean sendLoginInfoToServer(User u) :登录请求。

    [2] void getProgerties():获取配置文件中的服务器IP地址信息。

    [3] void logout(): 下线,通知服务器该用户下线。

    [4]inttoRegister(UserInfoBean user):新用户注册,返回QQ号。

    [5] void noticeUpdate():通知刷新好友信息。

    服务器TCP通信设计

    1)设计ServerThread线程类:处理用户连接服务器请求,并为其启动单独的服务(Server)线程。

    主要方法:

    [1] void run(): 重写线程类Thread的方法,不断的等待客户端的连接请求。

    [2] void pauseThread():暂停服务。

    [3] void reStartThread():恢复服务。

    2)设计Server线程类:处理每个上线用户个各种服务请求。

    主要方法:

    [1] void run():不断的等待用户的请求信息,并判断请求类型。

    [2] void login():处理用户登录。

    [3] void registerNewUser():处理注册新用户

    [4] void queryUser():处理查询用户。

    [5] void addFriend():添加好友。

    [6] void deleteFriend():删除好友。

    [7] void updateOwnInfo():更新自己的信息。

    [8] void logout():下线。

    [9] void queryFriend():查询好友信息。

    2.1.3.2基于UDP的通信

    在进行用户聊天时,采用基于UDP的通信协议。

    客户端UDP通信设计

    设计ClientToServerThread线程类:负责UDP通信。

    主要方法:

    [1]void run():循环等待监听发来的数据。

    [2]void getPropertieInfo():获取通信的服务器的IP地址及本机通信端口。

    [3]void sendData(byte buffer[]):发送数据。

    [4]void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。

    [5]void ObjectToByte(Object obj):将Object型数据转为Byte型。

    [6]void closeSocket():关闭收发数据报套接字。

    服务器UDP通信设计

    设计ClientToServerThread线程类:负责UDP通信,主要是转发用户发送的信息,并保存用户的聊天记录。

    主要方法:

    [1]void run():循环等待监听发来的数据。

    [2]void getPropertieInfo():获取通信的服务器的IP地址及本机通信端口。

    [3]void sendData(byte buffer[]):发送数据。

    [4] void Object ByteToObject(byte[] bytes):将Byte数据转为Object类型。

    [5]void ObjectToByte(Object obj):将Object型数据转为Byte型。

    [6]void closeSocket():关闭收发数据报套接字。

    数据访问层的实现

    2.1.4.1 打开数据库连接类(ConnectionFactory)

    [1]void getPropertiesInfo():从配置文件中获取数据库连接信息。

    [2]Connection getConnection():打开数据库连接。

    2.1.4.2 关闭数据库连接类(DbClose)

    [1]void getPropertiesInfo():从配置文件中获取数据库连接信息。

    [2]void close(Connection conn):关闭数据库连接。

    [3]void close(PreparedStatement pre):关闭数据库语句

    [4]void close(ResultSet rs):关闭结果集

    [5]voidclose(Connection conn, PreparedStatement pre, ResultSet rs)

    2.1.4.3 数据操作类(Dml)

    [1]void insert(UserInfoBean user):增加新用户,插入信息。

    [2]void update(UserInfoBean user):更新用户信息。

    [3]void delete(int qq):删除信息。

    (搜索)

    (4)界面层的实现

    登录界面

    JLoginFrm登陆窗体主要用于用户登陆,注册和找回密码。

    内部类:

    BackgroundPanel 继承于JPanel主要用于设置窗体背景图片

    主要函数:

    1.actionPerformed(ActionEvent e)主要对窗体的按键监听

    2.JLoginFrm()构造函数,控件的初始化。

    注册界面

    JRegisterFrm继承与JFrame主要用于用户基本信息的注册。

    主要函数:

    1. Void setDay()根据不同的年份和月份设置天数

    2.String getBir()以1-1月-2014形式得到用户的生日

    3.getUserInfo()得到用户的所有信息

    聊天界面

    ChatPanel主要用于用户间的聊天通信

    主要函数:

    1、setMessage()设置当前显示所有会话的面板,不可编辑

    2、setSendMessage()设置当前发送消息的面板,可编辑

    3、sendMessage()发送消息,讲发送消息面板的内容发送到会话面板和对方。

    4、sendFile()传输文件

    5、sendImage()发送图片

    6、startShake()发送震动消息

    主界面

    public class findFriendFrm extends JFrame

    //该类负责查找好友界面

    [1] public String getName()//获得找到好友的昵称或者QQ号

    [2] public class InformationFrm extends JFrame

    //该类负责显示好友信息的界面

    用户信息界面

    好友信息界面主要是将从服务端读取的好友的个人信息显示出来。

    [1] publicInformationFrm(UserInfoBean userInfo)

    //在该构造方法中必须传入一个UserInfoBean 的对象,此对象中包含了好友的所有信息

    [2] public class selectGroupFrm extends JFrame

    //该类负责显示添加好友的一个界面

  • 相关阅读:
    利用Navicat向MySQL数据库中批量插入多条记录的方法
    《Spring MVC+MyBatis快速开发与项目实战》-黄文毅2019:一书的源码和配套视频下载地址
    MySQL数据库建库时SQL语句中数据库名、表名用引号的问题以及COLLATE utf8_general_ci的含义
    [转]层行列和经纬度坐标之间的相互转化方法(谷歌地图)
    [Web 前端] VML、SVG、Canvas简介
    [Android Pro] 完美解决 No toolchains found in the NDK toolchains folder for ABI with prefix: mips64el-linux-android
    [Android Pro] so 动态加载—解决sdk过大问题
    [Android Pro] https://blog.csdn.net/gaugamela/article/details/79143309
    [web前端] 去哪儿网前端架构师司徒正美:如何挑选适合的前端框架?
    [web前端] yarn和npm命令使用
  • 原文地址:https://www.cnblogs.com/slf520/p/5513708.html
Copyright © 2011-2022 走看看