如果我们想制作一个项目那么我们需要知道项目的目的,我们这个图书管理系统则我为大家一一讲解。
首先我们制作系统时,需要靠清楚对象,以及作用,管理员作用是增加图书,查找图书,删除图书,显示图书,退出图书而借用人的作用是查找图书,借阅图书,归还图书,退出图书。我们了解了需求,则可以开始写代码了。
首先写管理员的权利:
package user;
import Book.*;
import java.util.Scanner;
public class AdminUser extends User{
public AdminUser(String name) {
super(name);
this.iOperation=new IOperation[]{
new FindOperation(),
new AddOperation(),
new DelOperation(),
new ShowOperation(),
new ExitOperation()
};
}
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,退出图书");
System.out.println("************************************************");
System.out.println("请输入你的操作");
Scanner scanner=new Scanner(System.in);
int choice=scanner.nextInt();
return choice;
}
}
首先是增加图书的代码
package Book;
import java.util.Scanner;
public class AddOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("新增图书");
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你要新增图书的名字");
String name=scanner.nextLine();
System.out.println("请输入你要新增图书的作者");
String author=scanner.nextLine();
System.out.println("请输入你要新增图书的价格");
int price = scanner.nextInt();
System.out.println("请输入你要新增图书的类型");
String type=scanner.next();
Book book=new Book(name,author,price,type);
int currenSize=bookList.getUsedSize();
for (int i = 0; i < currenSize; i++) {
Book tmp=bookList.getBook(i);
if(tmp.getName().equals(name)){
System.out.println("存在这本书,不能重复添加");
return;
}
}
bookList.setBook(book,currenSize);
bookList.setUsedSize(currenSize+1);
}
}
其次是查找图书的代码
package Book;
import java.util.Scanner;
public class FindOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("查找图书");
System.out.println("请写出你要查找的图书的书名");
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
int currentSize=bookList.getUsedSize();
for (int i = 0; i < currentSize ; i++) {
Book book=bookList.getBook(i);
if(book.getName().equals(name)){
System.out.println("存在这本书,信息如下");
System.out.println(book);
return;
}
}
System.out.println("没有你要找的这本书,书名为:"+name);
}
}
然后是删除图书的代码
package Book;
import java.util.Scanner;
public class DelOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("删除图书");
Scanner scanner=new Scanner(System.in);
System.out.println("请输入你要删除图书的书名");
int currentSize=bookList.getUsedSize();
int index=-1;
String name=scanner.nextLine();
int i=0;
for (; i < currentSize ; i++) {
Book book=bookList.getBook(i);
if(book.getName().equals(name)){
index=i;
break;
}
}
if(i>=currentSize){
System.out.println("没有你要删除的图书");
return;
}
for (int j = index; j <currentSize-1 ; j++) {
Book book=bookList.getBook(j+1);
bookList.setBook(book,j);
}
bookList.setBook(null,currentSize-1);
bookList.setUsedSize(currentSize-1);
}
}
然后是显示图书的代码
package Book;
public class ShowOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("展示图书");
int currentSize=bookList.getUsedSize();
for (int i = 0; i < currentSize ; i++) {
Book book=bookList.getBook(i);
System.out.println(book);
}
}
}
最后是退出图书的代码
package Book;
public class ExitOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("退出系统");
System.exit(0);
}
}
然后写借阅人的权利:
package user;
import Book.*;
import java.util.Scanner;
public class NormalUser extends User{
public NormalUser(String name) {
super(name);
this.iOperation=new IOperation[]{
new FindOperation(),
new BorrowOperation(),
new ReturnOperation(),
new ExitOperation()
};
}
public int menu(){
System.out.println("******普通菜单******");
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);
int choice=scanner.nextInt();
return choice;
}
}
其次是借阅图书的代码
package Book;
import java.util.Scanner;
public class BorrowOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("借阅图书");
System.out.println("请写出你要借阅的图书的书名");
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
int currentSize=bookList.getUsedSize();
for (int i = 0; i < currentSize ; i++) {
Book book=bookList.getBook(i);
if(book.getName().equals(name)){
book.setBorrowed(true);
System.out.println("借阅成功");
return;
}
}
System.out.println("没有你要借阅的图书:"+name);
}
}
然后是归还图书的代码
package Book;
import java.util.Scanner;
public class ReturnOperation implements IOperation{
@Override
public void work(BookList bookList) {
System.out.println("归还图书");
System.out.println("借阅图书");
System.out.println("请写出你要归还的图书的书名");
Scanner scanner=new Scanner(System.in);
String name=scanner.nextLine();
int currentSize=bookList.getUsedSize();
for (int i = 0; i < currentSize ; i++) {
Book book=bookList.getBook(i);
if(book.getName().equals(name)){
book.setBorrowed(false);
System.out.println("归还成功");
return;
}
}
System.out.println("没有你要归还的图书:"+name);
}
}
代码我们都写好了,然后开始制作开头的封面
首先是输入你的身份
然后进入对应身份的菜单
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("请输入你的姓名");
Scanner scanner=new Scanner(System.in);
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.doOperation(choice, bookList);
}
}
}