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

分层情况

实体类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;
    }

    @Override
    public 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();
    @Override
    public List<Book> getbook() {
        return bookDao.getbooks();
    }

    @Override
    public int addbook(Book book) {

        return bookDao.addbook(book);
    }

    @Override
    public boolean getbookname(Book book) {
        return bookDao.getbookname(book);
    }

    @Override
    public void alterBook(Book book, Book book1) {
        bookDao.alterBook(book, book1);
    }

    @Override
    public 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();
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

2024上海初中生古诗文大会倒计时4个多月:真题示例和独家解析

现在距离2024年初中生古诗文大会还有4个多月时间&#xff0c;我们继续来看10道选择题真题和详细解析&#xff0c;以下题目截取自我独家制作的在线真题集&#xff0c;都是来自于历届真题&#xff0c;去重、合并后&#xff0c;每道题都有参考答案和解析。 为帮助孩子自测和练习&…

Midjourney 平替 Leonardo AI 国内版上线关键还免费

Leonardo AI 正式在国内上线&#xff0c;功能相对基础&#xff0c;计划在两周后推出新一轮的更新&#xff0c;届时将支持 Elements (Lora) 和一些新的 XL 模型&#xff0c;逐步会把国际服上的功能移植过来。 虽然界面是英文&#xff0c;但是不要慌&#xff0c;你可以在 fanbook…

Cloud Serpent

Cloud Serpent 风蛇&#xff0c;刷厄运北很好用的&#xff0c;不记得早前好像就是50级副本神庙带俯冲&#xff0c;加速&#xff0c;远距离攻击&#xff0c;这样就不容易被厄运北法师和恶魔的法术攻击打中&#xff0c;残废术&#xff0c;而减速&#xff0c;刷本拉怪超级好用 闪…

历史的加速度:智人何时会迎来下一个版本?人类的命运与挑战

在《人类简史》中&#xff0c;尤瓦尔赫拉利主要探讨了人类的过去和发展历程&#xff0c;重点关注的是智人&#xff08;Homo sapiens&#xff09;。在他的续作《未来简史》中&#xff0c;他进一步探讨了未来人类的发展&#xff0c;并引入了“神人”&#xff08;Homo deus&#x…

C++之迭代器分类与List容器的使用

目录 迭代器的分类 List容器 ​编辑 总结 在Vector容器中我们学习了迭代器&#xff0c;知道了迭代器的作用和使用方法&#xff0c;本期我们将进一步学习迭代器的概念以及list容器的使用。 迭代器的分类 以算法库中的两个算法为例&#xff1a; sort算法是用来排序的&#…

常用MQ消息中间件Kafka、ZeroMQ和RabbitMQ对比及RabbitMQ详解

1、概述 在现代的分布式系统和实时数据处理领域&#xff0c;消息中间件扮演着关键的角色&#xff0c;用于解决应用程序之间的通信和数据传递的挑战。在众多的消息中间件解决方案中&#xff0c;Kafka、ZeroMQ和RabbitMQ 是备受关注和广泛应用的代表性系统。它们各自具有独特的特…

O2OA(翱途) 开发平台之HTTP端口规划

O2OA(翱途) 开发平台[下称O2OA开发平台或者O2OA]采用相对灵活的系统架构&#xff0c;支持三种服务器运行的方式。本篇主要阐述合并服务运行独立服务运行代理端口运行三种服务器运行方式。 一、先决条件&#xff1a; 1、O2Server服务器正常运行&#xff0c;系统安装部署请参考文…

Java基于jjwt操作jwt

之前讲解了jwt的相关知识&#xff0c;有不了解的&#xff0c;可以查看相关的文章JWT简介-CSDN博客&#xff0c;本节不再介绍&#xff0c;主要讲解有关java中如何通过jjwt库产生jwt以及解析jwt的相关操作。 添加maven依赖 <dependency><groupId>io.jsonwebtoken&l…

统信桌面操作系统上使用命令行添加软件图标到任务栏

原文链接&#xff1a;统信桌面操作系统上使用命令行添加软件图标到任务栏 Hello&#xff0c;大家好啊&#xff01;今天给大家带来一篇在统信桌面操作系统上使用命令行添加软件图标到任务栏的文章。通过命令行将常用软件的图标添加到任务栏&#xff0c;可以快速启动软件&#xf…

网络抓包分析工具

摘要 随着网络技术的快速发展&#xff0c;网络数据的传输和处理变得日益复杂。网络抓包分析工具作为网络故障排查、性能优化以及安全审计的重要工具&#xff0c;对于提升网络管理的效率和准确性具有重要意义。本文旨在设计并实现一款高效、易用的网络抓包分析工具&#xff0c;…

Python实现数据库与Excel文件之间的数据导入与导出

数据库和Excel文件是两种常见且重要的数据存储方式。数据库通常用于大规模数据的高效存储、管理和查询&#xff0c;而Excel则以其直观的界面和简单的操作方式广泛应用于数据分析、报告生成和可视化等领域。在实际工作中&#xff0c;可能需要在这两者之间进行数据的导入与导出。…

网上零食销售系统

摘 要 随着互联网的快速发展&#xff0c;网上销售已成为零售业的重要组成部分。在众多的线上购物品类中&#xff0c;零食销售因其受众广泛、购买频率高、消费金额适中等特点&#xff0c;一直备受关注。然而&#xff0c;传统的零食销售方式&#xff0c;如实体店铺销售&#xff…

Python湍流隐式模型耗散粘性方程和大涡流模拟

&#x1f3af;要点 &#x1f3af;达朗贝尔一维波动通解&#xff0c;二维变速模拟 | &#x1f3af;达朗贝尔算子解双曲波形微分方程 | &#x1f3af;耗散系统粘性伯格斯方程快速傅里叶变换算法 | &#x1f3af;二维线性和非线性对流扩散解和湍流隐式建模 &#x1f4dc;偏微分方…

网络研究观:网络犯罪简报

通过犯罪研究人员精选的新闻提要了解最新的全球网络犯罪威胁。 了解不同的数字欺诈以及如何保护自己。 1. 网络犯罪分子冒充 CBI 和 IB 官员&#xff1a;KP 加尔各答警察局警告公民&#xff0c;诈骗者通过发送虚假的 CBI 和 IB 通知来勒索钱财&#xff0c;指控他们在线观看儿…

Avue框架学习

Avue框架学习 我们的项目使用的框架是 Avue 在我看来这个框架最大的特点是可以基于JSON配置页面上的From,Table以及各种各样的输入框等,不需要懂前端就可以很快上手,前提是需要多查一下文档 开发环境搭建 由于我本地的环境全是用docker来搭建的,所以我依然选择用docker搭建我…

【第二周】基础语法学习

目录 前言初始化项目文件介绍基本介绍JSWXMLWXSS 常见组件基础组件视图容器match-mediamovable-area/viewpage-containerscroll-viewswiper 表单组件自定义组件 模板语法数据绑定单向数据绑定双向数据绑定 列表渲染条件渲染模板引用 事件系统事件类型事件绑定阻止冒泡互斥事件事…

【开源项目】自然语言处理领域的明星项目推荐:Hugging Face Transformers

在当今人工智能与大数据飞速发展的时代&#xff0c;自然语言处理&#xff08;NLP&#xff09;已成为推动科技进步的重要力量。而在NLP领域&#xff0c;Hugging Face Transformers无疑是一个备受瞩目的开源项目。本文将从项目介绍、代码解释以及技术特点等角度&#xff0c;为您深…

《梦醒蝶飞:释放Excel函数与公式的力量》6.3NOW函数

6.3NOW函数 1&#xff09;NOW函数概述 NOW函数是Excel中一个非常实用的内置函数&#xff0c;它返回当前的日期和时间。这个函数可以自动更新&#xff0c;以反映打开工作簿时的确切日期和时间。 2&#xff09;函数语法 NOW函数的语法非常简单&#xff0c;因为它不需要任何参…

操作系统-中断和异常

中断和异常 用户态&#xff1a;普通应用程序运行在用户态&#xff0c;有很多权限限制 内核态&#xff1a;操作系统运行在内核态&#xff0c;有完全的权限访问和管理所有资源&#xff08;硬件&#xff0c;内存&#xff09; 中断的作用 把CPU从用户态变内核态 异常&#xff08…

前端性能优化-实测

PageSpeed Insights 性能测试 今天测试网站性能的时候发现一个问题&#xff0c;一个h2标签内容为什么会占据这么长的渲染时间&#xff0c;甚至有阶段测到占据了7000多毫秒&#xff0c;使用了很多方法都不能解决&#xff0c;包括了修改标签&#xff0c;样式大小等&#xff0c;当…