注意:該項目只展示部分功能,如需了解,評論區(qū)咨詢即可。
1.開發(fā)環(huán)境
開發(fā)語言:Java
數(shù)據(jù)庫:MySQL
編譯工具:Idea、Eclipse、MyEclipse (選其一),微信開發(fā)者工具
其他:jdk1.8、Maven
eclipse 下載
mysql 5.7 下載
jdk 1.8 下載
tomcat 8.0 下載
maven 3.5 下載
idea 下載
2.系統(tǒng)的設(shè)計背景
???????隨著時代的變化,移動APP的種類和功能逐漸變得多種多樣,占用手機的內(nèi)存也隨之越來越大,拿手機游戲舉例,單獨一個王者榮耀,最初下載占用的內(nèi)存大概是10個G,后來隨著升級包的累加,漸漸游戲內(nèi)存占用能達到20個G甚至更多,為此人們對手機性能的要求也越來越高,因為如果存儲容量被占用太多的時候手機的運轉(zhuǎn)將變得越來越慢,但與此對應(yīng)的是越高性能的手機價格就越高,且高頻的卸載安裝也會更加縮短手機的使用壽命,并非大眾都能負擔(dān),因此幾乎不占內(nèi)存,隨開隨用的小程序APP就變得炙手可熱起來。
???????盡管隨著時代的遷移,計算機技術(shù)的發(fā)展越來越快,但其核心仍舊不變,大到阿里,知乎等知名大廠的項目,小到個人開發(fā)的小游戲,簽到系統(tǒng),讀書筆記等,其目的都是為了給人們提供更好的生產(chǎn)生活服務(wù),本文基于校園簽到場景,為解決課堂簽到時間長,簽到準(zhǔn)確率不高等問題,設(shè)計了一個基于微信小程序開發(fā)的學(xué)生課堂掃碼考勤簽到系統(tǒng),使用工具為微信開發(fā)工作者,后端開發(fā)語言為java,數(shù)據(jù)庫使用了常用的mysql,采用的后端框架為Sspringboot,是前后端分離開發(fā),設(shè)計模式上采用了mvc的設(shè)計模式,令數(shù)據(jù)層,業(yè)務(wù)層,視圖層可以解耦合,有利于后續(xù)的更新維護工作。
3 各角色功能模塊
3.1 用戶
登錄、首頁、查看課程信息、課程詳情、掃碼簽到、查看簽到記錄、設(shè)置、申請課程、我的管理、在線反饋、更多信息
3.2 管理員
登錄、首頁、設(shè)置、我的管理、添加課程、搜索課程、申請課程、簽到主頁、查看學(xué)生
4 系統(tǒng)頁面展示
4.1 學(xué)生端功能模塊展示
4.2 教師端功能模塊展示
5 更多推薦
2023年計算機畢業(yè)設(shè)計選題大全 計算機畢業(yè)設(shè)計選題推薦
基于微信小程序的在線小說閱讀系統(tǒng)SpringBoot
基于微信小程序的大學(xué)生心理預(yù)約咨詢系統(tǒng)
基于SSM+Vue汽車保養(yǎng)預(yù)約系統(tǒng)
基于協(xié)同過濾算法的農(nóng)特產(chǎn)商城微信小程序文章來源:http://www.zghlxwxcb.cn/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;
}
源碼項目、定制開發(fā)、代碼講解、答辯輔導(dǎo)
希望和大家多多交流!!文章來源地址http://www.zghlxwxcb.cn/news/detail-434493.html
到了這里,關(guān)于計算機畢業(yè)設(shè)計-基于微信小程序高校學(xué)生課堂掃碼考勤簽到系統(tǒng)-校園考勤打卡簽到小程序的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!