网站开发基本流程ppt,小程序代理商好做吗,网站简单布局图,wordpress 帖子付费作者主页#xff1a;paper jie 的博客 本文作者#xff1a;大家好#xff0c;我是paper jie#xff0c;感谢你阅读本文#xff0c;欢迎一建三连哦。 本文录入于《JAVA》专栏#xff0c;本专栏是针对于大学生#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造paper jie 的博客 本文作者大家好我是paper jie感谢你阅读本文欢迎一建三连哦。 本文录入于《JAVA》专栏本专栏是针对于大学生编程小白精心打造的。笔者用重金(时间和精力)打造将javaSE基础知识一网打尽希望可以帮到读者们哦。 其他专栏《算法详解》《C语言》《javaSE》等 内容分享本期将会使用javase来制作一个简易版本的图书管理系统 目录 设计需求 设计思路
设计的具体过程及源码展示
book包
Book类
Booklist类
user包
User类
AdminUser类
NormalUser类
operation包
IOoperation接口
Addoperation类
Deloperation类
Borrowoperation类
Exitoperation类
Findoperation类
Returnoperation类
Showoperation类 Main类
效果展示
图书管理系统的画图分析 设计需求
我们需要通过使用javase来实现一个简易版本的图书管理系统它需要具备以下几个功能
1 首先需要有两个模式一个是管理员模式一个是普通用户模式
2 需要具有 新增图书删除图书查找图书显示图书借阅图书归还图书退出系统这些功能
3.需要将上面的功能分成两部分新增删除显示查找退出为管理员的权限而查找借阅归还退出为普通用户的权限 设计思路
1 我们首先需要将我们的用户分为两个部分一个为管理员一个为普通用户在使用的时候根据不同的需求展现不同的界面和功能这里我们可以通过继承多态向上转型给他们一个父类来实现
2 我们需要实现多个类来实现删除图书查找图书显示图书借阅图书归还图书退出系统这些功能
3 我们通过创建一个接口让功能类来实现这个接口再用一个类型为创建的接口类型的数组来存放功能类的new出的对象这样子就可以进行统一管理了
4 我们还需要创建书和书架类将书的属性封装书架类存放的就是书会用一个书架类型的数组来存放
设计的具体过程及源码展示
为了让程序去复杂化易修改这里将用三个包和一个主类来搭建这个框架会有book包里面存放书类和书架类。operation包存放各个功能类和接口。user包中放着父类User类和普通用户类管理员类最后还有一个主类Main book包
Book类
book类起到的作用就是将book类封装起来后面容易放入书架中。 这里的构造方法getandset方法以及toString方法可以通过编译器生成速度很快的。在toString方法中我们需要改动一下编译器生成的我们可以用三目操作符来确定是true还是false来打印是已借出还是未接出
package book;public class Book {private String name;private String author;private int price;private String type;//默认flose 未被借出private boolean isBorrowed;//get 和 set方法设置和返回成员变量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 isBorrowed() {return isBorrowed;}public void setBorrowed(boolean borrowed) {isBorrowed borrowed;}//打印Overridepublic String toString() {return Book{ name name \ , author author \ , price price , type type \ , ((isBorrowed true) ? 已经借出 : 未接出) };}
}Booklist类
这里也可以使用编译器生成需要的代码这里要注意的是books数组它是用来存放book书本的。在构造方法中要对它进行初始化可以存放几本已进放进去的书的内容。
package book;public class Booklist {//书架private Book[] books;//记录使用书的位置private int usedsize;private static final int DEFAULT_CAPACITY 10;public Booklist() {//对书架初始化this.books new Book[DEFAULT_CAPACITY];//放书this.books[0] new Book(三国演义, 罗贯中, 10, 小说);this.books[1] new Book(西游记, 吴承恩, 20, 小说);this.books[2] new Book(红楼梦, 曹雪芹, 30, 小说);this.usedsize 3;}public int getUsedsize() {return usedsize;}public void setUsedsize(int usedsize) {this.usedsize usedsize;}public Book getBook(int pos) {return books[pos];}public void setBook(int pos, Book book) {books[pos] book;}public Book[] getBooks() {return books;}
}user包
这个包里放的是一个父类和两个子类企图通过继承和多态来实现管理员和普通用户的切换
User类
这里要注意的是IOoperation这个数组它会在User类的子类中进行初始化来存放需要功能类的对象。而dooperation方法则是通过IOoperations数组里的成员的work方法来实现需要的操作
package user;import book.Booklist;
import operation.IOoperation;public abstract class User {protected String name;protected IOoperation[] iOoperations;public User(String name) {this.name name;}public abstract int menu();public void dooperation(int choise, Booklist booklist) {iOoperations[choise].work(booklist);}
}AdminUser类
它和NormalUser都是User的子类这里面的构造方法就对父类的成员进行了IOoperation初始化且实现的菜单界面menu方法的返回值就是你选择需要使用的功能
package user;import operation.*;import java.util.Scanner;public class AdminUser extends User{public AdminUser(String name) {super(name);this.iOoperations new IOoperation[]{new Exitoperation(),new Addopertaion(),new Deloperation(), new Showoperation(),new Findoperation()};}public int menu() {System.out.println(*********************** 管理员用户 ***************************);System.out.println(1. 新增图书);System.out.println(2. 删除图书);System.out.println(3. 显示图书);System.out.println(4. 查找图书);System.out.println(0. 退出系统);System.out.println(************************************************************);System.out.println(请输入你的操作);Scanner scanner new Scanner(System.in);int choice scanner.nextInt();return choice;}
}
NormalUser类
实现思路和AdminUser一样
package user;import operation.*;import java.util.Scanner;public class NormalUser extends User {public NormalUser(String name) {super(name);this.iOoperations new IOoperation[]{new Exitoperation(),new Findoperation(),new Borrowoperation(), new Returnoperation()};}public int menu() {System.out.println(*************************** 普通用户 ****************************);System.out.println(1. 查找图书);System.out.println(2. 借阅图书);System.out.println(3. 归还图书);System.out.println(0. 退出系统);System.out.println(**************************************************************);System.out.println(请输入你的操作);Scanner scanner new Scanner(System.in);int choice scanner.nextInt();return choice;}
}operation包
这个包里需要实现需要的功能类和一个将他们都串起来的接口
IOoperation接口
所有的功能类都要实现这个接口从而重写work方法来统一使用work这个名字
package operation;import book.Booklist;public interface IOoperation {public void work(Booklist booklist);
}
Addoperation类
新增图书功能
package operation;import book.Book;
import book.Booklist;import java.util.Scanner;/*** Created with IntelliJ IDEA.* Description:* User: sun杰* Date: 2023-08-25* Time: 10:43*/
public class Addopertaion implements IOoperation{Overridepublic void work(Booklist booklist) {System.out.println(新增图书);Scanner scanner new 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 new Book(name, author, price, type);int pos booklist.getUsedsize();for (int i 0; i pos; i) {Book book1 booklist.getBook(i);if(book1.getName().equals(name)) {System.out.println(已有这本书不再存放);return;}}if(pos booklist.getBooks().length) {System.out.println(书架满了);}else {booklist.setBook(pos, book);booklist.setUsedsize(pos 1);}}
}
Deloperation类
删除图书功能
import book.Booklist;import java.util.Scanner;public class Deloperation implements IOoperation{Overridepublic void work(Booklist booklist) {System.out.println(删除图书);Scanner scanner new Scanner(System.in);String name scanner.nextLine();int size booklist.getUsedsize();for (int i 0; i size; i) {Book book booklist.getBook(i);if(book.getName().equals(name)) {int pos i;int j 0;for ( j pos; j size - 1; j) {Book book1 booklist.getBook(j1);booklist.setBook(j, book1);}booklist.setBook(j, null);booklist.setUsedsize(size - 1);System.out.println(删除成功);return;}}System.out.println(不存在这本书);}
}Borrowoperation类
借阅图书功能
package operation;import book.Book;
import book.Booklist;import java.util.Scanner;public class Borrowoperation implements IOoperation {Overridepublic void work(Booklist booklist) {System.out.println(借阅图书);Scanner scanner new Scanner(System.in);System.out.println(请输入你要借阅的图书);String name scanner.nextLine();int size booklist.getUsedsize();for (int i 0; i size; i) {Book book booklist.getBook(i);if(book.getName().equals(name)) {book.setBorrowed(true);System.out.println(book);System.out.println(借阅成功);return;}}System.out.println(该书不存在);}
}
Exitoperation类
退出系统功能
package operation;import book.Booklist;public class Exitoperation implements IOoperation{Overridepublic void work(Booklist booklist) {System.out.println(退出系统);System.exit(0);}
}Findoperation类
查找图书功能
package operation;import book.Book;
import book.Booklist;
import com.sun.xml.internal.ws.policy.privateutil.PolicyUtils;import javax.imageio.metadata.IIOMetadataController;
import java.util.Scanner;public class Findoperation implements IOoperation{Overridepublic void work(Booklist booklist) {System.out.println(查找图书);Scanner scanner new Scanner(System.in);String name scanner.nextLine();int size booklist.getUsedsize();for (int i 0; i size; i) {Book book booklist.getBook(i);if(book.getName().equals(name)) {System.out.println(找到了信息如下);System.out.println(book);return;}}System.out.println(上述不存在);}
}Returnoperation类
归还图书功能
package operation;import book.Book;
import book.Booklist;import java.util.Scanner;public class Returnoperation implements IOoperation{Overridepublic void work(Booklist booklist) {System.out.println(归还图书);Scanner scanner new Scanner(System.in);System.out.println(请输入你要归还的图书);String name scanner.nextLine();int size booklist.getUsedsize();for (int i 0; i size; i) {Book book booklist.getBook(i);if(book.getName().equals(name)) {book.setBorrowed(false);System.out.println(book);System.out.println(归还成功);return;}}System.out.println(该书不存在);}
}Showoperation类
显示图书功能
package operation;import book.Book;
import book.Booklist;public class Showoperation implements IOoperation {Overridepublic void work(Booklist booklist) {System.out.println(显示图书);int size booklist.getUsedsize();for (int i 0; i size; i) {Book book booklist.getBook(i);System.out.println(book);}}
}Main类
通过Main类来组织程序执行
import book.Book;
import book.Booklist;
import user.AdminUser;
import user.NormalUser;
import user.User;import java.util.Scanner;public class Main {public static User login() {System.out.println(请输入你的姓名);Scanner scanner new Scanner(System.in);String name scanner.nextLine();System.out.println(请输入你的身份1.管理员 2.普通用户);int choice scanner.nextInt();if(choice 1) {//管理员return new AdminUser(name);}else {//普通用户return new NormalUser(name);}}public static void main(String[] args) {Booklist booklist new Booklist();//这里发生了向上转型User user login();while(true) {int choice user.menu();//choice来决定调用哪个方法类user.dooperation(choice, booklist);}}
}效果展示 图书管理系统的画图分析