文末联系获取源码
开发语言:Java
框架:ssm
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7/8.0
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器
小程序框架:uniapp
小程序开发软件:HBuilder X
小程序运行软件:微信开发者
一、前言介绍
进入21世纪网络和计算机得到了飞速发展,并和生活进行了紧密的结合。目前,网络的运行速度以达到了千兆,覆盖范围更是深入到生活中的脚脚落落。这就促使小程序的发展。网上办公可以实现远程处理事务,远程提交工作和随时追踪工作的状态,小程序给人们带来前所未有的体验,满足了新时代人们的办公需求,所以网上小程序的管理模式得到大力发展。
本系统为优选驾考小程序,是采用微信技术和网络技术进行开发的在线驾考管理平台,可以实现报名驾校、预约练车、在线考试、试卷管理、考试场地管理等。本系统采用Java语言,数据库为mysql,运行环境为Eclipse。使用角色分为用户、管理员、驾校,本系统的功能包括驾考文章管理、学员管理、报名管理、练车预约管理、考试场地管理、考试预约管理、考试管理、用户管理、驾校管理等。其中,用户负责浏览信息、预约考试、报名驾校、预约练车、在线考试等,驾校可以管理学员、处理练车信息、报名信息、考试信息等。本系统实现了驾考的在线预约与审核,方便了用户和管理员、驾校三方的利益,提高预约的效率,更符合现代人生活。
二、系统功能分析
本人参考大量的驾校管理软件,以及充分调查需要驾考的用户和管理员,驾校需求,设计出的本优选驾考小程序使用角色为用户,管理员,驾校,框架界面分为用户操作界面、管理员操作界面和驾校操作界面。
2.1用户的功能设计
(1)个人资料管理功能,可以针对自己的信息资料进行修改管理;
(2)报名入口功能,本界面里展示了不同的驾校信息,可以按照要求进行报名﹔
(3)学员报名管理功能,本界面里展示了自己所有报名的驾校,可以根据具体情祝进行修改;
(4)练车预约功能,可以根据自己的时间进行预约练车;
(5)考试信息功能,可以浏览自己需要参加的考试以及要求进行自我安排;
(6)考试预约功能,在线填写预约信息实现考试的预约;
(7)我的收藏管理功能,管理自己收藏的所有信息;
(8)试卷列表功能,可以查询所有的试卷,选择适合自己的试卷进行考试;
(9)理论考试记录功能,查询考试记录信息;
(10)错题本功能,自己曾经做错的题目都在本界面保存,方便用户进行针对性的学习。
2.2管理员的功能设计
(1)驾考文章管理功能,可以发布、编辑、删除驾考文章信息;
(2)个人中心功能,本功能可以修改管理员的个人资料﹔
(3)学员管理功能,此功能可以对用户的账号、资料等进行审核管理;
(4)驾校管理功能,对驾校的账号、密码等进行管理;
(5)驾照类型管理功能,对不同型号的车需要考不同的驾照,本功能负责类型的管理;
(6)报名入口管理功能,实现学员报名入口信息的审核管理;
(7)学员报名管理功能,实现审核学员报名的功能;
(8)练车预约功能,可以审核学员的预约练车信息;
(9)考试场地管理功能,安排考试的场地;
(10)考试场次管理,安排考试的不同场次;
(11)考试信息管理功能,对考试的内容进行安排:
(12)考试预约管理功能,审核学员的考试预约;
(13)试卷管理功能,可以设置试卷;
(14)试题管理功能,对试题信息进行添加管理;
(15)系统管理功能,发布和管理公告信息、轮播图。
2.3驾校的功能设计
(1)个人中心功能,实现对驾校资料的管理;
(2)学员管理功能,实现对自己学员信息的资料管理;
(3)驾考文章管理功能,实现浏览文章信息和管理文章信息;
(4)报名入口管理功能,发布报名信息和管理报名信息;
(5)学员报名管理功能,查询和处理学员的报名;
(6)练车预约功能,审核学员的练车预约并进行安排;
(7)考试信息管理功能,实现考试内容信息的安排管理;
(8)考试预约管理功能,审核学员的预约考试。
2.4系统功能结构
系统的功能结构是系统实现的框架,本系统的主要结构为管理员和用户、驾校。本优选驾考小程序功能结构图如下图所示:
三、小程序端
3.1用户注册功能的界面实现
用户在使用本系统时需要先进行注册,注册界面里需要填写用户名、密码、姓名、性别、手机号、身份证号。用户注册功能的运行界面如下图所示:
3.2登录功能的界面实现
用户注册后,需要登录。登录界面设计的目的是保证当前的使用角色等级。管理员、驾校同样需要登录后才可以进行操作。在管理员、驾校的登录界面里加入了权限的选择,在登录时只需要填写用户账号和密码就可以实现。用户登录的运行界面如下图所示:
3.3报名功能的界面实现
用户的功能主要为报名驾校、预约练车、预约考试、在线考试。在报名时需要选择好要报名的驾校、驾照类型。报名功能的运行界面如下图所示:
3.4预约考试功能的实现界面
用户在查询到考试信息后可以在线预约考试。预约考试功能的运行界面如下图所示:
3.5预约练车功能的实现界面
在报名成功后,用户可以预约练车。用户预约练车功能的实现界面如下图所示:
3.6在线考试功能的实现
在试卷列表里可以选择试卷进行在线考试,实现界面如下图所示:
3.7我的功能界面实现
我的功能界面相关于用户中心,展示了用户的所有操作内容。我的功能界面实现如下图所示:
四、管理员功能的设计实现
在登录的界面中包含的元素有系统题目、输入框、登录按钮、选择框。本系统的使用权限为管理员和用户、驾校。管理员登录的运行界面如下图所示:
4.1学员管理功能的实现界面
学员的信息可由管理员添加,本功能设计的目的是添加和审核学员的资料,当发现不当的使用用户可以删除其账号。当删除用户信息后相对应的用户信息表里的信息也会随着删除掉。查询学员信息.功能的运行界面如下图所示:
4.2个人中心管理功能的实现界面
个人中心管理的内容包括管理个人资料和修改密码,本系统中可以拥有多个管理员。个人中心功能的运行界面如下图所示:
4.3试卷管理功能的实现界面
用户浏览的试卷都是由管理员在此功能里进行维护添加的,同样当管理员添加、编辑试卷信息后,数据库表中的试卷信息表也会发生改变。试卷信息管理功能的运行界面如下图所示:
在添加试卷信息时可以重置和提交。发布新试卷的运行界面如下图所示:
五、驾校角色功能的实现界面
驾校的功能与管理员的功能相似,没有管理员的权力大,可以管理学员信息、报名信息、考试预约信息、考试信息、驾考文章信息、练车预约信息、考试预约信息。实现界面如下图所示:
六、部分核心代码
6.1登录系统主要代码
/**
* 登录
*/
@IgnoreAuth
@RequestMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuzhanghao", username));
if(user==null || !user.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(user.getId(), username,"yonghu", "用户" );
return R.ok().put("token", token);
}
6.2上传文件关键代码
@RequestMapping("/upload")
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;
File dest = new File(upload.getAbsolutePath()+"/"+fileName);
file.transferTo(dest);
/**
* 如果使用idea或者eclipse重启项目,发现之前上传的图片或者文件丢失,将下面一行代码注释打开
* 请将以下的"D:\\springbootq33sd\\src\\main\\resources\\static\\upload"替换成你本地项目的upload路径,
* 并且项目路径不能存在中文、空格等特殊字符
*/
// FileUtils.copyFile(dest, new File("D:\\springbootq33sd\\src\\main\\resources\\static\\upload"+"/"+fileName)); /**修改了路径以后请将该行最前面的//注释去掉**/
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);
}