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

news2024/12/23 13:16:29
博主介绍: ✌全网粉丝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.coloradmin.cn/o/643225.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ZooKeeper【客户端命令行】

客户端连接ZooKeeper服务器 启动ZooKeeper集群 ./zkServer.sh start 启动客户端 ./zkCli.sh 我们发现启动客户端时它会默认连接本地的服务器&#xff0c;这是因为zookeeper客户端启动时默认连接的是本地模式。 指定连接集群中的服务器 ./zkServer.sh start -server hadoo…

C语言之结构体讲解

目录 结构体类型的声明 结构体初始化 结构体成员访问 结构体传参 对于上期指针初阶&#xff08;2&#xff09;我们后期还会讲数组指针是什么&#xff1f;大家可以先思考一下&#xff0c;后期我们会讲 1.结构体的声明 结构是一些值的集合&#xff0c;这些值被称为成员变量&am…

swagger解析

1.引用swagger包&#xff1a; !-- swagger --> <dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>2.7.0</version> </dependency> <dependency><groupId>io…

【Android -- JNI 和 NDK】Java 和 C/C++ 之间传递参数和返回值

本文主要介绍 JNI 的数据传递上&#xff0c;即 Java 如何传递对象给 C; 而 C 又如何将数据封装成 Java 所需的对象。 1. 基本数据类型 传递 java 的基本类型是非常简单而直接的&#xff0c;一个 jxxx 之类的类型已经定义在本地系统中了&#xff0c;比如&#xff1a;jint, jby…

RHCE shell 作业一

1. 设置邮箱 [rootserver ~]# yum install s-nail -y [rootserver ~]# vim /etc/s-nail.rc 编写脚本 [rootserver ~]# vim homework1.sh 设置定时任务 [rootserver ~]# vim /etc/crontab 2. [rootserver ~]# vim homework2.sh 测试&#xff1a; 3. [rootserve…

Maven配置多个镜像源 SpringBoot配置多个镜像源

Maven配置多个镜像源 SpringBoot配置多个镜像源 当在 Maven 中配置多个镜像源&#xff0c;并在 Spring Boot 项目中配置多个镜像源时&#xff0c;可以按照以下步骤进行操作&#xff1a; 1. Maven 中配置多个镜像源 在 Maven 的 settings.xml 文件中&#xff0c;按照以下示例配…

背单词学英语20年经验总结

推荐一款最近开发的单词小程序&#xff1a; 悟道单词&#xff0c;融入了卡片记忆&#xff0c;图像记忆等&#xff0c;融入了我20年背单词经验。 从这个小程序里我悟出了两大记忆原则 两个记忆原则&#xff1a; 1. 图像是文字之本法则 想一想我们原来是怎么记住中文字词的&#…

【文生图系列】基础篇-马尔可夫链

文章目录 马尔可夫链转移矩阵例子 应用实例参考 在阅读论文Denoising Diffusion Probabilistic Models时&#xff0c;发现论文里面介绍扩散概率模型&#xff08;diffusion probabilistic model&#xff09;是一个参数化的马尔科夫链&#xff08;parameterized Markov chain&…

List数组高效率去重

List数组高效率去重 一、环境准备–生成包含重复元素的list数组 /*** 生成包含重复元素的list数组* return*/ private static List<String> getList(){List<String> list new ArrayList<>();for (int i 1; i < 10000; i) {list.add(String.valueOf(i)…

Kendo UI for jQuery---03.组件___网格---02.开始

网格入门 本指南演示了如何启动和运行 Kendo UI for jQuery Grid。 完成本指南后&#xff0c;您将能够实现以下最终结果&#xff1a; 1. 创建一个空的 div 元素 首先&#xff0c;在页面上创建一个空元素&#xff0c;该元素将用作 Grid 组件的主容器。 <div id"my-…

SpringMVC组件原理剖析

文章目录 SpringMVC组件原理剖析一、 前端控制器初始化1.1 初始化SpringMVC容器1.2 注册了 SpringMVC的 九大组件1.3 处理器映射器初始化细节 二、前端控制器执行主流程2.1 定位doDispatcher方法2.2 验证HandlerExecutionChain2.3 HandlerAdapter执行目标方法 SpringMVC组件原理…

64位和32位相比优势是什么(一)

前置知识&#xff1a;程序是如何执行的&#xff1f; 一道常规的面试题&#xff1a;相比 32 位&#xff0c;64 位的优势是什么&#xff1f; 面试官考察这种类型的问题&#xff0c;主要是想看求职者是否有扎实的计算机基础&#xff0c;同时想知道求职者在工作中是否充满好奇&am…

路径规划算法:基于未来搜索优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于未来搜索优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于未来搜索优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

【硬件专题】案例:怎么通过元件丝印信息反查芯片

今天同事和昨天因为工作上的原因,问我一个问题,就是怎么通过丝印(Marking code)知道用的是什么芯片。以下列举几个方法: 凭经验 比如昨天给出的一张图片,看图片是比较模糊的。但是根据之前的使用,看芯片LOGO很明显是ST的,然后看上面的型号是STM**F1*VCT*,那么…

Go语言环境安装和程序结构

Go语言环境安装和程序结构 1、Go环境安装 Go安装包下载地址为&#xff1a; https://golang.org/dl/ https://golang.google.cn/dl/ 1.1 Windows下的安装 Windows 下可以使用.msi 后缀的安装包来安装&#xff0c;我这里下载的安装包是 go1.18.4.windows-amd64.msi&#xf…

C\C++ Thread-

文章作者&#xff1a;里海 来源网站&#xff1a;https://blog.csdn.net/WangPaiFeiXingYuan 简介 说明 时间 c语言的时间处理&#xff1a;time.h 获取从1970年1月1日到当前经过的秒数: long t0 time(NULL); 让程序暂停3秒&#xff1a; sleep(3); 当前时间的3秒后&#x…

Pycharm 通过 SVN 直接管理控制代码,原来这么方便又高级!

做自动化测试的小伙伴都知道&#xff0c;代码不会只放到本地管理&#xff0c;需要托管到远端进行管理&#xff01; 一方面&#xff0c;发布在不同的电脑上进行同步开发&#xff0c;不需要用U盘拷来拷去&#xff1b;另外一方面&#xff0c;可以轻松找回代码&#xff0c;避免本地…

【UE】玻璃材质

效果 步骤 1. 新建一个材质&#xff0c;这里命名为“M_GLASS” 双击打开“M_GLASS”&#xff0c;左下角混合模式设置为半透明 光照模式设置为表面前向着色 将基础颜色提升为参数 同样还需提升为参数的有“高光度”、“粗糙度”、“不透明度”、“折射” 设置高光度的默认值和最…

【软件测试面试】几句话让面试官再掏3K,轻松应对测试面试...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 面试官&#xff1…

查看网卡中断在哪个CPU核处理

本文目录 1、查看CPU占用率2、查看系统的中断处理在各个CPU核间的分布情况3、查看用于处理网卡中断的CPU核4、修改用于处理网卡中断的CPU核 在默认的情况下Linux默认一个网卡的中断操作都在一个CPU核里处理&#xff0c;在大数据量或者说是对网卡的收发包性能PPS进行测试时&…