Java面向对象与多线程实战
背景:
武汉理工大学(WHUT)“面向对象与多线程综合实验”课程项目实现!(无GUI最终版(实现client-server网络编程))。
目标:
运用Java语言,以迭代方式逐步编程实现一个 小型档案管理系统。由此了解软件开发的一般过程,深入理解面向对象语言的基本概念和基本原理,理解和掌握继承与多态、异常处理、输入输出流、GUI设计、JDBC数据库操作、网络编程
、多线程等技术;熟练掌握在Java语言环境下,上述技术的具体实现方法。
系统迭代:
档案管理系统分为四个迭代版本:
- 以缓存存储用户信息、文件信息、案宗信息。
- 以文件作为容器存储用户信息、文件信息、案宗信息。
- 以数据库作为容器存储用户信息、文件信息、案宗信息。
- 以数据库为容器实现Client与Server端的多线程版本。
博主实现了以上全部4个版本;(注
:因为Swing、Jframe太过垃圾,余不忍破坏代码的整洁性,故所有版本无GUI)
博主已将最终版 “Version-4——以数据库为容器实现Client端与Server端的多线程版本”的源码,放到了个人github仓库,欢迎大家star、fork😁。
github仓库链接: https://github.com/RaySunWHUT/Object-oriented-and-multi-threading
系统功能模块:
档案管理系统分为三个模块:
- 用户管理。
- 文件管理。
- 案宗管理。
各模块具体功能如下:
-
用户管理模块:
(1) 新增用户
(2) 删除用户
(3) 修改用户信息
(4) 列出用户
(5) 清空用户 -
文件管理模块:
(1) 上传文件
(2) 下载文件
(3) 删除文件
(4) 修改文件
(5) 列出文件 -
案宗管理模块:
(1) 上传案宗
(2) 下载案宗
(3) 删除案宗
(4) 查找案宗
(5) 修改案宗信息
(6) 列出案宗
档案管理系统的用户群体分为以下三类:
Administrator:系统管理人员。
Browser:档案浏览人员。
Operator:档案录入人员。
不同的用户群体具有不同的使用权限,以下分别介绍:
-
Administrator权限:
(1) 新增用户
(2) 修改用户
(3) 删除用户
(4) 列出用户
(5) 清空用户
(6) 修改本人密码
(7) 清空用户
(8) 列出文件
(9) 下载文件
(10) 列出案宗
(11) 下载案宗 -
Browser权限:
(1) 下载文件
(2) 列出文件
(3) 修改本人密码
(4) 列出案宗
(5) 下载案宗
(6) 查找案宗 -
Operator权限:
(1) 上传文件
(2) 下载文件
(3) 列出文件
(4) 删除文件
(5) 清空文件
(6) 修改本人密码
(7) 上传案宗
(8) 下载案宗
(9) 列出案宗
(10) 删除案宗
(11) 修改案宗
(12) 查找案宗
(13) 清空案宗
下面以用例图
来详细说明各类用户的权限:
Administor:
Operator:
Browser:
总体设计思路:
利用JavaSE以及网络编程Socket与多线程Multi-Thread来实现多Client端与Server端通信。
并且,项目中应用到了Java 反射机制;可以说,这是一个纯手动实现的MVC框架的具象化项目;
包括:
- 模型(
M
odel):domain. - 视图(
V
iew): 命令行界面. - 控制器(
C
ontroller): controller.
下图为Java Web中MVC模式的编程思路,博主实现的项目与MVC模式的原理相同,不过更贴近底层,可以让大家更好的理解网络编程、Java反射机制 等底层基础知识。
开发流程:
Version-1:
采用命令行交互的方式,以Hashtable缓存为容器完成最基本的对用户、文件、案宗的增、删、查、改,并实现对不同用户群体的权限控制。
Version-2:
采用命令行交互的方式,以本地文件为容器利用文件I/O流来实现对用户、文件、案宗的增、删、查、改,并实现对不同用户群体的权限控制。
Version-3:
采用命令行交互的方式,以数据库为容器实现对数据库表userInfo、documentInfo、archiveInfo的insert、update、delete、select 等操作。
Version-4:
采用命令行交互的方式,以数据库为容器结合网络编程Socket以及多线程的知识实现多Client端和Server端的服务器交互。
大致是这样,详情大家可以参考我的github仓库:https://github.com/RaySunWHUT/Object-oriented-and-multi-threading。
最后附上,当年,大二时完成实践后的心得体会😁。