文章目录

  • 0 前言
  • 1 前言
  • 2 系统实现
    • 2.1 数据库表
    • 2.2 前后端分离架构
    • 2.3 技术栈
    • 2.4 相关代码
  • 3 项目展示
  • 4 最后

0 前言

Hi,同学们好呀,学长今天带大家复盘一个学长帮往届同学做的一个毕业作品

java web 图书管理系统

1 前言

由于帮助以为同学做的课设,于是就抽了点闲余时间,写了下,基本全部都涉及到,包括书籍信息的更新,查看所有的书籍。

MIS最重要的就是需求分析,只有分析清晰了,才能动手编程,所谓编程,不过是把一种思路用代码实现而已,这里就图书管理系统来说,这个系统至少要完成如下内容:

  • 图书信息的增加与删除
  • 图书信息的更新
  • 全部书籍的查看

2 系统实现

2.1 数据库表

当需求分析完成之后,我们要考虑的就是这些信息如何存储在表里,需要几张表,每张表存储什么信息,字段名是什么,什么类型;在这里,我认为只用一张表,用来存储书籍的有关信息

搭建数据库

DROP TABLE IF EXISTS `book`;/*!40101 SET @saved_cs_client     = @@character_set_client */;SET character_set_client = utf8mb4 ;CREATE TABLE `book` (`id` int(10) NOT NULL AUTO_INCREMENT,`name` varchar(20) DEFAULT NULL,`author` varchar(20) DEFAULT NULL,`publish` varchar(20) DEFAULT NULL,`pages` int(10) DEFAULT NULL,`price` float(10,2) DEFAULT NULL,`bookcaseid` int(10) DEFAULT NULL,`abled` int(10) DEFAULT NULL,PRIMARY KEY (`id`),KEY `FK_ieh6qsxp6q7oydadktc9oc8t2` (`bookcaseid`),CONSTRAINT `FK_ieh6qsxp6q7oydadktc9oc8t2` FOREIGN KEY (`bookcaseid`) REFERENCES `bookcase` (`id`)) ENGINE=InnoDB AUTO_INCREMENT=119 DEFAULT CHARSET=utf8;/*!40101 SET character_set_client = @saved_cs_client */;---- Dumping data for table `book`--LOCK TABLES `book` WRITE;/*!40000 ALTER TABLE `book` DISABLE KEYS */;INSERT INTO `book` VALUES (1,'解忧杂货店','东野圭吾','电子工业出版社',102,27.30,9,1),(2,'追风筝的人','卡勒德·胡赛尼','中信出版社',330,26.00,1,1),(3,'人间失格','太宰治','作家出版社',150,17.30,1,1),(4,'这就是二十四节气','高春香','电子工业出版社',220,59.00,3,1),(5,'白夜行','东野圭吾','南海出版公司',300,27.30,4,1),(6,'摆渡人','克莱儿·麦克福尔','百花洲文艺出版社',225,22.80,1,1),(7,'暖暖心绘本','米拦弗特毕','湖南少儿出版社',168,131.60,5,1),(8,'天才在左疯子在右','高铭','北京联合出版公司',330,27.50,6,1),(9,'我们仨','杨绛','生活.读书.新知三联书店',89,17.20,7,1),(10,'活着','余华','作家出版社',100,100.00,6,1),(11,'水浒传','施耐庵','三联出版社',300,50.00,1,1),(12,'三国演义','罗贯中','三联出版社',300,50.00,2,1),(13,'红楼梦','曹雪芹','三联出版社',300,50.00,5,1),(14,'西游记','吴承恩','三联出版社',300,60.00,3,1);/*!40000 ALTER TABLE `book` ENABLE KEYS */;UNLOCK TABLES;

2.2 前后端分离架构

前后端分离就是将⼀个应⽤的前端代码和后端代码分开写,为什么要这样做?

如果不使⽤前后端分离的⽅式,会有哪些问题?

传统的 Java Web 开发中,前端使⽤ JSP 开发,JSP 不是由后端开发者来独⽴完成的。

前端—》HTML 静态⻚⾯ —〉后端 —》JSP

这种开发⽅式效率极低,可以使⽤前后端分离的⽅式进⾏开发,就可以完美地解决这⼀问题。

前端只需要独⽴编写客户端代码,后端也只需要独⽴编写服务端代码提供数据接⼝即可。

前端通过 Ajax 请求来访问后端的数据接⼝,将 Model 展示到 View 中即可。

前后端开发者只需要提前约定好接⼝⽂档(URL、参数、数据类型…),然后分别独⽴开发即可,前端 可以造假数据进⾏测试,完全不需要依赖于后端,最后完成前后端集成即可,真正实现了前后端应⽤的 解耦合,极⼤地提升了开发效率。
单体—》前端应⽤ + 后端应⽤

前端应⽤:负责数据展示和⽤户交互。

后端应⽤:负责提供数据处理接⼝。

前端 HTML —》Ajax —〉RESTful 后端数据接⼝。

传统的单体应⽤

前后端分离的结构

2.3 技术栈

  • Spring Boot + Vue
  • 使⽤ Spring Boot 进⾏后端应⽤开发,使⽤ Vue 进⾏前端应⽤开发

Vue + Element UI

  • Vue 集成 Element UI
  • Element UI 后台管理系统主要的标签
  • el-container:构建整个⻚⾯框架。
  • el-aside:构建左侧菜单。
  • el-menu:左侧菜单内容,常⽤属性:
  • default-openeds:默认展开的菜单,通过菜单的 index 值来关联。
  • default-active:默认选中的菜单,通过菜单的 index 值来关联。
  • el-submenu:可展开的菜单,常⽤属性:
  • index:菜单的下标,⽂本类型,不能是数值类型。
  • template:对应 el-submenu 的菜单名。
  • i:设置菜单图标,通过 class 属性实则
  • el-icon-messae
  • el-icon-menu
  • el-icon-setting
  • el-menu-item:菜单的⼦节点,不可再展开,常⽤属性:
  • index:菜单的下标,⽂本类型,不能是数值类型。

2.4 相关代码

项目配置

spring:datasource:url: jdbc:mysql://localhost:3306/library?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaiusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Driverjpa:show-sql: trueproperties:hibernate:format_sql: trueserver:port: 8181

跨域配置

@Configurationpublic class CrosConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS").allowCredentials(true).maxAge(3600).allowedHeaders("*");}}

实体类

@Entity@Datapublic class Book {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)private Integer id;private String name;private String author;}

业务代码

@RestController@RequestMapping("/book")@CrossOriginpublic class BookHandler {@Autowiredprivate BookRepository bookRepository;@GetMapping("/findAll/{page}/{size}")public Page<Book> findAll(@PathVariable("page") Integer page, @PathVariable("size") Integer size){Pageable pageable= PageRequest.of(page-1,size);return bookRepository.findAll(pageable);}@PostMapping("/save")public String save(@RequestBody Book book){Book result = bookRepository.save(book);if(result != null){return "success";}else{return "error";}}@GetMapping("/findById/{id}")public Book findById(@PathVariable("id") Integer id){return bookRepository.findById(id).get(); //返回的是optional,book上又包了一层,所以get才能取出来}@PutMapping("/update")public String update(@RequestBody Book book){Book result = bookRepository.save(book);if(result != null){return "success";}else{return "error";}}@DeleteMapping("/deleteById/{id}")public void deleteById(@PathVariable("id") Integer id){bookRepository.deleteById(id);}}

前端视图层

<template><el-form style="width: 60%" :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm"><el-form-item label="编号" ><el-input v-model="ruleForm.id" readonly></el-input></el-form-item><el-form-item label="图书名称" prop="name"><el-input v-model="ruleForm.name"></el-input></el-form-item><el-form-item label="作者" prop="author"><el-input v-model="ruleForm.author"></el-input></el-form-item><el-form-item><el-button type="primary" @click="submitForm('ruleForm')">修改</el-button><el-button @click="resetForm('ruleForm')">重置</el-button></el-form-item></el-form></template><script>export default {data() {return {ruleForm: {id:'',name: '',author: '',},rules: {name: [{ required: true, message: '图书名不能为空哦', trigger: 'blur' },],author: [{ required: true, message: '作者不能为空哦', trigger: 'blur' },]}};},methods: {submitForm(formName) {const _this=this;this.$refs[formName].validate((valid) => {if (valid) {axios.put('http://localhost:8181/book/update',this.ruleForm).then((res=>{if(res.data=="success"){_this.$alert('《'+_this.ruleForm.name+'》修改成功', '恭喜你',{confirmButtonText: '确定',callback: action => {_this.$router.push('/BookManager');}});}}));} else {return false;}});},resetForm(formName) {this.$refs[formName].resetFields();},},created() {         /*要拿参数的时候写route 跳转的时候写router*/const _this=this;axios.get('http://localhost:8181/book/findById/' + this.$route.query.id).then((res) => {_this.ruleForm=res.data;});}}</script>

3 项目展示

主页

修改页面

添加图书

删除图书

4 最后

【毕业设计】基于SSM的图书管理系统相关推荐

  1. 基于SSM框架图书管理系统开发与设计(附源码资料)-毕业设计

    文章目录 1. 适用人群 2. 你将收获 3.项目简介 4.技术实现 5.系统功能 5.1.管理员身份登录 5.1.1.登录 5.1.2.管理员登录首页 5.1.3.借阅管理 5.1.4.图书管理 5 ...

  2. 含文档+PPT+源码等]精品基于SSM的图书管理系统[包运行成功]

     博主介绍:✌在职Java研发工程师.专注于程序设计.源码分享.技术交流.专注于Java技术领域和毕业设计✌ 项目名称 含文档+PPT+源码等]精品基于SSM的图书管理系统[包运行成功] 系统介绍 & ...

  3. java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试

    java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试 java计算机毕业设计基于Ssm学生信息管理系统源程序+mysql+系统+lw文档+远程调试 本源码技术栈 ...

  4. java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署

    java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运行部署 java计算机毕业设计基于Ssm学生信息管理系统源码+数据库+系统+lw文档+mybatis+运 ...

  5. 毕业设计-基于SSM医院信息管理系统

    环境:开发工具:idea,数据库:MySQL5.7 jdk1.8 架构:springMVC,前端jsp 主要功能 管理员: 员工管理(添加员工.修改员工.删除员工.查询指定员工.导出数据) 岗位管理( ...

  6. 计算机毕业设计-基于ssm的问卷调查管理系统

    计算机毕业设计-基于ssm的问卷调查管理系统-线上调查问卷系统java代码 1.开发环境及工具下载 开发语言:Java 架构:B/S 框架:SSM(Spring.SpringMVC.MyBatis) ...

  7. 计算机毕业设计-基于ssm的健身房管理系统-基于javaweb的健身房系统代码

    计算机毕业设计-基于ssm的健身房管理系统-基于javaweb的健身房系统代码 注意:该项目只展示部分功能,如需了解,联系咨询即可. 作者:IT跃迁谷 1.开发环境 开发语言:Java 后台:SSM( ...

  8. 【JAVA程序设计】基于SSM的图书管理系统-有论文文档

    基于SSM的图书管理系统-有文档 项目获取 项目简介 开发环境 项目技术 功能结构 文档目录 运行截图 项目获取 获取方式(点击下载):是云猿实战 项目经过多人测试运行,可以确保100%成功运行. 项 ...

  9. SSM毕业设计-基于SSM的个人相册管理系统

    源码编号:D-I20 点击查看 项目类型:Java web项目/Java EE项目/SSM项目(非开源) 源码获取:基于SSM的个人相册管理系统 当前版本:V2.0版本 用户类型:双角色(普通用户.管 ...

  10. 毕业设计——基于SSM的健身房管理系统

    该系统已经上传CSDN官方资源,下载地址: https://download.csdn.net/download/qq_16397653/14027661 1.包含源程序,数据库脚本.代码和数据库脚本 ...

最新文章

  1. trait功能 php,PHP之Trait功能与用法实例分析
  2. linux git 推送空文件夹
  3. 清华尹成python爬虫百度云_爬虫:利用python完成百度贴吧数据采集
  4. SLAM: Orb_SLAM的使用小综述
  5. Eclipse 通过 JDBC 连接 SQL Server
  6. 图解自监督学习(CV)
  7. 参考平面及其高度_施工现场平面布置关键点分析
  8. 程序员打完篮球腰疼是怎么回事,打篮球腰疼怎么办,怎么按摩缓解疼痛!
  9. css的外链写法,纯CSS代码为外链增加图标
  10. iphone与计算机连接,苹果usb怎么与电脑连接_苹果怎么设置与电脑连接的图文步骤...
  11. redis源码阅读—hyperloglog(基数统计)
  12. php kb转换成字节,将kB换算为MB (千字节换算为兆字节)
  13. 微信公众号自定义模板内容换行
  14. 数据库编程基本练习题
  15. 淘宝商品详情页API接口、淘宝商品销量API接口、淘宝商品列表API接口、淘宝APP详情API接口、淘宝详情API接口
  16. 华中科技大学2021计算机学院,2021年华中科技大学计算机考研科目
  17. java找出命题p和q的合取_从键盘输入两个命题变元p和q的真值-求它们的合取、析取、蕴含和等价的真值...
  18. vue中methods、mounted等使用方法整理
  19. 十步法原则解决数据质量问题
  20. 浅谈PLC电力线载波技术

热门文章

  1. 【密码学原理与实践】验证本原元元素
  2. C语言学习(一.C语言概述)
  3. [论文笔记|sonar+VIO]:Sonar Visual Inertial SLAM of Underwater Structures
  4. 安装和使用scrapy
  5. 一文弄懂Python中的 if __name__ == __main__
  6. fileinput事件
  7. Spring系列学习之Spring Web Flow
  8. 在CNN中ResNet和EfficientNet骨干网络理解记录
  9. 《Web安全测试》读书笔记
  10. Ubuntu下挂载win7的磁盘分区