基于Java新生报到系统设计与实现(源码+lw+部署文档+讲解等)

博主介绍: ✌全网粉丝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套》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/28637.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring源码解密--事务篇

文章目录 一、事务的实现方式1、JDBC2、Spring基于xml配置编程式事务声明式事务 二、源码设计1、TransactionManager1&#xff09;TransactionManager2&#xff09;PlatformTransactionManager3&#xff09;ReactiveTransactionManager 2、TransactionDefinition3、Transaction…

Qt编写onvif工具(搜索/云台/预置位/OSD/录像存储)

一、前言 从最初编写这个工具开始的时间算起来&#xff0c;至少5年多&#xff0c;一直持续完善到今天&#xff0c;这个工具看起来小也不小大也不大&#xff0c;但是也是经历过无数个现场的洗礼&#xff0c;毫不夸张的说&#xff0c;市面上能够遇到的主流的厂商的设备&#xff…

攻防世界-Crypto-easychallenge

题目描述&#xff1a;将文件下载下来&#xff0c;只有一个pyc文件 1. 思路分析 先向chatgpt问下什么是pyc文件&#xff1a; OK&#xff0c;这里简单总结下&#xff1a; 1. pyc文件是python源码编译后的生成的二进制文件 2. 通过一些库可以逆向出pyc的源代码 那么我们需要做…

科一容易忘、容易混的点(二)

注意落石 高速应急车道用途&#xff1a;主要用于发生事故或故障时停车&#xff0c;以及专为救险所用的车道&#xff0c;被誉为高速公路的“生命通道” 注意 注意 扣9份场景&#xff1a; 城市快速路上 违法停车&#xff1b; 注意 交通事故逃逸&#xff0c; 不一定吊销驾驶证&a…

简单的一批的DockerFile构建(内附超详细docker学习笔记)

目录 介绍 DockerFile常用保留字指令 演示自定义构建java8版本centos docker专用学习笔记 超全 介绍 总结: 从应用软件的角度来看&#xff0c;Dockerfile、Docker镜像与Docker容器分别代表软件的三个不同阶段&#xff0c; * Dockerfile是软件的原材料 * Docker镜像是软件…

华为组播实验pim-dm

组播源配置&#xff1a; R1: [r1]dis current-configuration [V200R003C00] sysname r1 snmp-agent local-engineid 800007DB03000000000000 snmp-agent clock timezone China-Standard-Time minus 08:00:00 portal local-server load flash:/portalpage.zip drop illegal-mac…

Java调用Midjourney进行AI画图原生版抓包实现支持中文

用途介绍 Midjourney是一个目前优秀的AI画图工具&#xff0c;不挂梯无法直接访问 本代码主要用于搭建镜像站使用 适合人群 本代码不适合新手&#xff0c;建议使用过okhttp、且具有二开能力的同学使用~ 实现原理 通过调用发送信息接口发送请求&#xff0c;通过轮询房间消息…

一、PyTorch基础

一、PyTorch基本操作 1&#xff0c;导包 import torch2&#xff0c;查看版本号 torch.__version__ """ 2.0.1cpu """3&#xff0c;初始化(全零)矩阵 x torch.empty(3,2) x """ tensor([[7.2868e-44, 8.1275e-44],[6.7262e-4…

AST使用(二)

//在此之前&#xff0c;先了解下path和node/*path指的是路径 其常用的方法当前路径所对应的源代码 : path.toString判断path是什么type&#xff0c;使用path.isXXX 这个方法 : if(path.isStringLiteral()){}获取path的上一级路径 : let parent path.parentPath;获取path的子…

ARM基础(3):MPU内存保护单元详解及例子

MPU(Memory Protection Unit)是ARM处理器中的一个特性&#xff0c;它提供了内存保护和访问控制的功能&#xff0c;通常用于实现操作系统的内存隔离和保护。比如我们可以设置所有的RAM为不可执行&#xff0c;这样就可以避免代码注入攻击。最近做项目过程中&#xff0c;使用的几个…

中空百叶玻璃隔断怎么组装

以下是中空百叶玻璃隔断的组装步骤&#xff1a; 1. 准备材料&#xff1a;中空百叶玻璃、接头、U型槽、挂件、固定螺钉等。 2. 根据实际需要&#xff0c;将中空百叶玻璃按照尺寸进行切割。 3. 在地面上铺上一张软垫&#xff0c;将切好的玻璃放置在垫子上&#xff0c;然后在两侧标…

管理类联考——逻辑——真题篇——阅读新题型真题

阅读新题型真题 Part B-2010- Part B Directions: Read the following text and decide whether each of the statements is true or false. Choose T if the statement is true or F if the statement is not true. Mark your answers on ANSWER SHEET. (10 points) Copying…

之江实验室: 如何基于 JuiceFS 为超异构算力集群构建存储层 ?

今天&#xff0c;高性能计算结合人工智能技术正在推动科研创新。例如通过破解水稻基因密码推动作物育种从“试验选优”向“计算选优”发展&#xff0c;在医药领域快速分析分子与蛋白之间的相互作用&#xff0c;发现潜在的能够有效干预疾病发生的药物分子。 之江实验室就是上述科…

大学生实习周记总结

大学生实习周记总结1 经过两个月的实习&#xff0c;我收获了很多&#xff0c;也懂得了许多&#xff0c;同时也成熟了不少。下面我将把我两个月的实习生活分成五个部分进行总结&#xff1a;教学经验、班主任工作、做事态度、学生友谊、感恩的心。 教学经验&#xff1a;如何上好一…

4.4网络模型 4.5协议 4.6网络通信的过程

4.4网络模型 OSI七层参考模型 七层模型&#xff0c;亦称 OSI&#xff08;Open System Interconnection&#xff09;参考模型&#xff0c;即开放式系统互联。参考模型是国际标准化组织&#xff08;ISO&#xff09;制定的一个用于计算机或通信系统间互联的标准体系&#xff0c;…

【三维视觉】空间点集的最小包围盒计算

0 问题描述 假设有一个空间点集&#xff0c;不重合的点数有N个。 N1时&#xff0c;最小包围盒是一个点&#xff1a;中心为其本身&#xff0c;半径无穷小 N2时&#xff0c;最小包围盒是一个圆&#xff1a;中心为连线中点&#xff0c;半径为边长一半 N3时&#xff0c;不共线的三…

番茄工作法图解——简单易行的时间管理方法

ISBN: 978-7-115-24669-1 作者&#xff1a;【瑞典】诺特伯格&#xff08;Staffan Noteberg&#xff09; 页数&#xff1a;136页 阅读时间&#xff1a;2023-06-10 推荐指数&#xff1a;★★★★★ 番茄工作法&#xff08;意大利语&#xff1a;Pomodoro Technique&#xff09;是一…

如何选择到最合适的DDoS缓解服务?

DDoS缓解服务提供商的数量可能很多&#xff0c;但只有一些提供商提供高效服务的所有必要功能&#xff0c;因此如果要选择正确的 DDoS保护解决方案&#xff0c;必须考虑以下因素&#xff1a; 1.缩小风险范围 选择DDoS缓解服务的第一步&#xff0c;确定您组织的特定需求&#…

使用SQL语句创建存储过程

前言: 本篇文章是记录学校学习SQL server中知识,可用于复习资料. 目录 前言:一、存储过程的创建1、创建简单存储过程2、创建带参数的存储过程3、创建带输出参数的存储过程 二 、使用T一SQL语句管理和维护存储过程2.1 使用sp_helptext查看存储过程student_sc的定义脚本2.2 使用…

AI 绘画(1):生成一个图片的标准流程

文章目录 文章回顾感谢人员生成一个图片的标准流程前期准备&#xff0c;以文生图为例去C站下载你需要的绘画模型导入参数导入生成结果&#xff1f;可能是BUG事后处理 图生图如何高度贴合原图火柴人转角色 涂鸦局部重绘 Ai绘画公约 文章回顾 AI 绘画&#xff08;0&#xff09;&…
最新文章