集合:图书管理系统

系统需求分析:

​ 通过集合图书管理系统,写成四个类,实现图书管理借阅等多方面功能。

​ 对用户和管理员的相应功能实现做出了不同调整,具体如下图:

QQ截图20220504200411

  • 创建Book类

  • 定义变量,写出构造方法.

  • private String bookId;
    	private String bookName;
    	private String author;
    	private String bookPress;
    	private int price;
    	private String date = "未借出";
    	private int shu;
    	private int lendshu;
    	private String date1="未借出";
    
    	public Book() {
    
    	}
    	public Book(String bookId, String bookName, String author, String bookPress, int price, String date, int shu,
    			String date1, int lendshu) {
    		super();
    		this.bookId = bookId;
    		this.bookName = bookName;
    		this.author = author;
    		this.bookPress = bookPress;
    		this.price = price;
    		this.date = date;
    		this.date1 = date1;
    		this.lendshu = lendshu;
    	}
    
  • 部分get(),set()方法。

  • public int getLendshu() {
    		return lendshu;
    	}
    
    	public void setLendshu(int lendshu) {
    		this.lendshu = lendshu;
    	}
    
  • 创建主类BookDemo首先写出登录选择的窗口代码

  • public static void main(String[] args) {
    		System.out.println("----欢迎来到图书管理系统-----");
    		System.out.println("1-用户登录\t2-管理员登录\t3-退出系统");
    		Scanner scanner = new Scanner(System.in);
    		System.out.println("请输入你的选择:");
    		String s = scanner.nextLine();
    		switch (s) {
    		case "1": {
    			user();
    			break;
    		}
    		case "2": {
    			manager();
    			break;
    		}
    
    		case "3": {
    			System.out.println("退出系统成功!");
    			System.exit(0);// 虚拟机退出系统
    			break;
    		}
    		default:System.out.println("选择不存在。");
    		}
    	}
    
  • 用户登录设置

  • 这里给出了登录成功和失败的提示,并用for循环给三次机会,用完自动退出系统。

  • 	String password = "1";//密码
      		String user = "1";//账号
      		for (int i = 0; i < 3; i++) {
      			Scanner scanner = new Scanner(System.in);
      			System.out.println("请输入用户名");
      			String us = scanner.nextLine();
      			System.out.println("请输入密码");
      			String word = scanner.nextLine();
      			if (password.equals(word) && user.equals(us)) {
      				System.out.println("登录成功!");
      				break;
      			} else {
      				if (2 - i == 0) {
      					System.out.println("你的账户已锁定,请联系相关管理员");
      					System.exit(0);// 虚拟机退出系统
      				} else {
      					System.out.println("用户名或密码错误,还有" + (2 - i) + "机会!");
      				}
      			}
      		}
      		se();
    }
      
    
  • 管理员登录设置

  • String password = "1";
    		String user = "1";
    		Scanner scanner = new Scanner(System.in);
    		System.out.println("请输入管理员用户名");
    		String us = scanner.nextLine();
    		System.out.println("请输入密码");
    		String word = scanner.nextLine();
    		if (password.equals(word) && user.equals(us)) {
    			System.out.println("登录成功!");
    			select();
    		} else {
    			System.out.println("用户名或密码错误!");
    			BookDemo bookDemo = new BookDemo();
    			bookDemo.main(null);
    		}
    
    	}
    
  • 用户类部分主要功能

  • .搜索图书

  • if (b.size() == 0) {
    			System.out.println("该系统未录入图书信息。");
    		}
    		System.out.println("输入要查找书籍的图书名:");
    		Scanner scanner = new Scanner(System.in);
    		String string = scanner.nextLine();
    		for (int i = 0; i < b.size(); i++) {
    			Book book = b.get(i);
    			if (string.equals(book.getBookName())) {
    				System.out.println("\t--图书编号--\t--图书名称--\t--图书作者--\t--出版社--\t--现存数量--\t--市场价格--\t--借阅情况--");
    				System.out.println(book.getBookId() + book.getBookName() + book.getAuthor() + book.getBookPress()
    						+ book.getShu() + book.getPrice() + book.getDate());
    			} else {
    				System.out.println("未找到相关书籍!");
    			}
    		}
    
  • . 借阅图书(下面部分代码分点细讲)

  • 1.用户键盘输入想借阅的书籍,并提供迭代器遍历循环。

  • System.out.println("请输入要借阅图书名称:");
    		Scanner scanner = new Scanner(System.in);
    		String s = scanner.nextLine();
    		Iterator<Book> iterator = b.iterator();
    
  • 2.规定了每个人最多同时借阅数量,总不能让你把图书馆的书全部搬走吧!

  • else if (book.getLendshu() == 5) {
    				System.out.println("本图书馆规定每人只能同时借阅5本书!");
    				break;
    			}
    
  • 3.通过Calendar类中的方法,借书成功后自动记录下借书的时间代码,并且返回对应需要还书的日期,以便用户知晓。

  • else if (book.getBookName().equals(s) && book.getShu() > 0) {
    				System.out.println("借书成功!");
    				Calendar calendar = Calendar.getInstance();
    				int year = calendar.get(Calendar.YEAR);
    				int month = calendar.get(Calendar.MONTH) + 1;
    				int date = calendar.get(Calendar.DATE);
    				book.setDate(year + "年" + month + "月" + date + "日");
    				n--;
    				j++;
    				book.setLendshu(j);
    				System.out.println("您的借书时间是:" + book.getDate());
    				calendar.set(year, month, date);
    				calendar.add(Calendar.MONTH, 7);
    				int year1 = calendar.get(Calendar.YEAR);
    				int month1 = calendar.get(Calendar.MONTH) + 1;
    				int date1 = calendar.get(Calendar.DATE);
    				book.setDate1(year1 + "年" + month1 + "月" + date1 + "日");
    				System.out.println("最晚还书时间是:" + book.getDate1());
    				break;
    			}
    
  • 4.找不到书籍,给出对应提示。

  • else {
    		System.out.println("你输入的名称不存在!");
    			}
    
  • 5.返回界面

  • 	//创建对象,返回用户选择界面
      		user01 user01 = new user01();
      		book.setShu(n);
      		user01.se();
    
  • .归还书籍

  • 1.归还书籍,返回归还的时间。

  • if (book.getBookId().equals(string) && book.getDate() != "未借出" && book.getLendshu() != 0) {
    				System.out.println("归还图书成功!");
    				n++;
    				j--;
    				book.setLendshu(book.getLendshu() + j);
    				book.setShu(book.getShu() + n);
    				Calendar calendar = Calendar.getInstance();
    				int year = calendar.get(Calendar.YEAR);
    				int month = calendar.get(Calendar.MONTH) + 1;
    				int date = calendar.get(Calendar.DATE);
    				book.setDate1(year + "年" + month + "月" + date + "日");
    				System.out.println("您成功归还的时间是:" + book.getDate1() + !");
    				if (book.getLendshu() == 0) {
    					book.setDate("未借出");
    				}
    
  • 2.未借书则不用归还,给相应提示

  • else {
    		System.out.println("归还失败,该书籍没被您借出!");
    			}
    
  • .用户的个人借书情况

  • 主要是方便用户查看自己借了多少本书,哪几本书,和要还书的时间信息。

  • if (b.size() == 0) {
    			System.out.println("系统未录入书籍。");
    		}
    		System.out.println("\t--图书编号--\t--图书名称--\t--已借数量--\t--借书时间--\t--规定还书时间--");
    		for (int i = 0; i < b.size(); i++) {
    			Book book = b.get(i);
    			System.out.println("\t" + book.getBookId() + "\t" + "\t" + book.getBookName() + "\t" + "\t"
    					+ book.getLendshu() + "\t" + "\t" + book.getDate() + "\t" + book.getDate1());
    		}
    	}
    }
    
  • 管理员主要功能实现

  • .上架新图书

  • 主要有以下几个步骤:

  • (1)创建图书对象

  • (2)键盘录入上架的新书信息

  • (3)将录入的信息赋值给对象变量

  • (4)将对象的值内存地址信息添加到集合

    注:以下是简单的处理

  • 1.这里没有给出重复的处理,因为图书馆可以有多本相同的书籍。

  • 2.异常捕获主要是确保录入书籍信息准确与合理性。

  •     Book book = new Book();
      		Scanner scanner = new Scanner(System.in);
      		System.out.println("输入要上架的图书的编号:");
      		String s1 = scanner.nextLine();
      		System.out.println("请输入图书名称:");
      		String s2 = scanner.nextLine();
      		System.out.println("请输入图书作者:");
      		String s3 = scanner.nextLine();
      		System.out.println("请输入出版社:");
      		String s4 = scanner.nextLine();
      		try {
      			System.out.println("请输入市场价格:");
      			int s6 = scanner.nextInt();
      			System.out.println("输入书籍数量");
      			int s7 = scanner.nextInt();
      			book.setPrice(s6);
      			book.setShu(s7);
      		} catch (Exception e) {
      			System.out.println("上架失败!输入的价格书籍数量必须为整数!");
      			System.out.println("请重新添加!");
      			addBook();
      			// TODO: handle exception
      		}
      		book.setBookId(s1);
      		book.setAuthor(s3);
      		book.setBookName(s2);
      		book.setBookPress(s4);
      		b.add(book);
      		System.out.println("上架成功!");
      		Manager manager = new Manager();
      		manager.select();
    }
    
  • 二.下架书籍

  • public static void deleteBook() {
    		boolean flag = true;
    		System.out.println("请输入要下架的图书名称:");
    		Scanner scanner = new Scanner(System.in);
    		String s = scanner.nextLine();
    		Iterator<Book> iterator = b.iterator();
    		while (iterator.hasNext()) {
    			Book book = iterator.next();
    			if (book.getBookName().equals(s)) {
    				iterator.remove();
    				System.out.println("下架成功!");
    				flag = false;
    				break;
    			}
    		}
    		if (flag) {
    			System.out.println("下架失败!,输入的图书名称有误!");
    		}
    	}
    
    
  • 三.修改图书信息

  • Scanner scanner = new Scanner(System.in);
    		System.out.println("输入要修改的图书名:");
    		String name = scanner.nextLine();
    		System.out.println("输入要修改的图书出版社:");
    		String press = scanner.nextLine();
    		System.out.println("输入要修改的图书编号:");
    		String Id = scanner.nextLine();
    		String author = scanner.nextLine();
    		System.out.println("输入要修改的图书编号:");
    		int shu = scanner.nextInt();
    		System.out.println("输入要修改的价格:");
    		int price = scanner.nextInt();
    		Book book2 = new Book();
    		book2.setBookPress(press);
    		book2.setBookName(name);
    		book2.setBookId(Id);
    		book2.setPrice(price);
    		book2.setAuthor(author);
    		book2.setShu(shu);
    		// 遍历集合,通过if条件控制语句修改对于学生信息
    		for (int i = 0; i < b.size(); i++) {
    			Book book1 = b.get(i);
    			if (book1.getBookName().equals(name)) {
    				b.set(i, book2);
    				System.out.println("修改图书成功");
    				break;
    			} else {
    				System.out.println("要修改的图书信息不存在!");
    
    			}
    		}
    
    	}
    
posted @   1(*^_^*)1小菜  阅读(86)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~

阅读目录(Content)

此页目录为空

点击右上角即可分享
微信分享提示