IMA人员管理

IMA人员管理

IMA management

项目需求

部员和部长都可以登陆系统,部长可以进行部员的增删查改等等操作,部员则只能进行查询操作
分为六个部门,除了增删查改操作外,还需要有部门变动的功能
部员要包含 姓名 学号 电话 qq等信息
加入日志功能,可以存储操作日志

项目Github仓库

https://github.com/AlbumenJ/IMA_management

项目环境

Java SE ------jdk8
MySQL   ------mysql8
IDE     ------IntelliJ IDEA 2018.2.3 (Ultimate Edition)

项目代码结构

.  
├── .idea                                                  //IDEA默认配置文件夹  
├── resources                                              //资源目录  
│   └── execute.sql                                        //初始化SQL  
├── src                                                    //源代码目录  
│   ├── META-INF                                           
│   │   └── MANIFEST.MF                                    //信息包  
│   └── cn                                                 
│       └── albumenj                                       
│           ├── dao                                          
│           │   ├── LogCommit.java                         //日志提交  
│           │   └── SqlCommit.java                         //数据增删查改提交  
│           ├── model                                        
│           │   ├── LogModel.java                          //日志模型  
│           │   ├── ResultModel.java                       //数据结果模型  
│           │   ├── DepartmentModel.java                   //部门模型  
│           │   └── UserModel.java                         //用户模型  
│           ├── service                                      
│           │   ├── DepartmentService.java                 //部门数据服务  
│           │   └── UserService.java                       //人员数据服务  
│           ├── util                                         
│           │   ├── commandlineutil                        //命令行模式下交互工具 
│           │   │   ├── Print.java                         //打印工具
│           │   │   └── RequestEnter.java                  //获取输入  
│           │   ├── connectionpool                         //连接池  
│           │   │   ├── ConcurrencySubmit.java             //多线程提交请求  
│           │   │   ├── ConnectionConfig.java              //数据库连接配置文件  
│           │   │   ├── DataCallback.java                  //数据回调接口  
│           │   │   ├── IMyPool.java                       //线程池接口  
│           │   │   ├── MyPollImpl.java                    //线程池具体实现  
│           │   │   ├── PoolSubmit.java                    //数据提交到连接池队列  
│           │   │   └── PooledConnection.java              //数据库具体访问  
│           │   ├── PasswordDecode.java                    //密码加密  
│           │   └── Regex.java                             //正则表达式检测  
│           ├── view                                         
│           │   ├── depertmentpage                         //部门页面  
│           │   │   ├── AddDepartmentPage.java              
│           │   │   ├── DeleteDepartmentPage.java            
│           │   │   ├── ListAllDepartmentPage.java            
│           │   │   ├── ListDepartmentPage.java            
│           │   │   └── ModifyDepartmentPage.java            
│           │   ├── menupage                               //菜单页面  
│           │   │   ├── DepartmentManageMenu.java            
│           │   │   ├── LoginPage.java                       
│           │   │   ├── MenuPage.java                        
│           │   │   └── StaffManagePage.java                 
│           │   ├── staffpage                              //人员页面  
│           │   │   ├── AddStaffPage.java                    
│           │   │   ├── DeleteStaffPage.java                 
│           │   │   ├── ListAllStaffPage.java                   
│           │   │   ├── ListStaffPage.java                   
│           │   │   └── ModifyStaffPage.java                 
│           │   ├── pagemanagement                         //页面逻辑  
│           │   │   ├── DepartmentManage.java                   
│           │   │   ├── MenuManage.java                   
│           │   │   └── StaffManage.java                 
│           │   ├── Manage.java                            //管理页面父类
│           │   ├── Munu.java                              //菜单页面父类
│           │   └── Method.java                            //功能页面父类
│           └── Application.java                           //主程序逻辑实现  
├── README.md                                              //项目说明文件  
└── IMA management.iml                                     //IDEA项目文件  

项目数据库结构

ima_management
├── department                                             //部门
│   ├── no
│   ├── id
│   └── name
├── log                                                    //日志
│   ├── id
│   ├── user
│   ├── action
│   └── time
└── users                                                  //用户
    ├── no
    ├── id
    ├── name
    ├── password
    ├── phone
    ├── qq
    ├── department
    └── permission

连接池结构

cn.albumenj.model.ResultModel
			seed 标志结果编号,在执行完成后凭seed获取结果
			sql SQL执行语句
			mod SQL执行模式
			resultSet SQL执行结果
			result SQL执行结果
cn.albumenj.util.connectionpool.ConnectionConfig
			保存一些关于数据库连接信息、连接池配置信息的常量
cn.albumenj.util.connectionpool.PooledConnection
			与数据库交互的具体实现
			isBusy 标志该连接是否繁忙
			connection 与数据库连接交互的变量
			query(String) 提交数据库执行executeQuery命令
			execute(String) 提交数据库执行execute命令
cn.albumenj.util.connectionpool.IMyPool
			getPooledConnection() 获取一个可用的连接
			createPooledConnection(int) 创建连接池
cn.albumenj.util.connectionpool.MyPoolImpl
			实现IMyPool接口
cn.albumenj.util.connectionpool.ConcurrencySubmit
			实现Runnable接口
			将数据提交到连接中又不会影响主线程运行
cn.albumenj.util.connectionpool.DataCallback
			fetchFinished(ResultModel) 命令执行完回调函数,将结果保存在结果队列中
cn.albumenj.util.connectionpool.PoolSubmit
			实现DataCallback接口
			创建线程将ResultModel提交到ConcurrencySubmit中
			resultModels储存执行结果
			execute(ResultModel) 提交请求
			fetch(double seed) 获取结果

连接池实现思路

主线程:
	1. dao 创建ResultModel;写入sql、mod;提交至PoolSubmit中
	2. PoolSubmit 写入seed;从线程池中获取连接;创建线程ConcurrencySubmit;提交请求;释放主函数占用
	3. dao 多次尝试从PoolSubmit中获取结果
	4. dao 获取到结果后处理结果

数据处理线程:
	1. ConcurrencySubmit 提交请求至PooledConnection、获取执行结果;将结果提交至DataCallback中保存
	2. PoolSubmit 保存结果等待主线程调出结果

权限设置

1 → 会长        → 具有对成员、部门增删查改的权限
2 → 部长        → 具有对成员增删查改、部门查询的权限
3 → 普通成员    → 具有对成员、部门查询的权限

项目默认配置

默认学号:1
默认密码:1

Mark一些笔记

包名要保持小写
类名首字母大写以避免与变量名重叠,影响代码可读性
驼峰命名法
dao包只负责对与数据交互的增删查改、工具要放在util包中、将界面分离出来以优化代码结构

项目存在问题

存储数据库执行结果的resultModels是否线程安全
代码规范问题

完成后一点感想

这个项目如果只是为了达到项目要求的话挺容易的(可以参考下一条博客)
所以为了让它更完(zuo)美(si)加入了模仿Spring思路的分包、连接池、密码加密
每次push完代码后总会发现还有不足的地方
从26号开的坑填到现在差不多一个段落了
我知道这里面肯定还有各种问题,欢迎私聊斧正

这算是大一开学后的第一个小的项目,有点找回了以前打代码的那种快乐
离目标还很远,继续努力鸭

最后一点写给我自己看的:
代码规范真的很重要!
代码规范真的很重要!!
代码规范真的很重要!!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值