package com.salmon.test;
/**
* 是用来描述 图书的
* @author salmon
*
*/
public class Book {
private int id;
private String name;
private String press;
private String author;
private double price;
private int number;
// 构造函数
public Book() {
}
public Book(int id, String name, String press) {
this.id = id;
this.name = name;
this.press = press;
}
public Book(int id, String name, String press, String author, double price,
int number) {
this.id = id;
this.name = name;
this.press = press;
this.author = author;
this.price = price;
this.number = number;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPress() {
return press;
}
public void setPress(String press) {
this.press = press;
}
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 int getNumber() {
return number;
}
public void setNumber(int number) {
this.number = number;
}
}
package com.salmon.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
/**
* 是用来描述读者的
* @author salmon
*
*/
public class Reader {
private int id;
private String name;
private String password="111111";
private int type = 1;// 0 管理员 1 普通读者
// 书包
//private Book bs[] = new Book[2];
private List<Book> bs = new ArrayList();
// 计数器
private int num = 0;
// 书包数量
private int numall = 2;
// 根据图书编号 查找一本图书
public Book findBookById(int bookId,Manager m){
List<Book> bs = m.getBs();
Book b = null;
for (int i = 0; i < bs.size(); i++) {
b = bs.get(i);
if(b != null && b.getId() == bookId){
break;
}
}
return b;
}
// 借书
public void jieshu(Book book,Manager m){
// 把借阅的图书 放在自己书包中
if(num>=numall){
System.out.println("书包已满!不能借书!");
return;// 这个方法代码 到这里就结束了啊!
}else{
// 没满
bs.add(book);
num++;
}
// 进行登记
Set<Reader> rbs= m.getReaderBooks();
// 判断当前登陆人读者有没有借过书
boolean flag = rbs.contains(this);
// 没借过书
if(!flag){
rbs.add(this);
}
System.out.println("借书成功!");
}
// 还书
public void huanshu(int bookId,Manager m){
// 从书包中 一处 指定图书
for (int i = 0; i < bs.size(); i++) {
Book b = bs.get(i);
if(b != null && b.getId() == bookId){
bs.remove(i);
num--;
break;
}
}
// 判断 书包还有没有 图书 如果没有了 就把这个读者从 借阅关系列表移除
boolean isok = bs.isEmpty();
//
if(isok){
Set<Reader> rbs= m.getReaderBooks();
rbs.remove(this);
}
System.out.println("还书成功!");
}
// 查看借阅关系(管理员)
public void queryAllBooks(Manager m){
if(this.getType() == 0){
Set<Reader> rbs= m.getReaderBooks();
for (Reader rb:rbs) {
if(rb != null){
System.out.println("读者:"+rb.getName()+":");
// 当前循环读者书包
List<Book> bs = rb.getBs();
for (int j = 0; j < bs.size(); j++) {
Book book = bs.get(j);
if(book != null){
System.out.println(book.getId()+"---"+book.getName()+"---"+book.getPress());
}
}
}
}
}else{
System.out.println("没有权限!");
}
}
// 查看自己的书包
public void queryMyBooks(){
for (int i = 0; i < bs.size(); i++) {
Book b = bs.get(i);
if(b != null){
System.out.println(b.getId()+"---"+b.getName()+"----"+b.getPress());
}
}
}
// 查看所有的读者 管理员才有权利查看
public void queryReaders(Manager m){
// 判断是否有权利
if(this.getType() == 0){
Set<Reader> rs= m.getRs();
for (Reader r:rs) {
if(r != null){
System.out.println(r.getId()+"---"+r.getName()+"----"+r.getType());
}
}
}else{
System.out.println("对不起没有权限!");
}
}
// 使用管理员 把普通的读者改为管理员 把你要设定普通读者传递进来 把这个读者设置为管理员
public void adminSet(Reader r){
if(this.getType() == 0){
// 设置为管理员
r.setType(0);
}else{
System.out.println("没有权限!");
}
}
// 根据编号 查找一个读者
public Reader findReaderById(int id,Manager m){
Set<Reader> rs= m.getRs();
Reader r = null;
for (Reader r2:rs) {
if(r2!= null && r2.getId()==id){
r = r2;
break;
}
}
return r;
}
// 删除图书
public void deleteBook(Book book,Manager m){
if(this.getType() == 0){
List<Book> bs = m.getBs();
if(bs.contains(book)){
m.getBs().remove(book);
System.out.println("删除图书成功!");
}else{
System.out.println("没有要删除的图书");
}
}else{
System.out.println("没有权限!");
}
}
// 查看图书
public void queryBook(Manager m){
List<Book> bs= m.getBs();
for (int i = 0; i < bs.size(); i++) {
Book b = bs.get(i);
if(b != null){
System.out.println(b.getId()+"---"+b.getName()+"---"+b.getPress());
}
}
}
// 添加图书
public void addBook(Book book,Manager m){
if(this.getType() == 0){
m.getBs().add(book);
System.out.println("添加图书成功!");
}else{
System.out.println("没有权限");
}
}
public Reader() {
}
public Reader(int id, String name) {
this.id = id;
this.name = name;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public List<Book> getBs() {
return bs;
}
public void setBs(List<Book> bs) {
this.bs = bs;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.salmon.test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
public class Manager {
// 书架
//private Book bs[] = new Book[100];
private List<Book> bs = new ArrayList();
// 登记读者信息地方
//private Reader rs[] = new Reader[100];
private Set<Reader> rs = new HashSet();
// 用来登录借阅关系
//private Reader readerBooks [] = new Reader[100];
private Set<Reader> readerBooks = new HashSet();
// 无参数构造函数
public Manager(){
// 在建造这个图书馆的时候 要默认给出 初始化管理啊
Reader r = new Reader(101,"admin");
r.setType(0);
r.setPassword("admin");
rs.add(r);
}
// 读者注册方法
public void register(Reader r){// r = new Reader(id,name);
boolean isok = false;
for (Reader re:rs) {
// 如果在遍历的时候 拿到对象 为 null 这就说明 这个数组中 还有 位置
if(r!= null && re.getId()==r.getId()){
isok =true;
break;
}
}
if(!isok){
rs.add(r);
System.out.println("注册成功!");
}else{
System.out.println("用户编码已经被使用!");
}
}
// 登陆
public Reader login(String name,String password){
Reader r = null;
for (Reader re :rs) {
// 如果在遍历的时候 找到一个 和 参数 名称密码 相同的读者
if(re!=null&&re.getName().equals(name)&&re.getPassword().equals(password)){
r = re;
break;
}
}
return r;
}
public List<Book> getBs() {
return bs;
}
public void setBs(List<Book> bs) {
this.bs = bs;
}
public Set<Reader> getRs() {
return rs;
}
public void setRs(Set<Reader> rs) {
this.rs = rs;
}
public Set<Reader> getReaderBooks() {
return readerBooks;
}
public void setReaderBooks(Set<Reader> readerBooks) {
this.readerBooks = readerBooks;
}
}
package com.salmon.test;
import java.util.Scanner;
public class Test {
// 图书馆
public static Manager m = new Manager();
// 控制台输入工具
public static Scanner sc = new Scanner(System.in);
// 注册 (中转调用)
public static void register(){
System.out.println("请输入读者信息:");
int id = sc.nextInt();
String name = sc.next();
Reader r = new Reader(id, name);
m.register(r);
}
// 登陆 (中转调用)
public static Reader login(){
System.out.println("请输入用户名密码:");
String name = sc.next();
String password = sc.next();
// 根据输入用户名和密码 找到一个读者对象
Reader loginR = m.login(name, password);
return loginR;
}
// 判断是否是管理员
public static void ifAdmin(Reader loginR){
if (loginR.getType() == 0) {
// 管理员
System.out
.println("请选择操作类型: 0、设置管理员 1、查询读者 2、添加图书 3、查看图书 4、删除图书 "
+ "5、借书 6、查看书包 7、查看借阅关系 8、还书.....");
} else {
// 普通读者
System.out
.println("请选择操作类型: 3、查看图书 5、借书 6、查看书包 8、还书.....");
}
}
// 还书(还书的中转调用)
public static void huanshu(Reader loginR){
System.out.println("请输入要还书的编号:");
int bookId = sc.nextInt();
loginR.huanshu(bookId, m);
}
// 借书
public static void jieshu(Reader loginR){
System.out.println("请输入你要借书的编号:");
int bookId = sc.nextInt();
// 根据编号查找一本图书
Book book = loginR.findBookById(bookId, m);
if (book != null) {
// 借书
loginR.jieshu(book, m);
} else {
System.out.println("没有找到你要借的书。");
}
}
// 删除图书()
public static void deleteBook(Reader loginR){
System.out.println("请输入要删除图书的编号:");
int bookId = sc.nextInt();
// 先根据编号找到一本书
Book book = loginR.findBookById(bookId, m);
loginR.deleteBook(book, m);
}
// 添加图书
public static void addBook(Reader loginR){
// 添加图书
System.out.println("请输入图书信息:");
int id = sc.nextInt();
sc.nextLine();
String bookName = sc.nextLine();
String press = sc.next();
Book book = new Book(id, bookName, press);
//
loginR.addBook(book, m);
}
// 设置管理员
public static void setAdmin(Reader loginR){
System.out.println("请输入要设置的读者编号:");
int id = sc.nextInt();
Reader ra = loginR.findReaderById(id, m);
loginR.adminSet(ra);
}
// 登录success (中转调用)
public static void loginSuccess(Reader loginR){
int isok = 0;
do {
// 判断是否是管理员
ifAdmin(loginR);
//根据用户所输入数字 选择不同操作行为 flag3
int flag3 = sc.nextInt();
if (flag3 == 1) {
// 查看所有的读者
loginR.queryReaders(m);
} else if (flag3 == 7) {
// 查看借阅关系
loginR.queryAllBooks(m);
} else if (flag3 == 8) {
// 还书
huanshu(loginR);
} else if (flag3 == 5) {
// 借书
jieshu(loginR);
} else if (flag3 == 6) {
// 查看自己的书包
loginR.queryMyBooks();
} else if (flag3 == 4) {
// 删除图书
deleteBook(loginR);
} else if (flag3 == 3) {
// 查看所有图书
loginR.queryBook(m);
} else if (flag3 == 2) {
// 添加图书
addBook(loginR);
} else if (flag3 == 0) {
// 把指定的读者 设置为 管理员
setAdmin(loginR);
}
System.out.println("是否要退出登陆?1/0");
isok = sc.nextInt();
} while (isok == 0);
}
public static void main(String[] args) {
//
System.out.println("欢迎光临薪火图书馆....");
// 通过循环可以实现 同一种行为重复操作!利用标示符 Flag
String flag = "Y";
do {
System.out.println("请选择操作类型: 0、注册 1、登陆");
int flag2 = sc.nextInt();
if (flag2 == 0) {
// 注册
register();
} else if (flag2 == 1) {
// 登陆
Reader loginR = login();
if (loginR != null) {
// 登陆成功
loginSuccess(loginR);
}else{
System.out.println("登陆失败!");
}
}
System.out.println("您是否要继续操作?Y/N");
flag = sc.next();
} while ("Y".equals(flag));
System.out.println("欢迎下次光临薪火图书馆....");
}
}