当前位置:网站首页>图书管理系统
图书管理系统
2022-06-27 13:45:00 【小魏爱炸毛】
import book.BookList;
2 import user.AdminUser;
3 import user.NormalUser;
4 import user.User;
5
6 import java.util.Scanner;
7
8 /**
9 * Created with IntelliJ IDEA.
10 * Description:
11 * User: WHY
12 * Date: 2022-06-24
13 * Time: 19:40
14 */
15 public class Main {
16 public static User login(){
17 System.out.println("请输入您的姓名");
18 Scanner scanner=new Scanner(System.in);
19 String name= scanner.nextLine();
20
21 System.out.println("请输入您的身份:1:-》管理员,0:—》普通用户");
22 int choice=scanner.nextInt();
23 if(choice==1){
24 return new AdminUser(name);
25 }
26 else{
27 return new NormalUser(name);
28 }
29 }
30 public static void main(String[] args) {
31 //开始整合
32 BookList booklist=new BookList();//准备图书
33
34 //登录
35 User user=login();//相当于向上转型
36 user.menu();
37 int choice = user.menu();//动态绑定
38 user.doOperation(choice,booklist);
39 }
40 }
+74 2022.6.24/2022.6.24/src/book/Book.java 0 → 100644
1 package book;
2
3 /**
4 * Created with IntelliJ IDEA.
5 * Description:
6 * User: WHY
7 * Date: 2022-06-24
8 * Time: 18:00
9 */
10 public class Book {
11 private String name;
12 private String author;
13 private int price;
14 private String type;
15 private boolean isBorrowed;
16
17 public Book(String name, String author, int price, String type) {
18 this.name = name;
19 this.author = author;
20 this.price = price;
21 this.type = type;
22 }
23
24 public String getName() {
25 return name;
26 }
27
28 public void setName(String name) {
29 this.name = name;
30 }
31
32 public String getAuthor() {
33 return author;
34 }
35
36 public void setAuthor(String author) {
37 this.author = author;
38 }
39
40 public int getPrice() {
41 return price;
42 }
43
44 public void setPrice(int price) {
45 this.price = price;
46 }
47
48 public String getType() {
49 return type;
50 }
51
52 public void setType(String type) {
53 this.type = type;
54 }
55
56 public boolean isBorrowed() {
57 return isBorrowed;
58 }
59
60 public void setBorrowed(boolean borrowed) {
61 isBorrowed = borrowed;
62 }
63
64 @Override
65 public String toString() {
66 return "Book{" +
67 "name='" + name + '\'' +
68 ", author='" + author + '\'' +
69 ", price=" + price +
70 ", type='" + type + '\'' +
71 ", isBorrowed=" + isBorrowed +
72 '}';
73 }
74 }
+49 2022.6.24/2022.6.24/src/book/BookList.java 0 → 100644
1 package book;
2
3 /**
4 * Created with IntelliJ IDEA.
5 * Description:
6 * User: WHY
7 * Date: 2022-06-24
8 * Time: 18:01
9 */
10 public class BookList {
11
12 private Book[] books=new Book[20];
13 private int usedSize;//实时记录当前books这个数组当中有多少本书
14
15
16 public BookList(){
17 books[0]=new Book("白夜行","东野圭吾",60,"悬疑推理");
18 books[1]=new Book("嫌疑人X的献身","东野圭吾",80,"悬疑推理");
19 books[2]=new Book("彷徨之刃","东野圭吾",120,"悬疑推理");
20 usedSize=3;
21
22 }
23 //根据书的位置,拿到这本书
24 public Book getBook(int pos){
25 return books[pos];
26 }
27 /*
28 * 新增书,POS是要放的位置
29 * book是你要放的书
30 * */
31 public void setBooks( int pos , Book book){
32 books[pos]=book;
33 }
34 /*
35 *
36 * 实时获取当前的书的个数
37 *
38 * */
39 public int getUsedSize(){
40 return usedSize;
41 }
42 /*
43 * 实时修改当前书架上的书的个数
44 *
45 * */
46 public void setUsedSize(int size){
47 usedSize=size;
48 }
49 }
+17 2022.6.24/2022.6.24/src/operation/AddOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 18:54
11 */
12 public class AddOperation implements IOperation {
13 @Override
14 public void work(BookList booklist) {
15 System.out.println("新增图书");
16 }
17 }
+17 2022.6.24/2022.6.24/src/operation/BorrowOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 19:01
11 */
12 public class BorrowOperation implements IOperation{
13 @Override
14 public void work(BookList booklist) {
15 System.out.println("借阅图书");
16 }
17 }
+17 2022.6.24/2022.6.24/src/operation/DelOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 18:57
11 */
12 public class DelOperation implements IOperation{
13 @Override
14 public void work(BookList booklist) {
15 System.out.println("删除图书");
16 }
17 }
+17 2022.6.24/2022.6.24/src/operation/ExitOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 19:00
11 */
12 public class ExitOperation implements IOperation{
13 @Override
14 public void work(BookList booklist) {
15 System.out.println("退出系统");
16 }
17 }
+17 2022.6.24/2022.6.24/src/operation/FindOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 18:56
11 */
12 public class FindOperation implements IOperation {
13 @Override
14 public void work(BookList booklist) {
15 System.out.println("查找图书");
16 }
17 }
+15 2022.6.24/2022.6.24/src/operation/IOperation.java 0 → 100644
1 package operation;
2
3 import book.Book;
4 import book.BookList;
5
6 /**
7 * Created with IntelliJ IDEA.
8 * Description:
9 * User: WHY
10 * Date: 2022-06-24
11 * Time: 18:48
12 */
13 public interface IOperation {
14 void work(BookList booklist);
15 }
+19 2022.6.24/2022.6.24/src/operation/ReturnOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 19:02
11 */
12 public class ReturnOperation implements IOperation{
13 ;
14
15 @Override
16 public void work(BookList booklist) {
17 System.out.println("归还图书");
18 }
19 }
+17 2022.6.24/2022.6.24/src/operation/ShowOperation.java 0 → 100644
1 package operation;
2
3 import book.BookList;
4
5 /**
6 * Created with IntelliJ IDEA.
7 * Description:
8 * User: WHY
9 * Date: 2022-06-24
10 * Time: 18:59
11 */
12 public class ShowOperation implements IOperation{
13 @Override
14 public void work(BookList booklist) {
15 System.out.println("显示图书");
16 }
17 }
+43 2022.6.24/2022.6.24/src/user/AdminUser.java 0 → 100644
1 package user;
2
3 import operation.*;
4
5 import java.util.Scanner;
6
7 /**
8 * Created with IntelliJ IDEA.
9 * Description:
10 * User: WHY
11 * Date: 2022-06-24
12 * Time: 19:17
13 */
14 public class AdminUser extends User{
15 public AdminUser(String name) {
16 super(name);
17 this.iOperations = new IOperation[]{
18 new ExitOperation(),
19 new FindOperation(),
20 new AddOperation(),
21 new DelOperation(),
22 new ShowOperation(),
23
24
25
26 };
27 }
28 public int menu(){
29 System.out.println("hello"+this.name+"欢迎您来到图书小练习!");
30 System.out.println("1.查找图书!");
31 System.out.println("2.新增图书!");
32 System.out.println("3.删除图书!");
33 System.out.println("4.显示图书!");
34 System.out.println("0.退出系统!");
35 System.out.println("请输入您的操作");
36 Scanner scanner=new Scanner(System.in);
37 int choice = scanner.nextInt();
38 return choice;
39
40
41 }
42
43 }
+40 2022.6.24/2022.6.24/src/user/NormalUser.java 0 → 100644
1 package user;
2
3 import operation.*;
4
5 import java.util.Scanner;
6
7 /**
8 * Created with IntelliJ IDEA.
9 * Description:
10 * User: WHY
11 * Date: 2022-06-24
12 * Time: 19:16
13 */
14 public class NormalUser extends User {
15 public NormalUser(String name) {
16 super(name);
17 this.iOperations = new IOperation[]{
18 new ExitOperation(),
19 new FindOperation(),
20 new BorrowOperation(),
21 new ReturnOperation(),
22
23
24
25 };
26 }
27 public int menu(){
28 System.out.println("hello"+this.name+"欢迎您来到图书小练习!");
29 System.out.println("1.查找图书!");
30 System.out.println("2.借阅图书!");
31 System.out.println("3.归还图书!");
32 System.out.println("0.退出系统!");
33 System.out.println("请输入您的操作");
34 Scanner scanner=new Scanner(System.in);
35 int choice = scanner.nextInt();
36 return choice;
37
38
39 }
40 }
+27 2022.6.24/2022.6.24/src/user/User.java 0 → 100644
1 package user;
2
3 import book.BookList;
4 import operation.IOperation;
5
6 /**
7 * Created with IntelliJ IDEA.
8 * Description:
9 * User: WHY
10 * Date: 2022-06-24
11 * Time: 19:06
12 */
13 abstract public class User {
14 protected String name;//用户名
15
16 public User(String name) {
17 this.name = name;
18 }
19 public abstract int menu();
20 protected IOperation[] iOperations ;//
21 public void doOperation(int choice, BookList booklist){
22 this.iOperations[choice].work(booklist);
23
}
24
25
26
27 }
package operation;
2 2
3 import book.Book;
3 4 import book.BookList;
4 5
6 import java.util.Scanner;
7
5 8 /**
6 9 * Created with IntelliJ IDEA.
7 10 * Description:
@@ -13,5 +16,30 @@ public class DelOperation implements IOperation{
13 16 @Override
14 17 public void work(BookList booklist) {
15 18 System.out.println("删除图书");
19 Scanner scanner=new Scanner(System.in);
20 System.out.println("请输入删除图书的名字:");
21 String name= scanner.nextLine();
22 int currentSize= booklist.getUsedSize();
23 int index=-1;
24 int i =0;
25 for (; i <currentSize ; i++) {
26 Book book=booklist.getBook(i);
27 if(book.getName().equals(name)){
28 index=i;
29 break;
30 }
31 }
32
33 if(i>=currentSize){
34 System.out.println("没有找到这本书");
35 return;
36 }
37 for(int j=index;j<currentSize ;j++){
38 Book book=booklist.getBook(i+1);
39 booklist.setBooks(i,book);
40 }
41 booklist.setBooks( currentSize-1,null);//删除了书籍,进行了移动,然后将最后的置为空,不会有内存泄漏
42 booklist.setUsedSize(currentSize-1);
43 System.out.println("删除成功");
16 44 }
17 45
}以上是图书管理系统的实现,具体的思路我们下期再说奥
边栏推荐
- POSIX AIO -- glibc 版本异步 IO 简介
- Step by step expansion of variable parameters in class templates
- [problem solving] which nodes are run in tensorflow?
- Daily 3 questions (1): find the nearest point with the same X or Y coordinate
- 每日刷題記錄 (六)
- 新华三的千亿企业梦,还得靠吃ICT老本来实现?
- What else can PLM do?
- 清华&商汤&上海AI&CUHK提出Siamese Image Modeling,兼具linear probing和密集预测性能!...
- buuctf misc 百里挑一
- 【OS命令注入】常见OS命令执行函数以及OS命令注入利用实例以及靶场实验—基于DVWA靶场
猜你喜欢

《预训练周刊》第51期:重构预训练、零样本自动微调、一键调用OPT

清华&商汤&上海AI&CUHK提出Siamese Image Modeling,兼具linear probing和密集预测性能!...

Rereading the classic: the craft of research (1)

类模板中可变参的逐步展开

Pre training weekly issue 51: reconstruction pre training, zero sample automatic fine tuning, one click call opt

防火墙基础之华为华三防火墙web页面登录

EventLoop learning

PLM还能怎么用?

高效率取幂运算

crane:字典项与关联数据处理的新思路
随机推荐
Infiltration learning diary day20
buuctf misc 百里挑一
How ASP connects Excel
ensp云朵配置
Quick news: Huawei launched the Hongmeng developer competition; Tencent conference released the "Wanshi Ruyi" plan
How to set the compatibility mode of 360 speed browser
[problem solving] which nodes are run in tensorflow?
Yyds dry goods inventory solution sword finger offer: cut rope (advanced version)
Summary and Thinking on interface test automation
Openssf security plan: SBOM will drive software supply chain security
Why must Oracle cloud customers self test after the release of Oracle cloud quarterly update?
一次性彻底解决 Web 工程中文乱码问题
Implementation of recruitment website based on SSM
[day 27] given an integer n, print out the full permutation from 1 to n | Full Permutation template
MySQL 索引及其分类
How to solve the problem of missing language bar in win10 system
PLM还能怎么用?
Quickly set up a website to visit foreign countries, set up SS and start BBR to quickly surf the Internet
Explore tidb lightning source code to solve the found bugs
Half find (half find)