[TOC]
- 浏览市场上发布的各类桌游简介以及评分
- 搜索自己要玩的桌游
- 用户注册功能:注册之后进行游戏记录
- 记录功能:记录游戏对战日期、局数、参与玩家和胜负情况
- 查看自己游玩的历史记录,和统计信息
- Windows 10 Pro 2004,macOS 11.0
- IntelliJ IDEA 2020,Java 8 with JavaFX
- mysql Ver 14.14 Distrib 5.7.31, for Linux (x86_64)
- 采用标签页设计,实现
![](guide.assets/Blank diagram.png)
用户对GUI操作,软件将Client端的参数通过Socket传给Server端,Server端通过Dao数据库访问对象与数据库进行交互,最后返回数据,将结果呈献给用户。
view视图中所有显示的内容,对用户输入的响应,相应的全在对应的Controller(控制器)中完成。
实现的功能如上。
- 模型(Model) 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。
- **视图(View)**能够实现数据有目的的显示。
- **控制器(Controller)**起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。
- **Dao (Database Access Object) **用于访问数据库的对象
- **资源 (resource) **相关资源,例如描述页面风格的CSS文件,和图片资源
- **transport ** 用于设计底层的通信,负责C-S通信
- **util **各种实用工具类,比如加密,json解析,xml解析
数据库架设在阿里云服务器上
各个table设计如下:
user(user_id,username,passwd);
play_history(ph_id,victory_player_id);
boardgame(bg_id,bg_name,introduction);
comment(cm_id,cm_content,rate);
play(user_id,ph_id);
game_played(bg_id,ph_id);
comment_game(bg_id,cm_id);
user_comment(user_id,cm_id);
类 | 说明 |
---|---|
BoardBrowserControllor | 桌游详情浏览页面控制器 |
LoginController | 登录控制器 |
LogPlayController | 记录游玩窗口的控制器 |
SearchController | 搜索入口界面的控制器 |
UserController | 用户信息界面的控制器 |
类 | 说明 |
---|---|
BoardGameDao | 桌游数据库交互对象 |
UserDao | user table database access object 访问User表 |
- 资源目录
- 包含 缩略图,描述页面的fxml文件,css文件
类 | 说明 |
---|---|
BoardGameModel | 桌游详情页面 |
GameLog | 游戏记录对象 |
User | 用户实体类 |
- 程序包 model.boardgamefetched,其中内容是由json文件通过json字符串转java实体类工具自动生成的
类 | 说明 |
---|---|
BoardGameFetched | 自动生成模型 Auto-generated: 2020-11-28 18:54:7 |
Expansions | 自动生成模型 Auto-generated: 2020-11-28 18:54:7 |
HotBoardGame | 热榜桌游 |
PlayerPollResults | 自动生成 Auto-generated: 2020-11-28 18:54:7 |
- 程序包 model.search, 如上
类 | 说明 |
---|---|
Boardgame | 自动生成 Auto-generated: 2020-11-29 1:4:13 |
Boardgames | 自动生成 Auto-generated: 2020-11-29 1:4:13 |
BoardGameSearched | 自动生成 Auto-generated: 2020-11-29 1:4:13 |
Name | 自动生成 Auto-generated: 2020-11-29 1:4:13 |
model包里都是一些数据库里需要操作的实体,属性就对应了数据库中相应数据表的相关属性
类 | 说明 |
---|---|
ClientTrans |
用于客户端与服务端通信 |
Server |
用于服务端的程序,其中使用了线程池以处理并发的操作 虽然监听的是本地的连接请求,但是可以将程序放在服务器上运行,接收来自互联网的请求 |
限定符和类型 | 方法和说明 |
---|---|
static void |
main(java.lang.String[] args) |
void |
start() 用于开始服务器端的服务 |
限定符和类型 | 方法和说明 |
---|---|
boolean |
connect() 连接 |
boolean |
connect(java.lang.String ip, int port) 连接到服务端 |
static void |
main(java.lang.String[] args) |
java.lang.Object |
readObj() 从Socket对象的输入流读出传输的对象 |
boolean |
writeObj(java.lang.Object obj) 向Socket对象的输出流写入传输对象 |
类 | 说明 |
---|---|
Database | 用于连接数据库和数据库初始化 |
JsonConvert | 用于装换Json字符串为Java Beans对象 |
SecureHash | SHA(Secure Hash Algorithm,安全散列算法),数字签名等密码学应用中重要的工具, 被广泛地应用于电子商务等信息安全领域。 |
Time | 用于生成带有时间戳的输出 |
MyGetRequest | 用于访问网络数据接口的类 实现了request的get方法 |
异常错误 | 说明 |
---|---|
AccountAlreadyExistException | 账户已经存在 |
AccountNotExistException | 账户不存在 |
NoSearchResultException | 无搜索内容 |
OtherException | 其他错误 |
WrongPassWdException | 密码错误 |
类 | 说明 |
---|---|
Entrance | 程序入口 |
Home | 主界面的View对象 |
LoginPane | 登陆界面的结构,继承了VBox |
Main | 入口(login) |
MainPage | 已过时 |
- 程序包 view.myLayout
类 | 说明 |
---|---|
BoardBrowserVBox | 浏览页面的主要构成对象 |
GameEntry | 瀑布流中的桌游条目 |
GameEntryInUser | user中的桌游条目,继承基础条目类型,不显示评分而是显示日期和玩家。 |
HomeStream | Home界面布局 |
LogPlay | LogPlay界面布局 待优化 |
MainTabLayout | 主界面标签页布局 |
SearchMain | Search界面布局 |
UserMain | User界面布局 |
- 程序包 view.myStage
类 | 说明 |
---|---|
ProgressFrom | 已过时 |
SearchResultStage | 展现搜索结果的窗口描述对象,绑定了相关事件的监听器 |
多线程设计采用了Java封装好的线程池类,每次客户端和服务端连接时,服务器则会新创建一个线程用来与客户端通信,当线程池满时,客户端的将会排队等候。