类与数组的综合应用 ,书籍管理系统

基本要求

1.分析实体类属性(id/no 唯一编号)
2.
(1).浏览所有
(2).根据书名查询
(3)添加书籍
(4)修改信息
( 5)删除书籍
说明:
1.已存5条记录
2.添加时考虑数组扩容
3.根据编号修改
4.根据编号删除,(数组中删除元素)
5.辅助类Menu:构造方法中初始数组
测试类 Test/Client main

1.Book实体类:`

public class Book {
	private String bno; //书籍编号
	private String bname;//书籍名称
	private String author;//作者
	private double price;//价格
	private String mark;//简介
	
	//构造方法
	public Book() {
		
	}

	/**
	 * @param bno
	 * @param bname
	 * @param author
	 * @param price
	 * @param mark
	 */
	public Book(String bno, String bname, String author, double price, String mark) {
		
		this.bno = bno;//书籍编号
		this.bname = bname;//书籍名称
		this.author = author;//作者
		this.price = price;//价格
		this.mark = mark;//简介
	}

	/**
	 * @return the bno
	 */
	public String getBno() {
		return bno;
	}

	/**
	 * @param bno the bno to set
	 */
	public void setBno(String bno) {
		this.bno = bno;
	}

	/**
	 * @return the bname
	 */
	public String getBname() {
		return bname;
	}

	/**
	 * @param bname the bname to set
	 */
	public void setBname(String bname) {
		this.bname = bname;
	}

	/**
	 * @return the author
	 */
	public String getAuthor() {
		return author;
	}

	/**
	 * @param author the author to set
	 */
	public void setAuthor(String author) {
		this.author = author;
	}

	/**
	 * @return the price
	 */
	public double getPrice() {
		return price;
	}

	/**
	 * @param price the price to set
	 */
	public void setPrice(double price) {
		this.price = price;
	}

	/**
	 * @return the mark
	 */
	public String getMark() {
		return mark;
	}

	/**
	 * @param mark the mark to set
	 */
	public void setMark(String mark) {
		this.mark = mark;
	}
	//sout();调用  没有重写toString,  直接打印输出Book对象,执行Object中的toString方法,结果:全类名@哈希码
	@Override
	public String toString() {
		return this.bno+"\t"+this.bname+"\t"+this.author+"\t"+this.price+"\t"+this.mark;
	}
	

}

2.菜单类 实现业务逻辑

import java.util.Scanner;
public class Menu {
	private Book[] books;//null
	private int size;//真实书籍的个数
	private Scanner input=new Scanner(System.in);
	public Menu() {
		books=new Book[5];//容器大小
		Book b1=new Book("b001", "红楼梦", "曹雪芹", 30, "四大名著");
		Book b2=new Book("b002", "三国演义", "罗贯中", 30, "四大名著");
		Book b3=new Book("b003", "水浒传", "施耐庵", 30, "四大名著");
		Book b4=new Book("b004", "三体", "刘慈欣", 30, "名著");
		Book b5=new Book("b005", "西游记", "吴承恩", 30, "名著");
	
		
		books[0]=b1;
		books[1]=b2;
		books[2]=b3;
		books[3]=b4;
		books[4]=b5;
		size=5;
	}
		public void printMenu() {
			System.out.println("*******欢迎进入********");
			System.out.println("1.浏览所有书籍");
			System.out.println("2.查找书籍信息");
			System.out.println("3.书籍上架");
			System.out.println("4.编辑书籍信息");
			System.out.println("5.书籍下架");
			System.out.println("6.退出");
			System.out.println("请选择...");
			
		}
		public void printTitle() {
			System.out.println("书籍编号\t书籍名称\t作者\t价格\t简介");
		}

		/**
		 * 浏览功能
		 * 遍历数组 ,打印所有书籍信息
		 */
		public void findAll() {
			printTitle();
			for(int i=0;i<size;i++) {
				System.out.println(books[i]);
			}
		}
		/**
		 * 查找书籍
		 */
	public void findBook() {
		System.out.println("请输入编号:");
		String bno=input.next();
		//根据输入的bno进行查询
		Book book=getBook(bno);
		if(book!=null) {
			printTitle();
			System.out.println(book);
		}else {
			System.out.println("改编号书籍不存在!");
		}

	}
	//查找

	private Book getBook(String bno) {
		for(int i=0;i<size;i++) {
			if(bno.equals(books[i].getBno())) {
				//找到了
				return books[i];//方法结束
			}
		}
		
		return null;//没有找到书籍
	}
	
	public void addBook() {
		System.out.println("请输入编号");
		String bno=input.next();
		System.out.println("请输入书名");
		String bname=input.next();
		System.out.println("请输入作者");
		String author=input.next();
		System.out.println("请输入价格");
		double price=input.nextDouble();
		System.out.println("请输入简介");
		String mark=input.next();
		//新书籍对象创建
		Book book=new Book(bno, bname, author, price, mark);
		//扩容
		extend();
		//放在数组容器中
		books[size++]=book;
		
		System.out.println("上架成功");
	}
	private void extend() {
		if(size>=books.length) {
			//需要扩容
			Book[] newBooks=new Book[books.length*2];//新的书籍数组  null
			for(int i=0;i<books.length;i++) {
				newBooks[i]=books[i];
			}
			books=newBooks;
		}
	}
	
	public void updateBook() {
		System.out.println("请输入书籍编号");
		String bno=input.next();
		Book book=getBook(bno);
		if(book!=null) {
			//可以编辑
			System.out.println("请输入书名");
			String bname=input.next();
			System.out.println("请输入作者");
			String author=input.next();
			System.out.println("请输入价格");
			double price=input.nextDouble();
			System.out.println("请输入简介");
			String mark=input.next();
			//更新
			book.setAuthor(author);
			book.setBname(bname);
			book.setMark(mark);
			book.setPrice(price);
			
			
			System.out.println("更新成功");
		}else {
			System.out.println("改编号书籍不存在,不能编辑!");
		}
		
	}


	public void deleteBook() {
		System.out.println("请要删除的书籍编号:");
		String bno=input.next();
		for(int i=0;i<size;i++) {
			if(bno.equals(books[i].getBno())) {
				//要删除的书籍找到了
				//i位置开始,j==i,books[j]=books[j+1];
				for(int j=i;j<size-1;j++) {
					books[j]=books[j+1];
				}
				//size=3
				//book[size-2]==books[size-1]  books[size]
				books[--size]=null;
				System.out.println("删除成功!");
				return;//结束方法
			}
		}
		System.out.println("输入编号有误,删除失败");
		
	}

}

3.测试类 main

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
		Menu menu=new Menu();
		
		//接收键盘输入数据
		Scanner input=new Scanner(System.in);
		boolean flag=true;
		while(flag) {
			//打印主菜单
			menu.printMenu();
			int op=input.nextInt();
			switch (op) {
			case 1:
				menu.findAll();
				break;
			case 2:
				menu.findBook();
				break;
			case 3:
				menu.addBook();
				break;
			case 4:
				menu.updateBook();
				break;
			case 5:
				menu.deleteBook();
				break;
			case 6:
				System.out.println("确认退出?Y/N");
				String result=input.next();
				//equalsIgnoreCase  忽略大小写 比较值
				if("y".equalsIgnoreCase(result)) {
					flag=false;
				}
				break;
			default:
				System.out.println("输入有误,重新选择");
				break;
			}
		}
		System.out.println("*******谢谢使用********");
		
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值