博主介绍: ✌全网粉丝30W+,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌
🍅 文末获取源码联系 🍅
👇🏻 精彩专栏 推荐订阅 👇🏻 不然下次找不到哟
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》
系统介绍:
互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对新生报到信息管理混乱,出错率高,信息安全性差,劳动强度大,费时费力等问题,采用新生报到系统可以有效管理,使信息管理能够更加科学和规范。
新生报到系统在Eclipse环境中,使用Java语言进行编码,使用Mysql创建数据表保存本系统产生的数据。系统可以提供信息显示和相应服务,其学院管理员管理所有内容,涵盖了班级,专业,学院,学生,缴费以及宿舍等方面的信息,学院管理员可以统计缴费信息以及学生报到信息。宿舍管理员管理宿舍,查看入住宿舍的学生,管理学生,发布与维护消息通知。财务管理员统计缴费信息,增删改学生缴费信息,管理学生和消息通知。辅导员统计学生报到信息,管理班级和消息通知。学生查询缴费信息,查看所有管理人员发布的消息通知。
总之,新生报到系统集中管理信息,有着保密性强,效率高,存储空间大,成本低等诸多优点。它可以降低信息管理成本,实现信息管理计算机化
在前面分析的学院管理员功能的基础上,进行接下来的设计工作,最终展示设计的学院管理员结构图(见下图)。学院管理员管理所有内容,涵盖了班级,专业,学院,学生,缴费以及宿舍等方面的信息,学院管理员可以统计缴费信息以及学生报到信息。
图4.1 学院管理员功能结构图
在前面分析的宿舍管理员功能的基础上,进行接下来的设计工作,最终展示设计的宿舍管理员结构图(见下图)。宿舍管理员管理宿舍,查看入住宿舍的学生,管理学生,发布与维护消息通知。
图4.2 宿舍管理员功能结构图
在前面分析的财务管理员功能的基础上,进行接下来的设计工作,最终展示设计的财务管理员结构图(见下图)。财务管理员统计缴费信息,增删改学生缴费信息,管理学生和消息通知。
图4.3 财务管理员功能结构图
在前面分析的辅导员功能的基础上,进行接下来的设计工作,最终展示设计的辅导员结构图(见下图)。辅导员统计学生报到信息,管理班级和消息通知。
图4.4 辅导员功能结构图
在前面分析的学生功能的基础上,进行接下来的设计工作,最终展示设计的学生结构图(见下图)。学生查询缴费信息,查看所有管理人员发布的消息通知。
图4.5 学生功能结构图
功能截图:
5.1.1 管理员管理
学院管理员进入指定功能操作区之后可以管理管理员。其页面见下图。这里的管理员角色包括宿舍管理员,财务管理员,辅导员等信息,学院管理员只能对这些信息增删改。
图5.1 管理员管理页面
5.1.2 专业管理
学院管理员进入指定功能操作区之后可以管理专业。其页面见下图。对学院的各个专业信息进行登记与维护是学院管理员负责的内容。
图5.2 专业管理页面
5.1.3 学院管理
学院管理员进入指定功能操作区之后可以管理学院。其页面见下图。本页面显示所有学院的名称信息以及学院的编码信息,学院管理员只能对这些信息增删改。
图5.3 学院管理页面
5.2 宿舍管理员功能实现
5.2.1 宿舍管理
宿舍管理员进入指定功能操作区之后可以管理宿舍以及宿舍人员信息。其页面见下图。宿舍管理员点击查看人员按钮即可查看入住本宿舍的学生信息。
图5.4 宿舍管理页面
5.2.2 消息通知
宿舍管理员进入指定功能操作区之后可以管理消息通知。其页面见下图。宿舍管理员也具备发布消息通知,修改,删除消息通知的权限。
图5.5 消息通知页面
5.3 财务管理员功能实现
5.3.1 缴费管理
财务管理员进入指定功能操作区之后可以管理缴费。其页面见下图。财务管理员负责增删改缴费信息,可以点击报表统计缴费信息。
图5.6 缴费管理页面
5.3.2 学生缴费统计
财务管理员进入指定功能操作区之后可以统计学生缴费。其页面见下图。财务管理员在本页面可以查看已缴费和未缴费的占比情况。
图5.7 学生缴费统计页面
5.4 辅导员功能实现
5.4.1 学生管理
辅导员进入指定功能操作区之后可以管理学生。其页面见下图。辅导员根据录取通知单编码查询学生信息,辅导员点击报表按钮可以统计学生报到信息。
图5.8 学生管理页面
5.4.2学生报到统计
辅导员进入指定功能操作区之后可以统计学生报到信息。其页面见下图。辅导员在本页面可以查看已报到和未报到的学生占比信息。
图5.9 学生报到统计页面
5.5 学生功能实现
5.5.1查询缴费
学生进入指定功能操作区之后可以查询缴费。其页面见下图。学生根据是否缴费状态查询缴费信息。缴费信息包括缴费的时间和金额。
图5.10 查询缴费页面
5.5.2消息通知
学生进入指定功能操作区之后可以查看消息通知。其页面见下图。所有管理人员发布的消息通知都能显示在本页面让学生查看。
图5.11 消息通知页面
代码实现:
/**
* 学生
* 后端接口
* @author
* @email
* @date 2022-01-30
*/
@RestController
@Controller
@RequestMapping("/xuesheng")
public class XueshengController {
private static final Logger logger = LoggerFactory.getLogger(XueshengController.class);
@Autowired
private XueshengService xueshengService;
@Autowired
private PayService payService; // 缴费信息
@Autowired
private TokenService tokenService;
@Autowired
private DormitoryXueshengService dormitoryXueshengService;// 宿舍与学生关系
/**
* 后端列表
*/
@RequestMapping("/page")
public R page(@RequestParam Map<String, Object> params){
logger.debug("Controller:"+this.getClass().getName()+",page方法");
PageUtils page = xueshengService.queryPage(params);
return R.ok().put("data", page);
}
/**
* 后端详情
*/
@RequestMapping("/info/{id}")
public R info(@PathVariable("id") Long id){
logger.debug("Controller:"+this.getClass().getName()+",info方法");
XueshengEntity xuesheng = xueshengService.selectById(id);
if(xuesheng!=null){
return R.ok().put("data", xuesheng);
}else {
return R.error(511,"查不到数据");
}
}
/**
* 后端保存
*/
@RequestMapping("/save")
public R save(@RequestBody XueshengEntity xuesheng, HttpServletRequest request){
logger.debug("Controller:"+this.getClass().getName()+",save");
Wrapper<XueshengEntity> queryWrapper = new EntityWrapper<XueshengEntity>()
.eq("account", xuesheng.getAccount())
.eq("notification_code", xuesheng.getNotificationCode())
.eq("phone", xuesheng.getPhone())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
XueshengEntity xueshengEntity = xueshengService.selectOne(queryWrapper);
xuesheng.setMima("");
if("".equals(xuesheng.getPortraitPhoto()) || "null".equals(xuesheng.getPortraitPhoto())){
xuesheng.setPortraitPhoto(null);
}
if(xueshengEntity==null){
xueshengService.insert(xuesheng);
PayEntity<Object> pay = new PayEntity<>();
pay.setPayFlag(2);//未交费
pay.setMoneyTime(new Date());
pay.setCreateTime(new Date());
pay.setXueshengId(xuesheng.getId());//学生id
pay.setMoney(33.3);
payService.insert(pay);
return R.ok();
}else {
return R.error(511,"账户,通知书编码,手机号已被使用");
}
}
/**
* 修改
*/
@RequestMapping("/update")
public R update(@RequestBody XueshengEntity xuesheng, HttpServletRequest request){
logger.debug("Controller:"+this.getClass().getName()+",update");
//根据字段查询是否有相同数据
Wrapper<XueshengEntity> queryWrapper = new EntityWrapper<XueshengEntity>()
.notIn("id",xuesheng.getId())
.eq("account", xuesheng.getAccount())
.eq("notification_code", xuesheng.getNotificationCode())
.eq("phone", xuesheng.getPhone())
;
logger.info("sql语句:"+queryWrapper.getSqlSegment());
XueshengEntity xueshengEntity = xueshengService.selectOne(queryWrapper);
if("".equals(xuesheng.getPortraitPhoto()) || "null".equals(xuesheng.getPortraitPhoto())){
xuesheng.setPortraitPhoto(null);
}
if(xueshengEntity==null){
xueshengService.updateById(xuesheng);//根据id更新
return R.ok();
}else {
return R.error(511,"账户,通知书编码,手机号已被使用");
}
}
/**
* 注册
*/
@RequestMapping("/register")
public R register(@RequestBody XueshengEntity xuesheng, HttpServletRequest request){
logger.debug("Controller:"+this.getClass().getName()+",register");
//编号姓名一致 并且账户为空的才是注册
Wrapper<XueshengEntity> queryWrapper1 = new EntityWrapper<XueshengEntity>()
.in("notification_code",xuesheng.getNotificationCode())
.in("xingming",xuesheng.getXingming())
.addFilterIfNeed(true,"account = ''")
;
//查询账户没有被使用
Wrapper<XueshengEntity> queryWrapper2 = new EntityWrapper<XueshengEntity>()
.in("account",xuesheng.getAccount());
logger.info("sql语句1:"+queryWrapper1.getSqlSegment());
logger.info("sql语句2:"+queryWrapper1.getSqlSegment());
XueshengEntity xueshengEntity1 = xueshengService.selectOne(queryWrapper1);
XueshengEntity xueshengEntity2 = xueshengService.selectOne(queryWrapper2);
if(xueshengEntity1!=null && xueshengEntity2==null){//编号未被其他账户使用 并且账户不存在为注册用户
xuesheng.setId(xueshengEntity1.getId());
xueshengService.updateById(xuesheng);//根据id更新
return R.ok();
}else {
return R.error(511,"通知书编号已经被使用 或 账户已存在");
}
}
/**
* 删除
*/
@RequestMapping("/delete")
public R delete(@RequestBody Long[] ids){
logger.debug("Controller:"+this.getClass().getName()+",delete");
for(Long id :ids){
PayEntity pay = payService.selectOne(new EntityWrapper<PayEntity>().in("xuesheng_id", String.valueOf(id)));
Integer count = dormitoryXueshengService.selectCount(new EntityWrapper<DormitoryXueshengEntity>().in("xuesheng_id", String.valueOf(id)));//查询学生id是否绑定用宿舍
if(pay!=null){
XueshengEntity xueshengEntity = xueshengService.selectById(id);
return R.error(512,"姓名为:"+xueshengEntity.getXingming()+"的账户下有缴费记录");
}else if(count>0){
XueshengEntity xueshengEntity = xueshengService.selectById(id);
return R.error(512,"姓名为:"+xueshengEntity.getXingming()+"的账户下有住宿信息未清除");
}
}
xueshengService.deleteBatchIds(Arrays.asList(ids));
return R.ok();
}
/**
* 登录
*/
@IgnoreAuth
@PostMapping(value = "/login")
public R login(String username, String password, String captcha, HttpServletRequest request) {
XueshengEntity xuesheng = xueshengService.selectOne(new EntityWrapper<XueshengEntity>().eq("account", username));
if(xuesheng==null || !xuesheng.getMima().equals(password)) {
return R.error("账号或密码不正确");
}
String token = tokenService.generateToken(xuesheng.getId(),username, "users", "学生");
R r = R.ok();
r.put("token", token);
r.put("role","学生");
r.put("userId",xuesheng.getId());
return r;
}
/**
* 获取用户的session用户信息
*/
@RequestMapping("/session")
public R getCurrUser(HttpServletRequest request){
Integer id = (Integer)request.getSession().getAttribute("userId");
XueshengEntity xueshengEntity = xueshengService.selectById(id);
return R.ok().put("data", xueshengEntity);
}
}
论文参考:
目 录
1 绪论1
1.1 选题背景1
1.2 选题意义1
1.3 研究内容2
2 系统开发技术3
2.1 Java语言3
2.2 SSM框架3
2.3 MYSQL数据库4
3 系统分析5
3.1可行性研究5
3.1.1经济可行性5
3.1.2时间可行性5
3.1.3操作可行性5
3.2系统性能分析6
3.2.1系统易用性6
3.2.2系统健壮性6
3.2.3系统安全性6
3.3 系统流程分析6
3.4系统功能分析9
4 系统设计13
4.1系统目标13
4.2功能结构设计14
4.3数据库设计15
4.3.1数据库E-R图15
4.3.2 数据库表结构17
第5章 系统实现23
5.1 学院管理员功能实现23
5.1.1 管理员管理23
5.1.2 专业管理23
5.1.3 学院管理24
5.2 宿舍管理员功能实现24
5.2.1 宿舍管理24
5.2.2 消息通知25
5.3 财务管理员功能实现25
5.3.1 缴费管理25
5.3.2 学生缴费统计26
5.4 辅导员功能实现26
5.4.1 学生管理26
5.4.2学生报到统计27
5.5 学生功能实现27
5.5.1查询缴费27
5.5.2消息通知28
6系统测试28
6.1 系统测试的类型28
6.2 功能测试29
6.3 可用性测试29
6.4 测试结果分析29
结 论30
参考文献32
致 谢33
获取源码:
大家 点赞、收藏、关注、评 论啦 、 查看 👇🏻 获取联系方式 👇🏻
精彩专栏 推荐订阅 :在 下方专栏 👇🏻
Java项目精品实战案例《100套》
Java微信小程序项目实战《100套》