《Java》图书管理系统
创始人
2024-01-25 06:34:19
0

         这是一个对于Java中知识点的类,抽象类,封装,继承,多态,接口等进行的一个简单的代码练习,对于实际的图书管理系统还需要一点的优化

目录

前言

效果展示

 功能模块

书架

定义书的类

 创建书架

 用户

User用户类

AdminUser管理员

NormalUser普通用户 

 功能

接口

FindOperation 查找图书

 AddOperation添加图书

 DelOperation删除图书

BorrowOperation借阅图书 

DisOperation 打印图书 

 RetOperation归还图书

 ExitOperation退出系统

 整合

 总结


前言

效果展示

我们先来看看效果

首先是我们的管理员端:

 再下是我们的普通用户端:

 功能模块

 我们先试着模块化出来功能合计

1.简单的登录

2.管理端

  ·查阅图书

  ·增加图书

  ·删除图书

  ·打印图书

  ·退出系统

3.用户端

  ·查阅图书

  ·借阅图书

  ·归还图书

  ·退出

 我们先将类中的功能创建好 

 IOperation为我们所有功能的接口 很多童鞋就疑惑为何要这么做,我们直接将其定义到一个类中不可以吗,答案是可以的!,但是我们为了链接知识点 所以将其进行分化!

书架

定义书的类

我们先来定义一个书的类,首先一本书有书名、作者、价格、类型以及是否已被借出

​
public class Book {private String name;//书名private String  author;//作者private int price;//价格private String type;//类型private boolean isBorrwed;//是否借出
}​

因为这些都是private类型 所以我们还需要提供一个方法来提供给使用者来调用

教大家快捷方法为Alt+Insert

 

​public Book(String name, String author, int price, String type) {this.name = name;this.author = author;this.price = price;this.type = type;}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 getPrice() {return price;}public void setPrice(int price) {this.price = price;}public String getType() {return type;}public void setType(String type) {this.type = type;}public boolean isBorrwed() {return isBorrwed;}public void setBorrwed(boolean borrwed) {isBorrwed = borrwed;}@Overridepublic String toString() {return "book{" +"  书名='" + name + '\'' +", 作者='" + author + '\'' +", 价格=" + price +", 类型='" + type + '\'' +((isBorrwed==true)?", 已被借出":", 未被借出") +'}';}​

 创建书架

 我们创建一个BookList类当做书架,用来存放我们的书籍

​
public class BookList {private Book[] books=new Book[10];private int BookSize;public  BookList(){books[0]=new Book("三国演义","罗贯中",17,"小说");books[1]=new Book("西游记","吴承恩",47,"小说");books[2]=new Book("水浒传","施耐庵",37,"小说");this.BookSize=3;}public int getBookSize() {return BookSize;}public void setBookSize(int bookSize) {BookSize = bookSize;}/*** 获取到pos位置的一本书* @param pos* @return*/public Book getpos(int pos){return books[pos];}/*** 新加入一本书* @param pos* @param book*/public void setBooks(int pos,Book book){this.books[pos]=book;}
}​

 我们现在可以看到已经对书架进行了初始化,现在书架上的书有三国演义、西游记、水浒传

 用户

User用户类

我们要使用User来实现多态继承

public abstract class User {protected String name;protected IOperation[] iOperations;public User(String name){this.name=name;}public abstract int menu();public void dowork(int choice, BookList bookList){iOperations[choice].work(bookList);}
}

AdminUser管理员

管理员要实现的功能为查找、新增、删除、打印、退出系统

public class AdminUser extends User{public AdminUser(String name){super(name);this.iOperations =new IOperation[]{new Exitoperation(),new Findoperation(),new Addoperation(),new Deloperation(),new Displayoperation()};}public int menu(){System.out.println("=======管理员菜单=======");System.out.println("Hai!"+this.name+" 欢迎来到图书馆");System.out.println("1.查找图书");System.out.println("2.新增图书");System.out.println("3.删除图书");System.out.println("4.显示图书");System.out.println("0.退出系统");System.out.println("====================");Scanner scanner=new Scanner(System.in);return scanner.nextInt();}
}

 AdminUser类继承了User用户类,并且实现了管理员对应的功能

NormalUser普通用户 

 普通用户要实现的功能为查找、借阅、归还、退出系统

public class NormalUser extends User {public NormalUser(String name){super(name);this.iOperations =new IOperation[]{new Exitoperation(),new Findoperation(),new Borrowoperation(),new Retoperation()};}public int menu(){System.out.println("=======用户菜单=======");System.out.println("Hai!"+this.name+" 欢迎来到图书馆");System.out.println("1.查找图书");System.out.println("2.借阅图书");System.out.println("3.归还图书");System.out.println("0.退出系统");System.out.println("====================");Scanner scanner=new Scanner(System.in);return scanner.nextInt();}}

 功能

接口

public interface IOperation {Scanner scanner=new Scanner(System.in);public void work(BookList bookList);
}

FindOperation 查找图书

 我们此功能实现是非常简单的,保存好用户要查找的图书并且使用类name.equals()来查找图书即可

public class Findoperation implements IOperation{public void work(BookList booklist) {System.out.println("查找图书");System.out.println("请输入你要查找的书名");String name=scanner.nextLine();int size=booklist.getBookSize();for (int i = 0; i < size; i++) {Book book= booklist.getpos(i);if(name.equals(book.getName())){System.out.println("找到了你要查找的书 信息如下");System.out.println(book);return ;}}System.out.println("没有找到你要查找的书");}
}

 AddOperation添加图书

我们要给已存在的书架加入一本书,将新书存放到顺序表之后即可

public class Addoperation implements IOperation{public void work(BookList booklist) {System.out.println("添加图书");System.out.println("请输入图书的名字");String name=scanner.nextLine();System.out.println("请输入图书的作者");String author=scanner.nextLine();System.out.println("请输入图书的类别");String type=scanner.nextLine();System.out.println("请输入图书的价格");int price=scanner.nextInt();Book book=new Book(name,author,price,type);int size=booklist.getBookSize();booklist.setBooks(size,book);booklist.setBookSize(++size);System.out.println("新增图书成功");}
}

 需要注意的地方是我们一定要切记添加图书后记得要改变bookSize的值

 DelOperation删除图书

此功能的实现与查找类似,在查找的基础上增加了删除,需要用到的知识点为顺序表的删除,删除需要将后续的书前移,并且将最后一个置为 空

public class Deloperation implements IOperation{public void work(BookList booklist) {System.out.println("删除图书");System.out.println("请输入要删除的图书的名字");String name=scanner.nextLine();int size= booklist.getBookSize();for (int i = 0; i < size; i++) {Book book= booklist.getpos(i);if(name.equals(book.getName())){while(i

 切记将书架的最后一位置为空避免泄露,需要注意到的还是要将bookSize的值进行修改

BorrowOperation借阅图书 

首先利用查找的原理找到我们要寻找的书,找到后修改其状态即可

public class Borrowoperation implements IOperation {public void work(BookList booklist) {System.out.println("借阅图书");System.out.println("请输入你要借的书名");String name=scanner.nextLine();int size=booklist.getBookSize();for (int i = 0; i 

需要注意的是记得将要借阅的书类型修改为true 

DisOperation 打印图书 

按照顺序表原理依次打印即可

public class Displayoperation implements IOperation{public void work(BookList booklist) {System.out.println("打印图书");int size= booklist.getBookSize();for (int i = 0; i < size; i++) {Book book= booklist.getpos(i);System.out.println(book);}}
}

 RetOperation归还图书

 首先要查找书库是否存在此书,如果存在将其类型修改为false

public class Retoperation implements IOperation{public void work(BookList booklist) {System.out.println("归还图书");System.out.println("请输入你要归还的书名");String name=scanner.nextLine();int size=booklist.getBookSize();for (int i = 0; i 

 ExitOperation退出系统

退出系统

public class Exitoperation implements IOperation{public void work(BookList booklist) {System.out.println("退出系统");System.exit(0);}
}

 整合

我们需要使用Main来将所有的功能进行串联

public class Main {public static User login(){System.out.println("请输入你的姓名");Scanner scanner=new Scanner(System.in);String name=scanner.next();System.out.println("请输入你的身份 1--》管理员 0--》普通用户");int choice=scanner.nextInt();if(choice==1){return new AdminUser(name);}else if(choice==0) {return new NormalUser(name);}else {System.out.println("输入错误,退出系统");return null;}}public static void main(String[] args) {BookList bookList=new BookList();User user=login();//发生了向上转型while(true){int choice=user.menu();//发生了动态绑定 多态//根据choice调用合适的操作user.dowork(choice,bookList);}}
}

 我们来看一下代码写完之后的所有文件

 总结

我们现在实现的还是比较简易的,后期将结合MySQL来进行优化,并且在代码实现中也有很多业务上的处理没有实现,后期将会进行修正,感谢大家的支持

相关内容

热门资讯

人生的励志箴言 关于人生的励志箴言  1.朋友是雨中伞,遮风挡雨; 朋友是雪中炭,暖心驱寒;朋友是被中棉,温暖身心;...
不悔梦归处美文 不悔梦归处美文  今天去图书馆,一下午的时间看了点刘庸的《我不是教你祚》,晚上时也实在是无聊,又不想...
十部必看韩剧历史剧   大家看韩剧喜欢看韩国的历史剧吗?下文是励志网整理的十部必看韩剧历史剧,希望能帮助到你。  十部必...
青春奋斗带字励志图片   伟人之所以伟大,是因为他与别人共处逆境时,别人失去了信心,他却下决心实现自己的目标。下面是由yj...
古人关于描写云的励志诗句集锦 天空中又出现许多千变万化的云彩,时而像羽毛,轻轻地漂泊在空中;时而像羊群,缓缓地移动;时而像大海,翻...
校园励志电影 应届毕业生励志网分享15部校园励志电影:  1、律政俏佳人1、2(Legally Blonde)……...
生产管理励志口号 生产管理励志口号大全  1. 异常改善改善再改善,浪費减少减少再减少  2. 小问题,要重视,老毛病...
tvb励志电视剧2017   2017tvb新片巡礼剧有哪些?2017年tvb依然有好多好看的电视剧准备开播?下面我们一起来看...
励志江苏大龄考生陈洪涛 励志江苏大龄考生陈洪涛  参加16个专业自考  他还拥有多张资格证书  陈洪涛高中毕业后就去了扬州电...
青春励志女生合唱歌曲   导语:有哪些适合女孩子合唱的青春励志歌曲呢?以下是小编收集整理的青春励志女生合唱歌曲,希望大家喜...
青春励志人生小说   青春啊,难道你始终囚禁在狭小圈子里?你得撕破老年的蛊惑人心的网。今天励志网就为大家推荐一些青春励...
高考励志对联集锦   引导语:不知不觉,高考又要来到了,为了鼓励考生,下面unjs小编为大家带来关于高考励志的对联集锦...
四年级语文《徐悲鸿励志学画》... 四年级语文《徐悲鸿励志学画》教学反思  作为一名到岗不久的老师,我们的任务之一就是教学,对教学中的新...
励志歌曲集 励志歌曲之一腾格尔:大男人罗嘉良:创造晴天温兆伦:从未试过拥有Michael Learns To R...
初三班级励志誓词   导语:中考不相信“如果”,多一份勤奋,少一份后悔。在面对即将到来的高考,以下是小编整理的关于初三...
特深沉的人生感悟语句励志 特深沉的人生感悟语句【励志】  人生最重要的不是我们置身何处,而是我们将前往何处,特深沉的人生感悟语...
励志电影《土豪的情人节》推荐   土豪情人节又名土豪520。  《土豪520》是中国电影股份有限公司、江苏幸福蓝海院线有限公司、浙...
励志八字真言 励志八字真言  1、自加压力,敢于争先。  2、孜孜不倦,蒸蒸日上。  3、愚者千虑,必有一得。  ...
成功女人的励志故事 成功女人的励志故事  导语:谁说女子不如男?现在的女子可是个个都能够撑起半边天,事事靠自己。下面是小...
高三励志文章:高三,时间是赞... 高三励志文章:高三,时间是赞下来的    离2011年高考还剩下大约50天的时间了。    我们在复...