图书管理系统使用List 存储数据

来源:互联网 发布:阿里云配置邮件服务器 编辑:程序博客网 时间:2024/05/02 05:02
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);//根据用户所输入数字 选择不同操作行为  flag3int 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("欢迎下次光临薪火图书馆....");}}

1 0
原创粉丝点击