从零开始学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;}@Overridepublic 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));}elseSystem.out.println("你输入的书本数目超出了当前库存!");}else{System.out.println("没找到,你要加入的图书!");}}}@Overridepublic 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());}}}
</pre><pre name="code" class="java"><span style="font-size:18px;">管理员类:   实现接口,里面都是管理员的方法,在测试类里调用这些方法实现其功能</span><span style="font-size:18px;"></span>
<span style="font-size:18px;">
</span>
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;} elseSystem.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);} elseSystem.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);} elseSystem.out.println("您输入的数字不合法请重新输入!");}} elseSystem.out.println("您输入的用户名,密码错误,请核对后重新输入!");}}

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

  1. java内部类、接口、集合框架、泛型、工具类、实现类

    一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类名   变量名=外部类对象.new 内部类名(); class Person{class Test{}}Person p=ne ...

  2. 从零开始学 Java - Spring MVC 实现跨域资源 CORS 请求

    论职业的重要性 问:为什么所有家长都希望自己的孩子成为公务员? 答:体面.有权.有钱又悠闲. 问:为什么所有家长都希望自己的孩子成为律师或医生? 答:体面.有钱.有技能. 问:为什么所有家长都不怎么知 ...

  3. java任务调度定时器,从零开始学 Java - Spring 使用 Quartz 任务调度定时器

    生活的味道 睁开眼看一看窗外的阳光,伸一个懒腰,拿起放在床一旁的水白开水,甜甜的味道,晃着尾巴东张西望的猫猫,在窗台上舞蹈.你向生活微笑,生活也向你微笑. 请你不要询问我的未来,这有些可笑.你问我你是 ...

  4. 44从零开始学Java之详解容易让初学者懵圈的abstract抽象类、抽象方法

    作者:孙玉昌,昵称[一一哥],另外[壹壹哥]也是我哦 千锋教育高级教研员.CSDN博客专家.万粉博主.阿里云专家博主.掘金优质作者 前言 经过前面几篇文章的讲解,我们现在已经对面向对象有了基本的认知, ...

  5. JAVE EE 企业级开发之从零开始学JAVA【51CTO技术论坛】

    http://bbs.51cto.com JAVE EE 企业级开发之从零开始学JAVA         从零开始学JAVA?YES!本刊内容全部为午饭redking整理.撰写,所涉及内容均为原创,非 ...

  6. 从零开始学 Java - Spring 集成 Memcached 缓存配置(二)

    Memcached 客户端选择 上一篇文章 从零开始学 Java - Spring 集成 Memcached 缓存配置(一)中我们讲到这篇要谈客户端的选择,在 Java 中一般常用的有三个: Memc ...

  7. java集合框架的接口_Java集合框架——Set接口

    第三阶段 JAVA常见对象的学习 集合框架--Set接口 List集合的特点是有序的,可重复的,是不是存在这一种无序,且能保证元素唯一的集合呢?(HashSet )这就涉及到我们今天所要讲的Set集合 ...

  8. windows java eclipse_从零开始学 Java - Windows 下安装 Eclipse

    三观是什么鬼 当我们在讨论「三观一致」的时候是在讨论些什么? 我认为这个世界上本没有「三观」这一说法,说的人多了,也就有了「三观」这个词,当我们讨论「三观一致」其实并不是真的在说世界观.价值观.人生观 ...

  9. 从零开始学java(二十六)--多维数组,多维数组存储表格数据

    从零开始学java(二十六)--多维数组 多维数组 多维数组存储表格数据 多维数组 多维数组可以看成以数组为元素的数组.可以有二维.三维.甚至更多维数组,但是实际开发中用的非常少.最多到二维数组(学习 ...

  10. 从零开始学JAVA:二、Java基本语法(四)——流程控制

    从零开始学JAVA:二.Java基本语法(四)--流程控制 程序流程控制 1.顺序结构 2.分支结构 2.1.if-else结构 2.2.switch-case选择结构 2.3.Scanner类的使用 ...

最新文章

  1. 如何让phpmyadmin输入密码再进入
  2. IT人士有哪些保健建议
  3. 量子计算时代快了!量子计算机的架构,硬件,软件等都有成果!
  4. 【计网】计算机网络-物理层【理论1-2】
  5. 新增房源服务实现之AutoGenerator使用以及创建pojo对象
  6. ctr z撤回反向_matplotlib 3D图上的反向Z轴
  7. timerfd_create Function not implemented问题
  8. 聊天机器人闲聊语料 - 1
  9. 短消息类新旧服务代码对应表
  10. 自动化生产线仿真教学
  11. tp5用redis防高并发
  12. python 键盘记录_记录键盘敲击次数 python实现
  13. 大小限制_微信突破九张照片,视频大小限制
  14. 二叉树:给后序中序遍历,求前序
  15. 计算机动画的处理及应用教案,电脑动画制作教案(2篇)
  16. 通常所说的微型计算机主机是指,通常所说的微型主机是指
  17. 找工作时牢牢记住这些
  18. 最新版本火狐浏览器如何导入书签?
  19. 云计算公共属性中的“3”是什么
  20. STM32 产品低功耗待机方案处理

热门文章

  1. 报错 | Cannot find module ‘@better-scroll/core/dist/types/BScroll‘
  2. Linux的tar解压命令
  3. 火焰检测方法和数据集记录
  4. 海康摄像机、NVR、流媒体服务器、回放取流RTSP地址规则说明
  5. kali2020 中文乱码问题
  6. 计算机二级access无忧考吧破解,无忧考吧access模拟考试软件
  7. 【堆栈溢出】堆栈溢出_liangchaoxi的IT博客_新浪博客
  8. 小学生python编程教程-python 小学生教程|怎么让一个小学生学会Python?
  9. IT成长中的龟兔赛跑
  10. 金士顿U盘修复工具Kingston Format Utility