本篇文章给大家带来了关于java的相关知识,其中主要介绍了关于怎么实现图书管理系统的相关问题,包括了查找图书、添加图书、删除图书、借阅图书等等内容,下面一起来看一下,希望对大家有帮助。
推荐学习:《java视频教程》
一. 功能介绍1.1 使用介绍1.输入姓名
2.选择身份
3.根据身份打印不同功能菜单
1.2 基本框架
二、具体思路book(包)
operation(功能包)
user(使用者包)
三、代码实现book(包)book(书类)package book;/** * user: gu'jiu * date: 2022-05-18 * time: 14:45 * description:书 */public class book { private string name;//书名 private string author;//作者 private double price;//价格 private string type;//类型 private boolean state;//书的状态(已借出or未借出) //对书进行初始化,书的状态不用进行初始化(默认未借出) public book(string name, string author, double price, string type) { this.name = name; this.author = author; this.price = price; this.type = type; this.state = state; } 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 double getprice() { return price; } public void setprice(double price) { this.price = price; } public string gettype() { return type; } public void settype(string type) { this.type = type; } public boolean isstate() { return state; } public void setstate(boolean state) { this.state = state; } @override public string tostring() { return [ + name=' + name + '\'' + , author=' + author + '\'' + , price= + price + , type=' + type + '\'' + , + (state == true ? 已借出 : 未借出) + ']'; }}
booklist(书架类)package book;/** * user: gu'jiu * date: 2022-05-18 * time: 14:52 * description:书架 */public class booklist { private book[] books = new book[10]; private int usedsize; public booklist() { books[0] = new book(三国演义,罗贯中,19.9,小说); books[1] = new book(西游记,吴承恩,29.9,小说); books[2] = new book(红楼梦,曹雪芹,26.9,小说); usedsize = 3; } public book getbooks(int pos) {//输入下标获取该下标的这本书 return books[pos]; } public void setbooks(int pos, book book) {//输入下标和一本书,在该下标放入一本书 this.books[pos] = book; } public int getusedsize() { return usedsize; } public void setusedsize(int usedsize) { this.usedsize = usedsize; }}
operation(功能包)ioperation(功能接口)package operation;import book.booklist;/** * user: gu'jiu * date: 2022-05-18 * time: 15:07 * description:接口 */public interface ioperation { void work(booklist booklist);}
findoperation(查找图书)package operation;import book.book;import book.booklist;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:09 * description:查找书籍信息 */public class findoperation implements ioperation{ @override public void work(booklist booklist) { system.out.println(); system.out.println(查找图书); system.out.println(------------------------); scanner scanner = new scanner(system.in); system.out.print(请输入书的名称:); string name = scanner.nextline(); //获取书架中图书数量 int size = booklist.getusedsize(); //根据名字查找 for (int i = 0; i < size; i++) { book book = booklist.getbooks(i); if (book.getname().equals(name)) { system.out.println(book); return; } } system.out.println("未找到该书。"); }}
addoperation(添加图书)package operation;import book.book;import book.booklist;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:04 * description:新增书籍 */public class addoperation implements ioperation{ @override public void work(booklist booklist) { system.out.println(); system.out.println("添加图书"); system.out.println("------------------------"); scanner scanner = new scanner(system.in); system.out.print("请输入书名:"); string name = scanner.nextline(); system.out.print("请输入作者:"); string author = scanner.nextline(); system.out.print("请输入书的类型:"); string type = scanner.nextline(); system.out.print("请输入价格:"); double price = scanner.nextdouble(); book book = new book(name, author, price, type); booklist.setbooks(booklist.getusedsize(), book);//将书放入书架 booklist.setusedsize(booklist.getusedsize()+1);//书籍数量+1 }}
deloperation(删除图书)package operation;import book.book;import book.booklist;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:05 * description:删除书籍 */public class deloperation implements ioperation{ @override public void work(booklist booklist) { system.out.println(); system.out.println("删除图书"); system.out.println("------------------------"); scanner scanner = new scanner(system.in); system.out.print("请输入要删除的书名:"); string name = scanner.nextline(); //获取书架中现在有几本书 int size = booklist.getusedsize(); int i = 0; //根据书名找到这个本书的下标 for (i = 0; i < size; i++) { book book = booklist.getbooks(i); if (book.getname().equals(name)) { break; } } if (i == size) { system.out.println("删除失败,未找到该书。"); return; } //通过前移将书删除 for (i = 0; i < size - 1; i++) { booklist.setbooks(i,booklist.getbooks(i + 1)); } booklist.setusedsize(booklist.getusedsize()-1);//书架中图书数量-1 system.out.println("删除成功。"); }}
borrowoperation(借阅图书)package operation;import book.book;import book.booklist;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:05 * description:借阅书籍 */public class borrowoperation implements ioperation{ @override public void work(booklist booklist) { system.out.println(); system.out.println("借阅图书"); system.out.println("------------------------"); scanner scanner = new scanner(system.in); system.out.print("请输入要借书的名称:"); string name = scanner.nextline(); //获取书架中现在有几本书 int size = booklist.getusedsize(); for (int i = 0; i < size; i++) { book book = booklist.getbooks(i); //判断在书架中是否有这本书 if (book.getname().equals(name)) { //判断书是否被借走 if (!book.isstate()) { system.out.println("借阅成功!"); book.setstate(true);//将书的状态改为已借出 return; } else { system.out.println("借阅失败,该书已被别人借走。"); return; } } } system.out.println("借阅失败,未找到该书。"); }}
returnoperation(归还图书)package operation;import book.book;import book.booklist;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:10 * description:归还书籍 */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); system.out.print("请输入要还书的名称:"); string name = scanner.nextline(); //获取书架中现在有几本书 int size = booklist.getusedsize(); for (int i = 0; i < size; i++) { book book = booklist.getbooks(i); //判断在书架中是否有这本书 if (book.getname().equals(name)) { //判断书是否已被借走 if (book.isstate()) { system.out.println("归还成功!"); book.setstate(false);//将书的状态改为未借出 return; } else { system.out.println("归还失败,该书已还未被借走。"); return; } } } system.out.println("归还失败,未找到该书。"); }}
displayoperation(打印图书信息)package operation;import book.book;import book.booklist;/** * user: gu'jiu * date: 2022-05-18 * time: 15:06 * description:打印全部书籍信息 */public class displayoperation implements ioperation{ @override public void work(booklist booklist) { system.out.println(); system.out.println("显示全部图书"); system.out.println("------------------------"); int size = booklist.getusedsize(); for (int i = 0; i < size; i++) { book book = booklist.getbooks(i); system.out.println(book); } }}
exitoperation(退出系统)import book.booklist;/** * user: gu'jiu * date: 2022-05-18 * time: 15:08 * description:退出系统 */public class exitoperation implements ioperation{ @override public void work(booklist booklist) { system.out.println(); system.out.println("退出系统。"); system.out.println("------------------------"); system.exit(0); }}
user(使用者包)user(使用者抽象类)package user;import book.booklist;import operation.ioperation;/** * user: gu'jiu * date: 2022-05-18 * time: 15:11 * description:使用者 */abstract public class user { protected string username;//使用者姓名 protected ioperation[] ioperations;//功能数组 public user(string username) { this.username = username; } public abstract int menu(); //输入选择,调用不同的功能 public void dooperation(int choice, booklist booklist) { this.ioperations[choice].work(booklist);//动态绑定 }}
adminuser(管理员)package user;import operation.*;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:13 * description:管理员 */public class adminuser extends user{ public adminuser(string username) { super(username); //管理员功能 this.ioperations = new ioperation[] { new exitoperation(), new findoperation(), new addoperation(), new deloperation(), new displayoperation() }; } @override public int menu() { system.out.println(); system.out.println("hello " + this.username + " 欢迎来到图书馆"); while(true) { 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.print("请输入你的操作:"); scanner scanner = new scanner(system.in); int choice = scanner.nextint(); //保证输入数字有效 if (choice > 4 || choice < 0) { system.out.println("输入有误请重新输入。"); } else { return choice; } } }}
normaluser(普通用户)package user;import operation.*;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:13 * description:学生 */public class normaluser extends user{ public normaluser (string username) { super(username); //用户功能 this.ioperations = new ioperation[] { new exitoperation(), new findoperation(), new borrowoperation(), new returnoperation(), }; } @override public int menu() { system.out.println(); system.out.println("hello "+this.username+" 欢迎来到图书馆"); while(true) { system.out.println("------------------------"); system.out.println("1.查找图书"); system.out.println("2.借阅图书"); system.out.println("3.归还图书"); system.out.println("0.退出系统"); system.out.println("------------------------"); system.out.print("请输入你的操作:"); scanner scanner = new scanner(system.in); int choice = scanner.nextint(); //保证输入数字有效 if (choice > 3 || choice < 0) { system.out.println("输入有误请重新输入。"); } else { return choice; } } }}
test类import book.booklist;import user.adminuser;import user.normaluser;import user.user;import java.util.scanner;/** * user: gu'jiu * date: 2022-05-18 * time: 15:20 * description:图书管理系统 */public class test { public static user login() { system.out.println("欢迎使用图书管理系统"); scanner scanner = new scanner(system.in); system.out.print("请输入您的姓名:"); string name = scanner.nextline(); while(true){ system.out.println("-----------------------------"); system.out.println("请选择您的身份:1>管理员 2>普通用户); system.out.print(请输入:); int choice = scanner.nextint(); //保证输入数字有效 if (choice == 1) { return new adminuser(name); } else if (choice == 2) { return new normaluser(name); } else { system.out.println(输入有误,请重新输入。); } } } public static void main(string[] args) { booklist booklist = new booklist(); user user = login();//向上转型 while(true){ int choice = user.menu(); user.dooperation(choice, booklist); } }}
四、部分代码(dooperation)解释主函数中的user.dooperation(choice, booklist);中的dooperation方法比较难理解,我们来解释一下
1.user.引用的可能是两个对象
2.在实例化这对象的时候,在构造方法中,我们已经将ioperations[]准备好了。
3.根据输入下标(例如:2)访问相应对象,再调用work方法。
推荐学习:《java视频教程》
以上就是java图文详解之实现图书管理系统的详细内容。