带你编写图书管理系统(java)

很多同学在学校学习完Java后,就要开始做一个管理系统来通过课设考核,今天我就来交大家来实现一个图书管理系统。

一, 涉及的知识点

1.类和对象;(类是对象的实例化引用)
2.接口;
3.封装和继承;
4.顺序链表存储数据;

二,分析图书管理系统

 图书管理系统就是对图书的增删查改,那么由谁来控制呢?我们一般的系统都是分为管理员和普通用户,因此我们是不是可以分析出该系统就是用户通过一系列的操作来控制图书。 那么该系统是不是只需要实现用户,操作活动,图书三个结构来实现呢?

三,定义图书,操作,用户类

1.图书类book
1. 我们先在idea中创建一个文件夹命名为图书管理系统,打开文件夹,点击src 新建一个Package ,并命名为book
2. 点击book包,新建一个javaclass文件,命名为book;在点击book包新建一个javaclass文件,命名为BookList
3.点击book Java文件,图书有书名name,作者acthor,价格price,类型type,是否借阅tatues5个属性;因此定义这些属性,然后构造方法,get,set,其属性,然后添加一个 tostring方法;源代码如下
book

package book;public class Book {private   String name;private String acthor;private  int price;private  String type;private  boolean statues;public Book(String name, String acthor, int price, String type) {this.name = name;this.acthor = acthor;this.price = price;this.type = type;}public String getName() {return name;}public String getActhor() {return acthor;}public int getPrice() {return price;}public String getType() {return type;}public boolean isStatues() {return statues;}public void setName(String name) {this.name = name;}public void setActhor(String acthor) {this.acthor = acthor;}public void setPrice(int price) {this.price = price;}public void setType(String type) {this.type = type;}public void setStatues(boolean statues) {this.statues = statues;}@Overridepublic String toString() {return "Book{" +"name='" + name + '\'' +", acthor='" + acthor + '\'' +", price=" + price +", type='" + type + '\'' +", statues=" + ((statues==true)?" 借出 ":" 未借出 ")+'}';}
}

2.图书链表BookList类;
1.在book包下的BookList类下定义一个单链表,首先我们知道单链表的底层是数组,所以我们定义一个数组Book[ ] book和数组的使用长度int usedsize;然后构造方法,get ,set其属性。
2.我们开始首先在单链表中先存储四本图书,中国的四大名著,因为我们已经使用了数组的4个长度,所以此时的this.usedsize=4 ;
public BookList() {
this.books = new Book[100];
books[0]=new Book(“三国演义”,“罗贯中”,120,“小说”);
books[1]=new Book(“西游记”,“吴承恩”,110,“小说”);
books[2]=new Book(“红楼梦”,“曹雪芹”,150,“小说”);
books[3]=new Book(“水浒传”,“斯奈庵”,152,“小说”);
this.usedsize=4;
}
源代码如下;
BookList

package book;public class BookList {private int usedsize;private Book[] books;public BookList() {this.books = new  Book[100];books[0]=new Book("三国演义","罗贯中",120,"小说");books[1]=new Book("西游记","吴承恩",110,"小说");books[2]=new Book("红楼梦","曹雪芹",150,"小说");books[3]=new Book("水浒传","斯奈庵",152,"小说");this.usedsize=4;}//下面可以写一些功能;public void  setBooks(int pos,Book book){this.books[pos]=book;}public Book getBook(int pos){return this.books[pos];}public int getUsedsize() {return usedsize;}public Book[] getBooks() {return books;}public void setUsedsize(int usedsize) {this.usedsize = usedsize;}
}

3.操作类
1.点击src,创建一个新的包Operation.然后在这个包下新建7个类,分别是Addbook(添加图书),DelBook(删除图书),DisplayBook(显示所有图书),BorrowBook(借书),ReturnBook(归还图书),FoundBook(查找图书),ExitBook(退出系统),最后添加一个接口IBook用于调用功能。
源代码如下:

Addbook(添加图书)

package Operation;import book.Book;
import book.BookList;import java.util.Scanner;public class AddBook implements IBook{@Overridepublic void work(BookList bookList) {Scanner sc = new Scanner(System.in);System.out.print("请输入图书名字:");String name = sc.nextLine();System.out.print("请输入图书作者:");String acthor = sc.nextLine();System.out.print("请输入图书价格:");int  price = sc.nextInt();System.out.print("请输入图书类别:");String type = sc.next();Book book = new Book(name,acthor,price,type);int len = bookList.getUsedsize();bookList.setBooks(len,book);bookList.setUsedsize(len+1);System.out.println("添加成功!");}
}

DelBook(删除图书)

package Operation;import book.Book;
import book.BookList;import java.util.Scanner;public class DelBook implements IBook {@Overridepublic void work(BookList bookList) {Scanner scanner = new Scanner(System.in);System.out.print("输入需要删除的图书书名:");String name = scanner.nextLine();int i = 0;for (; i < bookList.getUsedsize(); i++) {Book book = bookList.getBook(i);if (book.getName().equals(name)) {break;}}if (i >= bookList.getUsedsize()) {System.out.println("没有要删除的书!");return;}int pos = i;for (int j = pos; j < bookList.getUsedsize() - 1; j++) {Book book = bookList.getBook(j + 1);bookList.setBooks(j, book);}bookList.setUsedsize(bookList.getUsedsize() - 1);System.out.println("删除成功!");}}

DisplayBook(显示所有图书)

package Operation;import book.Book;
import book.BookList;import java.util.Scanner;public class DisplayBook implements IBook {@Overridepublic void work(BookList bookList) {for (int i = 0; i < bookList.getUsedsize(); i++) {Book book = bookList.getBook(i);System.out.println(book);}System.out.println("以上是全部图书");}
}

BorrowBook(借书)

package Operation;import book.Book;
import book.BookList;import java.util.Scanner;public class BorrowBook implements IBook {@Overridepublic void work(BookList bookList) {Scanner scanner = new Scanner(System.in);System.out.print("输入需要查找图书的书名:");String name = scanner.nextLine();for (int i =0;i<bookList.getUsedsize();i++){Book book = bookList.getBook(i);if(book.getName().equals(name)){if(book.isStatues()==true){System.out.println("该图书已经借出,无法借阅!");return;}else{book.setStatues(true);return;}}}System.out.println("没有这本书,无法借阅");}
}

ReturnBook(归还图书)

package Operation;import book.Book;
import book.BookList;import java.util.Scanner;public class ReturnBook implements  IBook {@Overridepublic void work(BookList bookList) {Scanner scanner = new Scanner(System.in);System.out.print("输入需要归还的图书的书名:");String name = scanner.nextLine();for (int i =0;i<bookList.getUsedsize();i++){Book book = bookList.getBook(i);if(book.getName().equals(name)){if(book.isStatues()==false){System.out.println("该图书没有被借出,请重新输入!");return;}else{book.setStatues(false);System.out.println("归还成功!");return;}}}System.out.println("没有这本书,无法归还");}
}

FoundBook(查找图书)

package Operation;import book.Book;
import book.BookList;import java.util.Scanner;public class FoundBook implements IBook{@Overridepublic void work(BookList bookList) {Scanner scanner = new Scanner(System.in);System.out.print("输入需要查找图书的书名:");String name = scanner.nextLine();for (int i =0;i<bookList.getUsedsize();i++){Book book = bookList.getBook(i);if(book.getName().equals(name)){System.out.println("查找成功,有这本书!");System.out.println(book);return;}}System.out.println("没有这本书");}
}

ExitBook(退出系统)

package Operation;import book.BookList;public class ExitBook implements IBook{@Overridepublic void work(BookList bookList) {System.exit(-1);}
}

IBook接口

package Operation;import book.BookList;public interface IBook {void work(BookList bookList);
}

4.用户类的实现
1.用户分为管理员和普通用户,但是他们都是用户,因此点击src创建一个包命名为user,在这个包中创建三个类User(用户),AdminUser(管理员),NormalUser(普通用户)。
2.在类User中定义其属性,姓名和一个存储操作的一个数组IBook[ ],然后构造方法。在AdminUser(管理员)NormalUser(普通用户)类中我们不需要重新定义,只需要继承父类User中的构造方法和属性;然后分别在AdminUser(管理员),NormalUser(普通用户)创建一个数组operation,在里面加入你对应的一些操作,通过键盘输入的数字,访问数组下标,选择方法并调用函数。
(管理员)菜单

 System.out.println("==========================");System.out.println("欢迎"+name+"使用图书管理系统");System.out.println("      1.查找图书     ");System.out.println("      2.新增图书     ");System.out.println("      3.删除图书     ");System.out.println("      4.显示所有图书  ");System.out.println("      5.退出系统     ");System.out.println("===========================");System.out.println("请输入你的选择:");

(普通用户) 菜单

 System.out.println("==========================");System.out.println("欢迎"+name+"使用图书管理系统");System.out.println("      1.查找图书     ");System.out.println("      2.新增图书     ");System.out.println("      3.删除图书     ");System.out.println("      4.显示所有图书  ");System.out.println("      5.退出系统     ");System.out.println("===========================");System.out.println("请输入你的选择:");

源代码:
User

package user;import Operation.IBook;
import book.Book;
import book.BookList;abstract public class User {protected String name;protected IBook[] operation;public User(String name) {this.name = name;}abstract public int  menu();public void doOperation(int choice, BookList bookList){operation[choice-1].work(bookList);}
}

AdminUser

package user;import Operation.*;import java.util.Scanner;public class AdminUser extends User {public AdminUser(String name) {super(name);this.operation = new IBook[]{new FoundBook(),new AddBook(),new DelBook(),new DisplayBook(),new ExitBook()};}@Overridepublic int menu() {System.out.println("==========================");System.out.println("欢迎"+name+"使用图书管理系统");System.out.println("      1.查找图书     ");System.out.println("      2.新增图书     ");System.out.println("      3.删除图书     ");System.out.println("      4.显示所有图书  ");System.out.println("      5.退出系统     ");System.out.println("===========================");System.out.println("请输入你的选择:");Scanner scanner = new Scanner(System.in);int choice = scanner.nextInt();return choice;}}

NormalUser

package user;import Operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);this.operation = new IBook[]{new FoundBook(),new BorrowBook(),new ReturnBook(),new ExitBook()};}@Overridepublic int menu() {System.out.println("=================+++++++++");System.out.println("欢迎"+name+"使用图书管理系统");System.out.println("      1.查找图书     ");System.out.println("      2.借阅图书     ");System.out.println("      3.归还图书     ");System.out.println("      4.退出系统     ");System.out.println("=================++++++++++");System.out.println("请输入你的选择:");Scanner scanner=new Scanner(System.in);int choice = scanner.nextInt();return choice;}}

5.Main
我们通过分析和编程,终于把所有的功能实现了,现在我们要把我们的程序运行起来,就要通过Main函数进入;
源代码:

import book.BookList;
import user.User;
import user.AdminUser;
import user.NormalUser;
import java.util.Scanner;public class Main {public static void main(String[] args) {BookList bookList = new BookList();User user = login();while (true){int choice = user.menu();user.doOperation(choice,bookList);}}public static User login(){Scanner sc=new Scanner(System.in);System.out.println("请输入你的姓名:");String name =sc.nextLine();System.out.println("请输入身份 1--》管理员登录   2--》普通用户登录");int  choice = sc.nextInt();if (choice == 1){return new AdminUser(name);}else{return new NormalUser(name); //通过判断验证创建一个登录菜单;向上转型;}}
}

运行截图:
管理员登录:

普通用户登录:


全部源代码大家通过Githu链接下载学习:https://github.com/41809310102/study/tree/master/javashanji/src

图书管理系统源代码<Java>(带文字讲解)(javase)相关推荐

  1. java简单图书管理系统的代码,java编写的图书管理系统源代码

    <java编写的图书管理系统源代码>由会员分享,可在线阅读,更多相关<java编写的图书管理系统源代码(6页珍藏版)>请在人人文库网上搜索. 1.用户登陆数据库代码:impor ...

  2. PHP在线考试平台管理系统源码带文字搭建教程

    PHP在线考试平台管理系统源码带文字搭建教程和操作手册 技术架构 PHP7.2 + Thinkphp6 + React + UmiJs + nginx + mysql5.7 cnetos7以上 + 宝 ...

  3. c语言注册登录系统代码6,C语言程序设计(图书管理系统)源代码.doc(6)

    h"#include#include/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...

  4. Python基于mysql+Django框架图书管理系统源代码(含mysql文件)

    项目前台和后台界面模板都是自己编写,前台采用Bootstrap框架UI,后台EasyUI框架UI,没有采用Django自动生成的那个后台管理,因为那个后台实在是太丑了,丑得惨不忍睹!整个项目主要负责图 ...

  5. java图书管理系统源代码_高校社团管理系统(ssm+mysql)

    高校社团管理系统(ssm+mysql)https://www.zhihu.com/video/1225527405491630080 本文以java为开发技术,实现了一个高校社团管理系统.高校社团管理 ...

  6. 图书管理系统(Java)

    目录 系统说明 功能键说明 刷新信息 添加图书 删除选中的图书 编辑图书信息 打开选中图书 显示统计图 说明 上学时积累了上千本电子图书,随着电子书越来越多,图书管理就越来越难了.后来选修了Java, ...

  7. 图书管理系统(Java语言)

    图书管理系统 程序介绍 实现思路和内容概括 代码实现 顺序表--bookList(书架)和book(书) book类: bookList类 操作--各种的操作类 IOperation接口 AddOpe ...

  8. 北大青鸟集团java书本_APTECH北大青鸟第二学期毕业设计图书管理系统(JAVA版).ppt...

    APTECH北大青鸟第二学期毕业设计图书管理系统(JAVA版) 项目背景 我们的客户经营着一家图书馆,从最开始的几百本书发展到现在已有上万本图书,会员也从最初的几十人发展到几千人. 开始时,他们采用的 ...

  9. c语言图书管理系统(c语言图书管理系统源代码)

    如何使用C语言编写图书管理系统? 图书管理系统是运行于Windows系统下的应用软件,主要用于对图书馆中的图书信息进行增.删.改.查等操作,并且还可对使用该系统的用户进行登录名和密码的管理等.系统给用 ...

  10. Java图书管理系统,java课程实习

    前序 运行环境:Eclipse,SQL Server 完整zip下载链接:http://download.csdn.net/download/android_tools/10186799 如果没有C币 ...

最新文章

  1. 语言解决猜神童年龄的问题_一个程序设计题目猜年龄(不限程序语言)
  2. golang异步协程调度原理
  3. CSS中的一些常见标签
  4. 【Windows8系统控制面板和电脑设置在哪个位置】
  5. Ueditor 改造, 为每个用户单独创建上传附件目录,用户只能查看自己上传的附件文件
  6. matlab基于ssd的角点匹配_基于关键点的目标检测
  7. php7如何安装swoole,PHP7如何安装Swoole?
  8. 3.6.1.非阻塞IO
  9. WebLogic常见问题
  10. C++中数组、链表list、容器map/vector的区别
  11. 【目录】吴恩达深度学习
  12. 如何通过钉钉群接收报警通知
  13. 图片验证码的测试用例梳理
  14. WPS for Linux(ubuntu)字体配置(字体缺失解决办法)
  15. 如何将live stream发布到Youtube
  16. AR客户对账单(上月欠款)
  17. 重置计算机网络配置后上不了网,win10系统网络重置后不能连接网络如何解决
  18. Grid ++ MIME 类型配置 载入报表数据,检查此URL及其数据,错误提示 网络服务器响应不成功
  19. “墨子”升空 首席科学家谈中国量子通信技术
  20. 关闭所有杀毒软件快捷方法

热门文章

  1. NI VISION视觉安装
  2. 艾索特DSP电脑调音软件
  3. P1160 队列安排 (模拟链表)
  4. 计算机软件在哪里建文本文档,如何新建文档
  5. maven配置仓库及部署jar包
  6. WPS Excel VB宏简单编程
  7. C语言-数组练习题(附答案)
  8. Fiddler图标解释
  9. Jmeter压力测试实例
  10. txt转excel的工具