Java-实现图书管理系统

àì夳堔傛蜴生んèń 2023-10-03 19:48 189阅读 0赞

目录

运行部分的头文件

运行部分(Main)

关于书的类

每本书的类Book

书集合的类Booktest

关于用户的类

父类User

管理员子类ManagerUser

一般用户子类NormalUser

方法的类

总接口

查找图书

新增图书

删除图书

显示图书

借阅图书

归还图书

退出程序


java实现图书管理系统,要求两种运行方式1.管理员 2.使用者
管理员功能:查找图书,新增图书,删除图书,显示图书,退出系统
使用者功能:查找图书,借阅图书,归还图书,退出系统

运行部分的头文件

  1. import java.util.Scanner;

运行部分(Main)

  1. public class test {
  2. public static User login(){//这一切的实现前提都是因为继承的向上转型
  3. System.out.println("请选择模式"+"0.管理员模式"+"1.用户模式");
  4. Scanner sc = new Scanner(System.in);
  5. int choose = sc.nextInt();
  6. sc.nextLine();
  7. System.out.println("请输入姓名:>");
  8. String name = sc.nextLine();//是nextLine啊
  9. if(choose==0){
  10. return new ManagerUser(name);
  11. }
  12. else{
  13. return new NormalUser(name);
  14. }
  15. }
  16. public static void main(String[] args) {
  17. User user = login();//别忘了一般方法的定义
  18. while(true){
  19. user.menu();//在外面没办法调用子类代码块 但是可以通过被重写的方法调用 所以接口数组的创建也直接放在里面
  20. }
  21. }
  22. }

关于书的类

每本书的类Book

  1. class Book{
  2. private String name;
  3. private String author;
  4. private String type;
  5. private int price;
  6. private boolean state;
  7. public String getName() {
  8. return name;
  9. }
  10. public void setName(String name) {
  11. this.name = name;
  12. }
  13. public String getAuthor() {
  14. return author;
  15. }
  16. public void setAuthor(String author) {
  17. this.author = author;
  18. }
  19. public String getType() {
  20. return type;
  21. }
  22. public void setType(String type) {
  23. this.type = type;
  24. }
  25. public int getPrice() {
  26. return price;
  27. }
  28. public void setPrice(int price) {
  29. this.price = price;
  30. }
  31. public boolean isState() {
  32. return state;
  33. }
  34. public void setState(boolean state) {
  35. this.state = state;
  36. }
  37. public Book(String name, String author, String type, int price) {
  38. this.name = name;
  39. this.author = author;
  40. this.type = type;
  41. this.price = price;
  42. }
  43. @Override
  44. public String toString() {
  45. return "Book{" +
  46. "name='" + name + '\'' +
  47. ", author='" + author + '\'' +
  48. ", type='" + type + '\'' +
  49. ", price=" + price +
  50. ((state==true)?" 已借出":" 未借出")//为啥一定要括号?
  51. +'}';
  52. }
  53. }

书集合的类Booktest

  1. class BookTest{
  2. private Book [] books = new Book[10];//这个是数组的创建,此时还没初始化
  3. private int size;
  4. public BookTest(){
  5. books[0] = new Book("三国演义","罗贯中","小说",40);//这个才是初始化 实例化分成两步了 起名字和new 上一步的new不是开辟空间
  6. books[1] = new Book("红楼梦","曹雪芹","小说",35);
  7. books[2] = new Book("西游记","吴承恩","小说",38);
  8. books[3] = new Book("水浒传","施耐庵","小说",41);
  9. size = 4;
  10. }
  11. public Book getBooks(int size) {
  12. return books[size];//类方法是可以直接调用类内成员的
  13. }
  14. public Book[] getBooks1() {
  15. return books;
  16. }
  17. public void setBooks(Book book, int size) {
  18. this.books[size] = book;
  19. }
  20. public int getSize() {
  21. return size;
  22. }
  23. public void setSize(int size) {
  24. this.size = size;
  25. }
  26. public void setstate(int size,boolean n){
  27. books[size].setState(n);
  28. }
  29. }

关于用户的类

父类User

  1. abstract class User{
  2. String name;
  3. BookTest bookTest = new BookTest();
  4. abstract public void menu();
  5. public User(String name){
  6. this.name = name;
  7. }
  8. }

管理员子类ManagerUser

  1. class ManagerUser extends User{
  2. public ManagerUser(String name){//如果父类没有构造方法 就不需要
  3. super(name);//只能实现一个构造方法的前提,要先给name初始化,如果给name初始化则需调用super,且如果父类有非默认构造方法,一定要super
  4. System.out.println("管理员"+name);//就是父类构造方法要有参数,就得给他传参
  5. }
  6. public void menu(){
  7. System.out.println("1.查找图书");
  8. System.out.println("2.新增图书");
  9. System.out.println("3.删除图书");
  10. System.out.println("4.显示图书");
  11. System.out.println("0.退出程序");
  12. Scanner sc = new Scanner(System.in);
  13. int input = sc.nextInt();
  14. I0Operation [] iooperations = {
  15. new ExitOPeration(),new FindOPeration(),new AddOPeration(),new DelOPeration(),new DisplayOPeration()
  16. };
  17. iooperations[input].work(bookTest);
  18. }
  19. }

一般用户子类NormalUser

  1. class NormalUser extends User{
  2. public NormalUser(String name) {
  3. super(name);
  4. System.out.println("用户"+name);
  5. }
  6. public void menu(){
  7. System.out.println("1.查找图书");
  8. System.out.println("2.借阅图书");
  9. System.out.println("3.归还图书");
  10. System.out.println("0.退出程序");
  11. Scanner sc = new Scanner(System.in);
  12. int input = sc.nextInt();
  13. I0Operation [] iooperations = {
  14. new ExitOPeration(),new FindOPeration(),new BorOPeration(),new ReturnOPeration()
  15. };
  16. iooperations[input].work(bookTest);//不用担心内存浪费,反正运行完menu方式就释放了
  17. }
  18. }

方法的类

总接口 I0Operation

  1. public interface I0Operation {
  2. void work(BookTest bookTest);
  3. }

查找图书 FindOPeration

  1. import java.util.Scanner;
  2. public class FindOPeration implements I0Operation{
  3. @Override
  4. public void work(BookTest bookTest) {
  5. System.out.println("查找图书");
  6. int size = bookTest.getSize();
  7. System.out.println("请输入被查找书名");
  8. Scanner sc = new Scanner(System.in);
  9. String s = sc.nextLine();
  10. int t = 0;
  11. for (; t < size-1; t++) {
  12. if(s.equals(bookTest.getBooks(t).getName())){
  13. break;
  14. }
  15. }
  16. if(t==size){
  17. System.out.println("没有这本书");
  18. }
  19. else{
  20. System.out.println(bookTest.getBooks(t));
  21. }
  22. }
  23. }

新增图书 AddOPeration

  1. import java.util.Scanner;
  2. public class AddOPeration implements I0Operation{
  3. @Override
  4. public void work(BookTest bookTest) {
  5. Scanner sc = new Scanner(System.in);
  6. System.out.println("请输入书名");
  7. String name = sc.nextLine();
  8. System.out.println("请输入作者名");
  9. String textname = sc.nextLine();
  10. System.out.println("请输入类型");
  11. String state = sc.nextLine();
  12. System.out.println("请输入价格");
  13. int price = sc.nextInt();
  14. Book book = new Book(name,textname,state,price);
  15. bookTest.setBooks(book,bookTest.getSize());
  16. bookTest.setSize(bookTest.getSize()+1);
  17. System.out.println("增加成功!");
  18. }
  19. }

删除图书 DelOPeration

  1. import java.util.Scanner;
  2. public class DelOPeration implements I0Operation{
  3. @Override
  4. public void work(BookTest bookTest) {
  5. int size = bookTest.getSize();
  6. System.out.println("请输入被删除书名");
  7. Scanner sc = new Scanner(System.in);
  8. String s = sc.nextLine();
  9. int t = 0;
  10. for (; t < size-1; t++) {
  11. if(s.equals(bookTest.getBooks(t).getName())){
  12. break;
  13. }
  14. }
  15. if(t==size){
  16. System.out.println("没有这本书");
  17. return;
  18. }
  19. else {
  20. for (int i = t; i < size - 1; i++) {
  21. bookTest.setBooks(bookTest.getBooks(size), size - 1);
  22. }
  23. bookTest.setSize(size-1);
  24. }
  25. System.out.println("删除成功!");
  26. }
  27. }

显示图书 DisplayOPeration

  1. public class DisplayOPeration implements I0Operation{
  2. @Override
  3. public void work(BookTest bookTest) {
  4. int size = bookTest.getSize();
  5. for (int i = 0; i < size; i++) {
  6. System.out.println(bookTest.getBooks(i));
  7. }
  8. }
  9. }

借阅图书 BorOPeration

  1. import java.util.Scanner;
  2. public class BorOPeration implements I0Operation{
  3. @Override
  4. public void work(BookTest bookTest) {
  5. int size = bookTest.getSize();
  6. System.out.println("请输入要借的书名");
  7. Scanner sc = new Scanner(System.in);
  8. String s = sc.nextLine();
  9. int t = 0;
  10. for (; t < size-1; t++) {
  11. if(s.equals(bookTest.getBooks(t).getName())){
  12. break;
  13. }
  14. }
  15. if(t==size){
  16. System.out.println("没有这本书");
  17. return;
  18. }
  19. else{
  20. if(bookTest.getBooks(t).isState()==true){
  21. System.out.println("已借出");
  22. return;
  23. }
  24. bookTest.setstate(t,true);
  25. }
  26. System.out.println("借书成功");
  27. }
  28. }

归还图书 ReturnOPeration

  1. import java.util.Scanner;
  2. public class ReturnOPeration implements I0Operation{
  3. @Override
  4. public void work(BookTest bookTest) {
  5. int size = bookTest.getSize();
  6. System.out.println("请输入要还的书名");
  7. Scanner sc = new Scanner(System.in);
  8. String s = sc.nextLine();
  9. int t = 0;
  10. for (; t < size-1; t++) {
  11. if(s.equals(bookTest.getBooks(t).getName())){
  12. break;
  13. }
  14. }
  15. if(t==size){
  16. System.out.println("没有这本书");
  17. return;
  18. }
  19. else{
  20. if(bookTest.getBooks(t).isState()==false){
  21. System.out.println("没借还啥,非得找bug是吧");
  22. return;
  23. }
  24. bookTest.setstate(t,false);
  25. }
  26. System.out.println("还书成功");
  27. }
  28. }

退出程序 ExitOPeration

  1. public class ExitOPeration implements I0Operation{
  2. @Override
  3. public void work(BookTest bookTest) {
  4. System.out.println("退出程序!");
  5. System.exit(0);
  6. }
  7. }

发表评论

表情:
评论列表 (有 0 条评论,189人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java图书管理系统

    > 分享第四条励志语录 > > 这个世界上原本就不存在一夜暴富,成功的路上没有任何捷径,只有踏踏实实,一步一个脚印,才能到达理想的彼岸。我们大部分人都是普通人,没爹可拼,能拼

    相关 Java图书管理系统

     Java图书管理系统。   1 概述    随着java语言的普及,java应用越来越多,使用量越来越大,今天主要是分享一下如何去使用java语言做一个超简单的图