一.前言
技术需求:java基础,数组,面向对象(封装,继承,接口)
二.整体结构
三.基本思路
Book类:定义了(书名,作者,价格,分类,状态)基本的javabean
Library类:控制了整个系统,主要包括用户登录(普通用户,管理员,退出)和总系统的启动(Library)
Operate接口:定义了(查询,删除/借书,添加/还书,显示)操作
Person类:定义了(姓名,年龄,性别)基本的javabean,图书列表(包含运行时添加图书)
Root类:继承Person且实现Operate接口(添加了一个整理方法)
User类:继承Person且实现Operate接口
大概图解:
四.代码区
Book类
public class Book {
private String bookname;//书名
private String name;//作者
private double price;//价钱
private String simple;//分类
private boolean state;//状态
public Book() {
this(10);
}
public Book(String bookname, String name, double price, String simple, boolean state) {
this.bookname = bookname;
this.name = name;
this.price = price;
this.simple = simple;
this.state = state;
}
public Book(int i) {
Person.books = new Book[i];
}
public String getBookname() {
return bookname;
}
public void setBookname(String bookname) {
this.bookname = bookname;
}
public String getName() {
return name;
}
public boolean isState() {
return state;
}
public void setState(boolean state) {
this.state = state;
}
public void setName(String name) {
this.name = name;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public String getSimple() {
return simple;
}
public void setSimple(String simple) {
this.simple = simple;
}
public Book(boolean state) {
this.state = state;
}
@Override
public String toString() {
return "Book{" +
"bookname='" + bookname + '\'' +
", name='" + name + '\'' +
", price=" + price +
", simple='" + simple + '\'' +
", state='" + state + '\'' +
'}';
}
}
Person类
abstract class Person {
private String name;//姓名
private int age;//年龄
private String gender;//性别
public abstract void operate(int i);
public static Book[] books = new Book[]{ //默认定义书籍
new Book("西游记","吴承恩",10,"名著",true),
new Book("红楼梦","曹雪芹",20,"名著",true),
new Book("三国演义","罗贯中",15,"名著",true),
new Book("小明同学","小明",5,"杂志",true),
new Book()
};
public Person() {
}
public Person(String name, int age, String gender) {
this.name = name;
this.age = age;
this.gender = gender;
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
", gender='" + gender + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
}
Operate类
public interface Operate {
public void inquire(Book[] books);//查询
public void delete(Book[] books);//删除
public void add(Book[] books);//t添加
public void show(Book[] books);//显示
}
Root类
import java.util.Arrays;
import java.util.Comparator;
import java.util.Objects;
import java.util.Scanner;
public class Root extends Person implements Operate {
private String Rname;//名字
private String Rgender;//性别
private int Rage;//年龄
public Root(String name, int age, String gender) {
super(name, age, gender);//继承父类
}
Scanner sc=new Scanner(System.in);
//继承的查询
@Override
public void inquire(Book[] books) {
System.out.println("请输入书名:");
String n=sc.next();
//判断输入的n是否为空,若为空不考虑,不为空则输出对应书名的其他属性
if(n!=null){
for (int i = 0; i < books.length; i++) {
if(Objects.equals(n,books[i].getBookname())){
System.out.println("此书名信息为:"+books[i].getBookname()+" "+books[i].getName()+" "+books[i].getPrice()+" "+books[i].getSimple()+" "+books[i].isState());
break;
}else{
System.out.println("暂无此书!");
break;
}
}
}
}
//继承删除
@Override
public void delete(Book[] books) {
System.out.println("请输入书名:");
String d=sc.next();
//判断是否为空
if(d!=null){
for (int i = 0; i < books.length; i++) {
//判断是否有此书
if (Objects.equals(books[i].getBookname(),d)){
books[i]=null;
System.out.println("删除成功!");
break;
}
}
}
}
//继承添加
@Override
public void add(Book[] books) {
System.out.println("请输入书名:");
String name=sc.next();
System.out.println("请输入作者:");
String zname=sc.next();
System.out.println("请输入价格:");
int price=sc.nextInt();
System.out.println("请输入分类:");
String simple=sc.next();
//循环找空位添加
for (int i = 0; i < books.length; i++) {
if(books[i].getBookname()==null){
books[i].setBookname(name);
books[i].setName(zname);
books[i].setPrice(price);
books[i].setSimple(simple);
books[i].setState(true);
}
}
}
//继承显示
@Override
public void show(Book[] books) {
System.out.println("图书列表为:书名--作者--价格--分类--状态");
//循环输出
for (int i = 0; i < books.length; i++) {
if(books[i]!=null){
System.out.println(books[i].getBookname()+" "+books[i].getName()+" "+books[i].getPrice()+" "+books[i].getSimple()+" "+books[i].isState());
}
}
}
//整理
public void sort(Book[] books){
System.out.println("图书按价格排序为:");
//运用Arrays中sort对数组元素进行排序,则对整个数组进行排序判断并输出
Arrays.sort(books, new Comparator<Book>() {
@Override
public int compare(Book o1, Book o2) {
return (int)(o1.getPrice()-o2.getPrice());
}
});
for (int i = 0; i < books.length; i++) {
System.out.println(books[i].getBookname()+" "+books[i].getName()+" "+books[i].getSimple()+" "+books[i].getPrice()+" "+books[i].isState());
}
}
//继承接口的内容
@Override//1.整理 2.查阅 3.增加 4.删除 5.显示
public void operate(int i) {
switch (i){
case 1://整理
sort(books);
break;
case 2://查阅
inquire(books);
break;
case 3://添加
add(books);
break;
case 4://删除
delete(books);
break;
case 5://展示列表
show(books);
break;
default:
System.out.println("输入有误!");
}
}
}
User类
import java.util.Scanner;
public class User extends Person implements Operate{
private String Rname;//名字
private String Rgender;//性别
private int Rage;//年龄
public User(String name, int age, String gender) {
super(name, age, gender);//继承父类
}
Scanner sc=new Scanner(System.in);
@Override//查询
public void inquire(Book[] books) {
System.out.println("请输入书名:");
String n=sc.next();
//判断输入的n是否为空,若为空不考虑,不为空则输出对应书名的其他属性
if(n!=null){
for (int i = 0; i < books.length; i++) {
if(books[i].getBookname().equals(n)){
System.out.println("有此书!");
System.out.println("图书为:书名--作者--价格--分类--状态");
System.out.println(books[i].getBookname()+" "+books[i].getName()+" "+books[i].getPrice()+" "+books[i].getSimple()+" "+books[i].isState());
break;
}else{
System.out.println("暂无此书!");
break;
}
}
}
}
@Override//删除
public void delete(Book[] books) {
System.out.println("请输入要借的书名:");
String b=sc.next();
//判断是否为空
if(b!=null){
for (int i = 0; i < books.length; i++) {
//判断是否有此书
if(books[i].getBookname().equals(b)){
books[i].setState(false);
System.out.println("借书成功!!");
break;
}else{
System.out.println("暂无此书!");
break;
}
}
}
}
@Override//添加
public void add(Book[] books) {
System.out.println("请输入要还的书名:");
String name=sc.next();
if(name!=null){
//循环找名添加
for (int i = 0; i < books.length; i++) {
if(books[i].getBookname().equals(name)){
books[i].setState(true);
System.out.println("还书成功!!");
break;
}
}
}
}
@Override//展示
public void show(Book[] books) {
System.out.println("图书列表为:书名--作者--价格--分类--状态");
//循环输出
for (int i = 0; i < books.length; i++) {
if(books[i]!=null){
System.out.println(books[i].getBookname()+" "+books[i].getName()+" "+books[i].getPrice()+" "+books[i].getSimple()+" "+books[i].isState());
}
}
}
//继承接口的内容
@Override//1.查询 2.借阅 3.归还 4.显示
public void operate(int i) {
switch (i){
case 1:
inquire(books);
break;
case 2:
delete(books);
break;
case 3:
add(books);
break;
case 4:
show(books);
break;
default:
System.out.println("输入有误!!!");
}
}
}
Library类
import java.util.Scanner;
public class Library {
Scanner sc=new Scanner(System.in);
public void ll(){
int count=0;//为循环做限定
Person p=null;//为后边添加用户铺垫
while (count<2){
System.out.println("===========图书管理系统===============");
System.out.println("1.普通用户 2.管理员 3.退出程序");
int i=sc.nextInt();
//选择身份
if(i>=3){
return;
}switch (i){
case 1:
System.out.println("请输入您的姓名:");
String n=sc.next();
System.out.println("请输入您的性别:");
String g=sc.next();
System.out.println("请输入您的年龄:");
int a=sc.nextInt();
p=new User(n,a,g);
System.out.println("登陆成功!");
System.out.println("当前用户为普通用户,姓名:"+p.getName()+" 年龄:"+p.getAge()+" 性别:"+p.getGender());
while(true){
System.out.println("请输入你的操作:1.查询 2.借阅 3.归还 4.显示 5.退出");
int s=sc.nextInt();
if(s==5){
System.out.println("退出成功!");
break;
}else {
p.operate(s);//调用普通用户
}
}
break;
case 2:
System.out.println("请输入您的姓名:");
String n2=sc.next();
System.out.println("请输入您的性别:");
String g2=sc.next();
System.out.println("请输入您的年龄:");
int a2=sc.nextInt();
p=new Root(n2,a2,g2);
System.out.println("登陆成功!");
System.out.println("当前用户为管理员用户,姓名:"+p.getName()+" 年龄:"+p.getAge()+" 性别:"+p.getGender());
while(true){
System.out.println("请输入您的操作:1.整理 2.查阅 3.增加 4.删除 5.显示 6.退出");
int s=sc.nextInt();
if(s==6){
System.out.println("退出成功!!");
break;
}else{
p.operate(s);
}
}
}
}
}
//主函数控制整个系统运行
public static void main(String[] args) {
Library library=new Library();
library.ll();
}
}
五.结果区
普通用户的基本操作示例:
管理员操作示例:
最后退出显示:
- 最后到这里就结束了!很高兴分享,很高兴熬夜,很高兴变老!评论区我会在!!!
作者:llly?
本文版权归作者和CSDN共有,欢迎转载,且在文章页面明显位置给出原文链接,未经作者同意必须保留此段声明,否则保留追究法律责任的权利。