java中的图书管理系统(面向对象,接口,继承相关的操作)

2023-11-04

  • 由于代码较多,不一 一介绍,主要是表述自己的思想然后直接上代码
  • 该图书馆管理系统大体主要分为两个对象,一是管理员,二是普通用户。这里就可以用到多态,根据两个对象的不同调用不同的方法,所以他们就有一个公共的类user,里面有共同的名字,首先想到的就是名字。然后管理系统嘛,选择身份后出来的页面也互不相同,所以在user里面还有一个菜单方法,然后再在管理员和普通用户的类里面重写这个menu,首先用他们的父类构造对象,假若你选择的是管理员,返回的类型则为new Adminuser,用user构造的对象接收,这里就是一个向上转型,然后再主函数里面直接通过user.menu执行即可,调用的menu则是接收的什么对象,调用什么的menu。
  • 然后就是关于书方面的,书有自己的名字,作者等等那些,所以这里会有一个类来描述书,book。不能图书馆就一本书吧,所以单独开一个类用来摆放图书,booklist,这里面就建了一个图书数组,我这里规定的十本书最大,这个booklist主要就是对书的各种操作,所以后面所有的操作都需要booklist,当年进入图书馆理系统的那一刻,书是确定的,所以在最开始就构造一个booklist对象,这里不讲具体的赋值啥的,构造方法赋值,创建的时候已经确定了这个booklist。
  • 接下来就是关于操作的部分,回到前面,我们已经进入了两个不同用户的菜单,在这个菜单这里就是基于各种操作,所以我们这里的操作是放在两个不同的menu里面的。还是基于多态的使用,选择的操作不同,调用的work不同,一共七个操作,这里定义一个操作接口,每个操作都连接这个接口,重写里面的work方法。通过接口创建一个接口数组,它等于new 的这七个操作,这里相当于也是一种赋值,向上转型,然后选择不同,调用的work不同。
  • 最后就是代码没有做到很严谨,主要是描述这个思想。代码按照我上面讲的顺序摆放。最前面的是主函数。
    主函数
  • package demo1;

import demo2.BookList;

import java.util.Scanner;

public class MainGui {
public static User userLogin(){
System.out.println(“请输入你的姓名”);
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
System.out.println(“请输入你的身份:1,》管理员 2,》普通用户”);
int choice=scanner.nextInt();
User commonUser=new CommonUser(name);
User adminUser=new AdminUser(name);
if(choice1){
return adminUser;
}else if (choice
2){
return commonUser;
}
return adminUser;
}
public static void main(String[] args){
User user=userLogin();
BookList bookList=new BookList();
while(true){
user.menu(bookList);
}
}
}
//user父类

  • package demo1;

import demo2.BookList;

public abstract class User {
String name;
public User(String name){
this.name=name;
}
public abstract void menu(BookList bookList);
}
管理用户

  • package demo1;

import demo2.BookList;
import opera.*;

import java.util.Scanner;

public class AdminUser extends User{
public AdminUser(String name){
super(name);
}
@Override
public void menu(BookList bookList) {
Ioperation[] ioperations=new Ioperation[5];
Scanner scanner=new Scanner(System.in);
Findoperation findoperation=new Findoperation();
Addoperation addoperation=new Addoperation();
Deloperation deloperation=new Deloperation();
Showoperation showoperation=new Showoperation();
Exitoperation exitoperation=new Exitoperation();
ioperations[1]=findoperation;
ioperations[2]=addoperation;
ioperations[3]=deloperation;
ioperations[4]=showoperation;
ioperations[0]=exitoperation;
System.out.println(“hello “+name+” 欢迎来到图书管理系统!”);
System.out.println(“1, 查找图书!”);
System.out.println(“2, 新增图书!”);
System.out.println(“3, 删除图书!”);
System.out.println(“4, 显示图书!”);
System.out.println(“0, 退出系统!”);
System.out.println(“请输入你的操作:”);
int choice=scanner.nextInt();
ioperations[choice].work(bookList);
}
}
//普通用户

  • package demo1;

import demo2.BookList;
import opera.*;

import java.util.Scanner;

public class CommonUser extends User{
public CommonUser(String name){
super(name);
}
@Override
public void menu(BookList bookList) {
Ioperation[] ioperations=new Ioperation[5];
Findoperation findoperation=new Findoperation();
Brrowedoperation brrowedoperation=new Brrowedoperation();
Returnoperation returnoperation=new Returnoperation();
Exitoperation exitoperation=new Exitoperation();
Showoperation showoperation=new Showoperation();
ioperations[1]=findoperation;
ioperations[2]=brrowedoperation;
ioperations[3]=returnoperation;
ioperations[4]=showoperation;
ioperations[0]=exitoperation;
Scanner scanner=new Scanner(System.in);
System.out.println(“hello “+name+” 欢迎来到图书管理系统!”);
System.out.println(“1, 查找图书!”);
System.out.println(“2, 借阅图书!”);
System.out.println(“3, 归还图书!”);
System.out.println(“4,显示图书”);
System.out.println(“0, 退出系统!”);
System.out.println(“请输入你的操作:”);
int choice=scanner.nextInt();
ioperations[choice].work(bookList);
}
}
//然后是书和书架

  • package demo2;

public class Book {
private String name;//姓名
private String author;//作者
private int price;//价格
private String type;//小说类型
private boolean isBorrowed;//是否借出

@Override
public String toString() {
    return "Book{" +
            "name='" + name + '\'' +
            ", author='" + author + '\'' +
            ", price=" + price +
            ", type='" + type + '\'' +
            //", isBorrowed=" + isBorrowed +
            (isBorrowed == true ? " 已经被借出 ":" 未被借出 ") +
            '}';
}
public Book(){};
public Book(String name, String author, int price, String type) {
    this.name = name;
    this.author = author;
    this.price = price;
    this.type = type;
}

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

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

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

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

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

public String getName() {
    return name;
}

public String getAuthor() {
    return author;
}

public int getPrice() {
    return price;
}

public String getType() {
    return type;
}

public boolean isBorrowed() {
    return isBorrowed;
}

}
//书架
package demo2;

public class BookList {
private Book[] books = new Book[10];
private int usedSize;//记录当前book的数量
public BookList(){
this.books[0]=new Book(“三义”,“张三”,99, “小说”);
this.books[1]=new Book(“红梦”,“王二”,99, “小说”);
this.books[2]=new Book(“白凶”,“麻子”,99, “小说”);
this.books[3]=new Book(“孙空”,“李四”,99, “小说”);
this.usedSize=4;
}
public Book getbook(int i){
return this.books[i];
}
public void addbooks(Book book,int i){
this.books[i]=new Book(book.getName(),book.getAuthor(),book.getPrice(),book.getType());
this.usedSize++;
}
public void Delectbook(int i,BookList bookList){
for (int j = i; j <bookList.usedSize-1 ; j++) {
this.books[j]=this.books[j+1];
}
this.usedSize–;
}
public int getUsedSize() {
return usedSize;
}
public void setUsedSize(int usedSize) {
this.usedSize = usedSize;
}
}
//接下来就是七个操作和他们的接口,接口放最前面的。

  • package opera;

import demo2.BookList;

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

  • package opera;

import demo2.Book;
import demo2.BookList;

import java.util.Scanner;

public class Addoperation implements Ioperation {
@Override
public void work(BookList bookList) {
Scanner scanner=new Scanner(System.in);
Book book=new Book();
System.out.println(“请输入你所要填加的书名”);
String name =scanner.nextLine();
book.setName(name);
System.out.println(“请输入你所要填加的书的作者”);
String author =scanner.nextLine();
book.setAuthor(author);
System.out.println(“请输入你所要填加的书的类型”);
String type =scanner.nextLine();
book.setType(type);
System.out.println(“请输入你所要填加的书的价格”);
int price=scanner.nextInt();
book.setPrice(price);

    bookList.addbooks(book,bookList.getUsedSize());
    System.out.println("新增成功");
}

}

  • package opera;

import demo2.BookList;

import java.util.Scanner;

public class Brrowedoperation implements Ioperation {
@Override
public void work(BookList bookList) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入所借书名:”);
String name=scanner.nextLine();
for (int i = 0; i <bookList.getUsedSize() ; i++) {
if(name.equals(bookList.getbook(i).getName())){
bookList.getbook(i).setBorrowed(true);
}
}
}
}

  • package opera;

import demo2.BookList;

import java.util.Scanner;

public class Deloperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.out.println(“请输入你所要删除的书名”);
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
int lift=-1;
for (int i = 0; i < bookList.getUsedSize(); i++) {
if(name.equals(bookList.getbook(i).getName())){
lift=i;
}
}
bookList.Delectbook(lift,bookList);
System.out.println(“删除成功”);
}
}

  • package opera;

import demo2.Book;
import demo2.BookList;

public class Exitoperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.exit(0);
}
}

  • package opera;

import demo2.BookList;

import java.util.Scanner;

public class Findoperation implements Ioperation {
@Override
public void work(BookList bookList) {
System.out.println(“请输入你要查找的书名”);
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
for (int i = 0; i <bookList.getUsedSize(); i++) {
if(name.equals(bookList.getbook(i).getName())){
System.out.println(“查找成功”);
return;
}
}
}
}

  • package opera;

import demo2.BookList;

import java.util.Scanner;

public class Returnoperation implements Ioperation {
@Override
public void work(BookList bookList) {
Scanner scanner=new Scanner(System.in);
System.out.println(“请输入所还书名:”);
String name=scanner.nextLine();
for (int i = 0; i <bookList.getUsedSize() ; i++) {
if(name.equals(bookList.getbook(i).getName())){
bookList.getbook(i).setBorrowed(false);
}
}
}
}

  • package opera;

import demo2.BookList;

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中的图书管理系统(面向对象,接口,继承相关的操作) 的相关文章

随机推荐