09.3-Java程序的面向对象化-23/04/27(以书籍管理为例)

1.存放数据:所有的数据都存放到数据库中,其他块都从数据库调用

        将数据存放到数据库中(现阶段先用类表示数据库)

        ①创建一个data包模拟数据库,对数据进行初始化,并存放数据:

package com.manage.data;

import java.util.ArrayList;
import java.util.List;

import com.manage.bean.Book;

public class DataBase {
	
	/**持有集合的引用*/
	private List<Book> Books = new ArrayList<>();

	public List<Book> getBooks() {
		return Books;
	}
	
	/**
	 * 初始化数据
	 */
	public DataBase() {
		init();	//调用初始化方法
	}

	/**
	 * 初始化书籍信息
	 */
	private void init() {
		//实例化书籍对象
		Book b1 = new Book("10011", "光阴之外", "耳根", 109000, "仙侠", 2);
		Book b2 = new Book("10012", "姑娘请留步", "天蚕土豆", 7162, "玄幻", 2);
		Book b3 = new Book("10013", "太初", "高楼大厦", 68000, "玄幻", 1);
		Book b4 = new Book("10013", "仙宫", "打眼", 210000, "仙侠", 2);
		Book b5 = new Book("10014", "天才相师", "打眼", 80100, "都市", 2);
		Book b6 = new Book("10015", "一念永恒", "耳根", 577000, "仙侠", 2);		
		Books.add(b1);
		Books.add(b2);
		Books.add(b3);
		Books.add(b4);
		Books.add(b5);
		Books.add(b6);
	}
}

        ②定义数据的类型为Book,设置Book的属性:

package com.manage.bean;

public class Book {
	/**图书编号*/
	private String num;
	/**图书名称*/
	private String name;
	/**作者*/
	private String author;
	/**人气*/
	private int top;
	/**图书类型*/
	private String type;
	/**状态*/
	private int state;
	
	public String getNum() {
		return num;
	}
	public void setNum(String num) {
		this.num = num;
	}
	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 int getTop() {
		return top;
	}
	public void setTop(int top) {
		this.top = top;
	}
	public String getType() {
		return type;
	}
	public void setType(String type) {
		this.type = type;
	}
	public int getState() {
		return state;
	}
	public void setState(int state) {
		this.state = state;
	}
	public Book(String num, String name, String author, int top, String type, int state) {
		super();
		this.num = num;
		this.name = name;
		this.author = author;
		this.top = top;
		this.type = type;
		this.state = state;
	}
}

2.筛选数据:所有的判断类的筛选数据的操作都放到Dao访问数据层中

package com.manage.dao;

import java.util.List;

import com.manage.bean.Book;
import com.manage.data.DataBase;

/**
 * 对书籍类数据访问类
 */
public class BookDao {	
	DataBase database = new DataBase();	//持有数据类对象
	List<Book> books = database.getBooks(); //获取所有书籍集合
		
	/**
	 * 判断图书编号是否重复
	 */
	public boolean isExist(String booknum) { //null
		//遍历集合
		for(Book b : books) {
			//判断
			if(b.getNum().equals(booknum)) {
				return true;
			}
		}
		return false;
	}
	
	/**
	 * 查询所有书籍信息
	 */
	public List<Book> querryBooks(){
		//创建DataBase的对象		
		return books;
	}
	/**
	 * 添加新的图书信息到books中
	 */
	public void addBook(Book book) {
		books.add(book);		
	}
}

3.数据的输入和输出:所有有关数据的输出输入的操作都在这一层实现

package com.manage.view;

import java.util.List;
import java.util.Scanner;

import com.manage.bean.Book;
import com.manage.dao.BookDao;

public class BookView {
	static Scanner scan = new Scanner(System.in);
	static BookDao bookdao = new BookDao(); //持有一个BookDao对象		
	public static void main(String[] args) {
		boolean isloop = true;
		while(isloop) {
			mainList();
			int in = scan.nextInt();
			switch (in) {
			case 0:
				isloop = false;
				break;
			case 1:
//		1.查询所有图书信息?
				querryAllBook();
				break;
			case 2:
//		2.添加一条图书信息
				addBook();
				break;
			case 3:				
//		3.删除指定编号的图书?
//				delBynum();
				break;
			case 4:				
//		4.查询人气最高的仙侠小说?
//				querryMaxTop();
				break;
			case 5:				
//		5.查找作者是两个字的小说按人气进行排序?
//				querryByTAuthorSort();
				break;
			case 6:				
//		6.计算所有未完结小说的平均人气?
//				calculateNoEndTop();
				break;
			case 7:
//		7.找出未完结小说里面人气最高的三本小说信息?				
//				findNoEndTopThree();				
				break;
			case 8:
//		8.人气超过50000的的未完结小说有哪些?
//				findOverTop(50000);
				break;
			case 9:
//		9.根据图书类型进行分组,显示每中图书类型的总数量以及每个类型下具体的商品信息?
//				showType();
				break;
			default:
				System.out.println("输入的操作数有误!");
				break;
			}
		}
	}
	/**
	 * 2.添加一条图书信息
	 */
	private static void addBook() {
		System.out.println("请输入一个图书编号:");
		String num = scan.next();
		if(!bookdao.isExist(num)) { //判断num是否重复
			System.out.println("请输入图书名称:");
			String name = scan.next();
			System.out.println("请输入作者:");
			String author = scan.next();
			System.out.println("请输入人气:");
			int top = scan.nextInt();
			System.out.println("请输入类型:");
			String type = scan.next();
			System.out.println("请输入状态:");
			int state = scan.nextInt();
			//把数据封装到实体对象中
			Book book = new Book(num, name, author, top, type, state);
			bookdao.addBook(book);
		}else {
			System.out.println("输入的编号已存在!");
		}				
	}

	/**
	 * 1.查询所有图书信息
	 */
	private static void querryAllBook() {
		System.out.println("图书编号\t图书名称\t作者\t人气\t图书类型\t全部(1.表示完结,2.表示连载中)");
		List<Book> books = bookdao.querryBooks(); 
		for(Book i : books) {
			System.out.println(i.getNum()+"\t"+i.getName()+"\t"+i.getAuthor()+"\t"+i.getTop()+"\t"+i.getType()+"\t"+i.getState());
		}
	}

	/**
	 * 显示主菜单
	 */
	private static void mainList() {
		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("7.找出未完结小说里面人气最高的三本小说信息?");
		System.out.println("8.人气超过50000的的未完结小说有哪些?");
		System.out.println("9.根据图书类型进行分组,显示每中图书类型的总数量");
		System.out.println("请输入操作数字:");
		
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值