# HRMS
**Repository Path**: Mr_EricLin/hrms
## Basic Information
- **Project Name**: HRMS
- **Description**: 人力管理程序系统HRMS是本人使用Java语言开发的管理程序系统,用于参加传智杯程序设计赛道的作品。实现了基本的前台填报信息和后台操作的功能。
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-05-15
- **Last Updated**: 2023-05-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# HRMS
#### 介绍
人力管理程序系统HRMS是本人使用Java语言开发的管理程序系统,用于参加传智杯程序设计赛道的作品。实现了基本的前台填报信息和后台操作的功能。
# README
姓名:林杰
班级:21软件技术4班
程序名称:**人力管理程序系统`Human Resource Manage System`**
人力管理程序系统HRMS是本人使用Java语言开发的管理程序系统,用于参加传智杯程序设计赛道的作品。实现了基本的前台填报信息和后台操作的功能。
## 使用须知
```properties
# 初始用户
id: 00000
password: 123456
# 初始管理员
id: admin
password: admin
```
用户数据保存在`data`下中,其中用户信息是保存在`users.data`中,管理员信息保存在`admins.data`中,填报信息保存在`infos.data`中。
其中,用户可以通过**HRMS程序**进行注册,***程序正常退出***后将会保存在本地文件,下次打开依旧存在
~~而管理员账户目前只能通过**登陆已有的管理员账号操作管理员账户**来进行更改账户信息或者添加账户。~~
## 项目需求
- ###  前台填报
- [x] 对于用户系统,在选择后出现用户登录和注册功能,在用户登录后,出现用户操作界面,并设计一下关于用户操作的基本功能:
- [x] 功能包含填报信息(信息内容为姓名,性别,部门)
- [x] 查询本人信息(查询时显示的信息是姓名,性别,部门,审核状态)
- [x] 修改自身的填报信息,修改自己账号的密码
- [x] 退出功能。
  > 每个用户对应且只对应一个填报信息,填报信息需要有所对应。
- ### 后台管理
- [x] 对于后台系统,在选择后出现管理员登录,在管理员登录后,出现后台操作界面,并设计一下关于后台操作的基本功能:
- [x] 其中功能包含查询所有用户填报的信息
- [x] (采用模糊查询功能,即根据某个词查询关于这个词的信息)*在这个系统中作用不大*
- [x] 修改添加删除用户所填报的信息功能(信息包含姓名,性别,部门,审核状态)
  > 添加用户所填报的信息建议在有用户并未填报信息的基础上
- [x] 添加修改部门名称,审核用户状态的功能(用于审核用户提交的信息状态)
- [x] 退出功能。 
- [x] 对于退出选项,待用户选择后,程序就会正常结束。
 
以上即为该程序设计的基本功能,在完成以上的基本功能后,可选择性的完成下面的附加分选项:
- [x] 在程序运行中,如果出现报错,将会自动处理报错,让程序正常运行(如输入字符不符,不会出现报错字段,采用提示词并使程序正常运行下去)
- [x] 对于该程序的数据存储选项,可通过本地文件存储方式,待程序结束时候自动将数据存储到文件中,在程序的下次加载时候,自动导入之前所存储的数据,例如使上次程序结束后的用户注册的数据能在这次运行的程序中登录。
- [x] 使用自己设计的一个二叉树,栈,队列等数据结构完成以上的程序设计数据存储等方式。
在自己所设计的数据结构中,不得参杂关于程序语言系统自带的数据结构功能(例如:集合,字典等)。
### 特点
1. 使用Vector矢量,通过泛型来存放数据
### 数据结构
- 哈希表 Hash Map
> 性能好,实现比较复杂。
- [x] 哈希集 Hash Set *(放弃)*
>  性能好 实现简单 但是依赖于Hash Map
- 链表 Linked List
>  性能差,实现比较简单。
- [x] 矢量 Vector
> 动态扩充,性能一般,实现难度一般。比较适合
## TODO
- [x] 代码整理及注释
- [ ] 管理账户模块
  > - [ ] 管理用户账户
  > - [ ] 管理管理员账户
- [x] 保存文件及读取文件
- [x] 重复代码的提取,降低程序耦合
- [x] 代码逻辑分层
- [x] 将代码打包,制作可执行程式
### 可优化
- [ ] 针对不同对象采用不同的结构存储
- [ ] 保存数据文件可以保存成纯文本的,读取再通过文本读取,可以优化性能,并且人工增删改预存的账户信息
  > java.io.InvalidClassException: esl.demo.domain.Account; local class incompatible:
  - [ ] 连接数据库,保存到数据库
- [x] 性别男女可以输入一串字符串,只获得首字符,不太合理
- [ ] 生成UUID的方式,对重复UUID的处理
- [ ] 部门可以通过序号选择也可以通过输入完整部门名称来选择
- [ ] 建立部门对象,填报信息中的部门映射到部门对象中
- [ ] 审核状态细分为审核通过、待审核、审核拒绝
- [ ] 优化模糊搜索的算法
  > 先判断用户输入字符串的格式类型(中文、英文、数字)
  >
  > 再进行判断
- [ ] 可以
- [ ] 
#### 软件架构
软件架构说明
#### 安装教程
1.  xxxx
2.  xxxx
3.  xxxx
#### 使用说明
1.  xxxx
2.  xxxx
3.  xxxx
#### 参与贡献
1.  Fork 本仓库
2.  新建 Feat_xxx 分支
3.  提交代码
4.  新建 Pull Request
#### 特技
1.  使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2.  Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com)
3.  你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目
4.  [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目
5.  Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6.  Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)