zoukankan      html  css  js  c++  java
  • SpringBoot控制台版图书借阅程序

    // 实验存档。。。

    效果图:

    完整程序:https://pan.baidu.com/s/1-d1J90dkEtM0WKkABu0K0Q 

    提取码:hcnm 

    DAO层代码由MyBatis Generator生成,仅补充若干自定义代码。主要的代码只有下面这个:

    package com.book;
    
    import com.book.dao.BookMapper;
    import com.book.dao.StudentMapper;
    import com.book.dao.lendingRecordMapper;
    import com.book.model.Book;
    import com.book.model.Student;
    import com.book.model.lendingRecord;
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.CommandLineRunner;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.transaction.annotation.Transactional;
    
    import java.util.List;
    import java.util.Scanner;
    
    @SpringBootApplication
    @MapperScan("com.book.dao")
    public class MyApplication implements CommandLineRunner {
    
        @Autowired
        private BookMapper bookMapper;
    
        @Autowired
        private StudentMapper studentMapper;
    
        @Autowired
        private lendingRecordMapper lendingRecordMapper;
    
        public static void main(String[] args) {
            SpringApplication.run(MyApplication.class, args);
        }
    
        @Override
        public void run(String... strings) throws Exception {
            serve();
        }
    
        private void serve() {
            Scanner scan = new Scanner(System.in);
            int command;
            while (true) {
                System.out.println("=======分===割===线================");
                System.out.println("请问你要干嘛?");
                System.out.println("1、管理书");
                System.out.println("2、管理用户");
                System.out.println("3、借书");
                System.out.println("4、还书");
                System.out.println("5、退出程序");
                command = scan.nextInt();
                if (command == 1) {
                    System.out.println("请问你下一步要干嘛?");
                    System.out.println("1、增书");
                    System.out.println("2、改书");
                    System.out.println("3、删书");
                    System.out.println("4、查书");
                    System.out.println("5、浏览书");
                    command = scan.nextInt();
                    if (command == 1) {
                        System.out.println("1、请你依次输入书的书名、作者、出版社、ISBN号、数量");
                        System.out.println("注意一行一个:");
                        scan.nextLine();
                        String name = scan.nextLine();
                        System.out.println("书名" + name + "已录入。");
                        String author = scan.nextLine();
                        String press = scan.nextLine();
                        String isbn = scan.nextLine();
                        int num = scan.nextInt();
                        Book book = new Book(name, author, press, isbn, num);
                        bookMapper.insert(book);
                        System.out.println(book + "已录入!!!");
                    } else if (command == 2) {
                        System.out.println("想改书?请填入书的id以及欲改字段");
                        System.out.print("书的id:");
                        long id = scan.nextLong();
                        System.out.print("书名:");
                        String name = scan.next();
                        System.out.print("作者:");
                        String author = scan.next();
                        System.out.print("出版社:");
                        String press = scan.next();
                        System.out.print("isbn:");
                        String isbn = scan.next();
                        System.out.print("数量:");
                        int num = scan.nextInt();
                        Book book = new Book(name, author, press, isbn, num);
                        book.setId(id);
                        System.out.println(book + "修改成功!!!");
    //                bookMapper.updateByPrimaryKeySelective();
                    } else if (command == 3) {
                        System.out.println("你想删书?请直接输入书的id:");
                        long id = scan.nextLong();
                        System.out.println("恭喜你,删除成功!!!");
                    } else if (command == 4) {
                        System.out.println("你想查书?请直接输入书的id:");
                        long id = scan.nextLong();
                        Book book = bookMapper.selectByPrimaryKey(id);
                        if (book == null) {
                            System.out.println("不好意思没有这本书");
                        } else {
                            System.out.println("找到这本书了,信息如下:");
                            System.out.println(book);
                        }
                    } else if (command == 5) {
                        List<Book> list = bookMapper.selectAll();
                        for (Book x : list) {
                            System.out.println(x);
                        }
                    }
                } else if (command == 2) {
                    System.out.println("请问你下一步要干嘛?");
                    System.out.println("1、增用户");
                    System.out.println("2、改用户");
                    System.out.println("3、删用户");
                    System.out.println("4、查用户");
                    System.out.println("5、浏览用户");
                    command = scan.nextInt();
                    if (command == 1) {
                        System.out.println("1、请你依次输入用户的身份证号码、姓名、出生年月、性别");
                        System.out.println("注意一行一个:");
                        scan.nextLine();
                        String idCard = scan.nextLine();
                        System.out.println("idCard" + idCard + "已录入。");
                        String name = scan.nextLine();
                        String birth = scan.nextLine();
                        String sex = scan.nextLine();
                        Student student = new Student(name, sex, idCard, birth);
                        studentMapper.insert(student);
                        System.out.println(student + "已录入!!!");
                    } else if (command == 2) {
                        System.out.println("想改用户?请填入用户的id以及欲改字段");
                        System.out.print("用户的id:");
                        long id = scan.nextLong();
                        System.out.print("身份证号码:");
                        String idCard = scan.next();
                        System.out.print("姓名:");
                        String name = scan.next();
                        System.out.print("性别:");
                        String sex = scan.next();
                        System.out.print("出生年月:");
                        String birth = scan.next();
                        Student student = new Student(name, sex, idCard, birth);
                        student.setId(id);
                        System.out.println(student + "修改成功!!!");
    //                bookMapper.updateByPrimaryKeySelective();
                    } else if (command == 3) {
                        System.out.println("你想删用户?请直接输入用户的id:");
                        long id = scan.nextLong();
                        System.out.println("恭喜你,删除成功!!!");
                    } else if (command == 4) {
                        System.out.println("你想查用户?请直接输入用户的id:");
                        long id = scan.nextLong();
                        Student student = studentMapper.selectByPrimaryKey(id);
                        if (student == null) {
                            System.out.println("不好意思没有这个用户");
                        } else {
                            System.out.println("找到这个用户了,信息如下:");
                            System.out.println(student);
                        }
                    } else if (command == 5) {
                        List<Student> list = studentMapper.selectAll();
                        for (Student x : list) {
                            System.out.println(x);
                        }
                    }
                } else if (command == 3) {
                    System.out.print("读者id:");
                    Long uid = scan.nextLong();
                    System.out.print("书的id:");
                    Long bookId = scan.nextLong();
                    System.out.print("借书本数:");
                    int num = scan.nextInt();
                    borrowBooks(uid, bookId, num);
                } else if (command == 4) {
                    System.out.print("读者id:");
                    Long uid = scan.nextLong();
                    System.out.print("书的id:");
                    Long bookId = scan.nextLong();
                    returnBooks(uid, bookId);
                } else if (command == 5) {
                    break;
                }
            }
        }
    
        @Transactional
        private void borrowBooks(Long uid, Long bookId, int num) {
            Student student = studentMapper.selectByPrimaryKey(uid);
            if (student == null) {
                System.out.println("读者身份有错!!!请检查一遍再重新输入");
                return;
            }
            Book book = bookMapper.selectByPrimaryKey(bookId);
            if (book == null || book.getNum() < num) {
                System.out.println("书籍不存在或者数量不够!!!");
                return;
            }
            book.setNum(book.getNum() - num);
            bookMapper.updateByPrimaryKey(book);
            System.out.println("书籍数量已更新");
            lendingRecord record = lendingRecordMapper.selectByUidAndBookId(uid, bookId);
            if (record != null) {
                // 如果借过同类的书,那就更新记录
                record.setNum(record.getNum() + num);
                lendingRecordMapper.updateByPrimaryKey(record);
            } else {
                // 如果没有,创建新记录
                record = new lendingRecord(uid, bookId, num);
                lendingRecordMapper.insert(record);
            }
            System.out.println("恭喜你!借书成功!");
        }
    
        @Transactional
        private void returnBooks(Long uid, Long bookId) {
            // 可能出现Expected one result (or null) to be returned by selectOne(), but found: 2
            // 需要保证数据干净
            lendingRecord record = lendingRecordMapper.selectByUidAndBookId(uid, bookId);
            if (record == null) {
                System.out.println("不好意思,查不到该条借书记录~");
            } else {
                // 增加库存
                Book book = bookMapper.selectByPrimaryKey(bookId);
                book.setNum(book.getNum() + record.getNum());
                bookMapper.updateByPrimaryKey(book);
                // 删除记录
                lendingRecordMapper.deleteByPrimaryKey(record.getId());
                System.out.println("恭喜你,还书成功~~~");
                System.out.println("^o^");
            }
        }
    }
  • 相关阅读:
    nexus搭建maven私服及私服jar包上传和下载
    Java数据结构和算法(八)——递归
    postgresql数据库的 to_date 和 to_timestamp 将 字符串转换为时间格式
    postgreSql的字段名称是小写的这个一定要注意
    Mybatis异常There is no getter for property named 'XXX' in 'class java.lang.String'
    postgresql 获取所有表名、字段名、字段类型、注释
    克隆指定的分支和切换分支
    git branch不显示本地分支的问题
    git中Please enter a commit message to explain why this merge is necessary.
    企业微信开发步骤 1.拿到企业的id,在我的企业,拖到最下面拿到企业id 2.拿到SECRET,这个secret只有先创建应用才会产生出来
  • 原文地址:https://www.cnblogs.com/xkxf/p/11010843.html
Copyright © 2011-2022 走看看