💗博主介绍:✌全网粉丝15W+,CSDN全栈领域优质创作者,博客之星、掘金/知乎/b站/华为云/阿里云等平台优质作者、专注于Java、小程序/APP、python、大数据等技术领域和毕业项目实战,以及程序定制化开发、文档编写、答疑辅导等。
👇🏻 精彩专栏 推荐订阅👇🏻
计算机毕业设计精品项目案例(持续更新)
🌟文末获取源码+数据库+文档🌟
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以和学长沟通,希望帮助更多的人
一.前言
现如今科技的卓越发展,时代环境的大变革。人们生活变得越来越多元化,这种多元化很大程度上由互联网科技发展引起,日新月异的互联网让我们实现了众多的不可能。利用网络进行信息管理改革已经成为了人们追捧的一种趋势。“基于小程序的企业考勤系统”是运用java语言,springboot框架,以Mysql数据库为基础而来发出来的。为保证我国经济的持续性发展,必须要让互联网信息时代在我国日益壮大,蓬勃发展,一个好的基于小程序的企业考勤系统,方便用户通过注册登录微信端查看部门信息、公司公告,修改个人信息等,管理员对信息进行维护与管理,还能帮助工作者从琐碎冗杂的日常管理事务中解放出来,更专心投入在其它事务上,因而能更好的履行它自身的社会责任,这个基于小程序的企业考勤系统也就间接地为美好社会的创建出了一份力。所以基于小程序的企业考勤系统的设计和实现是必要的也是很有意义的。
二.技术环境
jdk版本:1.8 及以上
ide工具:Eclipse或者 IDEA,微信小程序开发工具
数据库: mysql5.7 (必须5.7)
编程语言: Java
java框架:SpringBoot
maven: 3.6.1
详细技术:HTML+CSS+JAVA+SpringBoot+MYSQL+VUE+MAVEN+微信开发工具
三.功能设计
本基于小程序的企业考勤系统是为了提高用户查阅信息的效率和管理人员管理信息的工作效率,可以快速存储大量数据,还有信息检索功能,这大大的满足了员工和管理员这二者的需求。操作简单易懂,合理分析各个模块的功能,尽可能优化界面,让员工和管理员能使用环境更好的系统。
对比要实现的功能来分析出用户的需求,可以让用户在线对其进行查看部门信息、公司公告等信息,这不仅满足了用户的需求,还大大的节省了时间。因此,管理员对信息进行添加、修改、删除、查看,可以提高管理员的工作效率。
(1)管理员用例图如图所示;
(2) 员工用例图如图所示:
系统总体功能结构图如下所示:
程序上交给用户进行使用时,需要提供程序的操作流程图,这样便于用户容易理解程序的具体工作步骤,现如今程序的操作流程都有一个大致的标准,即先通过登录页面提交登录数据,通过程序验证正确之后,用户才能在程序功能操作区页面操作对应的功能。
四.数据设计
数据库概念模型的设计是为了抽象真实世界的信息,并对信息世界进行建模。它是数据库设计的强大工具。数据库概念模型设计可以通过E-R图描述现实世界的概念模型。而且Mysql数据库是自我保护能力比较强的数据库,限于篇幅要求,仅列出关键部分实体属性图和E-R图,如下所述。
五.部分效果展示
5.1用户微信端功能实现效果
登录界面,首先双击打开微信小程序端系统,连上网络之后会显示出本系统的登录界面,这是进入小程序的第初始页面“登录”,能成功进入到该登录界面则代表小程序的开启是成功的,接下来就可以操作本系统所带有的其他所有的功能,如图所示。
小程序首页是员工注册登录后进入的第一个界面,员工可通过小程序端首页进入对应的页面或者通过小程序最下面的那一行导航栏中的“首页、部门信息、公司公告、我的”,也可以点击“我的”进入我的页面,在我的页面可以对上班打卡、员工考勤、员工工资、加班申请、请假申请、调动申请等进行详细操作,如图所示。
员工点击部门信息,在部门信息页面的搜索栏输入部门名称,进行搜索,还可以查看部门名称、负责人、联系方式、封面、部门人数、点击次数等信息,如图所示。
员工点击公司公告,在公司公告页面的搜索栏输入标题,进行搜索,然后查看标题、发布时间、封面、点击次数等信息,如图所示。
在我的功能界面,员工点击“我的”进入我的页面,在我的页面可以对上班打卡、员工考勤、员工工资、加班申请、请假申请、调动申请等进行详细操作,如图所示。
5.2管理员服务端功能实现效果
管理员进行登录,进入系统前在登录页面根据要求填写用户名和密码等信息,点击登录操作,如图所示。
管理员登录系统后,可以对系统首页、员工、部门信息、上班打卡、员工考勤、员工工资、加班申请、请假申请、调动申请、公司公告、轮播图管理、个人资料等进行相应的操作管理,如图所示。
员工信息功能在视图层(view层)进行交互,比如点击“新增”按钮或填写员工信息表单。这些员工信息动作被视图层捕获并作为请求发送给相应的控制器层(control1er层)。控制器接收到这些请求后,调用服务层(service层)以执行相关的业务逻辑,例如验证输入数据的有效性和与数据库的交互。服务层处理完这些逻辑后,进一步与数据访问对象层(DAO层)交互,后者负责具体的数据操作如搜索、新增、更新或删除员工信息,并将操作结果返回给控制器。最终,控制器根据这些结果更新视图层,以便员工信息功能可以看到最新的信息或相应的操作反馈。在员工信息页面的输入栏中输入工号、姓名、性别、部门进行搜索,可以查看到员工信息详细信息,并根据需要进行修改或者删除等操作;如图所示。
管理员点击上班打卡,在上班打卡页面输入工号、姓名、部门、头像、类型、打卡时间、打卡地点、备注等信息,然后进行搜索或删除上班打卡等操作,如图所示。
管理员点击员工考勤,在员工考勤页面对工号、姓名、部门、头像、考勤日期、考勤状况、备注等信息,然后进行搜索、新增或删除员工考勤等操作,如图所示。
管理员点击员工工资,在员工工资页面对月份、工号、姓名、工资条、基本工资、加班工资、绩效奖金、其他补助、扣款金额、实发工资、登记日期等信息,然后进行搜索、新增或删除员工工资等操作,如图所示。
管理员点击加班申请,在加班申请页面对工号、姓名、部门、头像、开始时间、结束时间、申请时间、审核回复、审核状态等信息,然后进行搜索或删除加班申请等操作,如图所示。
管理员点击请假申请,在请假申请页面对工号、姓名、部门、头像、请假类型、请假时间、请假天数、审核回复、审核状态等信息,然后进行搜索或删除请假申请等操作,如图所示。
管理员点击调动申请,在调动申请页面对工号、姓名、头像、原部门、申请部门、申请日期、审核回复、审核状态等信息,然后进行搜索或删除调动申请等操作,如图所示。
部分功能代码
/**
* 上传文件
*/
@RequestMapping("/upload")
@IgnoreAuth
public R upload(@RequestParam("file") MultipartFile file,String type) throws Exception {
if (file.isEmpty()) {
throw new EIException("上传文件不能为空");
}
String fileExt = file.getOriginalFilename().substring(file.getOriginalFilename().lastIndexOf(".")+1);
File path = new File(ResourceUtils.getURL("classpath:static").getPath());
if(!path.exists()) {
path = new File("");
}
File upload = new File(path.getAbsolutePath(),"/upload/");
if(!upload.exists()) {
upload.mkdirs();
}
String fileName = new Date().getTime()+"."+fileExt;
if(StringUtils.isNotBlank(type) && type.contains("_template")) {
fileName = type + "."+fileExt;
new File(upload.getAbsolutePath()+"/"+fileName).deleteOnExit();
}
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
if(StringUtils.isNotBlank(type) && type.equals("1")) {
ConfigEntity configEntity = configService.selectOne(new EntityWrapper<ConfigEntity>().eq("name", "faceFile"));
if(configEntity==null) {
configEntity = new ConfigEntity();
configEntity.setName("faceFile");
configEntity.setValue(fileName);
} else {
configEntity.setValue(fileName);
}
configService.insertOrUpdate(configEntity);
}
return R.ok().put("file", fileName);
}
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", username));
if(user==null || !user.getPassword().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(),username, "users", user.getRole());
return R.ok().put("token", token);
}
/**
* 注册
*/
@IgnoreAuth
@PostMapping(value = "/register")
public R register(@RequestBody UsersEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UsersEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
源码及文档获取
文章下方名片联系我即可~
大家点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻
精彩专栏推荐订阅:在下方专栏👇🏻
最新计算机毕业设计选题篇-选题推荐
小程序毕业设计精品项目案例-200套
Java毕业设计精品项目案例-200套
Python毕业设计精品项目案例-200套
大数据毕业设计精品项目案例-200套
💟💟如果大家有任何疑虑,欢迎在下方位置详细交流。