項目分層--簡單圖書管理系統

分層情況

實體類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.pswp.cn/diannao/36828.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/36828.shtml
英文地址,請注明出處:http://en.pswp.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&…