首页 > 其他分享 >前后端分离SSM+VUE3基于web的医院食堂订餐系统

前后端分离SSM+VUE3基于web的医院食堂订餐系统

时间:2024-09-18 16:20:32浏览次数:3  
标签:web return 系统 SSM 订餐 user userService 操作 public

目录

功能和开发技术介绍

技术范围:SpringBoot、Nodejs、Python、Vue、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习、SSM、HLMT、Jsp、PHP等设计与开发。
本文介绍了使用SpringBoot作为后端框架,Vue作为前端框架,MyBatis-Plus进行持久层开 。详细描述了系统测试的目的、功能测试案例,包括登录验证和用户管理,以及数据库设计。
前端:vue3
开发工具:IDEA 或者eclipse都支持
编程语言: java
框架:springboot/ssm都支持
jdk版本:jdk1.8以上均可
数据库: mysql 版本不限
数据库工具:Navicat/SQLyog都可以
详细技术:java+springboot+vue3+MYSQL+MAVEN

前后端分离Vue3+SSM

具体实现截图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

开发核心技术介绍:

Vue.js的核心是虚拟DOM技术。虚拟DOM是一个内存中的数据结构,它可以帮助Vue.js实现高效的DOM操作,它采用了响应式数据绑定、虚拟DOM、组件化等现代化技术,为开发者提供了一种灵活、高效、易于维护的开发模式,当数据发生变化时,UI也会自动更新,这样就使得开发者可以更加专注于数据处理,而不是手动更新UI,这就是Vue体现出来的简洁,灵活,高效。
Java具有面向对象编程的特点,通过可视化开发可以快速的创建一个应用程序,减少程序员的工作量,Java是一种简洁、现代、通用的语言,具有垃圾收集机制,通过内存释放技术完成各种定义类型的回收,具有较强的编程能力。Java编译后生成Dll文件,其他程序可以通过对应的接口实现操作[15]。
Java具有典型的继承、封装多态特征,可以使用类和接口,并进行输入输出数据流,支持多线程和反射、以及网络编程。Java语言的多态提供方法中的和复写,Java语言不仅仅可以支持后台框架的开发,也可以与web前端进行融合[16]。
Spring Boot的一个主要优点是它的自动配置功能。它可以根据你的项目中的依赖关系自动配置应用程序。这使得配置应用程序变得非常容易,因为你不需要手动配置每个依赖项。
Spring Boot内置了Tomcat、Jetty和Undertow等服务器,这意味着你可以直接使用它们而不需要额外的安装和配置。
Mybatis是基于Mysql的一个优秀的持久层框架,其几乎将所有连接Java语言需要配置的地方包括JDBC都封装起来,不在向JDBC那样繁琐,让开发人员专注于编写SQL语句,其内部页添加了许多自己的规则,以便让Spring框架与其无缝结合。

技术创新点vue3和vue2的区别:

Vue2和Vue3的主要区别包括:性能提升、体积减小、响应式原理改变、支持碎片、Composition API的引入、更好的TypeScript支持、生命周期钩子的变化、指令与插槽的差异、以及一些其他的新特性 Vue3相比Vue2具有以下改进:可以没有根标签,减少内存使用;采用组合式API,使代码更有序;生命周期钩子函数有所变化;v-if和v-for的优先级不同;diff算法优化,减少不必要的节点比较;响应式原理通过Proxy实现,性能提升。Vue3还具有更快的渲染性能、更小的体积、更好的TypeScript支持和更灵活的组合式API。
Vue 3 使用了 Proxy 来重写响应式系统,相比 Vue 2 的 Object.defineProperty,更加直观和强大。
在 Vue 3 中,可以在更深的层次上追踪响应式变量的变化,使得开发者能够更准确地监听数据变化。
创建前:beforeCreate -> 使用setup()
创建后:created -> 使用setup()
挂载前:beforeMount -> onBeforeMount
挂载后:mounted -> onMounted
更新前:beforeUpdate -> onBeforeUpdate
更新后:updated -> onUpdated
销毁前:beforeDestroy -> onBeforeUnmount
销毁后:destroyed -> onUnmounted
异常捕获:errorCaptured -> one rrorCaptured
被激活:onActivated 被包含在中的组件,会多出两个生命周期钩子函数。被激活时执行。
切换:onDeactivated 比如从 A 组件,切换到 B 组件,A 组件消失时执行

核心代码部分展示

/**
 * 登录相关
 */
@RequestMapping("users")
@RestController
public class UsersController{
	
	@Autowired
	private UsersService userService;
		@Autowired
	private TokenService tokenService;
	/**
	 * 登录
	 */
	@IgnoreAuth
	@PostMapping(value = "/login")
	public R login(String username, String password, String captcha, HttpServletRequest request) {
		UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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 UsersEntity user){
    	if(userService.selectOne(new EntityWrapper<UsersEntity>().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){
    	UsersEntity user = userService.selectOne(new EntityWrapper<UsersEntity>().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,UsersEntity user){
        EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
    	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( UsersEntity user){
       	EntityWrapper<UsersEntity> ew = new EntityWrapper<UsersEntity>();
      	ew.allEq(MPUtil.allEQMapPre( user, "user")); 
        return R.ok().put("data", userService.selectListView(ew));
    }

    /**
     * 信息
     */
    @RequestMapping("/info/{id}")
    public R info(@PathVariable("id") String id){
        UsersEntity user = userService.selectById(id);
        return R.ok().put("data", user);
    }

系统开发流程

MyBatis进行数据库持久化操作,完成数据处理,负责增删改查的基本操作。本系统通过DAO层完成持久层的设计,在持久层中定义实现的接口。接口方法只是定义业务处理,不具体实现,使得目录结构层次清晰,然后在Spring层中对接口实现。数据持久层对数据库操作是通过配置文件进行配置。DAO层进来数据结构和数据库数据的表对应。
Spring层是作为系统的业务层实现业务逻辑。在本系统中通过Service层来实现业务逻辑,Service通过接口方法和实现类进行设计,在接口中定义了各个操作类,具体的实现在Service层中定义的接口进行调用,Service实现通用的业务逻辑。
表现层是通过SpringMVC进行实现,在本系统中创建Controller层,负责业务模块的跳转。在Controller流程中,调用Service层的方法来实现对应的业务逻辑。同时通过配置文件来实现不同的控制器。
最后View层是实现页面的视图,通过创建Vue3页面和数据显示来完成操作,View层和控制层相互结合。视图层通过页面的跳转进入到Controller层,完成数据的处理并返回到视图层。
通过创建springboot框架,可以进行分模块开发,因为Dao层和Service层相互独立。不同的成员负责不同的模块,即可同步开发。而视图层和Controller层关系比较紧密,需要协作开发。

系统运行步骤

(1) 创建好数据库并导入,
(2) 创建后台Springboot三层架构(controller,service,mapper层)并启动测试
(3) 导入并编译前端代码vue:网站和后台管理
编译:npm install
试运行:npm run dev

非功能需求分析

在开发本系统时,需要满足基本的功能需求之外,还需要确定其非功能需求,保证性能和质量。如果没有非功能需求,也会严重影响系统的实施过程的要求。本系统从性能、安全、可操作性等方面考虑,来进行非功能性需求分析。
性能需求是开发系统的重要指标。包括响应速度,系统的并发用户访问量。在设计系统时,充分考虑到当前系统可能存在的最高并发数量,并由此选择对应的硬件服务器和对应的宽带容量,上传下载的速率等问题。对于系统的查询速度已经控制在两秒之内。同时考虑当遇到高并发时是否会影响查询时间。
安全性需求,对于所有的管理系统来说,数据安全都是非常重要的,要严格控制其数据的安全性,防止外泄和被不法分子盗取。所以,系统应该设置不同的操作权限,并加强数据库的加密管理和访问控制,并定期对数据进行维护,及时进行数据备份。
可操作性需求指的是系统设计时需要考虑针对不同的用户是否可以让对方明确的知道如何操作流程。对于后台管理来说也要考虑操作的便捷性和录入数据的简单性,不能因为管理系统给用户带来操作负担。另外,对于系统的录入也需要进行提示或者警告。比如某一项表单需要友好的进行提示用户是否需要录入,以及如何录入不同类型的数据,引导用户正确的去操作,尽最大可能的方便用户进行操作。

操作可行性

本系统操作无需详细的操作文档,只需要用户简单的进行操作就可以掌握操作流程,购买古装操作方便、快捷,用户可对每种分类的古装进行管理,如:执行删除、修改等操作。管理人员随时可以通过后台对系统进行有效的管理。经过以上分析,操作运行方面是可行的[10]。。

软件测试

系统的主要内容包括页面测试、导航测试、技术环境、界面风格和可靠性测试。页面测试,在内容中查看是否符合规范、整体是否完整,功能菜单是否可以操作。导航栏目中提供系统功能的导航,快速的定位到功能页。界面风格,界面中的字体大小是否合适,颜色是否协调。可靠性测试,确保系统在多人并发运行访问系统后,在合理的时间范围内响应。系统的数据符合传输安全。依据软件和互联网数据的要求,采用保护措施,确保系统的可靠性。管理员的权限划分合理,分配用户对应的操作范围区分,区分不同类别用户的身份。然后做好数据备份,避免因软硬件软硬件故障造成的数据丢失。

源码获取

文章下方名片联系我即可~

标签:web,return,系统,SSM,订餐,user,userService,操作,public
From: https://blog.csdn.net/zhgl322/article/details/142316004

相关文章

  • 通过 NSSM 把 FastAPI+Celery+Flower 注册成 3个Windos 服务
    通过NSSM把FastAPI+Celery+Flower注册成3个Windos服务什么是nssm?是一个服务封装程序,它可以将普通exe程序封装成服务,实现开机自启动,同类型的工具还有微软自己的srvany,不过nssm更加简单易用,并且功能强大。nssm官网nssm常用命令nssminstallservername//创建servername......
  • Nginx-HTTP和反向代理web服务器
    概述Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,公开版本1.19.6发布于2020年12月15日。其将源代码以类BSD许可证的形式发布,因它的稳......
  • DIRB:一款强大的Web目录扫描工具使用指南
    DIRB:一款强大的Web目录扫描工具使用指南DIRB是一款广泛使用的开源Web内容扫描工具,它专注于发现Web服务器上存在的目录和文件。对于安全研究员、渗透测试人员以及Web开发者来说,DIRB是一个不可或缺的工具,它能帮助他们识别潜在的入口点,从而进一步评估目标网站的安全性。本文将详细介......
  • [强网杯2019]supersqli--Web安全进阶系列
    [强网杯2019]supersqli--Web安全进阶系列使用引号判断是否存在sql注入报错,可能存在sql注入,注入payload,判断列数,结果为不存在4列?inject=1'orderby4--q换2试试,正常显示,说明存在2列输出结果?inject=1'orderby2--q尝试使用联合注入失败,并且限制了select|update......
  • Web安全中的XSS攻击详细教学,Xss-Labs靶场通关全教程(建议收藏)
    漏洞原理xss(crosssitescript)跨站脚本攻击,指的是攻击者往web页面插入恶意脚本代码,当用户浏览时,嵌入web页面里的脚本代码就会执行,从而达到恶意攻击用户的特殊目的,它主要分为俩种类型存储型XSS(持久型):攻击者将恶意脚本存储在目标服务器上,每当用户访问受感染的页面时,恶意脚本就......
  • 488.中国风中秋节专题网页 大学生期末大作业 Web前端网页制作 html+css+js
    目录一、网页概述二、网页文件 三、网页效果四、代码展示1.html2.CSS3.JS五、总结1.简洁实用2.使用方便3.整体性好4.形象突出5.交互式强六、更多推荐欢迎光临仙女的网页世界!这里有各行各业的Web前端网页制作的案例,样式齐全新颖,并持续更新!感谢CSDN,提供了这......
  • Java结合WebSocket 实现简单实时双人协同 pk 答题
    引入实现过程WebSocket后端1、实体类2、异常处理类3、游戏状态枚举类4、ws主类5、配置类及工具类引入引入与技术选型:在实时互动应用中,实现流畅的多人协同对战功能是一大挑战。WebSocket技术,以其全双工通信能力,提供了解决方案。不同于传统HTTP请求的短连接,WebSocket建立持久连接,极......
  • go实战全家桶优化goweb实现权限控制
    UML开源water/goweb控制端typeIrpcCheckAllowedinterface{   //测试开关、是否检查权限,方便测试可以关闭   IfCheckRes()bool   IfCheckSession()bool   //根据token获取useid的实现   RpcUserIdGetBySession(ctx*gin.Context,token......
  • INFT 2064 Web Technologies
    INFT2064WebTechnologiesAssignment1SAExpiationDataAllworkistobedoneindividuallyandmustbeyourownwork.YoumustnotuseAItools,discussorshareyour@razorcodeorLINQ/LambdaC#,JavaScriptcodewithanyoneelse. Youmustonlysubmit......
  • web方式访问ssh
    环境说明需求:通过Web浏览器来登录后端的SSHServer优点:方便、快捷、安全、可控环境:VMWareWorkstationNAT模式的VM实现:CentOS+Docker一、docker安装1、使用官方安装脚本自动安装环境准备:虚拟机可以联通互联网,联网运行脚本安装即可。curl-fsSLhttps://ge......