从零开始学Java自己利用接口和集合框架做的简单图书管理系统

    从零开始学Java,本来利用数组只在一个界面就可以实现增删改查功能,学到接口后觉得实现分离效果会更好一些!所以进行了尝试,将管理员和用户中的图书查询,登录,图书出库合并在一起写了一个接口,用户类和管理员类实现这个接口!图书类写了一个抽象类里面都是一些图书的属性,用户类管理员类对图书类进行操作。

具体实现如下:

接口:存在三种方法  用户类和管理员类去实现这个接口,并实现着里面的方法

public interface Person {
	
	public boolean login(String user,String pwd);   //登录方法
	
	public void search();  //查询方法
	
	public void reduce(String s,int i);  // 图书出库

}
用户类:  实现接口,里面都是用户的方法,在测试类里调用这些方法实现其功能

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

public class User implements Person{
	private final String user = "user";
	private final String pwd  = "user";
	
	List list = new ArrayList();
	public void addBook(Book book){     //增加图书
    	list.add(book);
    }
	public boolean login(String user, String pwd) {    //登录方法
		
		if(this.user.equals(user) &&this.pwd.equals(pwd)){
    		return true;
    	}
    	
		return false;
	}
	@Override
	public void reduce(String s, int i) {            //结账
		Iterator it = list.iterator();
   	    while(it.hasNext()){
   		Book b = (Book)it.next();
   		if(b.getNum().equals(s)){
   			if(b.getCount() >= i){
   				int m = b.getCount()-i;
   			    b.setCount(m);
   			    System.out.println("你的图书总价为:"+(b.getPrice()*i));
   			}else
   				System.out.println("你输入的书本数目超出了当前库存!");
   			
   		}else{
   			System.out.println("没找到,你要加入的图书!");
   		}
			
		}
		
	}
	@Override
	public void search() {                          //查询图书当前情况
		Iterator it = list.iterator();
    	while(it.hasNext()){
    		Book b = (Book)it.next();
    		System.out.println(b.getNum()+"\t"+b.getName()+"\t"
    				+b.getAnthor()+"\t"+b.getFromTime()
    				+"\t"+b.getPrice()+"\t"+b.getCount());
    	}
		
	}
	
	 

}
管理员类:   实现接口,里面都是管理员的方法,在测试类里调用这些方法实现其功能

package com.pv1;

import java.util.*;

public class Admin implements Person {

	private final String user = "admin";
	private final String pws = "admin";

	List list = new ArrayList();

	public boolean login(String user, String pwd) { // 登录方法

		if (this.user.equals(user) && this.pws.equals(pwd)) {
			return true;
		}
		return false;
	}

	public void addBook(Book book) { // 增加图书
		list.add(book);
	}

	public void search() { // 查询方法
		Iterator it = list.iterator();
		while (it.hasNext()) {
			Book b = (Book) it.next();
			System.out.println(b.getNum() + "\t" + b.getName() + "\t"
					+ b.getAnthor() + "\t" + b.getFromTime() + "\t"
					+ b.getPrice() + "\t" + b.getCount());
		}
	}

	public void reduce(String num, int i) { // 图书出库

		for (int j = 0; j < list.size(); j++) {
			Book b = (Book) list.get(j);
			if (b.getNum().equals(num)) {
				if (b.getCount() >= i) {
					int m = b.getCount() - i;
					b.setCount(m);
					System.out.println("取出成功!现在此书库存为:" + m);
					j--;
					break;
				} else
					System.out.println("你输入的书本数目超出了当前库存!");

			}
			if (j == list.size()) {

				System.out.println("没找到,你要加入的图书!");
			}

		}
	}

	public void increase(String num, int i) { // 图书入库

		for (int j = 0; j < list.size(); j++) {
			Book b = (Book) list.get(j);
			if (b.getNum().equals(num)) {
				if (i < 0) {
					System.out.println("你加入的图书数目不合法!");
				} else {
					int m = b.getCount() + i;
					b.setCount(m);
				}

			}
			if (j == list.size()) {
				System.out.println("没找到,你要加入的图书!");
			}
		}
	}

	public void delete(String num) {       //删除提供编号的图书
		int j = 0;
		for (j = 0; j < list.size(); j++) {
			Book b = (Book) list.get(j);
			if (b.getNum().equals(num)) {
				list.remove(b);
				System.out.println("删除成功!");
				j--;
				break;
			}
		}
		if (j == list.size()) {
			System.out.println("未找到你要删除的图书!请确认编号后再删");
		}
	}
	public boolean guanSearch(String num){
		for (int j = 0; j < list.size(); j++) {
			Book b = (Book) list.get(j);
			if (b.getNum().equals(num)) {
				return true;
			}
		}
		return false;
	}

	public void guan(String num, String name, String auther, String date,
			double price, int count) {            // 修改提供编号的图书
		int j = 0;
		for ( j = 0; j < list.size(); j++) {
			Book b = (Book) list.get(j);
			if (b.getNum().equals(num)) {
				b.setAnthor(auther);
				b.setCount(count);
				b.setFromTime(date);
				b.setName(name);
				b.setPrice(price);
				break;
			}
		}
	}
}


图书类:抽象类,里面全部是属性,方便用户管理员对其操作。

package com.pv1;

import java.util.*;

public class Book {
	
	private String num ;
	private String name;
	private String anthor;
	private String fromTime;
	private double price;
	private int count;
	
	
	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 getAnthor() {
		return anthor;
	}
	public void setAnthor(String anthor) {
		this.anthor = anthor;
	}
	public String getFromTime() {
		return fromTime;
	}
	public void setFromTime(String fromTime) {
		this.fromTime = fromTime;
	}
	public double getPrice() {
		return price;
	}
	public void setPrice(double price) {
		this.price = price;
	}
	public int getCount() {
		return count;
	}
	public void setCount(int count) {
		this.count = count;
	}
	
	
	
	

}

测试类:

package com.pv1;

import java.util.*;

public class BookTest {

	public static void main(String[] args) {

		Scanner input = new Scanner(System.in);
		Book bo = new Book();           //在开始时加入一本图书,所用对象
		Book bo1 = null;       //循环加入图书建立的对象,开始设成空,防止加入图书时被覆盖
		List list = new ArrayList();   //建立一个集合,存储管理员要添加的图书信息的对象
		Admin ad = new Admin();      //建立管理员对象,管理员操作时调用管理员类中对象
		User us = new User();        //建立用户对象,管理员操作时调用用户类中对象
		boolean ad1 = true;         //接受进入管理员操作界面的返回值
		boolean us1 = true;         //接受进入用户操作界面的返回值
		bo.setAnthor("刘冰");        //书籍为空,加入一本图书
		bo.setCount(20);
		bo.setNum("1001");
		bo.setName("一本道");
		bo.setFromTime("2015-2-50");
		bo.setPrice(250.0);
		ad.addBook(bo);                //通过对象传递在管理员类中加入一本图书
		us.addBook(bo);
		System.out.print("请输入用户名:");  //用户输入 用户名 密码
		String user = input.next();
		System.out.print("请输入密码:");//
		String pwd = input.next();
		ad1 = ad.login(user, pwd);  //将 用户名 密码 传入管理员类中进行判断返回Boolean类型接受
		us1 = us.login(user, pwd);  //将 用户名 密码 传入用户类中进行判断返回Boolean类型接受
		if (ad1) {          //如果管理员类返回true进入   管理员操作界面
			System.out.println("图书编号\t" + "书名\t" + "作者\t" + "出版日期\t" + "\t价格\t"
					+ "库存");
			ad.search();
			while (true) {
				bo1 = new Book();
				System.out.println("1.查询 2.图书入库 3.图书出库 "
						+ "4.新增图书 5.修改 6.删除 7.退出\t请输入您的选择:");
				int xuan = input.nextInt();
				switch (xuan) {
				case 1:
					System.out.println("图书编号\t" + "书名\t" + "作者\t" + "出版日期\t"
							+ "价格\t" + "库存");
					ad.search();
					break;
				case 2:
					System.out.print("请输入你想入库的图书编号:");
					String num = input.next();
					System.out.print("请输入你想添加本图书的数量:");
					int cou = input.nextInt();
					ad.increase(num, cou);
					break;
				case 3:
					System.out.print("请输入你想取出的图书编号:");
					num = input.next();
					System.out.print("请输入你想取出图书的数量:");
					cou = input.nextInt();
					ad.reduce(num, cou);
					break;
				case 4:
					System.out.print("请输入你想添加的图书编号:");
					num = input.next();
					System.out.print("请输入你想添加图书的书名:");
					String name = input.next();
					System.out.print("请输入你想添加图书的作者:");
					String auther = input.next();
					System.out.print("请输入你想添加图书的出版日期:");
					String date = input.next();
					System.out.print("请输入你想添加图书的价格:");
					double price = input.nextDouble();
					System.out.print("请输入你想添加图书的库存:");
					cou = input.nextInt();
					bo1.setAnthor(auther);
					bo1.setCount(cou);
					bo1.setFromTime(date);
					bo1.setName(name);
					bo1.setNum(num);
					bo1.setPrice(price);
					ad.addBook(bo1);

					break;
				case 5:
					System.out.print("请输入你想修改图书的编号:");
					num = input.next();
					boolean bool = ad.guanSearch(num);
					if (bool) {
						System.out.print("请输入你想修改图书的书名:");
						name = input.next();
						System.out.print("请输入你想修改图书的作者:");
						auther = input.next();
						System.out.print("请输入你想修改图书的出版日期:");
						date = input.next();
						System.out.print("请输入你想修改图书的价格:");
						price = input.nextDouble();
						System.out.print("请输入你想修改图书的库存:");
						cou = input.nextInt();
						ad.guan(num, name, auther, date, price, cou);
					} else
						System.out.println("没找到你要修改的图书,请确认后再删");

					break;
				case 6:
					System.out.print("请输入你想删除图书的编号:");
					num = input.next();
					ad.delete(num);
					break;
				case 7:
					System.exit(0);
					break;
				default:
					System.out.println("你输入的数字不合法!");
				}
			}
			
			
			
		} else if (us1) {       //如果用户类返回true进入   用户操作界面
			System.out.println("图书编号\t" + "书名\t" + "作者\t" + "出版日期\t" + "价格\t"
					+ "库存");
			us.search();
			while (true) {
				System.out.println("1.查询 2.结账 3.退出\t请输入您的选择:");
				int xuan = input.nextInt();
				if (xuan == 1) {
					us.search();
				} else if (xuan == 2) {
					System.out.print("请输入您想购买的编号:");
					String num = input.next();
					System.out.print("请输入你想购买图书的的数量:");
					int cou = input.nextInt();
					us.reduce(num, cou);
				} else if (xuan == 3) {
					System.exit(0);
				} else
					System.out.println("您输入的数字不合法请重新输入!");
			}

		} else
			System.out.println("您输入的用户名,密码错误,请核对后重新输入!");

	}

}



你可能感兴趣的:(从零开始学Java自己利用接口和集合框架做的简单图书管理系统)