赞
踩
下文所介绍的是一个控制台版本的图书馆管理系统,主要是练习下JavaSE阶段的面向对象等知识。不涉及IO,数据库等存储。
系统功能:
两种权限:管理员、普通用户
管理员可以进行增、删、查、显示等功能
普通用户可以进行查找以及借书、还书等功能
package user
package action
package action
(0)IAction
package Java3_13.action;
import Java3_13.book.BookList;
public interface IAction {
void work(BookList bookList);
}
(1)addAction
package Java3_13.action; import Java3_13.book.Book; import Java3_13.book.BookList; import java.util.Scanner; public class AddAction implements IAction { @Override public void work(BookList bookList) { Scanner scanner = new Scanner(System.in); System.out.println("新增书籍"); System.out.print("请输入书名:"); String name = scanner.next(); System.out.print("请输入作者:"); String author = scanner.next(); System.out.print("请输入价钱:"); int price = scanner.nextInt(); System.out.print("请输入种类:"); String type = scanner.next(); // 将借出状态默认为false,即没有借出 Book book = new Book(name, author, price, type, false); // 此处暂时不考虑扩容操作,直接进行尾插操作 int size = bookList.getSize(); bookList.setBook(book, size); bookList.setSize(size + 1); System.out.println("新增图书成功!"); } }
(2)DelAction
package Java3_13.action; import Java3_13.book.Book; import Java3_13.book.BookList; import java.util.Scanner; public class DelAction implements IAction { @Override public void work(BookList bookList) { /* 删除图书的思路:循环遍历,若找到则记下位置,否则删除失败 如果找到,这里简单处理,将最后一个书籍挪到要删除的位置,然后size-- */ System.out.println("删除图书"); Scanner scanner = new Scanner(System.in); System.out.print("请删除要删除书籍的书名:"); String name = scanner.next(); // 1,先找到图书,找到的图书即为下标为i的图书 int i = 0; for (; i < bookList.getSize(); i++) { Book book = bookList.getBook(i); if (book.getName().equals(name)) { break; } } if (i >= bookList.getSize()) { System.out.println("没有找到能够匹配的书籍,删除失败!"); return; } // 将最后一本图书,移动到i的位置 int size = bookList.getSize(); Book book = bookList.getBook(size - 1); bookList.setBook(book, i); bookList.setSize(size - 1); System.out.println("删除成功!"); } }
(3)BorrowAction
package Java3_13.action; import Java3_13.book.Book; import Java3_13.book.BookList; import java.util.Scanner; public class BorrowAction implements IAction { @Override public void work(BookList bookList) { System.out.println("执行结束操作"); System.out.println("请输入你要借的书籍的书名:"); Scanner sanner = new Scanner(System.in); String name = sanner.next(); // 找到要接的书,然后将书的状态改成“借出”状态即可 for (int i = 0; i < bookList.getSize(); i++) { Book book = bookList.getBook(i); if (book.getName().equals(name)) { if (book.isBorrowed()) { continue; } else { book.setBorrowed(true); System.out.println("借书成功!"); return; } } } System.out.println("借书失败!没有匹配的书籍!"); } }
(4)ReturnAction
package Java3_13.action; import Java3_13.book.Book; import Java3_13.book.BookList; import java.util.Scanner; public class ReturnAction implements IAction { @Override public void work(BookList bookList) { System.out.println("执行还书操作!"); System.out.println("请输入你要还的书名:"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); for (int i = 0; i < bookList.getSize(); i++) { Book book = bookList.getBook(i); if (book.getName().equals(name)) { if (book.isBorrowed()) { book.setBorrowed(false); System.out.println("还书成功"); return; } } } System.out.println("还书失败"); } }
(5)FindAction
package Java3_13.action; import Java3_13.book.Book; import Java3_13.book.BookList; import java.util.Scanner; public class FIndAction implements IAction { @Override public void work(BookList bookList) { System.out.println("执行查找图书操作"); System.out.println("请输入要查找的书籍名字:"); Scanner scanner = new Scanner(System.in); String name = scanner.next(); for (int i = 0; i < bookList.getSize(); i++) { Book book = bookList.getBook(i); if (book.getName().equals(name)) { System.out.println(book); System.out.println("查找完成"); } } } }
(6)DisplayAction
package Java3_13.action;
import Java3_13.book.BookList;
public class DisplayAction implements IAction {
@Override
public void work(BookList bookList) {
for (int i = 0; i < bookList.getSize(); i++) {
System.out.println(bookList.getBook(i));
}
}
}
(7)ExitAction
package Java3_13.action;
import Java3_13.book.BookList;
public class ExitAction implements IAction {
@Override
public void work(BookList bookList) {
System.out.println("goodbye!!!");
System.exit(0);
}
}
package book
(1)book
package Java3_13.book; public class Book { private String name; // 书名 private String author; // 作者 private int price; // 价钱 private String type; // 种类 private boolean isBorrowed; // 是否借出 public Book(String name, String author, int price, String type, boolean isBorrowed) { this.name = name; this.author = author; this.price = price; this.type = type; this.isBorrowed = isBorrowed; } 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; } @Override public String toString() { return "Book{" + "name='" + name + '\'' + ", author='" + author + '\'' + ", price=" + price + ", type='" + type + '\'' + ", isBorrowed=" + isBorrowed + '}'; } }
(2)BookList
package Java3_13.book; // 用来表示多本书 public class BookList { // 相当于一个顺序表 private Book[] books = new Book[100]; private int size = 0; public BookList() { // 先添加几个数据进去,方便后续测试 books[0] = new Book("三国演义", "罗贯中", 100, "古典名著", false); books[1] = new Book("西游记", "吴承恩", 120, "古典名著", false); books[2] = new Book("某名著", "兰陵笑笑生", 200, "古典名著", false); size = 3; } public Book getBook(int pos) { return books[pos]; } public void setBook(Book book, int pos) { books[pos] = book; } public int getSize() { return size; } public void setSize(int size) { this.size = size; } }
package user
(1)user
package Java3_13.user; import Java3_13.action.IAction; import Java3_13.book.BookList; abstract public class User { protected String name = null; protected IAction[] actions = null; abstract public int menu(); public void doAction(int choice, BookList bookList) { this.actions[choice].work(bookList); } }
(2)Admin
package Java3_13.user; import Java3_13.action.*; import java.util.Scanner; public class Admin extends User{ public Admin(String name) { this.name = name; actions = new IAction[]{ new ExitAction(), new AddAction(), new DelAction(), new FIndAction(), new DisplayAction() }; } @Override public int menu() { int choice; System.out.println("======================="); System.out.println("欢迎使用图书馆管理系统,"+this.name+"您是管理员"); System.out.println("1,新增图书"); System.out.println("2,删除图书"); System.out.println("3,查找图书"); System.out.println("4,显示所有书籍"); System.out.println("0,退出"); System.out.println("======================="); Scanner scanner = new Scanner(System.in); do { // 循环输入 choice = scanner.nextInt(); }while (choice < 0 || choice> 4); return choice; } }
(3)NormalUser
package Java3_13.user; import Java3_13.action.*; import java.util.Scanner; public class NormalUser extends User { public NormalUser(String name) { this.name = name; actions = new IAction[]{ new ExitAction(), new FIndAction(), new BorrowAction(), new ReturnAction() }; } @Override public int menu() { int choice; System.out.println("===================="); System.out.println("欢迎" + name + "使用图书馆管理系统"); System.out.println("1,查找书籍"); System.out.println("2,借书"); System.out.println("3,还书"); System.out.println("0,退出"); System.out.println("===================="); System.out.println("请输入您的选择:"); Scanner scanner = new Scanner(System.in); do { choice = scanner.nextInt(); } while (choice < 0 || choice > 3); return choice; } }
本程序主要是对前面所学知识的回顾和复习。面向对象的最重要之处就在于多态,通过程序练习,感受面向对象和结构化编程的差异。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。