欧美free性护士vide0shd,老熟女,一区二区三区,久久久久夜夜夜精品国产,久久久久久综合网天天,欧美成人护士h版

目錄

柚子快報(bào)邀請(qǐng)碼778899分享:【JavaSE】圖書(shū)管理系統(tǒng)

柚子快報(bào)邀請(qǐng)碼778899分享:【JavaSE】圖書(shū)管理系統(tǒng)

http://yzkb.51969.com/

目錄

最終效果book包Book類(lèi)BookList類(lèi)

user包User類(lèi)AdmiUser類(lèi)(管理員類(lèi))NormalUser類(lèi)(普通用戶(hù)類(lèi))

opeeration包IOperation接口FindOpertion類(lèi)(查找操作)AddOpertion類(lèi)(增加操作)DeletOpertion類(lèi)(刪除操作)BorrowOpertion類(lèi)(借閱操作)ReturnOpertion 類(lèi)(歸還操作)ShowOpertion類(lèi)(展示操作)ExitOpertion類(lèi)(退出操作)

Main類(lèi)最終的關(guān)系圖

最終效果

圖書(shū)管理系統(tǒng)

book包

該包中有兩個(gè)類(lèi),用來(lái)對(duì)書(shū)進(jìn)行管理。

Book類(lèi)

從開(kāi)頭視頻可以看見(jiàn),每本書(shū)有書(shū)名,作者,類(lèi)型,價(jià)格,是否借出。我們將它們定義出來(lái),并有快捷鍵獲得get和set方法。 在生成一個(gè)構(gòu)造方法,含書(shū)名,作者,類(lèi)型,價(jià)格。 然后再快捷鍵重寫(xiě)Object的equals方法,重寫(xiě)toString方法。 注意: 因?yàn)橹苯又貙?xiě)的equals方法是對(duì)所有成員變量都進(jìn)行對(duì)比,但是我們不需要對(duì)比借出狀態(tài)(如果對(duì)比了那還怎么進(jìn)行借閱和歸還操作)。 還有toString方法我們要將借出的boolean類(lèi)型轉(zhuǎn)換為是否借出輸出,就需要改為3目操作符( (this.isBorrowed)?", 已借出":", 未借出")

最終該類(lèi)代碼就是:

package book;

import java.util.Objects;

public class Book {

private String name;

private String author;

private String type;

private int price;

private boolean isBorrowed;

public Book(String name, String author, String type, int price) {

this.name = name;

this.author = author;

this.type = type;

this.price = price;

}

public boolean isBorrowed() {

return isBorrowed;

}

public void setBorrowed(boolean borrowed) {

isBorrowed = borrowed;

}

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 String getType() {

return type;

}

public void setType(String type) {

this.type = type;

}

public int getPrice() {

return price;

}

public void setPrice(int price) {

this.price = price;

}

@Override

public boolean equals(Object o) {

if (this == o) return true;

if (o == null || getClass() != o.getClass()) return false;

Book book = (Book) o;

return price == book.price && Objects.equals(name, book.name) && Objects.equals(author, book.author) && Objects.equals(type, book.type);

}

@Override

public String toString() {

return "Book{" +

"name='" + name + '\'' +

", author='" + author + '\'' +

", type='" + type + '\'' +

", price=" + price +

( (this.isBorrowed)?", 已借出":", 未借出")+

'}';

}

}

BookList類(lèi)

在這個(gè)類(lèi)中我們就將書(shū)給管理起來(lái)(簡(jiǎn)易順序表),所以成員就用一個(gè)Book數(shù)組來(lái)存書(shū),在用一個(gè)usedSize來(lái)表示存入書(shū)的數(shù)目,提供get和set方法。并在構(gòu)造方法中初始化幾本書(shū)。

BookList類(lèi)最終代碼:

package book;

public class BookList {

private int usedSize;

Book[] books = new Book[10];

public int getUsedSize() {

return usedSize;

}

public BookList() {

this.books[0] = new Book("西游記","吳承恩","小說(shuō)",66);

this.books[1] = new Book("紅樓夢(mèng)","曹雪芹","小說(shuō)",77);

this.books[2] = new Book("三國(guó)演義","羅貫中","小說(shuō)",88);

this.books[3] = new Book("坤拳錄","cxk","修仙秘籍",25);

this.usedSize = 4;//在創(chuàng)建書(shū)架時(shí)直接默認(rèn)存在3本書(shū)

}

public Book[] getBooks() {

return books;

}

public void setBooks(Book[] books) {

this.books = books;

}

public void setUsedSize(int usedSize) {

this.usedSize = usedSize;

}

}

user包

該包用來(lái)管理使用者。含有3個(gè)類(lèi),抽象類(lèi)User來(lái)作為管理員類(lèi)和普通用戶(hù)類(lèi)的父類(lèi)抽取共性。

User類(lèi)

每一個(gè)管理員和普通用戶(hù)都有名字,還有展示效果中選擇了自己身份后會(huì)跳出菜單來(lái)讓你選擇操作。再用一個(gè)方法來(lái)表示調(diào)用的操作(因?yàn)槲覀儗⒚恳粋€(gè)操作封裝為一個(gè)類(lèi)來(lái)操作),用IOpertion數(shù)組來(lái)存入子類(lèi)的操作。

User類(lèi)最終代碼:

package user;

import book.BookList;

import operation.IOperation;

public abstract class User {

String name;

IOperation[] iOperations;

public abstract int menu();

public abstract void doOpertion(int choice, BookList bookList);

public User(String name) {

this.name = name;

}

}

AdmiUser類(lèi)(管理員類(lèi))

該類(lèi)繼承User類(lèi)并且將父類(lèi)的抽象方法重寫(xiě),在該方法中調(diào)用對(duì)應(yīng)類(lèi)的具體工作方法(自己實(shí)現(xiàn)的work方法)。并且在自己的構(gòu)造方法中將IOpertion接口實(shí)現(xiàn)的數(shù)組初始化(根據(jù)提供的操作對(duì)應(yīng)的數(shù)字,數(shù)字對(duì)應(yīng)下標(biāo)初始為對(duì)應(yīng)操作實(shí)現(xiàn)的類(lèi))。

AdmiUser類(lèi)最終代碼:

package user;

import book.BookList;

import operation.*;

import java.util.Scanner;

import java.util.Scanner;

public class AdmiUser extends User {

public AdmiUser(String name) {

super(name);

this.iOperations = new IOperation[]{

new ExitOpertion(),

new FindOpertion(),

new AddOpertion(),

new DeletOpertion(),

new ShowOpertion()

};

}

@Override

public void doOpertion(int choice, BookList bookList){

this.iOperations[choice].work(bookList);

}

@Override

public int menu() {

int choice = -1;

while(true) {

System.out.println("歡迎 " + this.name + " 來(lái)到圖書(shū)管理系統(tǒng)");

System.out.println("--------管理員菜單------------");

System.out.println("1.查找圖書(shū)");

System.out.println("2.新增圖書(shū)");

System.out.println("3.刪除圖書(shū)");

System.out.println("4.顯示圖書(shū)");

System.out.println("0.退出系統(tǒng)");

System.out.println("-----------------------------");

System.out.println("請(qǐng)輸入您的操作");

Scanner scanner = new Scanner(System.in);

choice = scanner.nextInt();

if(choice >=0 && choice <= 4){

break;

}else {

System.out.println("輸入錯(cuò)誤");

}

}

return choice;

}

}

NormalUser類(lèi)(普通用戶(hù)類(lèi))

在該類(lèi)中與管理員類(lèi)實(shí)現(xiàn)一致,只是在設(shè)計(jì)實(shí)現(xiàn)自己的操作時(shí)改一下就好。

NormalUser類(lèi)最終代碼:

package user;

import book.BookList;

import operation.*;

import java.util.Scanner;

public class NormalUser extends User{

public NormalUser(String name) {

super(name);

this.iOperations = new IOperation[]{

new ExitOpertion(),

new FindOpertion(),

new BorrowOpertion(),

new ReturnOpertion(),

new ShowOpertion()

};

}

@Override

public int menu() {

int choice = -1;

while(true) {

System.out.println("歡迎 " + this.name + " 來(lái)到圖書(shū)管理系統(tǒng)");

System.out.println("--------普通用戶(hù)菜單------------");

System.out.println("1.查找圖書(shū)");

System.out.println("2.借閱圖書(shū)");

System.out.println("3.歸還圖書(shū)");

System.out.println("4.展示圖書(shū)");

System.out.println("0.退出系統(tǒng)");

System.out.println("-----------------------------");

System.out.println("請(qǐng)輸入您的操作");

Scanner scanner = new Scanner(System.in);

choice = scanner.nextInt();

if(choice >=0 && choice <= 4){

break;

}else {

System.out.println("輸入錯(cuò)誤");

}

}

return choice;

}

@Override

public void doOpertion(int choice, BookList bookList) {

this.iOperations[choice].work(bookList);

}

}

opeeration包

在改包中實(shí)現(xiàn)具體的操作,對(duì)書(shū)的增加,刪除,借閱,歸還,查找,展示,退出程序。這7個(gè)類(lèi)在加上接口。

IOperation接口

這個(gè)接口就抽取一個(gè)work的共性方法。 最終代碼:

package operation;

import book.BookList;

public interface IOperation {

void work(BookList bookList);

}

FindOpertion類(lèi)(查找操作)

在該類(lèi)中實(shí)現(xiàn)IOpertion接口,實(shí)現(xiàn)work方法, 先將要查找的書(shū)用臨時(shí)變量存起來(lái),然后遍歷書(shū)架已有的書(shū)看是否有這本書(shū),有就打印。

FindOpertion類(lèi)最終代碼:

package operation;

import book.Book;

import book.BookList;

import java.util.Scanner;

public class FindOpertion implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println("請(qǐng)輸入要查找書(shū)的書(shū)名:");

Scanner scanner = new Scanner(System.in);

String name = scanner.nextLine();

System.out.println("請(qǐng)輸入要查找書(shū)的作者:");

String author = scanner.nextLine();

System.out.println("請(qǐng)輸入要查找書(shū)的類(lèi)型:");

String type = scanner.nextLine();

System.out.println("請(qǐng)輸入要查找書(shū)的價(jià)格:");

int price = scanner.nextInt();

Book book = new Book(name,author,type,price);

//看這本書(shū)是否已經(jīng)存在

for (int i = 0; i < bookList.getUsedSize(); i++) {

if(bookList.getBooks()[i].equals(book)){

System.out.println(bookList.getBooks()[i].toString());

return;

}

}

System.out.println("沒(méi)有該書(shū)");

}

}

AddOpertion類(lèi)(增加操作)

該操作與查找操作實(shí)現(xiàn)一致,只是在找到后就告訴已經(jīng)有這本書(shū)了,沒(méi)找到就添加,并將usedSize加1.

AddOpertion類(lèi)最終代碼

package operation;

import book.Book;

import book.BookList;

import java.util.Scanner;

public class AddOpertion implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println("請(qǐng)輸入要添加書(shū)的書(shū)名:");

Scanner scanner = new Scanner(System.in);

String name = scanner.nextLine();

System.out.println("請(qǐng)輸入要添加書(shū)的作者:");

String author = scanner.nextLine();

System.out.println("請(qǐng)輸入要添加書(shū)的類(lèi)型:");

String type = scanner.nextLine();

System.out.println("請(qǐng)輸入要添加書(shū)的價(jià)格:");

int price = scanner.nextInt();

Book book = new Book(name,author,type,price);

//看這本書(shū)是否已經(jīng)存在

for (int i = 0; i < bookList.getUsedSize(); i++) {

if(bookList.getBooks()[i].equals(book)){

System.out.println("該書(shū)已經(jīng)存在");

return;

}

}

//存入

bookList.getBooks()[bookList.getUsedSize()] = book;

bookList.setUsedSize(bookList.getUsedSize() + 1);

System.out.println("添加成功");

}

}

DeletOpertion類(lèi)(刪除操作)

該操作與查找操作實(shí)現(xiàn)一致,只是在找到后記錄這個(gè)下標(biāo),并且再用一個(gè)循環(huán)(注意結(jié)束條件)用后面的書(shū)覆蓋前面的,將usedSize減1,沒(méi)找到就輸出沒(méi)有該書(shū)。

DeletOpertion類(lèi)最終代碼

package operation;

import book.Book;

import book.BookList;

import java.util.Scanner;

public class DeletOpertion implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println("請(qǐng)輸入要?jiǎng)h除書(shū)的書(shū)名:");

Scanner scanner = new Scanner(System.in);

String name = scanner.nextLine();

System.out.println("請(qǐng)輸入要?jiǎng)h除書(shū)的作者:");

String author = scanner.nextLine();

System.out.println("請(qǐng)輸入要?jiǎng)h除書(shū)的類(lèi)型:");

String type = scanner.nextLine();

System.out.println("請(qǐng)輸入要?jiǎng)h除書(shū)的價(jià)格:");

int price = scanner.nextInt();

Book book = new Book(name,author,type,price);

//看這本書(shū)是否已經(jīng)存在,記住位置

int now = -1;

for (int i = 0; i < bookList.getUsedSize(); i++) {

if(bookList.getBooks()[i].equals(book)){

now = i;

break;

}

}

//覆蓋

if(now != -1){

for (int i = now; i < bookList.getUsedSize() - 1; i++) {

bookList.getBooks()[i] = bookList.getBooks()[i+1];

}

bookList.setUsedSize(bookList.getUsedSize() - 1);

System.out.println("刪除成功");

}else{

System.out.println("沒(méi)有該書(shū)");

}

}

}

BorrowOpertion類(lèi)(借閱操作)

該操作與查找操作實(shí)現(xiàn)一致,只是在找到(這里的找到指有這本書(shū)并且狀態(tài)是未借出)后就將這本書(shū)的狀態(tài)改為已借出(將isBorrowed改為true),有但是已被借出就輸出該書(shū)已被借出,沒(méi)找到就輸出沒(méi)有。

BorrowOpertion類(lèi)最終代碼:

package operation;

import book.Book;

import book.BookList;

import java.util.Scanner;

public class BorrowOpertion implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println("請(qǐng)輸入要借閱書(shū)的書(shū)名:");

Scanner scanner = new Scanner(System.in);

String name = scanner.nextLine();

System.out.println("請(qǐng)輸入要借閱書(shū)的作者:");

String author = scanner.nextLine();

System.out.println("請(qǐng)輸入要借閱書(shū)的類(lèi)型:");

String type = scanner.nextLine();

System.out.println("請(qǐng)輸入要借閱書(shū)的價(jià)格:");

int price = scanner.nextInt();

Book book = new Book(name,author,type,price);

//看這本書(shū)是否有并未被借出,有就改狀態(tài)

for (int i = 0; i < bookList.getUsedSize(); i++) {

if(bookList.getBooks()[i].equals(book)

&& !bookList.getBooks()[i].isBorrowed()){

bookList.getBooks()[i].setBorrowed(true);

System.out.println("借閱成功");

return;

} else if (bookList.getBooks()[i].equals(book)

&& bookList.getBooks()[i].isBorrowed()) {

System.out.println("該書(shū)以被借出");

return;

}

}

System.out.println("沒(méi)有該書(shū)");

}

}

ReturnOpertion 類(lèi)(歸還操作)

該操作與查找操作實(shí)現(xiàn)一致,只是在找到(這里的找到指有這本書(shū)并且狀態(tài)是已借出)后就將這本書(shū)的狀態(tài)改為未借出(將isBorrowed改為false),有但是未被借出就輸出該書(shū)未被借出,沒(méi)找到就輸出沒(méi)有。

ReturnOpertion 類(lèi)最終代碼:

package operation;

import book.Book;

import book.BookList;

import java.util.Scanner;

public class ReturnOpertion implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println("請(qǐng)輸入要?dú)w還書(shū)的書(shū)名:");

Scanner scanner = new Scanner(System.in);

String name = scanner.nextLine();

System.out.println("請(qǐng)輸入要?dú)w還書(shū)的作者:");

String author = scanner.nextLine();

System.out.println("請(qǐng)輸入要?dú)w還書(shū)的類(lèi)型:");

String type = scanner.nextLine();

System.out.println("請(qǐng)輸入要?dú)w還書(shū)的價(jià)格:");

int price = scanner.nextInt();

Book book = new Book(name,author,type,price);

//看這本書(shū)是否有并未被借出

for (int i = 0; i < bookList.getUsedSize(); i++) {

if(bookList.getBooks()[i].equals(book)

&& !bookList.getBooks()[i].isBorrowed()){

System.out.println("該書(shū)并未被借出");

return;

} else if (bookList.getBooks()[i].equals(book)

&& bookList.getBooks()[i].isBorrowed()) {

bookList.getBooks()[i].setBorrowed(false);

System.out.println("歸還成功");

return;

}

}

System.out.println("沒(méi)有該書(shū)");

}

}

ShowOpertion類(lèi)(展示操作)

該類(lèi)就只需遍歷并輸出就行。

package operation;

import book.BookList;

public class ShowOpertion implements IOperation{

@Override

public void work(BookList bookList) {

for (int i = 0; i < bookList.getUsedSize(); i++) {

System.out.println(bookList.getBooks()[i].toString());

}

}

}

ExitOpertion類(lèi)(退出操作)

直接調(diào)用退出函數(shù)就行

package operation;

import book.BookList;

public class ExitOpertion implements IOperation{

@Override

public void work(BookList bookList) {

System.out.println("退出成功");

System.exit(0);

}

}

Main類(lèi)

在該類(lèi)中寫(xiě)一個(gè)login函數(shù)來(lái)確定身份向上轉(zhuǎn)型給User. main主函數(shù)將操作串起來(lái):

import book.BookList;

import user.AdmiUser;

import user.NormalUser;

import user.User;

import java.util.Scanner;

public class Main {

//使用這個(gè)函數(shù)來(lái)確定訪問(wèn)者身份

private 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.普通用戶(hù)");

int choice = scanner.nextInt();

if(choice == 1){

return new AdmiUser(name);

} else if (choice == 2) {

return new NormalUser(name);

}else {

System.out.println("輸入錯(cuò)誤");

return null;

}

}

public static void main(String[] args) {

BookList bookList = new BookList();

User user = login();

while( user == null){

user = login();

}//使用循環(huán)保證輸入身份正確

while (true){

int choice = user.menu();

user.doOpertion(choice,bookList);

}

}

}

最終的關(guān)系圖

柚子快報(bào)邀請(qǐng)碼778899分享:【JavaSE】圖書(shū)管理系統(tǒng)

http://yzkb.51969.com/

精彩文章

評(píng)論可見(jiàn),查看隱藏內(nèi)容

本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點(diǎn)和立場(chǎng)。

轉(zhuǎn)載請(qǐng)注明,如有侵權(quán),聯(lián)系刪除。

本文鏈接:http://gantiao.com.cn/post/19229918.html

發(fā)布評(píng)論

您暫未設(shè)置收款碼

請(qǐng)?jiān)谥黝}配置——文章設(shè)置里上傳

掃描二維碼手機(jī)訪問(wèn)

文章目錄