国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng)

這篇具有很好參考價值的文章主要介紹了Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。


老鐵們好~~在學習繼承,封裝,多態(tài),接口等語法后,為了鞏固知識,我們來寫一個小項目,加深對知識的理解,話不多說,咱們開始今天的學習吧!

1. 功能介紹及效果演示

進入程序后,提示輸入姓名,選擇身份,程序會根據(jù)選擇的身份彈出對應的菜單
管理員身份:
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python

普通用戶身份:
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
查找功能:
輸入要查找的書名,如果有這本書就輸出這本書的信息,如果沒有輸出"沒有你要查找的書"
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
新增功能:
新增功能只有管理員用戶才能擁有,新增書籍需要輸入書籍相關(guān)信息
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
刪除功能:
刪除功能同樣只有管理員用戶才能擁有,輸入刪除的書名即可,如果書架沒有這本書提示沒找到
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
顯示功能:
顯示當前書架上的書籍及相關(guān)信息
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
修改功能:
管理員用戶專屬功能~輸入要修改的書的書名,接著提示輸入修改之后的信息
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python

2. 整體框架的搭建

Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python

我們創(chuàng)建三個包:book,user,operation,book包中保管書相關(guān)的類,operation包中保管功能實現(xiàn)相關(guān)的類,user包中保管用戶相關(guān)的類;同時創(chuàng)建一個Main類,Main是程序的入口

2.1 book包

book包中有兩個類,一個是Book,一個是BookList
book類中包含了一本書的相關(guān)信息,書名作者,價格等,boolean類型的成員變量isBorrowed用于表示是否被借出,在類中如果不初始化默認是false,所以在構(gòu)造方法中沒有傳參數(shù)isBorrowed,成員變量都是private修飾的,其他類不能直接訪問,所以我們借助編譯器生成對應的set和get方法用于設(shè)置和獲取這些成員變量
編譯器生成get和set方法:
鼠標右鍵,點擊Generate…,
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
接著點擊Getter and Setter
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
這里我們還要重寫toString方法,讓我們輸出的對象是書籍的信息:

@Override
    public String toString() {
        return "書名:" + name +
                "\t\t作者:" + author +
                "\t\t價格:" + price +
                "\t\t類型:" + type + "\t\t" +
                (isBorrowed == true ? "已借出" : "未借出");
    }

以下是Book類的代碼

public class Book {
    private String name;//書名
    private String author;//作者
    private double price;//價格
    private String type;//類型
    private boolean isBorrowed;//是否被借出

    public Book(String name, String author, double price, String type) {
        this.name = name;
        this.author = author;
        this.price = price;
        this.type = type;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public boolean isBorrowed() {
        return isBorrowed;
    }

    public void setBorrowed(boolean borrowed) {
        isBorrowed = borrowed;
    }

    @Override
    public String toString() {
        return "書名:" + name +
                "\t\t作者:" + author +
                "\t\t價格:" + price +
                "\t\t類型:" + type + "\t\t" +
                (isBorrowed == true ? "已借出" : "未借出");
    }
}

Book包中的另一個類是BookList,表示書架.成員變量是Book類的數(shù)組和當前書籍的數(shù)量
為了讓程序運行時,書架上默認有四本書,所以在構(gòu)造方法中對數(shù)組進行了初始化,設(shè)置數(shù)組大小是100,表示書架最多能放100本書.

public class BookList {
    private Book[] books;//Book類的數(shù)組
    private int usedSize;//當前書的數(shù)量

    public BookList() {
        this.books = new Book[100];
        books[0] = new Book("西游記", "吳承恩", 99.9, "小說");
        books[1] = new Book("水滸傳", "施耐庵", 99.9, "小說");
        books[2] = new Book("紅樓夢", "曹雪芹", 99.9, "小說");
        books[3] = new Book("三國演義", "羅貫中", 99.9, "小說");
        this.usedSize = 4;
    }

    public Book getBook(int pos) {
    	//獲取書架上pos位置的書
        return books[pos];
    }

    public void setBook(int pos, Book book) {
    	//在書架的pos位置放book這本書
        this.books[pos] = book;
    }

    public int getUsedSize() {
        return usedSize;
    }

    public void setUsedSize(int usedSize) {
        this.usedSize = usedSize;
    }
}

2.2 operation包

Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python
operation包中主要包含了新增,刪除,修改等功能的實現(xiàn)(后面介紹),這里我們重點關(guān)注Ioperation這個接口,

public interface Ioperation {
    void work(BookList bookList);
}

Ioperation要被Add,Borrow等這些類來實現(xiàn),需要重寫work方法,在work方法中實現(xiàn)各種功能

2.3 user包

user包中包含User類,NormalUser類,AdminUser類.為了實現(xiàn)不同用戶彈出對應的菜單,我們將User類定義為抽象類,讓管理員用戶這個類(AdminUser)和普通用戶類(NormalUser)繼承USer類,將User中的菜單方法重寫

public abstract class User {
    protected String name;
    public abstract int menu();
    protected Ioperation[] operations;
    public void Working(int choice, BookList bookList) {
        this.operations[choice].work(bookList);
    }
    public User(String name) {
        this.name = name;
    }
}

管理員用戶:

public class AdminUser extends User {
    @Override
    public int menu() {
        System.out.println(super.name + "  您好!歡迎來到圖書管理系統(tǒng)");
        System.out.println("*****管理員菜單*****");
        System.out.println("     1.查找圖書");
        System.out.println("     2.新增圖書");
        System.out.println("     3.刪除圖書");
        System.out.println("     4.顯示圖書");
        System.out.println("     5.修改信息");
        System.out.println("     0.退出系統(tǒng)");
        System.out.println("請輸入你的操作>>>");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }

    public AdminUser(String name) {
        super(name);
        this.operations = new Ioperation[]{
                new Exit(),
                new Search(),
                new Add(),
                new Delete(),
                new Show(),
                new Change()
        };
    }
}

普通用戶:

public class NormalUser extends User {
    @Override
    public int menu() {
        System.out.println(super.name + "  您好!歡迎來到圖書管理系統(tǒng)");
        System.out.println("*****普通用戶菜單*****");
        System.out.println("     1.查找圖書");
        System.out.println("     2.借閱圖書");
        System.out.println("     3.歸還圖書");
        System.out.println("     0.退出系統(tǒng)");
        System.out.println("請輸入你的操作>>>");
        Scanner scanner = new Scanner(System.in);
        int choice = scanner.nextInt();
        return choice;
    }

    public NormalUser(String name) {
        super(name);
        this.operations = new Ioperation[]{
                new Exit(),
                new Search(),
                new Borrow(),
                new Return()
        };
    }
}

2.4 Main

Main中只要包含main方法(程序的入口)和login方法(用于登錄)
在login方法中:根據(jù)用戶的輸入來返回對應的對象.如果是管理員,返回AdminUser對象;如果是普通用戶,返回NormalUser對象.在main方法中:因為login返回的可能是普通用戶也可能是管理員用戶,所以使用USer類型的對象user來接收(向上轉(zhuǎn)型).接著user調(diào)用menu方法,如果user接收的是管理員用戶則調(diào)用管理員用戶的menu,否則調(diào)用普通用戶的menu(多態(tài)).接著調(diào)用Working方法來實現(xiàn)具體的功能

public class Main {
    public static User login() {
        //登錄
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入姓名");
        String name = scanner.nextLine();
        System.out.println("請輸入你的身份  1:管理員  2:普通用戶");
        int choice = scanner.nextInt();
        if (choice == 1) {
            return new AdminUser(name);
        } else {
            return new NormalUser(name);
        }
    }
    public static void main(String[] args) {
        BookList bookList = new BookList();
        User user = login();//登錄
        while (true) {
            int choice = user.menu();
            user.Working(choice, bookList);
        }
    }
}

3. 相關(guān)功能的實現(xiàn)

3.1 Add(新增圖書)

新增圖書的邏輯: 讓用戶輸入新增的圖書的信息并保存,new一個Book的對象,new對象的同時將信息通過參數(shù)進行初始化,將new好的書加在架BookList(也就是調(diào)用setBook方法),同時將UsedSize(當前書的數(shù)量)加1

public class Add implements Ioperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("新增圖書");
        Scanner scanner = new Scanner(System.in);

        System.out.println("請輸入書名");
        String bookName = scanner.nextLine();

        System.out.println("請輸入作者");
        String author = scanner.nextLine();

        System.out.println("請輸入價格");
        Double price = scanner.nextDouble();

        System.out.println("請輸入書的類型");
        String type = scanner.next();

        Book book = new Book(bookName, author, price, type);
        bookList.setBook(bookList.getUsedSize(), book);
        bookList.setUsedSize(bookList.getUsedSize() + 1);
    }
}

3.2 Borrow(借閱圖書)

借閱圖書的邏輯: 用戶輸入要借閱的書的名字,循環(huán)遍歷書架(BookList),如果找到了這本書,將isBorrowed設(shè)置為true表示已經(jīng)被借閱,如果沒找到則提示"沒找到這本書"

public class Borrow implements Ioperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("借閱圖書");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要借閱的書名");
        String bookName = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if (bookName.equals(book.getName())) {
                book.setBorrowed(true);
                System.out.println("借閱成功!!");
                return;
            }
        }
        System.out.println("沒找到這本書");
    }
}

3.3 Change(修改信息)

修改信息的邏輯: 用戶輸入書名,循環(huán)遍歷書架,如果找到這本書,記錄下標.
接著讓用戶輸入修改之后的信息,通過set方法重新設(shè)置相關(guān)屬性.如果沒找到這本書,輸出"沒有找到這本書"

public class Change implements Ioperation{
    @Override
    public void work(BookList bookList) {
        System.out.println("請輸入要修改的書名");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if (book.getName().equals(bookName)) {
                //找到了
                System.out.println("請輸入修改后的書名");
                String newBookName = scanner.nextLine();

                System.out.println("請輸入修改后的作者");
                String newBookAuthor = scanner.nextLine();

                System.out.println("請輸入修改后的價格");
                Double newBookPrice = scanner.nextDouble();

                System.out.println("請輸入修改后的類型");
                String newBookType = scanner.next();
                book.setName(newBookName);
                book.setAuthor(newBookAuthor);
                book.setPrice(newBookPrice);
                book.setType(newBookType);
                book.setBorrowed(false);
                System.out.println("修改成功!!!");
                return;
            }
            System.out.println("沒有找到這本書!!!");
        }
    }
}

3.4 Delete(刪除圖書)

刪除圖書的邏輯 用戶輸入書名,循環(huán)遍歷書架,如果找到了這本書,記錄下標,如果沒找到則return,并且輸出"沒找到你要刪除的書",找到書之后如何刪除?
Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng),JavaSE,java,python

如圖,假設(shè)要刪除pos位置的書,只需要將pos+1位置覆蓋掉pos位置的數(shù)據(jù)即可,覆蓋之后再將最后一個位置置空(使用setBook)

public class Delete implements Ioperation {
    @Override
    public void work(BookList bookList) {
        int pos = -1;
        System.out.println("刪除圖書");
        System.out.println("請輸入要刪除的書名");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.nextLine();
        int i = 0;
        for (; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if (book.getName().equals(bookName)) {
                pos = i;
                break;
            }
        }        
        if (i >= bookList.getUsedSize()) {
            System.out.println("沒找到你要刪除的書");
            return;
        }
        //開始刪除操作
        for (int j = pos; j < bookList.getUsedSize() - 1; j++) {
            Book book = bookList.getBook(j + 1);//把j+1下標的書先拿出來
            bookList.setBook(j, book);//j+1的書(book)給j
        }
        bookList.setUsedSize(bookList.getUsedSize() - 1);
        bookList.setBook(bookList.getUsedSize(), null);//刪除最后一個位置的書
        System.out.println("刪除成功!!");
    }
}

3.5 Exit(退出系統(tǒng))

退出前先將書架里面的全部書籍都置空,置空后調(diào)用系統(tǒng)函數(shù)exit退出

public class Exit implements Ioperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("退出系統(tǒng)");
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            bookList.setBook(i, null);
        }
        System.exit(0);
    }
}

3.6 Return(歸還圖書)

歸還圖書的邏輯: 用戶輸入書名,循環(huán)遍歷書架,如果找到這本書,將書的sBorrowed屬性設(shè)置為false即可

public class Return implements Ioperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("歸還圖書");
        Scanner scanner = new Scanner(System.in);
        System.out.println("請輸入要歸還的書名");
        String bookName = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if (bookName.equals(book.getName())) {
                book.setBorrowed(false);
                System.out.println("歸還成功!!");
                return;
            }
        }
        System.out.println("沒找到這本書");
    }
}

3.7 Search(查找)

查找的邏輯: 用戶輸入書名,循環(huán)遍歷書架,如果找到了,打印這本書這個對象(重寫了toString),如果沒找到,輸出"沒找到你要查找的書!!!"

public class Search implements Ioperation {
    @Override
    public void work(BookList bookList) {
        System.out.println("請輸入要查找的書名");
        Scanner scanner = new Scanner(System.in);
        String bookName = scanner.nextLine();
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            if (book.getName().equals(bookName)) {
                System.out.println("找到了");
                System.out.println(book);
                return;
            }
        }
        System.out.println("沒找到你要查找的書!!!");
    }
}

3.8 Show(展示書架)

展示書架的邏輯: 因為我們重寫了toString,所以循環(huán)打印book對象即可

public class Show implements Ioperation {
    @Override
    public void work(BookList bookList) {
        for (int i = 0; i < bookList.getUsedSize(); i++) {
            Book book = bookList.getBook(i);
            System.out.println(book);
        }
    }
}

今天的內(nèi)容就到這里,感謝老鐵們的閱讀~文章來源地址http://www.zghlxwxcb.cn/news/detail-842601.html

到了這里,關(guān)于Java寶典-實戰(zhàn)小項目:圖書管理系統(tǒng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • java swing實訓項目(圖書管理系統(tǒng))

    java swing實訓項目(圖書管理系統(tǒng))

    學校老師任務(wù),因為我也是新手所以寫的不是特別的好,所以可以提供參考。 ? 登錄頁面? ?注冊頁面

    2024年02月11日
    瀏覽(30)
  • 【Java/SSM/LayUI】JavaEE課程設(shè)計(基于Layui+SSM的圖書管理系統(tǒng)項目介紹及源碼)

    【Java/SSM/LayUI】JavaEE課程設(shè)計(基于Layui+SSM的圖書管理系統(tǒng)項目介紹及源碼)

    注: 本文為JavaEE課程的課程設(shè)計,如需原文件及項目代碼請后臺聯(lián)系作者或qq3416252112,也可在作者主頁資源中下載,僅供學習交流使用! 一、項目介紹 ? 結(jié)合本學期所學知識,以及以往積累的經(jīng)驗,我們通過Layui+SSM的方式完成了簡化版的“圖書管理系統(tǒng)”。本系統(tǒng)操作界面

    2024年02月05日
    瀏覽(28)
  • 實戰(zhàn) 圖書館系統(tǒng)管理案例

    實戰(zhàn) 圖書館系統(tǒng)管理案例

    config :敏感的配置一般都是在配置中心配置,比如consul或者阿波羅上面 controller :寫一些handler的,拿到參數(shù)要去調(diào)用service層的邏輯。( 只負責接受參數(shù),怎么綁定參數(shù),要去調(diào)用哪個service的,handler的一個入口 ) service: service層才是正真的業(yè)務(wù)處理層 。調(diào)用dao層的增刪改

    2024年02月11日
    瀏覽(29)
  • 圖書管理系統(tǒng)項目測試

    圖書管理系統(tǒng)項目測試

    添加依賴如下: 在被測試類中使用快捷鍵 Ctrl+Shift+T,選擇要測試的方法,編寫測試類,完成單元測試。 (1)登錄: 1.輸入正確的賬號密碼,是否正確登錄并跳轉(zhuǎn)至主頁面 2.賬號為空,輸入密碼,是否提示輸入密碼 3.輸入賬號,密碼為空,是否提示輸入用戶名 4.賬號密碼均為

    2024年02月11日
    瀏覽(21)
  • Django圖書商城系統(tǒng)實戰(zhàn)開發(fā)-實現(xiàn)商品管理

    在本教程中,我們將使用Django框架來實現(xiàn)一個簡單的圖書商城系統(tǒng),并重點討論如何實現(xiàn)商品管理功能。此外,我們還將介紹如何使用Markdown格式來寫博客,并將其集成到我們的圖書商城系統(tǒng)中。 Django是一個強大的Python Web框架,被廣泛應用于開發(fā)各種類型的Web應用程序,包括

    2024年02月12日
    瀏覽(18)
  • Django圖書商城系統(tǒng)實戰(zhàn)開發(fā)-實現(xiàn)訂單管理

    在本教程中,我們將繼續(xù)基于Django框架開發(fā)圖書商城系統(tǒng),這次的重點是實現(xiàn)訂單管理功能。訂單管理是一個電子商務(wù)系統(tǒng)中非常重要的部分,它涉及到用戶下單、支付、發(fā)貨以及訂單狀態(tài)的管理等方面。通過學習本教程,您將了解如何使用Django框架來構(gòu)建強大的訂單管理系

    2024年02月12日
    瀏覽(25)
  • Java web圖書管理系統(tǒng)、在線圖書借閱管理系統(tǒng)(帶文檔)

    Java web圖書管理系統(tǒng)、在線圖書借閱管理系統(tǒng)(帶文檔)

    ?大家好,我是DeBug,很高興你能來閱讀!作為一名熱愛編程的程序員,我希望通過這些教學筆記與大家分享我的編程經(jīng)驗和知識。在這里,我將會結(jié)合實際項目經(jīng)驗,分享編程技巧、最佳實踐以及解決問題的方法。無論你是初學者還是有一定經(jīng)驗的程序員,我都希望能夠為你

    2024年01月23日
    瀏覽(25)
  • Django項目之圖書管理系統(tǒng)

    1、創(chuàng)建好 Django 項目 2、準備好數(shù)據(jù)庫 —— 創(chuàng)建數(shù)據(jù)庫:book_system 3、配置項目中的數(shù)據(jù)庫引擎 4、配置靜態(tài)文件的搜索路徑 , 以及在項目的根目錄中創(chuàng)建一個 static 存放靜態(tài)文件數(shù)據(jù)文件夾 5、導入 html 模板文件和靜態(tài)文件數(shù)據(jù)。 1、響應用戶注冊頁面的視圖 2、定義用戶數(shù)

    2024年04月29日
    瀏覽(23)
  • 數(shù)據(jù)結(jié)構(gòu)項目:圖書管理系統(tǒng)

    數(shù)據(jù)結(jié)構(gòu)項目:圖書管理系統(tǒng)

    隨著科技的不斷進步,圖書的種類也隨之日益增多。圖書館所需要處理的圖書管理問題從而突出,而讀者也許需要能夠更方便的查找和查看圖書館的書籍。為解決以上問題,本系統(tǒng)設(shè)計時主要針對圖書管理人員需求做出對圖書信息的錄入、刪除、修改、導出等功能。 (1)用

    2024年02月04日
    瀏覽(19)
  • SpringBoot項目----圖書管理系統(tǒng)(詳解)

    SpringBoot項目----圖書管理系統(tǒng)(詳解)

    目錄 項目業(yè)務(wù) ?技術(shù)棧 數(shù)據(jù)庫表的設(shè)計? 數(shù)據(jù)庫表關(guān)系圖 關(guān)于字典表? 前后端接口實現(xiàn) 1.初始化數(shù)據(jù)庫、表、數(shù)據(jù) 2.數(shù)據(jù)庫連接池配置 3.統(tǒng)一響應封裝 ?4.統(tǒng)一異常處理 5.實現(xiàn)統(tǒng)一會話管理(登錄)? 5.通過Mybatis生成工具,生成mapper接口,xml文件,實體類 ?6.準備所有的Co

    2024年02月09日
    瀏覽(20)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包