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("请输入操作数字:");
}
}