计算机毕业设计ssm+vue+elementUI基于html的戒烟网站

news2025/7/13 5:00:12

项目介绍

大量研究证据表明,戒烟可降低或消除吸烟导致的健康危害。任何人在任何年龄戒烟均可获益,且戒烟越早、持续时间越长,健康获益就越大。随着时代发展人们对健康也越来越重视,更多的人参与到了戒烟的行列中来,本系统正是出于这样的目的而开发的
本网站设计了2种角色:管理员,用户。通过此网站,用户可以对首页,用户分享,论坛交流,公告文章,个人中心,后台管理等功能进行操作;管理员可以对网站所有功能进行管理,包括管理用户的基本信息。该网站大大提高戒烟效率,节约了大量的时间和精力

开发环境

开发语言:Java
框架:ssm
技术:JSP
JDK版本:JDK1.8
服务器:tomcat7
数据库:mysql 5.7(一定要5.7版本)
数据库工具:Navicat11
开发软件:eclipse/myeclipse/idea
Maven包:Maven3.3.9
浏览器:谷歌浏览器

功能介绍

本网站设计了2种角色:管理员,用户。通过此网站,用户可以对首页,用户分享,论坛交流,公告文章,个人中心,后台管理等功能进行操作;管理员可以对网站所有功能进行管理,包括管理用户的基本信息
请添加图片描述

相关代码

/**
 * 登录相关
 */
@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);
    	UserEntity u = userService.selectOne(new EntityWrapper<UserEntity>().eq("username", user.getUsername()));
    	if(u!=null && u.getId()!=user.getId() && u.getUsername().equals(user.getUsername())) {
    		return R.error("用户名已存在。");
    	}
        userService.updateById(user);//全部更新
        return R.ok();
    }

    /**
     * 删除
     */
    @RequestMapping("/delete")
    public R delete(@RequestBody Long[] ids){
        userService.deleteBatchIds(Arrays.asList(ids));
        return R.ok();
    }
}

效果图

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
1 绪论 6
1.1项目背景 6
1.2项目意义 6
1.3项目研究的目的和方法 6
1.3.1项目的研究目的 6
1.3.2开发方法及步骤 6
2 开发平台介绍 8
2.1平台开发环境 8
2.1.1硬件平台 8
2.1.2软件平台 8
2.2相关技术 8
2.2.1 B/S结构 8
2.2.2 Java语言简介 9
2.2.3 Vue.js介绍 10
2.2.4 MySql数据库 10
2.2.5 MySQL环境配置 10
2.2.6 Ssm框架 11
3需求分析 12
3.1对功能上的需求 12
3.2对性能的规定 12
3.3网站现状分析 13
3.4网站设计规则与运行环境 13
4网站设计 15
4.1总体设计 15
4.2数据库设计 15
4.2.1概念模型设计 15
4.2.2数据库表结构 16
5网站详细设计与实现 21
5.1网站功能模块 21
5.2管理员功能模块 22
5.3用户功能模块 25
网站的调试和测试 27
结 论 28
参考文献 29
致 谢 30

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

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

相关文章

React环境搭建

目录 1.React环境搭建 2.React项目结构 3.React优点和缺点 1.声明式设计 2.高效-React通过对DOM的模拟(创建虚拟DOM)&#xff0c;最大限度地减少DOM操作(底层是Diff算法) 3.单向响应的数据流 4.组件化开发-复用和便于维护 5.缺点&#xff1a;React本身能做的事并不多&am…

手机实时预览vscode写的html页面

一、vscode安装Live Server插件 扩展&#xff08;CtrlShiftX&#xff09;搜索Live Server进行安装 二、设置电脑IP &#xff08;1&#xff09;winR 打开终端输入&#xff1a;ipconfig &#xff08;2&#xff09;找到SDN 服务器 &#xff08;3&#xff09;设置IPv4窗口 高级…

为什么WinXP SP2有时候会忘记CD自动播放的设置?

实际上&#xff0c;它并没有忘记&#xff0c;它只是想和你再次确认一下。 这是 Windows XP2 负责开发 CD 自动播放组件的工程师和我说的。 在 Windows XP 中&#xff0c;处理 CD 自动播放时会有两个问题。 第一&#xff0c;当你安装了一个新的可以处理 CD 自动播放的应用程序…

分库分表利器——shardingJdbc

一、分库分表方式 1.1 垂直切分 1.1.1 垂直分表&#xff08;拆分字段——但每张表的数据量是不变的&#xff09; 把一张表的一部分字段存在一张新表里面&#xff0c;将另一部分字段存在另一张新表中 1.1.2 垂直分库&#xff08;专库专表&#xff09; 把单一数据库按照业务…

一篇文章带你学完mysql的DQL查询操作

目录 DQL简介 具体操作 数据准备 简单查询 运算符 条件查询 排序查询 聚合查询 null值的处理 分组查询 分页查询 insert into select语句 总结 DQL简介 概念&#xff1a;DQL&#xff08;data query language&#xff09;数据查询语言 select操作 排序规则&…

关于Excel自动换行,不会在西文单词中间换行的问题

工作上遇到了一个Excel中换行的问题&#xff0c;就是使用了Excel的默认自动换行后&#xff0c;如果一个单词很长&#xff0c;那么一般情况下是不会在单词中间换行的。在网上查了些资料&#xff0c;最终找到了一个不算太完美的方法。 结果 就是使用vba修改单元格里面的内容&am…

SpringBoot SpringBoot 开发实用篇 4 数据层解决方案 4.11 SpringBoot 整合 MongoDB

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇4 数据层解决方案4.11 SpringBoot 整合 MongoDB4.11.1 SpringBoot 整…

Redis 到底是单线程还是多线程呢?

前言 Redis是高性能分布式缓存常用中间件&#xff0c;我们经常说Redis是单线程的&#xff0c; 也有人说Redis在6.0版本采用了多线程&#xff0c;那么Redis到底是采用单线程呢&#xff1f;还是多线程&#xff1f; 通常说 Redis 是单线程&#xff0c;其实主要是指 Redis 对外提供…

CNCF基金会成员的分类

CNCF简介 2015年&#xff0c;谷歌与Linux基金会及众多行业合作伙伴一起建立了一个云原生计算基金会&#xff08;CNCF&#xff0c;Cloud Native Computing Foundation&#xff09;。CNCF旨在创建并推动一个新的计算范式&#xff0c;这个范式的目的是增强现代分布式系统&#xf…

dataset.py篇

dataset.py 目录&#xff1a; 前言观察数据书写代码函数解释 前言 在步骤中需要写自己的dataset类&#xff0c;并将label和image一一对应后返回。 观察数据 在书写dataset前最重要的就是要观察数据集&#xff0c;对数据集进行分析&#xff0c;比如了解图片大小&#xff0c…

maven基础入门

maven 1、maven简介 Apache Maven 是一个项目管理和构建工具&#xff0c;它基于项目对象模型(POM)的概念&#xff0c;通过一小段描述信息来管理项目的构建、报告和文档。官网 &#xff1a;http://maven.apache.org/什么是Maven&#xff1f;这里先引用知乎的一个回答 我先不说…

第五届“传智杯”全国大学生计算机大赛(练习赛) [传智杯 #5 练习赛] 复读

[传智杯 #5 练习赛] 复读 题目描述 给定若干个字符串&#xff0c;不定数量&#xff0c;每行一个。有些字符串可能出现了多次。如果读入一个字符串后&#xff0c;发现这个字符串以前被读入过&#xff0c;则这个字符串被称为前面相同的字符串的复读&#xff0c;这个字符串被称为…

Redis分布式锁剖析和几种客户端的实现

1. 背景 在传统的单体项目中&#xff0c;即部署到单个IIS上&#xff0c;针对并发问题&#xff0c;比如进销存中的出库和入库问题&#xff0c;多个人同时操作&#xff0c;属于一个IIS进程中多个线程并发操作的问题&#xff0c;这个时候可以引入线程锁lock/Monitor等&#xff0c;…

信息论随笔(三)交互信息量

之前讨论了一个事件的自信息量&#xff0c;但是实际情况下往往有多个事件发生&#xff0c;而且这些事件之间相互是有联系的。比如知道一个人踢足球&#xff0c;那么这个人很有可能会看世界杯。也就是说&#xff0c;我们可以通过一个事件获得另外一个事件的信息&#xff0c;或者…

解决Android Studio等开发软件出现更新TKK失败的两种方案

解决Android Studio等开发软件出现更新TKK失败的两种方案方案一 配置hosts1. 配置域名与IP2.扫描国内可用的IP方案二 替换翻译引擎百度翻译引擎在Android Studio等开发软件中利用Translation等翻译插件时&#xff0c;出现无法翻译的提示&#xff1a;更新TKK失败&#xff0c;请检…

数据结构之栈的实现及相关OJ题

&#x1f57a;作者启明星使 &#x1f383;专栏&#xff1a;《数据库》《C语言》 &#x1f3c7;分享一句话&#xff1a; 对的人会站在你的前途里 志同道合的人才看得懂同一片风景 大家一起加油&#x1f3c4;‍♂️&#x1f3c4;‍♂️&#x1f3c4;‍♂️ 希望得到大家的支持&am…

【毕业设计】新闻分类系统 - 深度学习 机器学习

文章目录0 前言1 简介2 参与及比较算法3 先说结论4 实现过程4.1 数据爬取4.2 数据预处理5 CNN文本分类6 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦! 这两年开始&a…

事件总线EventBus

事件总线是对发布-订阅模式的一种实现&#xff0c;是一种集中式事件处理机制&#xff0c;允许不同的组件之间进行彼此通信而又不需要相互依赖&#xff0c;达到一种解耦的目的。 什么是“总线”&#xff1a;一个集中式的事件处理机制。同时服务多个事件和多个观察者。相当于一个…

C#编程深入研究变量,类型和方法

编写正确的C#代码 简单的调试技术 变量的语法 声明类型和值 仅声明类型 访问修饰符 使用类型 通用内置类型 类型转换 推断式声明 自定义类型 类型综述 命名变量 变量的作用域 运算符 定义方法 指定参数 指定返回值 常见的Unity方法 Start方法 Update方法 …

金山云:基于 JuiceFS 的 Elasticsearch 温冷热数据管理实践

01 Elasticsearch 广泛使用带来的成本问题 Elasticsearch&#xff08;下文简称“ES”&#xff09;是一个分布式的搜索引擎&#xff0c;还可作为分布式数据库来使用&#xff0c;常用于日志处理、分析和搜索等场景&#xff1b;在运维排障层面&#xff0c;ES 组成的 ELK&#xff…