项目分层--简单图书管理系统

分层情况

实体类Book代码 

//实体类
public class Book {private int id;private String name;private int bsum;public Book() {}public Book(int id, String name, int bsum) {this.id = id;this.name = name;this.bsum = bsum;}public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getBsum() {return bsum;}public void setBsum(int bsum) {this.bsum = bsum;}@Overridepublic String toString() {return "Book{" +"id=" + id +", name='" + name + '\'' +", bsum=" + bsum +'}';}
}

控制层BookController代码

import com.xszx.beans.Book;
import com.xszx.service.BookService;
import com.xszx.service.impl.BookServiceImpl;import java.util.List;
import java.util.Scanner;//控制层  控制请求转发
public class BookController {Scanner sc=new Scanner(System.in);BookService bookService = new BookServiceImpl();//主方法public void menu(){System.out.println();System.out.println("                     ---小张图书管理系统---                          ");System.out.println("***【1】查看图书列表 【2】添加图书 【3】修改图书 【4】删除图书 【0】退出系统***");System.out.println("请选择您要进行的操作:");int n = sc.nextInt();if(n==1){checkBook();menu();}else if (n==2){addBook();menu();}else if(n==3){alterBook();menu();}else if (n==4){deleteBook();menu();}else if(n==0){System.out.println("系统已退出,欢迎下次使用!!!");System.exit(0);}}//删除图书private void deleteBook() {Book book = new Book();System.out.println("请输入您要删除的图书名称:");book.setName(sc.next());//判断名字是否存在 存在则删除 不存在则提示不存在boolean b=bookService.getbookname(book);if(b){bookService.deleteBook(book);System.out.println("删除成功!");} else{System.out.println("您要删除的图书不存在!");menu();}}//修改图书private void alterBook() {Book book = new Book();System.out.println("请输入您要修改的图书名称:");book.setName(sc.next());//判断名字是否存在 存在则继续修改 不存在则提示不存在boolean b=bookService.getbookname(book);if(b){Book book1 = new Book();System.out.println("请输入修改后的图书名称:");book1.setName(sc.next());System.out.println("请输入修改后的图书库存:");book1.setBsum(sc.nextInt());bookService.alterBook(book,book1);System.out.println("修改成功!");} else{System.out.println("您要修改的图书不存在!");menu();}}//增加图书private void addBook() {Book book = new Book();System.out.println("请输入您要添加的图书名称:");book.setName(sc.next());//判断名字是否存在 存在则提示名字冲突 不存在则继续执行boolean b=bookService.getbookname(book);if(b){System.out.println("添加的图书名字冲突");menu();}else{System.out.println("请输入您要添加的图书库存:");book.setBsum(sc.nextInt());//后台添加完成,是否成功int i = bookService.addbook(book);if (i==1){System.out.println("添加成功!!!");menu();}else{System.out.println("添加失败!!!");menu();}}}//查看图书private void checkBook() {List<Book> list = bookService.getbook();for (Book book : list){System.out.println(book);}menu();}
}

数据层BookDao代码

import com.xszx.beans.Book;import java.util.ArrayList;
import java.util.List;//数据层   连接数据库  处理数据  写sql   后期为接口
public class BookDao {static List<Book> blist=new ArrayList<>();static{blist.add(new Book(1,"三国",666));blist.add(new Book(2,"水浒",888));blist.add(new Book(3,"红楼梦",999));blist.add(new Book(4,"西游记",222));blist.add(new Book(5,"宝莲灯",333));}public List<Book> getbooks() {return blist;}public int addbook(Book book) {int id = blist.get(0).getId();//查找最大值for (Book bk : blist){if (id<bk.getId()){id=bk.getId();}}book.setId(id+1);blist.add(book);return 1;}//判断名字是否存在public boolean getbookname(Book book) {for (Book bk : blist){if(bk.getName().equals(book.getName())){return true;}}return false;}public void alterBook(Book book, Book book1) {for (Book bk : blist){//修改参数if(bk.getName().equals(book.getName())){bk.setName(book1.getName());bk.setBsum(book1.getBsum());}}}public void deleteBook(Book book) {for (Book bk : blist){//删除元素if(bk.getName().equals(book.getName())){blist.remove(bk);break;}}}
}

 业务层接口BookService代码

import com.xszx.beans.Book;import java.util.List;//业务层  处理业务
public interface BookService {List<Book> getbook();int addbook(Book book);boolean getbookname(Book book);void alterBook(Book book, Book book1);void deleteBook(Book book);
}

 业务层实现类BookServiceImpl代码

import com.xszx.beans.Book;
import com.xszx.dao.BookDao;
import com.xszx.service.BookService;import java.util.List;public class BookServiceImpl implements BookService {BookDao bookDao = new BookDao();@Overridepublic List<Book> getbook() {return bookDao.getbooks();}@Overridepublic int addbook(Book book) {return bookDao.addbook(book);}@Overridepublic boolean getbookname(Book book) {return bookDao.getbookname(book);}@Overridepublic void alterBook(Book book, Book book1) {bookDao.alterBook(book, book1);}@Overridepublic void deleteBook(Book book) {bookDao.deleteBook(book);}
}

测试类Test代码 

import com.xszx.controller.UserController;//测试类
public class Test {public static void main(String[] args) {System.out.println("欢迎来到小张图书管理系统!!!");new UserController().menu();}
}

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

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

相关文章

9.2JavaEE——JDBCTemplate的常用方法(三)query()方法

JdbcTemplate类中常用的查询方法 方法说明List query(String sql, RowMapper rowMapper)执行String类型参数提供的SQL语句,并通过参数rowMapper返回一个List类型的结果。List query(String sql, PreparedStatementSetter pss, RowMapper rowMapper)根据String类型参数提供的S…

9. Revit API UI: UIView、UIDocument、框选聚焦

9. Revit API UI: UIView、UIDocument、框选聚焦 UI命名空间下的API&#xff0c;到这里差不多就押送讲完了&#xff0c;同Application那篇所讲的几个类与接口&#xff0c;都是带UI的对应了一个不带UI的&#xff0c;如UIApplication和Application&#xff0c;作用呢&#xff0c…

Jenkins 下使用 Node 和 Npm(借助 nvm-wrapper 插件)构建前端程序

一、前言 搭建完Jenkins后&#xff0c;如何使用node进行构建前端呢&#xff0c;多个项目会使用的node的多个版本。如何动态指定node的版本进行构建呢。 方案一&#xff1a; 安装多个node版本&#xff0c;然后进行指定。这样比较麻烦。 方案二&#xff1a; 使用Jenkins的nv…

Spring相关面试题(三)

29 如何在所有的BeanDefinition注册完成后&#xff0c;进行扩展 Bean工厂的后置处理器&#xff0c;在所有的Bean注册完成后&#xff0c;就被执行。 public class A implements BeanFactoryPostProcessor {private String name "a class";private B b; ​public St…

ARM芯片架构(RTOS)

前言&#xff1a;笔记韦东山老师的rtos教程&#xff0c;连接放在最后 #ARM介绍 arm芯片属于精简指令集risc&#xff0c;所用的指令比较简单&#xff0c;ARM架构是一种精简指令集&#xff08;RISC&#xff09;架构&#xff0c;广泛应用于移动设备、嵌入式系统、物联网等领域。AR…

Linux:简单说说分号“;”、单竖线“|”、双竖线“||”、单“”、双“”作为多个命令分隔符的用法

以下符号都可以用来连接多个命令&#xff0c;在一行中作为多个命令的分隔符。区别如下&#xff1a; 1、分号“;” 按照先后顺序执行命令。每个命令都会在前一个命令执行完毕后立即执行。 如果其中一个命令出现错误&#xff0c;后续命令仍然会继续执行。 2、单竖线“|” 作为管…

2. jenkins发布java项目

jenkins发布java项目 一、环境描述二、部署tomcat业务服务器三、部署git服务器&#xff0c;上传测试代码1、部署git服务器2、上传测试代码 四、jenkins对接组件1、安装必要的插件2、对接git客户端3、对接maven工具4、配置maven需要的jdk5、配置gitlab服务器的连接6、在jenkins上…

1161. 最大层内元素和

1161. 最大层内元素和 题目链接&#xff1a;1161. 最大层内元素和 代码如下&#xff1a; /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode() : val(0), left(nullptr), right(nullptr)…

AI智能体文章索引

1&#xff0c;探索AI世界系列&#xff1a;俗说AI智能体 2&#xff0c;是真的吗&#xff0c;不会代码也能开发一款AI应用&#xff1f;GPTs让人梦想成真 3&#xff0c;来了&#xff0c;你的第一个AI智能体 4&#xff0c;制作一个智能体&#xff1a;抖音热点话题文案制作助手 5&am…

【Django】网上蛋糕项目商城-首页

概念 本文在上一文章搭建完数据库&#xff0c;以及创建好项目之后&#xff0c;以及前端静态文件后&#xff0c;对项目的首页功能开发。 后端代码编写 这里我们使用pymysql模块对数据库进行操作&#xff0c;获取数据。因此需要在dos窗口使用以下指令下载该库文件 pip instal…

springboot3搭建WebSocket服务

springboot3搭建WebSocket服务 文章目录 springboot3搭建WebSocket服务前言一、创建SpringBoot工程二、pom.xml中引入依赖1.引入库2. application.yml配置 三、主启动类四、WebSocket配置类五、编写WebSocket服务类六、编写测试页面总结 前言 本文详细介绍了如何在SpringBoot项…

新型发电系统——光伏行业推动能源转型

一、发展背景 “十四五”期间&#xff0c;随着“双碳”目标提出及逐步落实&#xff0c;本就呈现出较好发展势头的分布式光伏发展有望大幅提速。就“十四五”光伏发展规划&#xff0c;国家发改委能源研究所可再生能源发展中心副主任陶冶表示&#xff0c;“双碳”目标意味着国家…

Java面试题:比较Maven和Gradle的构建生命周期和依赖管理

Maven和Gradle是两个流行的构建工具&#xff0c;各自有不同的构建生命周期和依赖管理机制。以下是它们的比较&#xff1a; 构建生命周期 Maven Maven有一个固定的生命周期&#xff0c;由一系列阶段&#xff08;phases&#xff09;组成&#xff0c;每个阶段代表一个构建步骤。…

ubuntu更改ssh默认端口22

编辑 /etc/ssh/sshd_config&#xff0c;把Port前的#去掉&#xff0c;端口号改成8022&#xff0c;重启ssh。 // 1. 修改配置 sudo vi /etc/ssh/sshd_config// 2. 重启 ssh sudo systemctl restart ssh//【不想确认可跳过此步骤】 3. 查看 ssh 监听端口 sudo lsof -i:22 // 无…

MySQL改密

这里写目录标题 更改登录密码&#xff1a;有权限账号能登录mysql中&#xff1a;有权限账号不能登录mysql中&#xff1a;mysql5.6版本命令mysql5.7版本命令修改密码8.0版本改完后&#xff1a; mysql登录不上了本机安装了5.6后&#xff0c;又安装了mysql8.0 更改登录密码&#xf…

QT QVariant 类和 C++ 的 union有什么区别

QVariant 类和 C 的 union&#xff08;共用体&#xff09;在概念、用途和实现上有所不同。以下是对它们的区别和使用的简要概述&#xff1a; QVariantQT 如何储存多种数据类型&#xff08;QVariant &#xff09;-CSDN博客 概念&#xff1a;QVariant 是 Qt 框架中的一个类&…

易查分小程序丨查询开始和截止时间如何设置?

老师在发布查询时&#xff0c;希望让学生家长在指定的时间段才能查询&#xff0c;应该如何实现&#xff1f; 通过查询时段功能&#xff0c;老师可以自主设置查询开始和截止时间&#xff0c;下面就来教给大家如何使用吧&#xff01; 设置查询时段演示效果 &#x1f4cc;使用教程…

ASP.NETMVC-简单例子-数据库查询+razor使用+项目发布

环境&#xff1a; win10&#xff0c;SQL Server 2008 R2 参考&#xff1a; asp.net mvc框架之EF的使用 - black娃 - 博客园 https://www.cnblogs.com/fjiqiang/p/11131365.html 目录 数据库查询要求思路操作 razor使用项目发布要求实现 数据库查询 要求 从服务器的数据库中查…

干货分享 | 学会这7个工具方法,数字化转型规划不是难题

提到数字化转型&#xff0c;首要做的便是分析企业现有的业务流程和价值流&#xff0c;发现企业利润来源的关键点&#xff0c;进而有针对性的数字化转型。要实现传统业务向数字化业务的转变&#xff0c;制定出高效、灵活的业务流程优化策略显得至关重要&#xff0c;这样才能找到…

简化数据提取:Excel-Extractor 使用指南

前言 在当今数据驱动的世界中&#xff0c;从复杂的 Excel 文件中提取和分析数据是许多业务和研究工作的基本需求。为了简化这一过程&#xff0c;Excel-Extractor 项目应运而生。本文将为你介绍 Excel-Extractor 的功能和如何在你的项目中使用它。 什么是 Excel-Extractor&…