图书管理系统java案例,手把手实现Java图书管理系统(附源码)

  图书管理系统java案例,手把手实现Java图书管理系统(附源码)

  本文为大家带来了一些java方面的知识,主要梳理了实现简单版图书管理系统的相关问题,包括图书管理系统的功能分析,IDEA中函数类的创建,用户相关的处理等等。下面就一起来看看吧,希望对你有帮助。

  如何解决写爬虫IP受阻的问题?立即使用。

  

1.分析图书管理系统的功能

  我们先分析一下一个图书管理系统应该具备的功能,搭建一个简单的框架。

  一般情况下,只有两种人可以使用图书管理系统,一种是学生,一种是图书管理员。

  这是我学校网上图书馆的登录界面。学生可以通过网络查阅书籍。

  这里看不到管理员的登录界面,但是肯定会有后台管理人员登录进行系统维护的窗口。

  一个简单的图书管理系统应该具备的功能,

  

2.在IDEA中进行功能类的创建

  

2.1 创建一个名为book的包,里面存放书相关的

  搜索一本书。一本书应该具备这些属性。

  私有字符串名称;//书名

  私有字符串作者;//作者

  私有int价格;//价格

  私有字符串类型;//类型

  私有布尔值被借用;//借用情况公共字符串getName() {

  返回名称;

  }

  public void setName(字符串名){

  this.name=name

  }

  公共字符串getAuthor() {

  返回作者;

  }

  public void setAuthor(字符串作者){

  this.author=作者;

  }

  public int getPrice() {

  退货价格;

  }

  公共空定价(中间价格){

  this.price=价格;

  }

  公共字符串getType() {

  返回类型;

  }

  公共void setType(字符串类型){

  this.type=type

  }

  public boolean isBorrowed() {

  退货被借走;

  }

  公共空集合借入(布尔借入){

  is borrow=借入;

  }公共图书(字符串名称、字符串作者、int价格、字符串类型){

  this.name=name

  this.author=作者;

  this.price=价格;

  this.type=type

  } @覆盖

  公共字符串toString() {

  返回“书单”{

  name= name \

  ,author= author \

  ,价格=价格

  ,type= type \

  ,isBorrowed= isBorrowed

  };

  }因为是一堆书,所以需要存储书,所以设置一个数组来存储书。

  //最多存储20本书

  私书[books]=新书[20];另一个成员变量用于实时记录当前图书数组中的图书数量。

  private int usedSize//实时记录当前Books数组中有多少本书。这里可以提供一个构造方法,先在里面存放几本书。

  公共书目(){

  Books[0]=新书(《西游记》,《吴承恩》,25,《小说》);

  书籍[1]=新书(《红楼梦》,《曹雪芹》,26,《小说》);

  书籍[2]=新书(三国演义,罗贯中,27,小说);

  书籍[3]=新书(《水浒传》,《施耐庵》,28,《小说》);

  usedSize=4;//目前有4本书。

  }如果下标合法数组,提供一个查找这本书的方法。

  public Book getBook(int pos) {

  归还图书[pos];

  }提供一个方法,给一个合法的数组下标,和一本书,就可以把书存放在栈里了。

  公共void setbook(int pos,Book book) {

  books[pos]=书;

  }提供一个方法,给一个参数,实时修改当前书架上的图书数量。

  public void setUsedSize(int size){

  usedSize=size

  }

2.2 创建一个名为Operation的包,里面存放对书的所有操作

  由于管理员和普通用户都是对BookList类的数组books中的书籍进行操作,

  因此,您可以提供一个IOperation接口来操作阵列,

  公共接口操作{

  /*

  *对书籍的所有操作都是通过BookList类中的books数组来执行的。

  *你可以把它写成一个接口

  **/

  void work(书单书单);

  }比如普通用户和管理员都要显示书籍。这种显示是一种效果,

  所以只要写一个普通用户和管理员都可以调用的类就可以了。

  一起创建这些类,

  然后你可以引用这些类的接口,并重写它们。

  比如增加新书。

  公共类AddOperation实现IOperation {

  @覆盖

  公共无效工作(书单书单){

  新书!);

  }

  }

3.进行用户相关的处理

  ,即处理普通用户和管理员。

  这里只创建一个类,因为对于普通用户和管理员来说,他们都是用户。

  所以创建一个成员变量来代表用户。

  //写保护将在以后继承。

  受保护的字符串名称;//用户名下面提供了一个构造函数来初始化它。

  //提供一个构造函数来初始化当前对象的name属性。

  公共用户(字符串名称){

  this.name=name

  }

  子类NormalUser继承了父类User,并提供了一个构造方法来显示父类对构造的帮助。

  公共类NormalUser扩展User{

  public NormalUser(字符串名){

  超级(名);

  }

  }子类AdminUser像以前一样继承父类User。

  向下是打印菜单,根据两个用户需要的功能打印。

  先看管理员AdminUser的。

  public int menu() {

  system . out . println( hello 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=新扫描仪(system . in);

  int choice=scanner . nextint();

  回归选择;

  //因为这是一个菜单,所以要先把输入的值传递出去,才能使用。

  }看看NormalUser的普通用户的

  system . out . println( hello this . name 欢迎使用图书馆管理系统!);

  System.out.println(1。找书!”);

  System.out.println(2。“借书!”);

  System.out.println(3。“把书还回来!”);

  System.out.println(0。“退出系统!”);

  System.out.println(请输入您的操作:);

  Scanner scanner=新扫描仪(system . in);

  int choice=scanner . nextint();

  回归选择;

  //因为这是一个菜单,所以要先把这个输入的值传递出去,才能使用菜单。下面就是把这些都整合起来,

  先准备书。

  BookList BookList=new BookList();//准备书结的时候登录就行了,

  写一个判断你是普通用户还是管理员的方法。

  公共静态用户登录(){

  System.out.println(请输入您的姓名:);

  Scanner scanner=新扫描仪(system . in);

  string name=scanner . nextline();

  System.out.println(请输入身份:1:-"Administrator.0:-"普通用户);

  int choice=scanner . nextint();

  if (choice==1) {

  返回新的管理员用户(名称);

  }否则{

  返回新的normal user(name);

  }

  }注意这段代码,返回类型是User,因为无论if中的返回是AdminUser还是NormalUser,都可以将User作为父类接收,这个过程经历了一个向上的转化。

  然后参考main方法中的login()方法,可以选择login。

  //log in——“用户”这个引用指的是哪个对象。见前面的if。

  user user=log in();选择你是哪个用户后,打印相应的功能菜单。

  但是,请注意,菜单刚刚被写入相应的子类中。

  如果现在想在父类中访问,是无法访问的,所以也要参考父类中的菜单。

  公共抽象类用户{

  //写保护将在以后继承。

  受保护的字符串名称;//用户名

  //提供一个构造函数来初始化当前对象的name属性。

  公共用户(字符串名称){

  this.name=name

  }

  公共抽象int menu();

  }看代码,就把父类写成抽象类,然后在抽象类里,调出抽象方法的菜单,

  可以通过主类中的父类访问菜单,实现动态绑定。

  公共静态void main(String[] args) {

  //开始合并

  BookList BookList=new BookList();//准备书籍

  //log in——“用户”这个引用指的是哪个对象。见前面的if。

  user user=log in();

  user . menu();//动态绑定

  //如果你想在子类中访问菜单,你必须把父类写成一个抽象类,

  //然后子类重写父类的方法来访问菜单。

  }

  }然后代码就可以在此时运行了

  

4.开始实现对书所有具体的操作功能

  

4.1先实现可以调用具体操作的功能方法

  首先在User中写一个方法。这种方法的作用是

  通过一个用户,访问用户对应的方法函数的数组下标,然后调用work方法实现函数。

  public void do operation(int choice,BookList bookList) {

  this . I operations[选择]。作品(书单);

  }然后在mian中,通过选择用户来参考这个方法。

  公共静态void main(String[] args) {

  //开始合并

  BookList BookList=new BookList();//准备书籍

  //log in——“用户”这个引用指的是哪个对象。见前面的if。

  user user=log in();

  int choice=user . menu();//动态绑定

  user.doOperation(选择,书单);

  }详情见此图。

  我们来看看详细的分析。

  

4.2 测试一下

  现在已经集成了,只实现了具体的操作功能,所以先试着运行代码。

  代码运行成功,但是它只以一个函数结束。

  所以我们可以添加一个循环来使用多个函数。

  公共静态void main(String[] args) {

  //开始合并

  BookList BookList=new BookList();//准备书籍

  //log in——“用户”这个引用指的是哪个对象。见前面的if。

  user user=log in();

  while(true){

  int choice=user . menu();//动态绑定

  user.doOperation(选择,书单);

  }

  }

4.3 实现单独具体的操作的功能

  增加了一本新书。我们需要考虑输入这些

  不要认为isBorrowed,因为默认状态不是lent。

  输入这些属性。

  Scanner scanner=新扫描仪(system . in);

  System.out.println(请输入书名:);

  string name=scanner . nextline();

  System.out.println(请输入书的作者:);

  string author=scanner . nextline();

  System.out.println(请输入书价:);

  int price=scanner . nextint();

  System.out.println(请输入图书类型:);

  string type=scanner . nextline();然后将这些属性存储在新书中。

  Book book=新书(名称、作者、价格、类型);获取当前下标,将其赋给currentSize,并将之前输入的图书放入下标为currentSize的数组中。

  然后在currentSize上加1。

  int currentSize=booklist . getusedsize();

  bookList.setBooks(currentSize,book);

  booklist . getusedsize(currentSize 1);跑,试一试。

  公共类AddOperation实现IOperation {

  @覆盖

  公共无效工作(书单书单){

  新书!);

  Scanner scanner=新扫描仪(system . in);

  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=新书(名称、作者、价格、类型);

  int currentSize=booklist . getusedsize();

  bookList.setBooks(currentSize,book);

  booklist . getusedsize(currentSize 1);

  System.out.println(成功添加图书!);

  }

  }先输入你想借的书的名字。

  Scanner scanner=新扫描仪(system . in);

  System.out.println(请输入借阅图书的名字:);

  字符串名称=扫描仪。next line();通过为循环遍历一遍,然后将遍历的每一本书赋给变量书,

  再通过等于,来判断书和输入的书的名字是否相同,

  如果相同就通过设置借款修改此时借阅状态,显示借阅成功

  如果不同就显示没有这本书

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  书。设置借入(真);

  System.out.println(借阅成功!);

  返回;

  }

  }

  System.out.println(没有这本书!);运行一下,试试看

  公共类借贷操作实现I操作{

  @覆盖

  公共无效工作(书单书单){

  System.out.println(借阅图书!);

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入借阅图书的名字:);

  字符串名称=扫描仪。next line();

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  书。设置借入(真);

  System.out.println(借阅成功!);

  返回;

  }

  }

  System.out.println(没有这本书!);

  }

  }(3)删除图书解除操作类

  输入删除图书的名字

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入删除图书的名字:);

  字符串名称=扫描仪。next line();找到图书,然后删除

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  for(int j=I;j currentSizej ) {

  书单。get book(j);

  }

  书单。getusedsize(currentSize-1);//不要忘记更新图书种类

  书单。getusedsize(currentSize-1);

  System.out.println(删除成功!);

  返回;

  }

  }

  System.out.println(没有找到要删除的图书!);运行程序,试试看

  公共类解除操作实现I操作{

  @覆盖

  公共无效工作(书单书单){

  System.out.println(删除图书!);

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入删除图书的名字:);

  字符串名称=扫描仪。next line();

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  for(int j=I;j currentSizej ) {

  书单。get book(j);

  }

  书单。getusedsize(currentSize-1);//不要忘记更新图书种类

  书单。getusedsize(currentSize-1);

  System.out.println(删除成功!);

  返回;

  }

  }

  System.out.println(没有找到要删除的图书!);

  }

  }将当前有几本书记录下来

  int currentSize=图书列表。getusedsize();然后为循环全部遍历一遍就可以了,直接看代码吧

  公共类显示操作实现I操作{

  @覆盖

  公共无效工作(书单书单){

  System.out.println(显示图书!);

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  系统。出去。println(书目。get book(I));

  }

  }

  }运行结果就是这样

  直接调用状态码出口来退出系统

  公共类出口操作实现I操作{

  @覆盖

  公共无效工作(书单书单){

  System.out.println(退出系统!);

  系统。退出(0);

  }

  }

  要查找图书,肯定是先要输入你需要查找书的名字

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入图书的名字:);

  字符串名称=扫描仪。next line();通过为循环遍历一遍,然后将遍历的每一本书赋给变量书,

  再通过等于,来判断书和输入的书的名字是否相同,

  如果相同就打印,并显示找到了,如果不相同,就直接显示没有找到,

  但这里有一个问题在前面给每一本书默认都是假的,现在打印还是这样,所以要修改一下

  在书类中,修改toString,给借阅状态一个三目运算符,来判断是否借出了

  @覆盖

  公共字符串toString() {

  返回图书{

  name= name \

  ,author= author \

  ,价格=价格

  ,type= type \

  ((isBorrowed==true)? 已经借出: 未借出)

  };

  }运行一下,试试

  查找图书查找操作类的全部代码就是

  公共类查找操作实现I操作{

  @覆盖

  公共无效工作(书单书单){

  System.out.println(查找图书!);

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入图书的名字:);

  字符串名称=扫描仪。next line();

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  System.out.println(这本书找到了!);

  系统。出去。println(书);

  返回;

  }

  }

  System.out.println(这本书没有找到!);

  }

  }先输入要归还图书的名字

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入归还图书的名字:);

  字符串名称=扫描仪。next line();和前面借阅基本一样,修改一下设置借款的状态就可以了

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  书。设置借入(假);

  System.out.println(归还成功!);

  返回;

  }

  }运行代码,试试看

  公共类return操作实现I操作{

  @覆盖

  公共无效工作(书单书单){

  System.out.println(归还图书!);

  扫描仪扫描仪=新扫描仪(系统。在);

  System.out.println(请输入归还图书的名字:);

  字符串名称=扫描仪。next line();

  int currentSize=图书列表。getusedsize();

  for(int I=0;I current zei){

  书书=书单。获取图书(一);

  if(book.getName().等于(姓名)){

  书。设置借入(假);

  System.out.println(归还成功!);

  返回;

  }

  }

  }

  }推荐学习: 《java视频教程》 以上就是实例详解爪哇实现简易版的图书管理系统的详细内容,更多请关注我们其它相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: