基于ssm的运动会管理系统

news2024/11/15 21:10:29

文章目录

  • 项目介绍
  • 主要功能截图:
  • 部分代码展示
  • 设计总结
  • 项目获取方式

🍅 作者主页:超级无敌暴龙战士塔塔开
🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】
🍅文末获取源码联系🍅

项目介绍

基于ssm的运动会管理系统,java项目。
eclipse和idea都能打开运行。
推荐环境配置:eclipse/idea jdk1.8 maven mysql
前端技术:vue,Ajax,Json
后端技术:SpringBoot,MyBatis
本系统共分为两个角色:管理员、用户、裁判。
主要功能有:
后台:登录注册、首页、个人中心、用户管理、裁判管理、比赛项目管理、比赛信息管理、赛事报名管理、比赛成绩管理、犯规记录管理、留言板管理

前台:登录注册、首页展示、公告列表、论坛信息、新闻资讯、留言反馈、比赛报名等。

提供远程部署、代码讲解等服务
更多精品项目,请查看主页

主要功能截图:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

部分代码展示

控制层,ClockInNewController,对登录用户信息的查询,基于Cookie,从cookie中提取用户信息,并根据提取的用户字段,在数据库中查询相关信息。

@RequestMapping("/queryClockInAll2")
    public JsonObject queryClockInAll2(Clockinnew clockinnew, HttpServletRequest request,
                                       @RequestParam(defaultValue = "1") Integer pageNum,
                                       @RequestParam(defaultValue = "15") Integer pageSize
                                      ){
        //获取当前得登录用户
        Userinfo userinfo= (Userinfo) request.getSession().getAttribute("user");
        String username=userinfo.getUsername();

        //根据username获取登录账号得业主id
        Owner owner=ownerService.queryOwnerByName(username);
        clockinnew.setOwnerId(owner.getId());
        PageInfo<Clockinnew> pageInfo= clockinnewService.queryClockInAll(pageNum,pageSize,clockinnew);
        return new JsonObject(0,"ok",pageInfo.getTotal(),pageInfo.getList());
    }

核心接口,封装具体方法,方便对象的注入

package com.yx.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import com.yx.model.Clockinnew;

import java.util.Date;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author yx
 * @since 2021-04-27
 */
public interface IClockInNewService extends IService<Clockinnew> {

    PageInfo<Clockinnew> queryClockInAll(int pageNum, int pageSize, Clockinnew clockinnew);

    /**
     * 查询分页数据
     *
     * @param page      页码
     * @param pageCount 每页条数
     * @return IPage<Clockinnew>
     */
    IPage<Clockinnew> findListByPage(Integer page, Integer pageCount);

    /**
     * 添加
     *
     * @param clockinnew 
     * @return int
     */
    int add(Clockinnew clockinnew);

    /**
     * 删除
     *
     * @param id 主键
     * @return int
     */
    int delete(Long id);

    /**
     * 修改
     *
     * @param clockinnew 
     * @return int
     */
    int updateData(Clockinnew clockinnew);

    /**
     * id查询数据
     *
     * @param id id
     * @return Clockinnew
     */
    Clockinnew findById(Long id);

    Date queryCountByOwnId(Integer ownerId);
}


针对登录接口进行讲解
首先是controller层
涉及登录,自然是分不开session,需要从session中提取用户,判断该用户是否处于登录状态。其中密码是经过md5加密的,固定的盐值加入到数据库中,提高系统的安全行。

@RequestMapping(value="/login",method= RequestMethod.POST)
    public String login(Model model, String name, String password){//throws ParseException
        Subject subject = SecurityUtils.getSubject();
        UsernamePasswordToken token = new UsernamePasswordToken(name,password);
        try {
            subject.login(token);
            User us = userService.getByName(name);
            String lastLoginTime = "";
            if(us!=null){
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                //上次时间
                Date time = us.getLasttime();
                lastLoginTime = sdf.format(time);
                //新时间
                String format = sdf.format(new Date());
                //string转date  不处理时间格式会不理想
                ParsePosition pos = new ParsePosition(0);
                Date strtodate = sdf.parse(format, pos);
                us.setLasttime(strtodate);
                userService.update(us);
            }
            if (us.getStatus()==1){
                Session session=subject.getSession();
                session.setAttribute("subject", subject);
                session.setAttribute("lastLoginTime",lastLoginTime);
                return "redirect:index";
            }else {
                model.addAttribute("error", "账号已被停用!");
                return "/login";
            }

        } catch (AuthenticationException e) {
            model.addAttribute("error", "验证失败!");
            return "/login";
        }
    }

接下来就是impl实现类,可根据获得的参数进行条件查询。
当然,具体的查询语句一般都不会直接在implement类中写,而是将其写在封装好的mapper的xml文件中,xml文件又映射对应的mapper文件。
而真正起作用的是mapper中的sql语句,在implement实现类中只是对mapper进行注入。

@Override
    public User getByName(String name) {
        UserExample example = new UserExample();
        example.createCriteria().andNameEqualTo(name);
        List<User> users = userMapper.selectByExample(example);
        if (users.isEmpty()) return null;
        return users.get(0);
    }

UserMapper.java

package com.byh.biyesheji.dao;

import com.byh.biyesheji.pojo.User;
import com.byh.biyesheji.pojo.UserExample;

import java.util.List;

public interface UserMapper extends SysDao<User>{

    List<User> selectByExample(UserExample example);

    /**
     * 停用管理员账号
     * @param name
     */
    void enableStatus(String name);

    /**
     * 开启管理员账号
     * @param name
     */
    void stopStatus(String name);
}

UserMapper.xml

<select id="selectByExample" resultMap="BaseResultMap" parameterType="com.byh.biyesheji.pojo.UserExample" >
    select
    <if test="distinct" >
      distinct
    </if>

    <include refid="Base_Column_List" />
    from user
    <if test="_parameter != null" >
      <include refid="Example_Where_Clause" />
    </if>
    <if test="orderByClause != null" >
      order by ${orderByClause}
    </if>
  </select>

设计总结

通过对校园点餐系统的开发,让我深刻明白开发一个程序软件需要经历的流程,当确定要开发一个程序时,我在开发期间,对其功能进行合理的需求分析,然后才是程序软件的功能的框架设计,数据库的实体与数据表设计,程序软件的功能详细界面实现,以及程序的功能测试等进行全方位的细致考虑,虽然在此过程中,各个环节都遇到了大大小小的困难,但是通过对这些问题进行反复的分析,深入的思考,借助各种相关文献资料提供的方法与解决思路成功解决面临的各个问题,最后成功的让我开发的系统得以正常运行。在功能上面是基本可以满足用户对系统的操作,但是这个程序软件也有许多方面是不足的,因此,在下一个时间阶段,有几点需要改进的地方需要提出来,它们分别是:
(1)操作页面可以满足用户简易操作的要求,但是在页面多样化设计层面上需要把一些比较丰富的设计结构考虑进来。

(2)程序软件的总体安全性能需要优化,例如程序的退出安全性,以及程序的并发性等问题都需要进行安全性升级,让开发的产品与现实中的相关网站更贴合。

(3)需要对程序的数据结构方面,程序的代码方面等进行优化,让运行起来的程序可以保持稳定运行,也让程序能够保证短时间内处理相关事务,节省处理事务的时间,提高事务处理的效率,同时对服务器上资源占用的比例进行降低。
平台的开发一方面是对自身专业知识技能进行最终考核,另一方面也是让自己学会独立解决程序开发过程中所遇到的问题,掌握将理论知识运用于程序开发实践的方法。最终目标就是让系统更具人性化,同时在逻辑设计上,让系统能够更加的严谨。

获取源码联系:
大家点赞、收藏、关注、评论啦

项目获取方式

精彩专栏推荐订阅:在下方专栏👇🏻
Java精品项目100套

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

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

相关文章

Java玩转《啊哈算法》解密QQ号之队列

行有不得&#xff0c;反求诸己 文章目录 开头代码地址引子案例分析代码 队列封装升级演示 开头 各位好&#xff01;本人在看《啊哈算法》&#xff0c;写的确实不错。 但略微遗憾的是&#xff0c;书籍示例代码是c语言&#xff0c;不是本人常用的Java。 那就弥补遗憾&#xff…

Linux 系统开始配置

文章目录 备份源为root 设置密码安装基本工具切换root 用户删除snap从 Ubuntu 移除 Snap 后使用 deb 文件安装软件商店和 Firefox在 Ubuntu 系统恢复到 Snap 软件包总结 删除 vim安装neovim在线安装neovim压缩安装neovim安装lazyvim安装剪切板 安装qt配置 Qt 环境不在sudoers文…

Flutter 仿抖音 TikTok 上下滑动 播放视频

Flutter 仿抖音 TikTok 上下滑动 播放视频UI框架&#xff0c;视频播放使用 video_player github&#xff1a;GitHub - PangHaHa12138/TiktokVideo: Flutter 仿抖音 TikTok 上下滑动 播放视频UI框架 实现功能&#xff1a; 1.上下滑动自动播放切换视频&#xff0c;loading 封面…

帮管客CRM 文件上传漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

Linux实验记录:使用vsftpd服务传输文件

前言&#xff1a; 本文是一篇关于Linux系统初学者的实验记录。 参考书籍&#xff1a;《Linux就该这么学》 实验环境&#xff1a; VmwareWorkStation 17——虚拟机软件 RedHatEnterpriseLinux[RHEL]8——红帽操作系统 备注&#xff1a; 为了解决在多样复杂的设备之间解决传…

阿狸与小兔子的奇幻之旅

在很久很久以前&#xff0c;有一个遥远的国度&#xff0c;这个国度里生活着各种各样的动物&#xff0c;它们和谐共处&#xff0c;幸福快乐。在这个国度里&#xff0c;有一只聪明伶俐的小狐狸&#xff0c;名叫阿狸。 一天&#xff0c;阿狸在森林里散步时&#xff0c;遇到了一只正…

C++类和对象入门(二)

顾得泉&#xff1a;个人主页 个人专栏&#xff1a;《Linux操作系统》 《C从入门到精通》 《LeedCode刷题》 键盘敲烂&#xff0c;年薪百万&#xff01; 一、类的作用域 类定义了一个新的作用域&#xff0c;类的所有成员都在类的作用域中。在类体外定义成员时&#xff0c;需要…

亚马逊测评掉评、留不上评:问题根源与解决之道

亚马逊作为全球最大的电商平台之一&#xff0c;拥有数亿活跃用户和数百万卖家。在这个竞争激烈的市场中&#xff0c;产品评价对于卖家的成功至关重要。然而&#xff0c;许多卖家在尝试通过测评获取好评时&#xff0c;却遇到了掉评、留不上评的问题&#xff0c;这无疑增加了他们…

安装配置sqoop

一、了解Sqoop 1、Sqoop产生的原因 A. 多数使用hadoop技术的处理大数据业务的企业,有大量的数据存储在关系型数据中。 B. 由于没有工具支持,对hadoop和关系型数据库之间数据传输是一个很困难的事。 以上是sqoop产生的主要原因,也因此Sqoop主要用于hadoop与关系型数据库之…

如何在docker中访问电脑上的GPU?如何在docker中使用GPU进行模型训练或者加载调用?

如何在docker中访问电脑上的GPU&#xff1f;如何在docker中使用GPU进行模型训练或者加载调用&#xff1f; 其实使用非常简单&#xff0c;只是一行命令的事&#xff0c;最主要的事配置好驱动和权限。 docker run -it --rm --gpus all ycj520/centos:1.0.0 nvidia-smi先看看 st…

【Spring实战】33 Spring Boot3 集成 Nacos 配置中心

文章目录 1. 配置中心定义2. 解决哪些问题3. 常用的配置中心4. 使用示例1&#xff09;没引入 Nacos 配置中心2&#xff09;引入依赖3&#xff09;配置Nacos连接信息4&#xff09;在 Nacos 上配置属性5&#xff09;在 Spring Boot 中使用配置6&#xff09;启动服务&验证7&am…

2024新版阿里云服务器价格计算器,报价不求人自己查

阿里云服务器价格计算器&#xff0c;鼠标选择云服务器ECS实例规格、地域、系统盘、带宽及购买时长即可一键计算出精准报价&#xff0c;报价不求人使用计算器自己查&#xff0c;报价清单支持下载。阿里云服务器网aliyunfuwuqi.com分享阿里云服务器价格计算器链接地址&#xff1a…

Dockerfile构建Nginx访问说明

Dockerfile使用情况 20210903 Dockerfile ,Nginx 参考地址&#xff1a;https://yeasy.gitbook.io/docker_practice/image/build 编写简单Dockerfile 在一个空白目录中&#xff0c;建立一个文本文件&#xff0c;并命名为 Dockerfile&#xff1a; $ mkdir mynginx $ cd myngin…

Blender教程(基础)-切分工具-11

再菜单栏左侧、鼠标左键长按切割工具弹出选项&#xff0c;选择切分工具即可找到切分工具。 一、切割使用 A键全选需要切分的物体&#xff0c;再选择切分后再操作物体上单机长按鼠标左键划分切分范围 选择好切分位置后点击确定如下图所示&#xff1a;Enter键确认切分 二、…

Hugging Face推出自定义AI聊天Assistants;谷歌推出图像生成工具 ImageFX

&#x1f989; AI新闻 &#x1f680; 谷歌推出图像生成工具 ImageFX 摘要&#xff1a;谷歌在 Imagen 2 的基础上推出新的图像生成工具 ImageFX&#xff0c;通过简单的文字提示可以生成高质量图像。该工具包含了提示界面&#xff0c;让用户可以快速尝试创作和想法的相邻维度。…

LLM之Agent(十一)| 多智能体框架CrewAI与AutoGen相比

基于LLM构建的Agent中有一个明显的现象就是多智能体体系结构的表现要超越单智能体&#xff0c;即使单智能体使用无可挑剔的提示策略。本文将探索另一个有趣的多智能体框架——CrewAI。 一、CrewAI整体优势 CrewAI可以应用在生成环境中。它在发言人的反应和编排上牺牲了一点灵活…

kubecolor让kubelet更好看

kubecolor让kubelet更好看 默认情况下kubectl输出都是白色,在列特别多的情况下比较难分清楚具体是哪个对应哪个. 发现kubecolor可以完美解决这样的问题. 1. 安装kubecolor mkdir kubecolor cd kubecolor wget https://github.com/kubecolor/kubecolor/releases/download/v0.…

uniapp 项目请求接口千万别写死

我接手我徒弟的项目发现有一个请求接口是写死的。比如这种 config.baseUrlhttps://www.test1.cn/这样写虽然没有问题&#xff0c;但是如果遇到上传或下载接口 而且每个文件都有 这么多文件都写死 不利于维护。 下面我优化的是这样 新建一个config/index.js 引入方法 /config …

c# Get方式调用WebAPI,WebService等接口

/// <summary> /// 利用WebRequest/WebResponse进行WebService调用的类 /// </summary> public class WebServiceHelper {//<webServices>// <protocols>// <add name"HttpGet"/>// <add name"HttpPost"/>// …

Jasperreport 生成 PDF之省纸模式

省纸模式顾名思义就是节省纸张&#xff0c;使用 Jasper 去生成 PDF 的时候如果进行分组打印的时候&#xff0c;一页 A4 纸只会打印一组数据。这种情况下&#xff0c;如果每组数据特别少&#xff0c;只有几行&#xff0c;一页 A4 纸张根本用不了&#xff0c;就会另起一页继续打印…