✌全网粉丝20W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌
🍅文末获取项目下载方式🍅
一、项目背景介绍:
当前,中学的化学实验教学越来越重视,为了让学生对化学有更深刻的了解,必须要进行大量的化学实验。然而,由于耗材数量众多,很难有效地管理。因此,研发一个中学化学实验室耗材管理系统显得十分必要。 这个系统可以帮助学校有效地管理实验室耗材的数量,从而提高实验的效率和质量。它可以实现对耗材的自动化管理,包括耗材的入库、出库、分配和回收。同时,它还可以管理预约和使用历史记录,方便管理人员对耗材的使用情况进行监控和评估。 这个系统的开发将使中学的化学实验教学更加高效、科学,更好地满足学生的需求。
二、项目技术简介:
-
JAVA:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
-
Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。 Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
-
Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
-
SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
-
Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
三、系统功能模块介绍:
四、数据库设计:
-
'非常规耗材申请表'(apply)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
user_id | bigint | NULL | 用户ID |
consumables_id | bigint | NULL | 非常规耗材ID |
create_date | datetime | NULL | 创建时间 |
updata_date | datetime | NULL | 更新时间 |
apply_date | datetime | NULL | 申请时间 |
status | bigint | NULL | 申请状态(select)(search)[0:申请中,1:通过,2:驳回,3:完成] |
-
'常规器材预约表'(appointment)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
user_id | bigint | NULL | 用户ID |
equipment_id | bigint | NULL | 常规器材ID |
appointment_date | datetime | NULL | 预约时间 |
create_date | datetime | NULL | 创建时间 |
updata_date | datetime | NULL | 更新时间 |
status | tinyint | NULL | 器材状态(select)(search)[0:预约中,1:完成] |
-
'非常规耗材信息表'(consumables)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
type_id | bigint | NULL | 非常规耗材类型(select)(search) |
name | varchar | NULL | 非常规耗材名称(search) |
price | bigint | NULL | 价格(search) |
remark | varchar | NULL | 备注(search) |
create_date | datetime | NULL | 入库时间 |
updata_date | datetime | NULL | 更新时间 |
delete_date | datetime | NULL | 出库时间 |
status | tinyint | NULL | 非常规耗材状态(select)(search)[0:冻结,1:正常] |
img | varchar | NULL | 头像(img) |
-
'非常规耗材类型表'(consumables_type)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
name | varchar | NULL | 非常规耗材类型名称(search) |
create_date | datetime | NULL | 创建时间 |
updata_date | datetime | NULL | 更新时间 |
-
'常规器材信息表'(equipment)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
type_id | bigint | NULL | 常规器材类型(select)(search) |
name | varchar | NULL | 常规器材名称(search) |
price | bigint | NULL | 价格(search) |
remark | varchar | NULL | 备注(search) |
create_date | datetime | NULL | 入库时间 |
updata_date | datetime | NULL | 更新时间 |
delete_date | datetime | NULL | 出库时间 |
status | tinyint | NULL | 状态(select)(search)[0:冻结,1:正常] |
img | varchar | NULL | 头像(img) |
-
'常规器材类型表'(equipment_type)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
name | varchar | NULL | 常规器材类型名称(search) |
create_date | datetime | NULL | 创建时间 |
updata_date | datetime | NULL | 更新时间 |
-
'用户信息表'(user)
字段名 | 类型 | 默认值 | 列注释 |
---|---|---|---|
id | bigint | NULL | 主键ID |
user_name | varchar | NULL | 用户名(search) |
pass_word | varchar | NULL | 密码 |
real_name | varchar | NULL | 真实姓名(search) |
role | tinyint | NULL | 角色(select)(search)[0:后台管理员,1:前端用户] |
status | tinyint | NULL | 状态(select)(search)[0:冻结,1:正常] |
img | varchar | NULL | 头像(img) |
create_date | datetime | NULL | 创建时间 |
updata_date | datetime | NULL | 更新时间 |
五、功能模块:
-
非常规耗材申请:非常规耗材申请界面可以根据非常规耗材的名称对处于申请中的非常规耗材信息进行搜索,并且可以添加新的非常规耗材使用申请、修改处于申请中的非常规耗材申请、删除申请中的申请信息 此处无法查询、修改、删除已经被管理员处理过的数据,因已经处理过的数据再进行修改删除的话则不符合实际的业务场景
-
常规器材预约:常规器材预约界面可以根据常规器材的名称对处于预约中的常规器材信息进行搜索,并且可以添加新的常规器材使用预约、修改处于预约中的常规器材预约、删除预约中的预约请信息 此处无法查询、修改、删除已经被管理员处理过的数据,因已经处理过的数据再进行修改删除的话则不符合实际的业务场景
-
非常规耗材申请记录:非常规耗材申请记录界面可以查看历史非常规耗材的申请记录,此处的非常规耗材的申请记录是指已经被管理员处理过的数据,在界面上可以根据非常规耗材的耗材名称进行搜索
-
用户与管理员登录:管理员和用户可以分别在对于的界面中进行登录
六、代码示例:
非常规耗材申请
@GetMapping("/all/consumablesType")
public ReturnMsg allConsumablesType() {
List<BaseSelectEntity> list = new ArrayList<>();
List<ConsumablesTypeDTO> dtos = consumablesTypeService.list();
for (ConsumablesTypeDTO dto : dtos) {
BaseSelectEntity baseSelectEntity = new BaseSelectEntity();
baseSelectEntity.setKey(dto.getId());
baseSelectEntity.setValue(dto.getName());
list.add(baseSelectEntity);
}
return ReturnMsg.ok(list);
}
@Override
protected void beforeUpdate(ConsumablesDTO entity) throws Exception {
if(entity.getStatus() != null && entity.getStatus() == 0){
entity.setDeleteDate(new Date());
}
entity.setUpdataDate(new Date());
super.beforeUpdate(entity);
}
常规器材预约
/**
* 默认分页查询
* @param equipmentDTO
* @return
*/
@PostMapping("/page")
public ReturnMsg page(@RequestBody EquipmentDTO equipmentDTO) {
return ReturnMsg.ok(baseService.basePage(equipmentDTO));
}
@GetMapping("/all/equipmentType")
public ReturnMsg allEquipmentType() {
List<BaseSelectEntity> list = new ArrayList<>();
List<EquipmentTypeDTO> dtos = equipmentTypeService.list();
for (EquipmentTypeDTO dto : dtos) {
BaseSelectEntity baseSelectEntity = new BaseSelectEntity();
baseSelectEntity.setKey(dto.getId());
baseSelectEntity.setValue(dto.getName());
list.add(baseSelectEntity);
}
return ReturnMsg.ok(list);
}
非常规耗材申请记录
@Override
protected void beforeSave(ConsumablesDTO entity) throws Exception {
if(entity.getStatus() != null && entity.getStatus() == 0){
entity.setDeleteDate(new Date());
}
entity.setCreateDate(new Date());
entity.setUpdataDate(new Date());
super.beforeSave(entity);
}
用户与管理员登录
@PostMapping("/admin")
public ReturnMsg manageLoginAdmin(@RequestBody Map<String, String> param) {
if (StrUtil.isEmpty(param.get("username")) || StrUtil.isEmpty(param.get("password"))) {
return ReturnMsg.error("用户名或密码错误!");
}
UserDTO userDTO = new UserDTO();
userDTO.setUserName(param.get("username"));
userDTO.setPassWord(param.get("password"));
userDTO.setRole(0);
userDTO.setStatus(1);
QueryWrapper<UserDTO> userDTOQueryWrapper = new QueryWrapper<>(userDTO);
userDTOQueryWrapper.last("limit 1");
UserDTO adminDTOS = userService.getOne(userDTOQueryWrapper);
if (adminDTOS == null) return ReturnMsg.error("用户名或密码错误!");
Map<String, Object> map = new HashMap<>();
map.put("avatar", StrUtil.isNotBlank(adminDTOS.getImg()) ? adminDTOS.getImg() : "https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif");
map.put("introduction", adminDTOS.getRealName() + ",你好!");
map.put("name", adminDTOS.getRealName());
map.put("roles", Arrays.asList("admin"));
map.put("userinfo", adminDTOS);
Map<String, String> returnMap = new HashMap<>();
String uuid = UUID.randomUUID().toString();
returnMap.put("token", uuid);
userInfoMap.put(uuid, JSON.toJSONString(map));
return ReturnMsg.ok(returnMap);
}
七、项目总结:
当前,中学化学实验室耗材管理系统是一个有前途和潜力的项目,旨在解决中学化学实验室耗材管理问题。 该系统分为管理员模块和用户模块,管理员模块负责系统用户管理、管理员用户登录、用户账号分配、用户预约管理、常规器材管理、非常规耗材管理、常规器材分类管理、非常规耗材分类分类管理、采购信息管理(入库出库)、废料回收管理等功能;用户模块提供用户登录、常规器材预约、非常规耗材申请、历史记录查询等功能。 本项目通过使用高效的数据存储结构和算法,以及稳健的架构设计,来保证系统的可靠性和灵活性。通过详细的测试,我们可以确保系统能够满足用户的需求,并且满足软件质量标准。
八、源码获取:
大家点赞、收藏、关注、评论啦 、查看👇🏻👇🏻👇🏻获取联系方式👇🏻👇🏻👇🏻
链接点击直达:下载链接