Java图书管理系统源码注解

 

 

 

程序入口:

package tsts;
import user.signIn;
public class assd {
    

    
        public static void main(String[] args) {
     
            //默认用户列表:
            //普通用户1 :  name 小巴     账号abc123   密码:123456789

            //管理员用户1 : name 小白    账号abc1234   密码:123456789

            //入口函数,调用登录类,图书管理系统开启,登录系统开始启用
            signIn signin = new signIn();
            signin.donlu();
        }
    

}

urer包

package user;

public class aninm {
    //用户类
    public String name;
    private String accountNumber;
    private String password;
    public aninm (){
    }
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAccountNumber() {
        return accountNumber;
    }

    public void setAccountNumber(String accountNumber) {
        this.accountNumber = accountNumber;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public aninm(String name, String accountNumber, String password) {
        this.name = name;
        this.accountNumber = accountNumber;
        this.password = password;
    }
}

-==============

package user;

import java.util.ArrayList;
import java.util.Scanner;

public class root extends signIn{
    //管理员操作页面
    public void operation(book.bookList bl,String rootname){
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("========================================================");
            System.out.println("尊贵的"+rootname+"管理员,欢迎你使用图书管理系统,请输入你想要进行的操作");
            System.out.println("1.查询书籍信息\n2.新增书籍信息\n3.删除书籍信息\n4.打印全部书籍列表\n5.打印借阅记录\n6.退出当前登录\n7.退出系统");
            String xz = scanner.next();
            //退出账号索引
            boolean tc = false;
            //判断用户进行的操作
            switch (xz){
                case "1" :
                    //调用查询书名方法
                    System.out.println("请输入需要查询的书名");
                    String cx = scanner.next();
                    bok.queryBook(cx,bl);
                    break;
                case "2" :
                    //调用新增书方法
                    bok.addBook(bl);
                    break;
                case "3" :
                    //调用删除方法
                    System.out.println("请输入要删除的书名");
                    String gh = scanner.next();

                    bok.removeBook(gh,bl);
                    break;
                case "4" :
                    //调用展示所有书籍方法
                    bok.showBook(bl);
                    break;
                case "5" :
                    //借阅记录查询
                    bok.recordBook(bl);
                    break;
                case "7" :
                    //退出系统,结束java虚拟机
                    System.out.println("欢迎下次使用!");
                    System.exit(0);
                    break;
                case "6" :
                    //退出当前管理员登录
                    tc = true;
                    break;
                default:
                    System.out.println("没有此操作");
            }
            if (tc){
                //退出到登录界面
                System.out.println("退出成功");
                break;
            }
        }
    }
}

---------

package user;

import book.bookList;

import java.util.ArrayList;
import java.util.Scanner;

public class signIn {
    //初始化用户列表类
    userList ul = new userList() ;
    //初始化相关图书记录类
    bookList booklist = new bookList();
    //初始化图书操作类
    book.bookOperation bok = new book.bookOperation(booklist);
    //登录系统方法
    public void donlu(){
        //开始循环
        while (true){
            Scanner scanner = new Scanner(System.in);
            //登录欢迎界面
            System.out.println("========================================");
            System.out.println("欢迎来到java图书管理系统,请输入您需要进行的操纵:");
            System.out.println("1.普通用户登录    2.管理员登录    3.退出系统");
            //接收并判断用户选择对应的操作
            String signin = scanner.next();
            switch (signin){
                case "1" :
                    //调用普通用户登录方法
                    UserSignIn();
                    continue;
                case "2" :
                    //调用管理员登录方法
                    RootSignIn();
                    continue;
                case "3" :
                    //结束java虚拟机
                    System.out.println("欢迎下次使用");
                    System.exit(0);
                default:
                    System.out.println("没有对应的操作");
            }
        }
    }
    //用户登录验证方法
    private void UserSignIn(){
        while (true){
            Scanner scanner = new Scanner(System.in);
            System.out.println("========================================================");
            System.out.println("请输入用户账号:");
            String userAccountNumber = scanner.next();
            //验证账号
            //记录用户账号信息
            int dm = 0;
            //记录用户账号信息
            boolean jlf = false;
            //遍历用户
            for (int i = 0;i<ul.user.size();i++){
                //判断用户列表中是否有该用户信息
                if (ul.user.get(i).getAccountNumber().equals(userAccountNumber)){
                    //记录该用户账号
                    dm =i;
                    break;
                }else if(i == ul.user.size()-1 ){
                    System.out.println("没有此用户!");
                    jlf = true;
                    break;
                }
            }
            //若用户不存在,则退出循环,重新输入用户账号
            if (jlf){
                continue;
            }
            System.out.println("请输入用户密码:");
            String userPassword = scanner.next();
            //验证密码
            // 将前方记录的用户名与密码匹配
            if (!ul.user.get(dm).getPassword().equals(userPassword)){
                System.out.println("密码错误!");
                continue;
            }else {
                //密码正确,调用用户方法,对图书进行相应操作
                System.out.println("登录成功!");
                user u = new user();
                u.operation(booklist,ul.user.get(dm).getName());
                break;
            }
        }
    }
    //管理员登录验证方法
    private void RootSignIn(){
        //初始化用户信息
//        userList us = new userList();
       while (true){
           Scanner scanner = new Scanner(System.in);
           System.out.println("请输入管理员账号:");
           String rootAccountNumber = scanner.next();
           //验证账号
           int dm = 0;
           int jlf = 0;
           for (var i = 0;i<ul.root.size();i++){
               if (ul.root.get(i).getAccountNumber().equals(rootAccountNumber)){
                   dm =i;
                   break;
               }else if(i == ul.root.size()-1 ){
                   System.out.println("没有此管理员!");
                   jlf = 1;
                   break;
               }
           }
           if (jlf == 1){
               continue;
           }
           System.out.println("请输入管理员密码:");
           String rootPassword = scanner.next();
           //验证密码
           if (!ul.root.get(dm).getPassword().equals(rootPassword)){
               System.out.println("密码错误!");
               continue;
           }else {
               //密码正确,调用用户方法,对图书进行相应操作
               System.out.println("登录成功!");
               root r = new root();
               r.operation(booklist,ul.root.get(dm).getName());
               break;
           }

       }
    }
}

-------------

package user;

import java.util.ArrayList;
import java.util.Scanner;

public class user extends signIn{
    //普通用户操作类
    public void operation(book.bookList bl,String username){
        Scanner scanner = new Scanner(System.in);
        while (true){
            System.out.println("========================================================");
            System.out.println("尊贵的"+username+"用户,欢迎你使用图书管理系统,请输入你想要进行的操作");
            System.out.println("1.查询书籍信息\n2.借阅书籍\n3.归还书籍\n4.打印全部书籍列表\n5.退出当前登录\n6.退出系统");
            String xz = scanner.next();
            //退出账号索引
            boolean tc = false;
            //判断用户执行的操作
            switch (xz){
                case "1" :
                    //调用查询书籍方法
                    System.out.println("请输入需要查询的书名");
                    String cx = scanner.next();
                    bok.queryBook(cx,bl);
                    break;
                case "2" :
                    //调用借阅书籍方法
                    System.out.println("请输入需要借阅的书名");
                    String jy = scanner.next();
                    bok.borrowBooks(jy,bl,username);
                    break;
                case "3" :
                    //调用归还书籍方法
                    System.out.println("请输入归还的书名");
                    String gh = scanner.next();
                    bok.returnTheBook(gh,bl,username);
                    break;
                case "4" :
                    //调用显示所有书籍方法
                    bok.showBook(bl);
                    break;
                case "6" :
                    //退出系统,结束java虚拟机
                    System.out.println("欢迎下次使用!");
                    System.exit(0);
                    break;
                case "5" :
                    //退出当前循环
                    tc = true;
                    break;
                default:
                    System.out.println("没有此操作");
            }
            if (tc){
                //当用户选择退出,结束当前用户操作页面,返回用户登录页面
                System.out.println("退出登录成功");
                break;
            }
        }
    }
}

--------------------

package user;

import java.util.ArrayList;

public class userList {
    //普通用户账号密码信息存储
    ArrayList<aninm> user = new ArrayList();
    //管理员用户账号密码信息存储
    ArrayList<aninm> root = new ArrayList();
    public userList(){
        //默认添加一位普通用户,一位管理员用户
      
        user.add(new aninm("小巴","abc123","123456789"));
        root.add(new aninm("小白","abc1234","123456789"));
    }
}

==book包

package book;

public class book {
    //图书类
    private String bookName;//书名
    private String authorName;//作者名
    private int bookPrice;//数量
    private int zonbook;//总数量
    private boolean bookState;//是否借出状态
    public book(){}
    //图书构造方法
    public book(String bookName, String authorName, int bookPrice) {
        this.bookName = bookName;
        this.authorName = authorName;
        this.bookPrice = bookPrice;
        this.zonbook = bookPrice;
        this.bookState = true;
    }

    public int getZonbook() {
        return zonbook;
    }

    public void setZonbook(int zonbook) {
        this.zonbook = zonbook;
    }

    public String getBookName() {
        return bookName;
    }

    public void setBookName(String bookName) {
        this.bookName = bookName;
    }

    public String getAuthorName() {
        return authorName;
    }

    public void setAuthorName(String authorName) {
        this.authorName = authorName;
    }

    public int getBookPrice() {
        return bookPrice;
    }

    public void setBookPrice(int bookPrice) {
        this.bookPrice = bookPrice;
    }

    public boolean getBookState() {
        return bookState;
    }

    public void setBookState(boolean bookState) {
        this.bookState = bookState;
    }
}

==

package book;

import book.book;

import java.util.ArrayList;

public class bookList {
    //图书类
    //书架 图书集合
    private ArrayList<book> books = new ArrayList<book>();
    //借书记录
    private ArrayList<String> arr = new ArrayList<String>();
    //获取图书数量
    public ArrayList<book> getBooks() {
        return books;
    }
    //设置图书数量
    public void setBooks(ArrayList<book> books) {
        this.books = books;
    }
    //获取借书记录
    public ArrayList<String> getArr() {
        return arr;
    }
    //设置借书记录
    public void setArr(ArrayList<String> arr) {
        this.arr = arr;
    }
}

==

package book;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Scanner;

public class bookOperation {
    //图书操作类
    public bookOperation(){
    }
    //初始化图书信息
    public bookOperation(bookList booklist){
        //默认往书架上添加三本图书
        booklist.getBooks().add(new book("程序设计基础","林青霞",3));
        booklist.getBooks().add(new book("网页脚本技术","左冷禅",5));
        booklist.getBooks().add(new book("前端设计开发","张曼玉",2));
    }
    //查询所有图书信息
    public void showBook(bookList book){
        //标题
        System.out.println("       书名 :     作者   数量    状态");
        //判断书架上是否有图书
        if (book.getBooks().size()!=0){
            //遍历所有的图书
            for (int i = 0;i<book.getBooks().size();i++){
                String zt = null;
                if (book.getBooks().get(i).getBookState()){
                    zt = "可借阅";
                }else {
                    zt = "已借出";
                }
                System.out.println((i+1)+"   "+book.getBooks().get(i).getBookName()+"   "+book.getBooks().get(i).getAuthorName() +"   "+ book.getBooks().get(i).getBookPrice()
                        +"本   "+ zt);
            }
        }else {
            System.out.println("暂无任何书籍信息");
        }
    }
    //查询书籍详细信息
    public void queryBook(String name,bookList book){
        //遍历所有图书
        for (int i = 0;i<book.getBooks().size();i++){
            if (book.getBooks().get(i).getBookName().equals(name)){
                String zt = null;
                if (book.getBooks().get(i).getBookState()){
                    zt = "可借阅";
                }else {
                    zt = "已借出";
                }
                System.out.println("       书名 :     作者   数量    状态");
                System.out.println((i+1)+"   "+book.getBooks().get(i).getBookName()+"   "+book.getBooks().get(i).getAuthorName() +"   "+ book.getBooks().get(i).getBookPrice()
                        +"本   "+ zt);
                break;
            }else if (i==book.getBooks().size()-1){
                System.out.println("未找到此书籍");
            }
        }
    }
    //新增书籍信息  管理员方法
    public void addBook(bookList book){
        Scanner scanner = new Scanner(System.in);
        //获取图书名称
        System.out.println("请输入新增书的书名");
        String name = scanner.next();
        //判断书架上是否有书,没有则直接添加
        if (book.getBooks().size()!=0){
            //遍历图书
            for (int i = 0;i<book.getBooks().size();i++){
                //查看是否有相同名字的图书,若有则增加该图书的数量
                if (book.getBooks().get(i).getBookName().equals(name)){
                    System.out.println("请输入新增书的数量");
                    int jg = scanner.nextInt();
                    if(jg<=0){
                        System.out.println("非法操作");
                    }else {
                        //已存在相同书名,该书数量增加
                        book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()+jg);
                        book.getBooks().get(i).setZonbook(book.getBooks().get(i).getZonbook()+jg);
                        System.out.println("添加图书数量成功!");
                    }
                    break;
                }else if (i==book.getBooks().size()-1){
                    //若最后一本书都没有相同名称,则书架上没有相同的书籍,则证明是新图书,调用添加方法添加
                    System.out.println("请输入新增书的作者");
                    String uname = scanner.next();
                    System.out.println("请输入新增书的数量");
                    int jg = scanner.nextInt();
                    if(jg<=0){
                        System.out.println("非法操作");
                    }else {
                        book.getBooks().add(new book(name,uname,jg));
                        System.out.println("新增图书成功!");
                    }
                    break;
                }
            }
        }else {
            //书架上没有任何书,直接添加
            System.out.println("请输入新增书的作者");
            String uname = scanner.next();
            System.out.println("请输入新增书的数量");
            int jg = scanner.nextInt();
            if(jg<=0){
                System.out.println("非法操作");
            }else {
                book.getBooks().add(new book(name,uname,jg));
                System.out.println("新增图书成功!");
            }

        }
        book.setBooks(book.getBooks());
    }
    //删除书籍信息重写
    public void removeBook(String name,bookList book){
        //遍历所有图书
        for (int i = 0;i<book.getBooks().size();i++){
            //输入名称与书架上的图书名称相同,则下架该图书
            if (book.getBooks().get(i).getBookName().equals(name)){
                System.out.println("成功下架"+book.getBooks().get(i).getBookName());
                book.getBooks().remove(i);
                break;
            }else if (i==book.getBooks().size()-1){
                //没有相同名称的书籍则提示
                System.out.println("未找到此书籍");
            }
        }

        book.setBooks(book.getBooks());
    }
    //借阅书籍重写
    public void borrowBooks(String name,bookList book,String username){
        //遍历图书
        for (int i = 0;i<book.getBooks().size();i++){
            //判断书架上是否有该书籍
            if (book.getBooks().get(i).getBookName().equals(name)){
                //判断该书籍是否为可借出状态
               if (book.getBooks().get(i).getBookState()){
                   //判断该书籍剩余数量是否大于1
                   if (book.getBooks().get(i).getBookPrice()>1){
                       //书籍数量大于一,成功借出剩余,剩余数量减一本
                       book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()-1);
                   }else{
                       //书籍数量等于一,最后一本,书籍状态改为不可借出
                       book.getBooks().get(i).setBookState(false);
                       book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()-1);
                   }
                   //借书成功
                   System.out.println("借书成功!");
                   //添加借书记录
                   SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
                   Date date = new Date(System.currentTimeMillis());
                   book.getArr().add("用户 "+username+" 在  "+formatter.format(date)+"  时借阅了  "+book.getBooks().get(i).getBookName()+"  书籍");
                   break;
               }else{
                   //图书状态为不可借出状态
                   System.out.println("该书已被借出!");
                   break;
               }
               //遍历到最后一本书,均未找到相同名称的书,则书架没有该图书
            }else if (i==book.getBooks().size()-1){
                System.out.println("未找到此书籍");
            }
        }
        book.setBooks(book.getBooks());
    }
    //归还书籍重写
    public void returnTheBook(String name,bookList book,String username){
        //遍历图书
        for (int i = 0;i<book.getBooks().size();i++){
            //判断书架是否有此书
            if (book.getBooks().get(i).getBookName().equals(name)){
                if (!book.getBooks().get(i).getBookState()||book.getBooks().get(i).getBookPrice() < book.getBooks().get(i).getZonbook()){
                    //记录判断图书是否为已借出状态,或者图书剩余数量小于图书原本数量,则证明该书被借出
                    if (book.getBooks().get(i).getBookState()){
                        //该书为可借出状态,归还图书后剩余图书数量加一
                        book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()+1);
                    }else{
                        //若该书为不可借出状态,归还图书后则修改为可借出,并且剩余图书数量加一
                        book.getBooks().get(i).setBookPrice(book.getBooks().get(i).getBookPrice()+1);
                        book.getBooks().get(i).setBookState(true);
                    }
                    //归还图书记录
                    //获取用户归还时当前时间
                    SimpleDateFormat formatter= new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
                    Date date = new Date(System.currentTimeMillis());
                    book.getArr().add("用户 "+username+ " 在  "+formatter.format(date)+"  时归还了  "+book.getBooks().get(i).getBookName()+"  书籍");
                    System.out.println("还书成功!");
                    break;
                }else{
                    //未有任何借书记录
                    System.out.println("该书还没有借阅记录");
                    break;
                }
            }else if (i==book.getBooks().size()-1){
                System.out.println("未找到此书籍");
            }
        }
        book.setBooks(book.getBooks());
    }
    //借阅信息记录重写
    public void recordBook(bookList book){
        //遍历借书和还书的所有记录
        if (book.getArr().size()!=0){

            for (int i = 0;i<book.getArr().size();i++){
                System.out.println(book.getArr().get(i));
            }
        }else {
            System.out.println("暂时未有借阅记录");
        }
        book.setBooks(book.getBooks());
    }

}

运行效果===========================

 

posted @ 2022-07-18 12:59  小白学程  阅读(349)  评论(0编辑  收藏  举报