深圳企業(yè)網(wǎng)站制作哪家好百度搜索引擎收錄
作者主頁(yè):paper jie 的博客
本文作者:大家好,我是paper jie,感謝你閱讀本文,歡迎一建三連哦。
本文錄入于《JAVA》專欄,本專欄是針對(duì)于大學(xué)生,編程小白精心打造的。筆者用重金(時(shí)間和精力)打造,將javaSE基礎(chǔ)知識(shí)一網(wǎng)打盡,希望可以幫到讀者們哦。
其他專欄:《算法詳解》《C語(yǔ)言》《javaSE》等
內(nèi)容分享:本期將會(huì)使用javase來(lái)制作一個(gè)簡(jiǎn)易版本的圖書管理系統(tǒng)
目錄
設(shè)計(jì)需求
?設(shè)計(jì)思路
設(shè)計(jì)的具體過(guò)程及源碼展示
book包?
Book類
Booklist類
user包
User類
AdminUser類
NormalUser類
operation包
IOoperation接口
Addoperation類
Deloperation類
Borrowoperation類
Exitoperation類
Findoperation類
Returnoperation類
Showoperation類
?Main類
效果展示?
圖書管理系統(tǒng)的畫圖分析
設(shè)計(jì)需求
我們需要通過(guò)使用javase來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)易版本的圖書管理系統(tǒng),它需要具備以下幾個(gè)功能:
1 首先需要有兩個(gè)模式,一個(gè)是管理員模式,一個(gè)是普通用戶模式
2 需要具有 新增圖書,刪除圖書,查找圖書,顯示圖書,借閱圖書,歸還圖書,退出系統(tǒng)這些功能
3.需要將上面的功能分成兩部分,新增,刪除,顯示,查找,退出為管理員的權(quán)限,而查找,借閱,歸還,退出為普通用戶的權(quán)限
?設(shè)計(jì)思路
1 我們首先需要將我們的用戶分為兩個(gè)部分,一個(gè)為管理員,一個(gè)為普通用戶,在使用的時(shí)候根據(jù)不同的需求展現(xiàn)不同的界面和功能,這里我們可以通過(guò)繼承,多態(tài),向上轉(zhuǎn)型給他們一個(gè)父類來(lái)實(shí)現(xiàn)
2 我們需要實(shí)現(xiàn)多個(gè)類來(lái)實(shí)現(xiàn)刪除圖書,查找圖書,顯示圖書,借閱圖書,歸還圖書,退出系統(tǒng)這些功能
3 我們通過(guò)創(chuàng)建一個(gè)接口,讓功能類來(lái)實(shí)現(xiàn)這個(gè)接口,再用一個(gè)類型為創(chuàng)建的接口類型的數(shù)組來(lái)存放功能類的new出的對(duì)象,這樣子就可以進(jìn)行統(tǒng)一管理了
4 我們還需要?jiǎng)?chuàng)建書和書架類,將書的屬性封裝,書架類存放的就是書,會(huì)用一個(gè)書架類型的數(shù)組來(lái)存放
設(shè)計(jì)的具體過(guò)程及源碼展示
為了讓程序去復(fù)雜化,易修改這里將用三個(gè)包和一個(gè)主類來(lái)搭建這個(gè)框架會(huì)有book包,里面存放書類和書架類。operation包存放各個(gè)功能類和接口。user包中放著父類User類和普通用戶類,管理員類,最后還有一個(gè)主類Main
book包?
Book類
book類起到的作用就是將book類封裝起來(lái),后面容易放入書架中。 這里的構(gòu)造方法,getandset方法以及toString方法可以通過(guò)編譯器生成,速度很快的。在toString方法中我們需要改動(dòng)一下編譯器生成的,我們可以用三目操作符來(lái)確定是true還是false來(lái)打印是已借出還是未接出
package book;public class Book {private String name;private String author;private int price;private String type;//默認(rèn)flose 未被借出private boolean isBorrowed;//get 和 set方法設(shè)置和返回成員變量public Book(String name, String author, int 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 int getPrice() {return price;}public void setPrice(int 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;}//打印@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", author='" + author + '\'' +", price=" + price +", type='" + type + '\'' +", " + ((isBorrowed == true) ? "已經(jīng)借出" : "未接出") +'}';}
}
Booklist類
這里也可以使用編譯器生成需要的代碼,這里要注意的是books數(shù)組,它是用來(lái)存放book書本的。在構(gòu)造方法中要對(duì)它進(jìn)行初始化,可以存放幾本,已進(jìn)放進(jìn)去的書的內(nèi)容。
package book;public class Booklist {//書架private Book[] books;//記錄使用書的位置private int usedsize;private static final int DEFAULT_CAPACITY = 10;public Booklist() {//對(duì)書架初始化this.books = new Book[DEFAULT_CAPACITY];//放書this.books[0] = new Book("三國(guó)演義", "羅貫中", 10, "小說(shuō)");this.books[1] = new Book("西游記", "吳承恩", 20, "小說(shuō)");this.books[2] = new Book("紅樓夢(mèng)", "曹雪芹", 30, "小說(shuō)");this.usedsize = 3;}public int getUsedsize() {return usedsize;}public void setUsedsize(int usedsize) {this.usedsize = usedsize;}public Book getBook(int pos) {return books[pos];}public void setBook(int pos, Book book) {books[pos] = book;}public Book[] getBooks() {return books;}
}
user包
這個(gè)包里放的是一個(gè)父類和兩個(gè)子類,企圖通過(guò)繼承和多態(tài)來(lái)實(shí)現(xiàn)管理員和普通用戶的切換
User類
這里要注意的是IOoperation這個(gè)數(shù)組,它會(huì)在User類的子類中進(jìn)行初始化,來(lái)存放需要功能類的對(duì)象。而dooperation方法則是通過(guò)IOoperations數(shù)組里的成員的work方法來(lái)實(shí)現(xiàn)需要的操作
package user;import book.Booklist;
import operation.IOoperation;public abstract class User {protected String name;protected IOoperation[] iOoperations;public User(String name) {this.name = name;}public abstract int menu();public void dooperation(int choise, Booklist booklist) {iOoperations[choise].work(booklist);}
}
AdminUser類
它和NormalUser都是User的子類,這里面的構(gòu)造方法就對(duì)父類的成員進(jìn)行了IOoperation初始化,且實(shí)現(xiàn)的菜單界面,menu方法的返回值就是你選擇需要使用的功能
package user;import operation.*;import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name) {super(name);this.iOoperations = new IOoperation[]{new Exitoperation(),new Addopertaion(),new Deloperation(), new Showoperation(),new Findoperation()};}public int menu() {System.out.println("*********************** 管理員用戶 ***************************");System.out.println("1. 新增圖書");System.out.println("2. 刪除圖書");System.out.println("3. 顯示圖書");System.out.println("4. 查找圖書");System.out.println("0. 退出系統(tǒng)");System.out.println("************************************************************");System.out.println("請(qǐng)輸入你的操作:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}
}
NormalUser類
實(shí)現(xiàn)思路和AdminUser一樣
package user;import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);this.iOoperations = new IOoperation[]{new Exitoperation(),new Findoperation(),new Borrowoperation(), new Returnoperation()};}public int menu() {System.out.println("*************************** 普通用戶 ****************************");System.out.println("1. 查找圖書");System.out.println("2. 借閱圖書");System.out.println("3. 歸還圖書");System.out.println("0. 退出系統(tǒng)");System.out.println("**************************************************************");System.out.println("請(qǐng)輸入你的操作:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}
}
operation包
這個(gè)包里需要實(shí)現(xiàn)需要的功能類和一個(gè)將他們都串起來(lái)的接口
IOoperation接口
所有的功能類都要實(shí)現(xiàn)這個(gè)接口,從而重寫work方法,來(lái)統(tǒng)一使用work這個(gè)名字
package operation;import book.Booklist;public interface IOoperation {public void work(Booklist booklist);
}
Addoperation類
新增圖書功能:
package operation;import book.Book;
import book.Booklist;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: sun杰* Date: 2023-08-25* Time: 10:43*/
public class Addopertaion implements IOoperation{@Overridepublic void work(Booklist booklist) {System.out.println("新增圖書:");Scanner scanner = new Scanner(System.in);System.out.println("請(qǐng)輸入名字:");String name = scanner.nextLine();System.out.println("請(qǐng)輸入作者:");String author = scanner.nextLine();System.out.println("請(qǐng)輸入類型:");String type = scanner.nextLine();System.out.println("請(qǐng)輸入價(jià)格:");int price = scanner.nextInt();Book book = new Book(name, author, price, type);int pos = booklist.getUsedsize();for (int i = 0; i < pos; i++) {Book book1 = booklist.getBook(i);if(book1.getName().equals(name)) {System.out.println("已有這本書,不再存放");return;}}if(pos == booklist.getBooks().length) {System.out.println("書架滿了");}else {booklist.setBook(pos, book);booklist.setUsedsize(pos + 1);}}
}
Deloperation類
刪除圖書功能:
import book.Booklist;import java.util.Scanner;public class Deloperation implements IOoperation{@Overridepublic void work(Booklist booklist) {System.out.println("刪除圖書:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();int size = booklist.getUsedsize();for (int i = 0; i < size; i++) {Book book = booklist.getBook(i);if(book.getName().equals(name)) {int pos = i;int j = 0;for ( j = pos; j < size - 1; j++) {Book book1 = booklist.getBook(j+1);booklist.setBook(j, book1);}booklist.setBook(j, null);booklist.setUsedsize(size - 1);System.out.println("刪除成功");return;}}System.out.println("不存在這本書");}
}
Borrowoperation類
借閱圖書功能:
package operation;import book.Book;
import book.Booklist;import java.util.Scanner;public class Borrowoperation implements IOoperation {@Overridepublic void work(Booklist booklist) {System.out.println("借閱圖書:");Scanner scanner = new Scanner(System.in);System.out.println("請(qǐng)輸入你要借閱的圖書:");String name = scanner.nextLine();int size = booklist.getUsedsize();for (int i = 0; i < size; i++) {Book book = booklist.getBook(i);if(book.getName().equals(name)) {book.setBorrowed(true);System.out.println(book);System.out.println("借閱成功");return;}}System.out.println("該書不存在");}
}
Exitoperation類
退出系統(tǒng)功能:
package operation;import book.Booklist;public class Exitoperation implements IOoperation{@Overridepublic void work(Booklist booklist) {System.out.println("退出系統(tǒng)");System.exit(0);}
}
Findoperation類
查找圖書功能:
package operation;import book.Book;
import book.Booklist;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;import javax.imageio.metadata.IIOMetadataController;
import java.util.Scanner;public class Findoperation implements IOoperation{@Overridepublic void work(Booklist booklist) {System.out.println("查找圖書:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();int size = booklist.getUsedsize();for (int i = 0; i < size; i++) {Book book = booklist.getBook(i);if(book.getName().equals(name)) {System.out.println("找到了,信息如下:");System.out.println(book);return;}}System.out.println("上述不存在");}
}
Returnoperation類
歸還圖書功能:
package operation;import book.Book;
import book.Booklist;import java.util.Scanner;public class Returnoperation implements IOoperation{@Overridepublic void work(Booklist booklist) {System.out.println("歸還圖書:");Scanner scanner = new Scanner(System.in);System.out.println("請(qǐng)輸入你要?dú)w還的圖書:");String name = scanner.nextLine();int size = booklist.getUsedsize();for (int i = 0; i < size; i++) {Book book = booklist.getBook(i);if(book.getName().equals(name)) {book.setBorrowed(false);System.out.println(book);System.out.println("歸還成功");return;}}System.out.println("該書不存在");}
}
Showoperation類
顯示圖書功能:
package operation;import book.Book;
import book.Booklist;public class Showoperation implements IOoperation {@Overridepublic void work(Booklist booklist) {System.out.println("顯示圖書:");int size = booklist.getUsedsize();for (int i = 0; i < size; i++) {Book book = booklist.getBook(i);System.out.println(book);}}
}
?Main類
通過(guò)Main類來(lái)組織程序執(zhí)行:
import book.Book;
import book.Booklist;
import user.AdminUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login() {System.out.println("請(qǐng)輸入你的姓名:");Scanner scanner = new Scanner(System.in);String name = scanner.nextLine();System.out.println("請(qǐng)輸入你的身份: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();//這里發(fā)生了向上轉(zhuǎn)型User user = login();while(true) {int choice = user.menu();//choice來(lái)決定調(diào)用哪個(gè)方法類user.dooperation(choice, booklist);}}
}