随着计算机技术的高速发展,现代计算机系统已经从以计算为中心向以信息化处理为中心的方向发展。而网上选课,不仅需要在硬件上为现代社会的学生们提供一个学习知识,获取知识的环境,更要在软件上为愿意上课的人提供必要的便利。于是网上选课系统便应运而生。
在网上选课系统的实现下,网上选课人员能够充分发挥信息化处理的优势,提高日常管理的处理速率。用户一方可以更好的享受信息化处理带来的便利。系统运行能够稳定且高效。并且人机友好程度能够显著提升。
网上选课系统的后台开发目标是以信息管理系统的管理和开发方法,用目前现有的新技术进行系统开发,提供后台管理员高度友好的界面操作以及迅捷的信息处理。而前台的开发目标是以用户的需求作为主导,提供对用户而言非常友好的界面操作环境以及完善系统功能。
本系统主要针对现在选课管理系统中存在的问题,对需要改进的地方进行系统分析,对系统所要实现的功能进行完善,使得其更具有高度界面友好的特性。提出对于系统而言具备可行性的方案,做好系统分析。编译出界面友好,功能齐全的网上选课系统。
用例标识(UC) 用例名称 摘要描述
0 登录 使用系统前的身份验证。
1.1 更改密码 用户可以在系统上更改密码。
1.2 查看课程信息 用户可以查找课程信息,并可以获得包括课程名、内容、课程编号等信息。
2.1 管理用户信息 网上选课人员可以管理用户的信息。
2.2 在线选课 学生选课需要的课程进行选课。
2.4 管理学生信息 网上选课人员可以管理学生的信息。
2.5 管理课程信息 网上选课人员可以管理课程的信息。
2.6 管理人员密码更改 网上选课人员可以更改网上选课人员密码。
用例标识 2.1.1
用例名称 添加用户信息
参与者 网上选课人员
前置条件 已经以网上选课人员身份登录。
后置条件 在用户表中添加一条用户信息。
用例概述 网上选课人员可以对用户信息进行添加。
基本事件流 1. 网上选课人员在管理用户主界面选取添加用户信息项。
2. 系统显示添加用户界面。
3. 网上选课人员按照用户提供的信息输入用户姓名、用户密码、用户性别、用户电话后,提交添加请求。
4. 系统检查输入信息的有效性。
5. 系统查询结果确认没有重复姓名,将录入用户信息到用户信息表中。
6. 系统显示添加用户成功。
备选事件流 5a 系统查出有重复姓名,将显示添加用户失败,管理员重新输入另一名称,系统查出没有重复姓名,显示添加用户成功。
备注 用户编号生成
用例标识 2.4.1
用例名称 添加学生信息
参与者 网上选课人员
前置条件 已经以网上选课人员身份登录。
后置条件 在学生表中添加一条学生信息。
用例概述 网上选课人员可以对学生信息进行添加。
基本事件流 1. 网上选课人员在管理学生主界面选取添加学生信息项。
2. 系统显示添加学生界面。
3. 网上选课人员输入学生名称、学生简介后,提交添加请求。
4. 系统检查输入信息的有效性。
5. 系统根据查询结果确认没有重复学生名,将学生信息录入到学生信息表中。
6. 系统显示添加学生成功。
备选事件流 5a 系统查出有重复书记类别名称,将显示添加学生失败,管理员重新输入另一名称,系统查出没有重复学生,显示添加学生成功。
备注 学生编号生成
用例标识 2.5.1
用例名称 新增课程信息
参与者 网上选课人员
前置条件 已经以网上选课人员身份登录。
后置条件 在课程表中添加一条课程信息。
用例概述 网上选课人员可以对课程信息进行添加。
基本事件流 1. 网上选课人员在管理课程主界面选取添加课程信息项。
2. 系统显示新增课程界面。
3. 网上选课人员输入课程名称、课程时间、授课人、课程内容后,提交添加请求。
4. 系统检查输入信息的有效性。
5. 系统根据查询结果确认没有重复课程名称,将信息录入到课程信息表中。
6. 系统显示添加课程成功。
备选事件流 5a 系统查出有重复课程名称,将显示添加课程失败,管理员重新输入另一名称,系统查出没有重复课程名称,显示添加课程成功。
备注 课程编号生成
/**
* 登录相关
*/
@RequestMapping("users")
@RestController
public class UserController{
@Autowired
private UserService userService;
@Autowired
private TokenService tokenService;
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().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 UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 退出
*/
@GetMapping(value = "logout")
public R logout(HttpServletRequest request) {
request.getSession().invalidate();
return R.ok("退出成功");
}
/**
* 密码重置
*/
@IgnoreAuth
@RequestMapping(value = "/resetPass")
public R resetPass(String username, HttpServletRequest request){
UserEntity user = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", username));
if(user==null) {
return R.error("账号不存在");
}
user.setPassword("123456");
userService.update(user,null);
return R.ok("密码已重置为:123456");
}
/**
* 列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params,UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
PageUtils page = userService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.allLike(ew, user), params), params));
return R.ok().put("data", page);
}
/**
* 列表
*/
@RequestMapping("/list")
public R list( UserEntity user){
EntityWrapper<UserEntity> ew = new EntityWrapper<UserEntity>();
ew.allEq(MPUtil.allEQMapPre( user, "user"));
return R.ok().put("data", userService.selectListView(ew));
}
/**
* 信息
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") String id){
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Long id = (Long)request.getSession().getAttribute("userId");
UserEntity user = userService.selectById(id);
return R.ok().put("data", user);
}
/**
* 保存
*/
@PostMapping("/save")
public R save(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
if(userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername())) !=null) {
return R.error("用户已存在");
}
userService.insert(user);
return R.ok();
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody UserEntity user){
// ValidatorUtils.validateEntity(user);
userService.updateById(user);//全部更新
return R.ok();
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
userService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
}
目录
1 绪论 1
1.1课题背景 1
1.2课题研究现状 1
1.3初步设计方法与实施方案 2
1.4本文研究内容 2
2 系统开发环境 4
2.1 使用工具简介 4
2.2 环境配置 4
2.3 B/S结构简介 4
2.4 MySQL数据库 5
2.5 框架介绍 5
3 系统分析 6
3.1系统可行性分析 6
3.1.1经济可行性 6
3.1.2技术可行性 6
3.1.3运行可行性 6
3.2系统现状分析 6
3.3功能需求分析 7
3.4系统设计规则与运行环境 8
3.5系统流程分析 8
3.5.1操作流程 8
3.5.2添加信息流程 9
3.5.3删除信息流程 10
4 系统设计 11
4.1系统设计主要功能 11
4.2数据库设计 11
4.2.1数据库设计规范 11
4.2.2 E/R图 11
4.2.3数据表 12
5 系统实现 25
5.1系统功能模块 25
5.2后台模块 27
5.2.1管理员功能模块 27
5.2.2用户功能模块 30
6 系统测试 33
6.1功能测试 33
6.2可用性测试 33
6.3性能测试 34
6.4测试结果分析 34
7结 论 35
参考文献 36
致 谢 37