Java面向对象 -- 图书管理系统
题目:利用抽象类、接口等实现简单的图书管理系统。
整体布局
Test 类
package user.action;
import java.util.Scanner;
public class Test {
public void choose() {
while (true) {
System.out.println("------------图论科技图书管理系统------------\n");
System.out.print("请登录:1:普通用户 2:管理员登录\n\n");
Scanner in = new Scanner(System.in);
int choose = in.nextInt();
Scanner scan = new Scanner(System.in);
User user = null;
AdminPerson adminPerson = null;
switch (choose) {
case 1:
System.out.print("请输入:姓名 \n");
String userName = scan.next();
System.out.print("请输入:性别 \n");
String userSex = scan.next();
System.out.print("请输入:年龄 \n");
int userAge = scan.nextInt();
user = new User(userName, userSex, userAge);
System.out.println("当前用户:" + userName + " " + userSex + " " + userAge);
user.start();
break;
case 2:
System.out.print("请输入:姓名 \n");
String adminName = scan.next();
System.out.print("请输入:性别 \n");
String adminSex = scan.next();
System.out.print("请输入:年龄 \n");
int adminAge = scan.nextInt();
System.out.println("当前管理员:" + adminName + " " + adminSex + " " + adminAge);
adminPerson = new AdminPerson(adminName, adminSex, adminAge);
adminPerson.start();
break;
}
}
}
public static void main(String[] args){
Test test = new Test();
test.choose();
}
}
Person 抽象类
package user.action;
import java.util.Scanner;
abstract class Person {
protected static String name;
protected static String sex;
protected static int age;
Scanner input = new Scanner(System.in);
public static String getName() {
return name;
}
public static String getSex() {
return sex;
}
public static int getAge() {
return age;
}
public static void setName(String name) {
Person.name = name;
}
public static void setSex(String sex) {
Person.sex = sex;
}
public static void setAge(int age) {
Person.age = age;
}
/**
* 查找图书信息
* @param book
*/
public void selectBook(String[][] book) {
String m;
System.out.println("请输入您要查找的图书名字:");
m = input.next();
if (Book.count == 0) {
System.out.println("不好意思,无此书籍!");
} else {
boolean flag = true;
while(flag){
for (int i = 0; i < book.length; i++) {
if (book[i][1].equals(m)) {
System.out.println("图书编号:" + book[i][0]);
System.out.println("图书名字:" + book[i][1]);
System.out.println("图书作者:" + book[i][2]);
System.out.println("图书数量:" + book[i][3]);
System.out.println("~~~~~~图书信息查找完毕~~~~~~");
flag = false;
break;
}else{
System.out.println("不好意思,无此书籍!");
flag = false;
break;
}
}
}
}
}
}
User 类
package user.action;
import java.util.Scanner;
public class User extends Person {
//用户姓名
private static String userName;
//用户性别
private static String userSex;
//用户年龄
private static int userAge;
//无参构造函数
Book book = new Book();
public User(){
}
//有参构造函数
public User(String userName,String userSex,int userAge){
}
//借阅书籍
public void borrowBook(String[][] book1){
System.out.println("请输入您要借阅的图书名字:");
String m;
int n = -1;
m = input.next();
for (int i = 0; i < book1.length; i++) {
if (book1[i][1].equals(m)) {
n = i;
break;
}
}
int p = Integer.parseInt(Book.book1[n][3]);
if (p == 0) {
System.out.println("不好意思,已经被借光了~");
} else {
Book.book1[n][3] = (p - 1) + "";
System.out.println("借阅成功!");
}
}
/**
* 归还图书
* @param book1
*/
public void returnBook(String[][] book1){
int BookId1,BookNum1;
String BookName1,Author1;
System.out.println("~~~~~~开始归还图书~~~~~~");
System.out.println("请输入归还图书名字:");
BookName1 = input.next();
for (int i = 0; i < Book.count; i++) {
if (book1[i][1].equals(BookName1)) {
int p = Integer.parseInt(book1[i][3]);
book1[i][3] = (p+1) + "";
break;
}
}
System.out.println("~~~~~~归还成功~~~~~~");
}
/**
* 用户操作函数
*/
public void start(){
Scanner input = new Scanner(System.in);
boolean flag = true;
int number;
while(flag) {
System.out.println("---------------------------------------------------");
System.out.print("请选择:1:查询书籍 2:借阅书籍 3:归还书籍 4:退出\n\n");
number = input.nextInt();
switch (number) {
case 1:
selectBook(Book.book1);
break;
case 2:
borrowBook(Book.book1);
break;
case 3:
returnBook(Book.book1);
break;
case 4:
System.out.println("~~~~~~您已退出系统~~~~~~");
flag = false;
break;
default:
System.out.println("输入错误");
break;
}
}
}
}
Operate 接口
package user.impl;
public interface Operate {
void arrangeBooks(String[][] book);
void printBooksList(String[][] book);
void alter_s(String[][] book1);
}
AdminPerson 类
package user.action;
import user.impl.Operate;
import java.util.Scanner;
public class AdminPerson extends Person implements Operate,Comparable<Book> {
//用户姓名
private static String adminName;
//用户性别
private static String adminSex;
//用户年龄
private static int adminAge;
Scanner input = new Scanner(System.in);
Book book = new Book();
//无参构造函数
public AdminPerson(){
}
//有参构造函数
public AdminPerson(String adminName,String adminSex,int adminAge){
}
/**
* 按图书编号整理书籍
* @param book1
*/
@Override
public void arrangeBooks(String[][] book1) {
String[] temp;
for(int i = 0;i < Book.count-1;i++){
for(int j=0;j < Book.count-1-i;j++) {
if (book1[j][0].compareTo(book1[j + 1][0]) > 0) {
temp = book1[j];
book1[j] = book1[j + 1];
book1[j + 1] = temp;
}
}
}
System.out.println("整理完毕!");
}
/**
* 打印图书列表
* @param book
*/
@Override
public void printBooksList(String[][] book) {
if(Book.count == 0){
System.out.println("仓库书籍为空!");
}else {
System.out.println("所有图书信息如下:");
for (int i = 0; i < Book.count; i++) {
System.out.print("图书编号:" + book[i][0] + "\t\t");
System.out.print("图书名字:" + book[i][1] + "\t\t");
System.out.print("图书作者:" + book[i][2] + "\t\t");
System.out.print("图书数量:" + book[i][3] + "\n");
}
}
}
/**
* 修改图书
* @param book1
* @return
*/
@Override
public void alter_s(String[][] book1) {
String m;
int o;
int n = -1;
System.out.println("请输入您要修改的图书名字:");
m = input.next();
for(int i = 0;i < Book.count;i++){
if(book1[i][1].equals(m)){
n = i;
break;
}
}
System.out.println("请选择您要修改的内容:1. 图书编号 2. 图书名字 3. 图书作者 4.图书数量");
o = input.nextInt();
System.out.println("请输入您要修改的内容:");
book1[n][o-1] = input.next()+"";
System.out.println("~~~~~~图书信息已修改~~~~~~");
}
/**
* 管理员操作函数
*/
public void start(){
boolean flag = true;
int number;
while(flag){
System.out.println("---------------------------------------------------------------------------");
System.out.print("请选择:1:增加书籍 2:查询书籍 3:修改书籍 4:删除书籍 5:打印书籍列表 6:整理书籍 7: 退出\n\n");
number = input.nextInt();
switch (number) {
case 1:
book.add(book);
break;
case 2:
selectBook(Book.book1);
break;
case 3:
alter_s(Book.book1);
break;
case 4:
book.delete();
break;
case 5:
printBooksList(Book.book1);
break;
case 6:
arrangeBooks(Book.book1);
break;
case 7:
System.out.println("~~~~~~您已退出系统~~~~~~");
flag = false;
break;
default :
System.out.println("输入错误");
break;
}
}
}
@Override
public int compareTo(Book o) {
return book.getBookId()-o.getBookId();
}
}
Book 类
package user.action;
import java.util.Scanner;
public class Book {
Scanner input = new Scanner(System.in);
protected int BookId;//书的ID
protected String BookName;//书的名字
protected String Author;//书的作者
protected int BookNum;//书的数量
protected static int count;
static String[][] book1 = new String[5][4];//存放图书信息的数组
public Book(){
}
public Book(int BookId,String BookName,String Author,int BookNum){
this.BookId = BookId;
this.BookName = BookName;
this.Author = Author;
this.BookNum = BookNum;
}
public Scanner getInput() {
return input;
}
public void setInput(Scanner input) {
this.input = input;
}
public int getBookId() {
return BookId;
}
public void setBookId(int bookId) { this.BookId = bookId; }
public String getBookName() {
return BookName;
}
public void setBookName(String bookName) {
this.BookName = bookName;
}
public String getAuthor() {
return Author;
}
public void setAuthor(String author) {
this.Author = author;
}
public int getBookNum() {
return BookNum;
}
public void setBookNum(int bookNum) {
this.BookNum = bookNum;
}
/**
* 增加图书以及图书信息函数
* @param book
*/
public void add(Book book){
int BookId1,BookNum1;
String BookName1,Author1;
System.out.println("~~~~~~开始添加图书信息~~~~~~");
System.out.println("图书ID:");
BookId1 = input.nextInt();
book.setBookId(BookId1);
System.out.println("图书名字:");
BookName1 = input.next();
book.setBookName(BookName1);
System.out.println("图书作者:");
Author1 = input.next();
book.setAuthor(Author1);
System.out.println("图书数量:");
BookNum1 = input.nextInt();
book.setBookNum(BookNum1);
System.out.println("~~~~~~添加成功~~~~~~");
book1[count][0] = book.BookId+"";
book1[count][1] = book.BookName;
book1[count][2] = book.Author;
book1[count][3] = book.BookNum+"";
System.out.println("图书编号:"+book1[count][0]);
System.out.println("图书名字:"+book1[count][1]);
System.out.println("图书作者:"+book1[count][2]);
System.out.println("图书数量:"+book1[count][3]);
count++;
}
/**
* 用于删除图书信息
*/
public void delete(){
System.out.println("输入您要删除的图书名字:");
String m;
m = input.next();
for(int i = 0; i < count;i++) {
if(book1[i][1].equals(m)) {
book1[i] = null;
book1[i] = book1[i + 1];
break;
}
}
System.out.println("~~~~~~图书信息已被删除~~~~~~");
count--;
}
}
-
管理员登录
以下为管理员操作
-
管理员添加书籍
-
查询书籍
-
打印书籍列表
-
按编号整理书籍
-
修改图书
修改后 -
删除图书
- 退出
以下为用户操作
-
用户登录
-
查询书籍
-
借阅书籍
-
归还书籍