注意:该项目只展示部分功能,如需了解,评论区咨询即可。
1.开发环境
开发语言:Java
数据库:MySQL
编译工具:Idea、Eclipse、MyEclipse (选其一),微信开发者工具
其他:jdk1.8、Maven
eclipse 下载
mysql 5.7 下载
jdk 1.8 下载
tomcat 8.0 下载
maven 3.5 下载
idea 下载
2.系统的设计背景
随着时代的变化,移动APP的种类和功能逐渐变得多种多样,占用手机的内存也随之越来越大,拿手机游戏举例,单独一个王者荣耀,最初下载占用的内存大概是10个G,后来随着升级包的累加,渐渐游戏内存占用能达到20个G甚至更多,为此人们对手机性能的要求也越来越高,因为如果存储容量被占用太多的时候手机的运转将变得越来越慢,但与此对应的是越高性能的手机价格就越高,且高频的卸载安装也会更加缩短手机的使用寿命,并非大众都能负担,因此几乎不占内存,随开随用的小程序APP就变得炙手可热起来。
尽管随着时代的迁移,计算机技术的发展越来越快,但其核心仍旧不变,大到阿里,知乎等知名大厂的项目,小到个人开发的小游戏,签到系统,读书笔记等,其目的都是为了给人们提供更好的生产生活服务,本文基于校园签到场景,为解决课堂签到时间长,签到准确率不高等问题,设计了一个基于微信小程序开发的学生课堂扫码考勤签到系统,使用工具为微信开发工作者,后端开发语言为java,数据库使用了常用的mysql,采用的后端框架为Sspringboot,是前后端分离开发,设计模式上采用了mvc的设计模式,令数据层,业务层,视图层可以解耦合,有利于后续的更新维护工作。
3 各角色功能模块
3.1 用户
登录、首页、查看课程信息、课程详情、扫码签到、查看签到记录、设置、申请课程、我的管理、在线反馈、更多信息
3.2 管理员
登录、首页、设置、我的管理、添加课程、搜索课程、申请课程、签到主页、查看学生
4 系统页面展示
4.1 学生端功能模块展示
4.2 教师端功能模块展示
5 更多推荐
2023年计算机毕业设计选题大全 计算机毕业设计选题推荐
基于微信小程序的在线小说阅读系统SpringBoot
基于微信小程序的大学生心理预约咨询系统
基于SSM+Vue汽车保养预约系统
基于协同过滤算法的农特产商城微信小程序文章来源:https://www.toymoban.com/news/detail-434493.html
6 部分功能代码
6.1 签到功能核心代码
/**
* 签到控制层
*/
@RestController
@RequestMapping("/api/sign")
public class SignController extends BaseLogService {
@Autowired
private SignService signService;
@Override
protected Class getType() {
return SignController.class;
}
@PostMapping("/create")
public ResponseWrapper<Sign> create(@RequestBody @Validated(value = SignRequest.Create.class) SignRequest request, @CurrentUser User user) {
Sign sign = signService.create(request, user);
ResponseWrapper<Sign> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(sign);
return responseWrapper;
}
@PostMapping("/qrcode")
public ResponseWrapper<Sign> qrcode(@RequestBody @Validated(value = SignRequest.QrCode.class) SignRequest request, @CurrentUser User user) {
Sign sign = signService.qrcode(request, user);
ResponseWrapper<Sign> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(sign);
return responseWrapper;
}
6.2 点名功能核心代码
/**
* 点名控制层
*/
@RestController
@RequestMapping("/api/call")
public class CallController extends BaseLogService {
@Autowired
private CallService callService;
@Override
protected Class getType() {
return CallController.class;
}
@PostMapping("/create")
public ResponseWrapper<Call> create(@RequestBody @Validated(value = CallRequest.Create.class) CallRequest request, @CurrentUser User user) {
Call call = callService.create(request, user);
ResponseWrapper<Call> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(call);
return responseWrapper;
}
@PostMapping("/delete")
public ResponseWrapper<Call> delete(@RequestBody @Validated(value = CallRequest.Delete.class) CallRequest request, @CurrentUser User user) {
callService.delete(request, user);
ResponseWrapper<Call> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(null);
return responseWrapper;
}
@PostMapping("/list/password")
public ResponseWrapper<List<Call>> listByPasswordAndLocation(@RequestBody @Validated(value = CallRequest.ListByPasswordAndLocation.class) CallRequest request, @CurrentUser User user) {
List<Call> calls = callService.listByPasswordAndLocation(request, user);
ResponseWrapper<List<Call>> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(calls);
return responseWrapper;
}
@GetMapping("/list")
public ResponseWrapper<List<?>> list(@CurrentUser User user) {
List<?> calls = callService.list(user);
ResponseWrapper<List<?>> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(calls);
return responseWrapper;
}
@PostMapping("/view")
public ResponseWrapper<Object> view(@RequestBody @Validated(value = CallRequest.View.class) CallRequest request, @CurrentUser User user) {
Object call = callService.view(request, user);
ResponseWrapper<Object> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(call);
return responseWrapper;
}
@PostMapping("/search")
public ResponseWrapper<List<?>> search(@RequestBody @Validated(value = CallRequest.Search.class) CallRequest request, @CurrentUser User user) {
List<?> calls = callService.search(request, user);
ResponseWrapper<List<?>> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(calls);
return responseWrapper;
}
@PostMapping("/list/course")
public ResponseWrapper<List<?>> listByCourse(@RequestBody @Validated(value = CallRequest.ListByCourse.class) CallRequest request, @CurrentUser User user) {
List<?> calls = callService.listByCourse(request, user);
ResponseWrapper<List<?>> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(calls);
return responseWrapper;
}
@PostMapping("/list/student")
public ResponseWrapper<List<SignRecordVo>> listRecord(@RequestBody @Validated(value = CallRequest.ListStudent.class) CallRequest request, @CurrentUser User user) {
List<SignRecordVo> signRecordVos = callService.listStudent(request, user);
ResponseWrapper<List<SignRecordVo>> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(signRecordVos);
return responseWrapper;
}
/**
* 点名二维码
*
* @return
*/
@PostMapping(value = "/qrcode")
public ResponseWrapper<byte[]> qRCode(@RequestBody @Validated(value = CallRequest.QrCode.class) CallRequest request, @CurrentUser User user) {
String content = callService.qrCode(request, user);
byte[] imageData = QRCode.from(content).withSize(500, 500).to(ImageType.PNG).stream().toByteArray();
ResponseWrapper<byte[]> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(imageData);
return responseWrapper;
}
@GetMapping("/export")
public ResponseEntity<byte[]> export(@CurrentUser User user) throws UnsupportedEncodingException {
byte[] body = callService.exportToExcel(user);
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String name = "签到记录(" + dateFormat.format(new Date()) + ").xlsx";
String fileName = new String(name.getBytes("utf-8"), "iso-8859-1");
HttpHeaders headers = new HttpHeaders();
headers.setContentDispositionFormData("attachment", fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
HttpStatus statusCode = HttpStatus.OK;
ResponseEntity<byte[]> entity = new ResponseEntity<>(body, headers, statusCode);
return entity;
}
6.3 课程申请功能核心代码
**
* 课程申请控制层
*/
@RestController
@RequestMapping("/api/course/application")
public class CourseApplicationController {
@Autowired
private CourseApplicationService courseApplicationService;
@PostMapping("/apply")
public ResponseWrapper<CourseApplication> apply(@RequestBody @Validated(value = CourseApplyRequest.Apply.class) CourseApplyRequest request, @CurrentUser User user) {
CourseApplication apply = courseApplicationService.apply(request, user);
ResponseWrapper<CourseApplication> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(apply);
return responseWrapper;
}
@PostMapping("/handle")
public ResponseWrapper<CourseApplication> handle(@RequestBody @Validated(value = CourseApplyRequest.Handle.class) CourseApplyRequest request, @CurrentUser User user) {
CourseApplication apply = courseApplicationService.handle(request, user);
ResponseWrapper<CourseApplication> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(apply);
return responseWrapper;
}
@GetMapping("/list")
public ResponseWrapper<List<CourseApplication>> handle(@CurrentUser User user) {
List<CourseApplication> courseApplications = courseApplicationService.list(user);
ResponseWrapper<List<CourseApplication>> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(courseApplications);
return responseWrapper;
}
@PostMapping("/view")
public ResponseWrapper<CourseApplication> view(@RequestBody @Validated(value = CourseApplyRequest.View.class) CourseApplyRequest request) {
CourseApplication apply = courseApplicationService.view(request);
ResponseWrapper<CourseApplication> responseWrapper = new ResponseWrapper<>();
responseWrapper.success(apply);
return responseWrapper;
}
源码项目、定制开发、代码讲解、答辩辅导
希望和大家多多交流!!文章来源地址https://www.toymoban.com/news/detail-434493.html
到了这里,关于计算机毕业设计-基于微信小程序高校学生课堂扫码考勤签到系统-校园考勤打卡签到小程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!