devbox
代码世界探险家
这个屌丝很懒,什么也没留下!
热门标签
热门文章
  • 1Android之Adapter用法总结_android setadapter
  • 2报错" href="/blog/article/detail/82574" target="_blank">vue使用scss方法(报错解决方案),及变换主题色_
    当前位置:   article > 正文

    Java连接数据库实现图书馆管理系统(详细教程)_java连接数据库图书管理系统

    java连接数据库图书管理系统

    该功能用到的软件为 IDEA 、Navicat 、云服务器(非必须)

    源码下载

    https://www.aliyundrive.com/s/UTz8pNxobGK

    一、建立数据库

    在自己的服务器或者电脑本机安装数据库系统,本次系统演示的数据库版本为5.6。

    1.创建图书管理数据库library 字符集为:utf8 -utf8_general_ci

    
    <code class="language-plaintext hljs">/*
     Navicat Premium Data Transfer
    
     Source Server         : local
     Source Server Type    : MySQL
     Source Server Version : 50739
     Source Host           : 121.37.205.242:3306
     Source Schema         : library
    
     Target Server Type    : MySQL
     Target Server Version : 50739
     File Encoding         : 65001
    
     Date: 31/01/2023 11:23:05
    */
    
    SET NAMES utf8mb4;
    SET FOREIGN_KEY_CHECKS = 0;
    
    -- ----------------------------
    -- Table structure for amerce
    -- ----------------------------
    DROP TABLE IF EXISTS `amerce`;
    CREATE TABLE `amerce`  (
      `rnumber` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '读者编号',
      `rname` varchar(35) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '读者名字',
      `bnumber` int(11) DEFAULT NULL COMMENT '图书编号',
      `bname` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '图书名称',
      `quantity` int(11) DEFAULT 0 COMMENT '数量',
      `bstime` datetime(0) DEFAULT NULL COMMENT '还书和借书时间',
      `money` int(11) DEFAULT NULL COMMENT '罚款金额'
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '罚款信息表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Table structure for books
    -- ----------------------------
    DROP TABLE IF EXISTS `books`;
    CREATE TABLE `books`  (
      `number` int(11) NOT NULL AUTO_INCREMENT COMMENT '图书编号',
      `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '图书名称',
      `category` int(11) DEFAULT NULL COMMENT '图书类别',
      `author` varchar(35) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '作者',
      `press` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '出版社',
      `pdate` date DEFAULT NULL COMMENT '出版日期',
      `wdate` datetime(0) DEFAULT NULL COMMENT '入库日期',
      `books` int(11) DEFAULT NULL COMMENT '库存总数量',
      `extant` int(11) DEFAULT 0 COMMENT '现存数量',
      PRIMARY KEY (`number`) USING BTREE,
      UNIQUE INDEX `books_name`(`name`) USING BTREE,
      INDEX `books_category`(`category`) USING BTREE,
      CONSTRAINT `books_category` FOREIGN KEY (`category`) REFERENCES `category` (`id`) ON DELETE RESTRICT ON UPDATE RESTRICT
    ) ENGINE = InnoDB AUTO_INCREMENT = 214 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '图书信息表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Table structure for borrow
    -- ----------------------------
    DROP TABLE IF EXISTS `borrow`;
    CREATE TABLE `borrow`  (
      `rnumber` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '读者编号',
      `bnumber` int(11) DEFAULT NULL COMMENT '图书编号',
      `quantity` int(11) DEFAULT 1 COMMENT '数量',
      `btime` datetime(0) DEFAULT NULL COMMENT '借书时间'
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '借书信息表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Table structure for category
    -- ----------------------------
    DROP TABLE IF EXISTS `category`;
    CREATE TABLE `category`  (
      `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '类别ID',
      `name` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '类别名称',
      PRIMARY KEY (`id`) USING BTREE
    ) ENGINE = InnoDB AUTO_INCREMENT = 51 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '图书类别表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Table structure for reader
    -- ----------------------------
    DROP TABLE IF EXISTS `reader`;
    CREATE TABLE `reader`  (
      `number` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学号',
      `name` varchar(35) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '读者名字',
      `sex` varchar(4) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      `kind` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '读者种类',
      `rdate` datetime(0) DEFAULT NULL COMMENT '登记时间',
      `password` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
      PRIMARY KEY (`number`) USING BTREE
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '读者信息表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- Table structure for still
    -- ----------------------------
    DROP TABLE IF EXISTS `still`;
    CREATE TABLE `still`  (
      `rnumber` char(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '读者编号',
      `bnumber` int(11) NOT NULL COMMENT '图书编号',
      `quantity` int(11) DEFAULT 1 COMMENT '数量',
      `stime` datetime(0) DEFAULT NULL COMMENT '还书时间'
    ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '还书信息表' ROW_FORMAT = Compact;
    
    -- ----------------------------
    -- View structure for view_aa
    -- ----------------------------
    DROP VIEW IF EXISTS `view_aa`;
    CREATE ALGORITHM = UNDEFINED DEFINER = `root`@`localhost` SQL SECURITY DEFINER VIEW `view_aa` AS select `b`.`rnumber` AS `rnumber`,`r`.`name` AS `rname`,`b`.`bnumber` AS `bnumber`,`bs`.`name` AS `bname`,`b`.`btime` AS `bstime` from ((`borrow` `b` join `books` `bs`) join `reader` `r`) where ((`b`.`rnumber` = `r`.`number`) and (`b`.`bnumber` = `bs`.`number`));
    
    -- ----------------------------
    -- Procedure structure for Bookreturn
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `Bookreturn`;
    delimiter ;;
    CREATE DEFINER=`root`@`localhost` PROCEDURE `Bookreturn`(in Borrowid char(20),in bookid int ,quant int)
    begin
        declare cone int default 0;
        set cone =(select quantity from borrow
        where rnumber =Borrowid and bnumber=bookid and quantity>0
        ORDER BY btime limit 1)-quant;
        
        -- 向还书表插入信息
        INSERT INTO still(rnumber,bnumber,quantity,stime)
        VALUES(Borrowid,bookid,quant,now());
        -- 图书表数量+还书的数量
        update books set extant=extant+quant
        where number=bookid ;
        -- 还书后减去对应的数量
        update borrow set quantity=quantity-quant
        where rnumber =Borrowid and bnumber=bookid
        ORDER BY btime limit 1;    
        -- while循环,如果借书表数值为负数,则循环减去正数的数值
        WHILE cone<0 DO
            set cone=cone+1;
            update borrow set quantity =quantity-1
            where quantity>0 and rnumber =Borrowid and bnumber=bookid
            ORDER BY btime limit 1;
            update borrow set quantity=quantity+1
            WHERE quantity<0 and rnumber =Borrowid and bnumber=bookid
            ORDER BY btime limit 1;
        END WHILE;
        -- 把等于0的数值删除
        delete from borrow 
        where quantity=0;    
    end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Procedure structure for Borrowbooks
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `Borrowbooks`;
    delimiter ;;
    CREATE DEFINER=`root`@`localhost` PROCEDURE `Borrowbooks`(Borrowid char(20),bookid int ,quant int)
    begin
        INSERT INTO borrow(rnumber,bnumber,quantity,btime)
        VALUES(Borrowid,bookid,quant,now());
    --     update borrow set quantity=quantity+quant WHERE Borrowid=rnumber and bookid=bnumber;
        update books set extant=extant-quant
        where number=bookid;
    end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Procedure structure for Insertbooks
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `Insertbooks`;
    delimiter ;;
    CREATE DEFINER=`root`@`localhost` PROCEDURE `Insertbooks`(b varchar(40),c int ,d varchar(35),e varchar(40),f date,h int)
    begin
        INSERT INTO books (number,`name`,category,author,press,pdate,wdate,books) 
        VALUES (null,b,c,d,e,f,now(),h) ON DUPLICATE KEY UPDATE books=books+h;
        update books set extant = extant+h where `name`= b;
    end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Procedure structure for proc_2
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `proc_2`;
    delimiter ;;
    CREATE DEFINER=`root`@`localhost` PROCEDURE `proc_2`()
    BEGIN
                 drop view if exists view_aa;
                 create view view_aa as
                 select b.rnumber,r.`name` rname,b.bnumber,bs.`name` bname,b.btime as bstime from borrow b,books bs,reader  r
                 where b.rnumber=r.number and b.bnumber=bs.number;
    
                 insert into amerce(rnumber,rname,bnumber,bname,money,bstime)         
                 select rnumber,rname,bnumber,bname,count(*) as money,bstime from view_aa;
        end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Procedure structure for repayment
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `repayment`;
    delimiter ;;
    CREATE DEFINER=`root`@`%` PROCEDURE `repayment`(rnum char(20),bnum int ,quant int)
    begin        
        declare cone int default 0;
            -- 减去对应的数量
        update amerce set quantity=quantity-quant
        where rnumber = rnum and bnumber = bnum
        ORDER BY bstime limit 1;
        -- 把负数赋值给cone
        select quantity into cone from amerce where quantity<0;    
        -- while循环,如果cone为负数,则循环减去正数的数值
        WHILE cone<0 DO
            set cone=cone+1;
    
            -- 钱数 money-(money/quantity)
             update amerce set money=money-(money/quantity)
            where quantity>0 and rnumber = rnum and bnumber = bnum
            ORDER BY bstime limit 1;
            -- 正数 -1
            update amerce set quantity =quantity-1
            where quantity>0 and rnumber = rnum and bnumber = bnum
            ORDER BY bstime limit 1;
            -- 负数 +1
            update amerce set quantity=quantity+1
            WHERE quantity<0 and rnumber = rnum and bnumber = bnum
            ORDER BY bstime limit 1;
        END WHILE;
        -- 把等于0的数值删除
        delete from amerce where quantity=0;
    end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Procedure structure for updateMyTest
    -- ----------------------------
    DROP PROCEDURE IF EXISTS `updateMyTest`;
    delimiter ;;
    CREATE DEFINER=`root`@`localhost` PROCEDURE `updateMyTest`(quant int)
    BEGIN 
        declare cone int default 0;
        set cone =(select quantity from borrow
        where quantity>0
        ORDER BY btime limit 1)-quant;
        SELECT * from borrow where quantity=cone;
        
    --     WHILE cone<0 DO
    --         set cone=cone+1;
    --         update borrow set quantity =quantity-1
    --         where quantity>0
    --         ORDER BY btime limit 1;
    --         update borrow set quantity=quantity+1
    --         WHERE quantity<0
    --         ORDER BY btime limit 1;
    --     END WHILE;
        
    end
    ;;
    delimiter ;
    
    -- ----------------------------
    -- Triggers structure for table still
    -- ----------------------------
    DROP TRIGGER IF EXISTS `trigger_still_amerce`;
    delimiter ;;
    CREATE DEFINER = `root`@`localhost` TRIGGER `trigger_still_amerce` BEFORE INSERT ON `still` FOR EACH ROW -- 行级触发器
    BEGIN
            replace into amerce(rnumber,rname,bnumber,bname,quantity,bstime,money)    
            select borrow.rnumber rnumber,reader.name rname,
            borrow.bnumber bnumber,books.name bname,
            borrow.quantity quantity,reader.rdate bstime,
            0.1*datediff(now(),borrow.btime)-30 money
            from borrow,reader,books
            where borrow.rnumber=reader.number and borrow.bnumber=books.number
            and datediff(now(),borrow.btime)>=30
            and books.number=borrow.bnumber;    
    END
    ;;
    delimiter ;
    
    SET FOREIGN_KEY_CHECKS = 1;
    </code>

    2.设计好将要使用的sql语句

    视图、存储过程和触发器,在上面创建数据库的时候建好了,下面是一下视图、存储过程和触发器的创建语句。

    
    <code class="language-plaintext hljs">-- 1、添加图书表书籍 -- 完成
    CREATE UNIQUE index books_name on books(name);
    
    delimiter //
    create procedure Insertbooks(b varchar(40),c int ,d varchar(35),e varchar(40),f date,h int)
    begin
        INSERT INTO books (number,`name`,category,author,press,pdate,wdate,books) 
        VALUES (null,b,c,d,e,f,now(),h) ON DUPLICATE KEY UPDATE books=books+h;
        update books set extant = extant+h where `name`= b;
    end; //
    delimiter ;
    
    call Insertbooks('白鹿原','1','张三','人民出版社','2022-1-9','7');
    
    -- 2、添加图书类别信息 -- 完成
    INSERT INTO category()
    VALUES(1,'话剧');
    
    -- 3、添加读者信息 -- 完成
    INSERT INTO reader(number,name,sex,kind,rdate)
    VALUES('20215101020051','翠花','女','学生',now());
    
    -- 4、读者借书 -- 完成
    delimiter //
    create procedure Borrowbooks(Borrowid char(20),bookid int ,quant int)
    begin
        INSERT INTO borrow(rnumber,bnumber,quantity,btime)
        VALUES(Borrowid,bookid,quant,now());
    --     update borrow set quantity=quantity+quant WHERE Borrowid=rnumber and bookid=bnumber;
        update books set extant=extant-quant
        where number=bookid;
    end ; //
    delimiter ;
    
    Call Borrowbooks('20215101020051','203','50');
    
    -- 5、读者还书 -- 完成
    delimiter //
    create procedure Bookreturn(in Borrowid char(20),in bookid int ,quant int)
    begin
        declare cone int default 0;
        set cone =(select quantity from borrow
        where rnumber =Borrowid and bnumber=bookid and quantity>0
        ORDER BY btime limit 1)-quant;    
        -- 向还书表插入信息
        INSERT INTO still(rnumber,bnumber,quantity,stime)
        VALUES(Borrowid,bookid,quant,now());
        -- 图书表数量+还书的数量
        update books set extant=extant+quant
        where number=bookid ;
        -- 还书后减去对应的数量
        update borrow set quantity=quantity-quant
        where rnumber =Borrowid and bnumber=bookid
        ORDER BY btime limit 1;    
        -- while循环,如果借书表数值为负数,则循环减去正数的数值
        WHILE cone<0 DO
            set cone=cone+1;
            update borrow set quantity =quantity-1
            where quantity>0 and rnumber =Borrowid and bnumber=bookid
            ORDER BY btime limit 1;
            update borrow set quantity=quantity+1
            WHERE quantity<0 and rnumber =Borrowid and bnumber=bookid
            ORDER BY btime limit 1;
        END WHILE;
        -- 把等于0的数值删除
        delete from borrow 
        where quantity=0;    
    end ; //
    delimiter ;
    
    Call Bookreturn('20215101020051','203','5');
    drop procedure Borrowbooks;
    drop TRIGGER trigger_still_amerce;
    
    -- 6、读者还书时超过30天罚款 -- 完成
    -- 设置还书的时候触发,往罚款表插入数据
    delimiter //
    CREATE TRIGGER trigger_still_amerce
    BEFORE INSERT ON still FOR  EACH  ROW   -- 行级触发器
    BEGIN
            replace into amerce(rnumber,rname,bnumber,bname,quantity,bstime,money)    
            select borrow.rnumber rnumber,reader.name rname,
            borrow.bnumber bnumber,books.name bname,
            borrow.quantity quantity,reader.rdate bstime,
            0.1*datediff(now(),borrow.btime)-30 money
            from borrow,reader,books
            where borrow.rnumber=reader.number and borrow.bnumber=books.number
            and datediff(now(),borrow.btime)>=30
            and books.number=borrow.bnumber;    
    END; //
    delimiter ;
    show TRIGGERS;
    
    
    -- 7、图书废弃 -- 完成
    update books set books=books-1,extant=extant-1 where number='202';
    -- 8、图书下架 -- 完成
    delete from books where number='202';
    </code>

    3.创建项目

    在IEDA中新建一个空项目 library

    创建软件包 Module

    创建三个类, JavaOK、JavaTest、JDBCUtils 。JavaOK=>运行语句 , JavaTest=> 存放方法 , JOBCUtils =>存放方法

    4.导入mysql包(必要)

    下载包:mysql网站:MySQL :: Download Connector/J

    下拉选择Platform Independent

    下载mysql-connector-j-8.0.32.tar.gz

    点击Download下载

    点击No thanks, just start my download.//不登陆下载

    解压后就可以看到mysql-connector-j-8.0.32.jar,只有3m大小

    或者可以在阿里云盘下载

    Java连接数据库实现图书馆...系统(详细教程)阿里云盘分享


    在IEDA中导入刚刚下载的包:

    文件-项目结构-模块-点击加号-1.JAR或目录-上传刚刚下载的jar包

    导包工作完成,接下来可以正式编写代码了

    5.测试连接数据库

    先来一个简单的测试,看是否能成功连接

    1. package com.moyida.linkage;
    2. import java.sql.Connection;
    3. import java.sql.DriverManager;
    4. public class test {
    5. public static void main(String[] args) {
    6. Connection con;
    7. //
    8. String url = "jdbc:mysql://localhost:3306/library";
    9. String user = "root";
    10. String password = "root";
    11. try {
    12. //连接数据库,获得连接对象
    13. con = DriverManager.getConnection(url, user, password);
    14. if (!con.isClosed())
    15. System.out.println("成功连接数据库");
    16. } catch (Exception e) {
    17. e.printStackTrace();
    18. System.out.println("连接失败");
    19. }
    20. }
    21. }

    运行栏显示”成功连接数据库“则表示连接成功了

    如果显示”连接失败“,则没有连接成功,检查上述的步骤是否遗漏

    测试完后可以将代码删除

    6.JOBCUtili 页面

    里边存入释放资源的方法

    1. //释放资源
    2. public static void close(Connection connection, Statement statement, ResultSet resultSet) {
    3. try {
    4. if (resultSet != null) {
    5. resultSet.close();
    6. resultSet = null;
    7. }
    8. if (statement != null) {
    9. statement.close();
    10. statement = null;
    11. }
    12. if (connection != null) {
    13. connection.close();
    14. connection = null;
    15. }
    16. } catch (SQLException e) {
    17. e.printStackTrace();
    18. }
    19. }

    7.JavaTest 页面

    这里先写好数据库连接方法,修改的时候数据库的时候只要修改一处就好了

    ip地址修改成自己的

    1. static final String DB_URL = "jdbc:mysql://localhost:3306/library";
    2. static final String USER = "root"; //账号
    3. static final String PASS = "root"; //密码

    这里为了省事儿,我把JavaTest页面的所有代码都放到这里

    把IP地址和账号密码给成自己的就可以用了,根据方法可以看出连接数据库和执行sql语句的原理,用上面的main方法可以测试这些方法的可行性。

    1. package com.moyida.linkage;
    2. import java.lang.constant.Constable;
    3. import java.sql.*;
    4. public class JavaTest {
    5. public static void main(String[] args) {
    6. //查询用户信息
    7. // query_data("20215154515454", "456");
    8. //查询登录信息
    9. // System.out.println(UserType("20215154515454", "456"));
    10. //插入书籍到图书信息表
    11. // System.out.println("书名,类别,作者,出版社,出版日期,数量");
    12. // AddBooks("高原", "1", "小儿", "中华出版社", "2022-1-9", "5");
    13. //添加类别
    14. // AddCategories(5, "神话类");
    15. //3、添加读者信息
    16. // AddReaders("20544545446546", "劳务", "女", "2", "1112222");
    17. //4、读者借书
    18. // Call Borrowbooks('20215101020051','203','3');
    19. // BorrowBooks("20215101020051","203","3");
    20. //5、读者还书
    21. // AlsoBook("20215101020051","203","2");
    22. //-- 7、图书废弃
    23. //update books set books=books-1,extant=extant-1 where number='202';
    24. // BooksAbandoned("203");
    25. //-- 8、图书下架
    26. //delete from books where number='202';
    27. // Undercarriage("203");
    28. //查询图书信息
    29. // System.out.println(BookInformation("205"));
    30. // AllBookInformation();
    31. //欠费查询
    32. // System.out.println(ArrearageTable("20215101020051", "203"));
    33. //删除罚款账单
    34. // repayment("20215154515454","210");
    35. //查询读者信息表有无该账号
    36. // System.out.println(ReaderTable("2021510102005"));
    37. // 打印读者信息
    38. // PrintReader("20215101024620");
    39. }
    40. static final String DB_URL = "jdbc:mysql://localhost:3306/library";
    41. static final String USER = "root";
    42. static final String PASS = "root";
    43. /**
    44. * 图书下架
    45. *
    46. * @param number
    47. * @return
    48. */
    49. public static boolean Undercarriage(String number) {
    50. Connection conn = null;
    51. Statement stmt = null;
    52. try {
    53. //连接数据库,获得连接对象
    54. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    55. //创建执行环境
    56. stmt = conn.createStatement();
    57. //执行sql语句,得到结果集 resultSet
    58. String sql = "delete from books where number='" + number + "'";
    59. System.out.println(sql);
    60. int resultSet = stmt.executeUpdate(sql);
    61. } catch (Exception e) {
    62. e.printStackTrace();
    63. }//释放资源
    64. finally {
    65. JDBCUtils.close(conn, stmt, null);
    66. }
    67. return false;
    68. }
    69. /**
    70. * 图书废弃
    71. *
    72. * @param number
    73. * @return
    74. */
    75. public static String BooksAbandoned(String number) {
    76. Connection connection = null;
    77. Statement statement = null;
    78. try {
    79. //连接数据库,获得连接对象
    80. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    81. //创建执行环境
    82. statement = connection.createStatement();
    83. //执行sql语句,得到结果集 resultSet
    84. String sql = "update books set books=books-1,extant=extant-1 where number='" + number + "'";
    85. int resultSet = statement.executeUpdate(sql);
    86. } catch (Exception e) {
    87. e.printStackTrace();
    88. }//释放资源
    89. finally {
    90. JDBCUtils.close(connection, statement, null);
    91. }
    92. return number;
    93. }
    94. /**
    95. * 读者还书
    96. *
    97. * @param rnumber 读者编号
    98. * @param bnumber 图书编号
    99. * @param quantity 数量
    100. */
    101. static void AlsoBook(String rnumber, String bnumber, String quantity) {
    102. Connection connection = null;
    103. Statement statement = null;
    104. try {
    105. //连接数据库,获得连接对象
    106. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    107. //创建执行环境
    108. statement = connection.createStatement();
    109. //执行sql语句,得到结果集 resultSet
    110. String sql = "Call Bookreturn(" + "'" + rnumber + "'" + "," + "'" + bnumber + "'" + "," + "'" + quantity + "'" + ")";
    111. System.out.println(sql);
    112. int resultSet = statement.executeUpdate(sql);
    113. } catch (Exception e) {
    114. e.printStackTrace();
    115. }//释放资源
    116. finally {
    117. JDBCUtils.close(connection, statement, null);
    118. }
    119. }
    120. /**
    121. * 欠费罚款查询
    122. *
    123. * @param rnumber
    124. * @param bnumber
    125. * @return
    126. */
    127. public static String ArrearageTable(String rnumber, String bnumber) {
    128. Connection connection = null;
    129. Statement statement = null;
    130. try {
    131. //连接数据库,获得连接对象
    132. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    133. //创建执行环境
    134. statement = connection.createStatement();
    135. //执行sql语句,得到结果集 resultSet
    136. String sql = "SELECT sum(money) as arrearage FROM amerce WHERE rnumber =" + rnumber + " and bnumber= " + bnumber + " ORDER BY quantity";
    137. ResultSet resultSet = statement.executeQuery(sql);
    138. while (resultSet.next()) {
    139. String a = resultSet.getString("arrearage");
    140. return a;
    141. }
    142. // 完成后关闭
    143. resultSet.close();
    144. statement.close();
    145. connection.close();
    146. } catch (SQLException se) {
    147. // 处理 JDBC 错误
    148. se.printStackTrace();
    149. } catch (Exception e) {
    150. // 处理 Class.forName 错误
    151. e.printStackTrace();
    152. } finally {
    153. // 关闭资源
    154. try {
    155. if (statement != null) statement.close();
    156. } catch (SQLException se2) {
    157. }// 什么都不做
    158. try {
    159. if (connection != null) connection.close();
    160. } catch (SQLException se) {
    161. se.printStackTrace();
    162. }
    163. }
    164. return null;
    165. }
    166. /**
    167. * 通过学号打印借书信息表
    168. *
    169. * @param rnumber 读者编号
    170. */
    171. public static void NumberBookTable(String rnumber) {
    172. Connection conn = null;
    173. Statement stmt = null;
    174. try {
    175. //连接数据库,获得连接对象
    176. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    177. //创建执行环境
    178. stmt = conn.createStatement();
    179. String sql = "SELECT * FROM borrow WHERE rnumber =" + rnumber;
    180. ResultSet rs = stmt.executeQuery(sql);
    181. while (rs.next()) {
    182. System.out.print(rs.getString("rnumber"));
    183. System.out.print("\t ,");
    184. System.out.print(rs.getString("bnumber"));
    185. System.out.print("\t ,");
    186. System.out.print(rs.getString("quantity"));
    187. System.out.print("\t ,");
    188. System.out.println(rs.getString("btime"));
    189. }
    190. // 完成后关闭
    191. rs.close();
    192. stmt.close();
    193. conn.close();
    194. } catch (SQLException se) {
    195. // 处理 JDBC 错误
    196. se.printStackTrace();
    197. } catch (Exception e) {
    198. // 处理 Class.forName 错误
    199. e.printStackTrace();
    200. } finally {
    201. // 关闭资源
    202. try {
    203. if (stmt != null) stmt.close();
    204. } catch (SQLException se2) {
    205. }// 什么都不做
    206. try {
    207. if (conn != null) conn.close();
    208. } catch (SQLException se) {
    209. se.printStackTrace();
    210. }
    211. }
    212. }
    213. /**
    214. * 打印借书信息表
    215. *
    216. * @param rnumber 读者编号
    217. * @param bnumber 书籍编号
    218. */
    219. public static void BookTable(String rnumber, String bnumber) {
    220. Connection conn = null;
    221. Statement stmt = null;
    222. try {
    223. //连接数据库,获得连接对象
    224. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    225. //创建执行环境
    226. stmt = conn.createStatement();
    227. String sql = "SELECT * FROM borrow WHERE rnumber =" + rnumber + " and bnumber= " + bnumber;
    228. ResultSet rs = stmt.executeQuery(sql);
    229. while (rs.next()) {
    230. System.out.print(rs.getString("rnumber"));
    231. System.out.print("\t ,");
    232. System.out.print(rs.getString("bnumber"));
    233. System.out.print("\t ,");
    234. System.out.print(rs.getString("quantity"));
    235. System.out.print("\t ,");
    236. System.out.println(rs.getString("btime"));
    237. }
    238. // 完成后关闭
    239. rs.close();
    240. stmt.close();
    241. conn.close();
    242. } catch (SQLException se) {
    243. // 处理 JDBC 错误
    244. se.printStackTrace();
    245. } catch (Exception e) {
    246. // 处理 Class.forName 错误
    247. e.printStackTrace();
    248. } finally {
    249. // 关闭资源
    250. try {
    251. if (stmt != null) stmt.close();
    252. } catch (SQLException se2) {
    253. }// 什么都不做
    254. try {
    255. if (conn != null) conn.close();
    256. } catch (SQLException se) {
    257. se.printStackTrace();
    258. }
    259. }
    260. }
    261. /**
    262. * 删除罚款账单
    263. *
    264. * @param rnumber
    265. * @param bnumber
    266. */
    267. //delete amerce WHERE rnumber='20215154515454' and bnumber='210'
    268. public static void repayment(String rnumber, String bnumber) {
    269. Connection connection = null;
    270. Statement statement = null;
    271. try {
    272. //连接数据库,获得连接对象
    273. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    274. //创建执行环境
    275. statement = connection.createStatement();
    276. //执行sql语句,得到结果集 resultSet
    277. String sql = "delete from amerce WHERE rnumber=" + rnumber + " and bnumber=" + bnumber;
    278. int resultSet = statement.executeUpdate(sql);
    279. } catch (Exception e) {
    280. e.printStackTrace();
    281. }//释放资源
    282. finally {
    283. JDBCUtils.close(connection, statement, null);
    284. }
    285. }
    286. /**
    287. * 读者借书
    288. *
    289. * @param rnumber 读者编号
    290. */
    291. public static void BorrowBooks(String rnumber, String bnumber, String quantity) {
    292. Connection connection = null;
    293. Statement statement = null;
    294. try {
    295. //连接数据库,获得连接对象
    296. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    297. //创建执行环境
    298. statement = connection.createStatement();
    299. //执行sql语句,得到结果集 resultSet
    300. String sql = "Call Borrowbooks(" + "'" + rnumber + "'" + "," + "'" + bnumber + "'" + "," + "'" + quantity + "'" + ")";
    301. System.out.println(sql);
    302. int resultSet = statement.executeUpdate(sql);
    303. } catch (Exception e) {
    304. e.printStackTrace();
    305. }//释放资源
    306. finally {
    307. JDBCUtils.close(connection, statement, null);
    308. }
    309. }
    310. /**
    311. * 添加读者信息(注册)
    312. *
    313. * @param number
    314. * @param name
    315. * @param sex
    316. * @param kind
    317. * @param password
    318. */
    319. public static void AddReaders(String number, String name, String sex, String kind, String password) {
    320. Connection connection = null;
    321. Statement statement = null;
    322. try {
    323. //连接数据库,获得连接对象
    324. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    325. //创建执行环境
    326. statement = connection.createStatement();
    327. //执行sql语句,得到结果集 resultSet
    328. // // INSERT INTO reader(number,name,sex,kind,rdate) VALUES('20215101020051','翠花','女','学生',now(),password);
    329. String sql = "INSERT INTO reader VALUES(" + "'" + number + "'" + "," + "'" + name + "'" + "," + "'" + sex + "'" + "," + "'" + kind + "'" + "," + "now()" + "," + "'" + password + "'" + ")";
    330. int resultSet = statement.executeUpdate(sql);
    331. } catch (Exception e) {
    332. e.printStackTrace();
    333. }//释放资源
    334. finally {
    335. JDBCUtils.close(connection, statement, null);
    336. }
    337. }
    338. /**
    339. * 2、添加图书类别信息
    340. *
    341. * @param id
    342. * @param name
    343. * @return
    344. */
    345. public static String AddCategories(int id, String name) {
    346. Connection connection = null;
    347. Statement statement = null;
    348. ResultSet resultSet = null;
    349. try {
    350. //连接数据库,获得连接对象
    351. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    352. //创建执行环境
    353. statement = connection.createStatement();
    354. //执行sql语句,得到结果集 resultSet
    355. String sql = "INSERT INTO category() VALUES(" + id + "," + "'" + name + "'" + ")";
    356. resultSet = statement.executeQuery(sql);
    357. // int resultSet = statement.executeUpdate(sql);
    358. // 完成后关闭
    359. resultSet.close();
    360. statement.close();
    361. connection.close();
    362. } catch (Exception e) {
    363. e.printStackTrace();
    364. }//释放资源
    365. finally {
    366. JDBCUtils.close(connection, statement, resultSet);
    367. }
    368. return name;
    369. }
    370. /**
    371. * 添加书籍到图书信息表
    372. *
    373. * @param name 图书名称
    374. * @param category 图书类别
    375. * @param author 作者
    376. * @param press 出版社
    377. * @param pdate 出版日期
    378. * @param quantity 要存的数量
    379. * @return
    380. */
    381. public static String AddBooks(String name, String category, String author, String press, String pdate, String quantity) {
    382. Connection connection = null;
    383. ResultSet resultSet = null;
    384. Statement statement = null;
    385. try {
    386. //连接数据库,获得连接对象
    387. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    388. //创建执行环境
    389. statement = connection.createStatement();
    390. //执行sql语句,得到结果集 resultSet
    391. String sql = "call Insertbooks(" + "'" + name + "'" + "," + "'" + category + "'" + "," + "'" + author + "'" + "," + "'" + press + "'" + "," + "'" + pdate + "'" + "," + "'" + quantity + "'" + ")";
    392. resultSet = statement.executeQuery(sql);
    393. // 完成后关闭
    394. resultSet.close();
    395. statement.close();
    396. connection.close();
    397. } catch (Exception e) {
    398. //错误处理
    399. e.printStackTrace();
    400. }//释放资源
    401. finally {
    402. JDBCUtils.close(connection, statement, resultSet);
    403. }
    404. return name;
    405. }
    406. /**
    407. * 查询所有图书信息
    408. *
    409. * @return 返回值
    410. */
    411. public static void AllBookInformation() {
    412. Connection conn = null;
    413. Statement stmt = null;
    414. try {
    415. //连接数据库,获得连接对象
    416. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    417. //创建执行环境
    418. stmt = conn.createStatement();
    419. String sql = "SELECT * FROM books";
    420. ResultSet rs = stmt.executeQuery(sql);
    421. System.out.println("图书编号 图书名称 图书类别 作者 出版社 出版日期 入库日期 库存总数量 现存数量");
    422. while (rs.next()) {
    423. System.out.print(rs.getString("number") + "\t");
    424. System.out.print(rs.getString("name") + "\t");
    425. System.out.print(rs.getString("category") + "\t");
    426. System.out.print(rs.getString("author") + "\t");
    427. System.out.print(rs.getString("press") + "\t");
    428. System.out.print(rs.getString("pdate") + "\t");
    429. System.out.print(rs.getString("wdate") + "\t");
    430. System.out.print(rs.getString("books") + "\t");
    431. System.out.println(rs.getString("extant"));
    432. }
    433. // 完成后关闭
    434. rs.close();
    435. stmt.close();
    436. conn.close();
    437. } catch (SQLException se) {
    438. // 处理 JDBC 错误
    439. se.printStackTrace();
    440. } catch (Exception e) {
    441. // 处理 Class.forName 错误
    442. e.printStackTrace();
    443. } finally {
    444. // 关闭资源
    445. try {
    446. if (stmt != null) stmt.close();
    447. } catch (SQLException se2) {
    448. }// 什么都不做
    449. try {
    450. if (conn != null) conn.close();
    451. } catch (SQLException se) {
    452. se.printStackTrace();
    453. }
    454. }
    455. }
    456. /**
    457. * 打印读者信息
    458. */
    459. public static void PrintReader(String number){
    460. Connection conn = null;
    461. Statement stmt = null;
    462. try {
    463. //连接数据库,获得连接对象
    464. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    465. //创建执行环境
    466. stmt = conn.createStatement();
    467. String sql = "SELECT * FROM reader WHERE number =" + number;
    468. ResultSet rs = stmt.executeQuery(sql);
    469. while (rs.next()) {
    470. System.out.print(rs.getString("number")+"\t");
    471. System.out.print(rs.getString("name")+"\t");
    472. System.out.print(rs.getString("sex")+"\t");
    473. System.out.print(rs.getString("kind")+"\t");
    474. System.out.print(rs.getString("rdate")+"\t");
    475. System.out.println(rs.getString("password"));
    476. }
    477. // 完成后关闭
    478. rs.close();
    479. stmt.close();
    480. conn.close();
    481. } catch (SQLException se) {
    482. // 处理 JDBC 错误
    483. se.printStackTrace();
    484. } catch (Exception e) {
    485. // 处理 Class.forName 错误
    486. e.printStackTrace();
    487. } finally {
    488. // 关闭资源
    489. try {
    490. if (stmt != null) stmt.close();
    491. } catch (SQLException se2) {
    492. }// 什么都不做
    493. try {
    494. if (conn != null) conn.close();
    495. } catch (SQLException se) {
    496. se.printStackTrace();
    497. }
    498. }
    499. }
    500. /**
    501. * 查询读者信息表有无该账号
    502. *
    503. * @return
    504. */
    505. public static Constable ReaderTable(String number) {
    506. Connection conn = null;
    507. Statement stmt = null;
    508. try {
    509. //连接数据库,获得连接对象
    510. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    511. //创建执行环境
    512. stmt = conn.createStatement();
    513. String sql = "select number from reader where number=" + number;
    514. ResultSet rs = stmt.executeQuery(sql);
    515. if (rs.next()) {
    516. return false;
    517. }
    518. // 完成后关闭
    519. rs.close();
    520. stmt.close();
    521. conn.close();
    522. } catch (SQLException se) {
    523. // 处理 JDBC 错误
    524. se.printStackTrace();
    525. } catch (Exception e) {
    526. // 处理 Class.forName 错误
    527. e.printStackTrace();
    528. } finally {
    529. // 关闭资源
    530. try {
    531. if (stmt != null) stmt.close();
    532. } catch (SQLException se2) {
    533. }// 什么都不做
    534. try {
    535. if (conn != null) conn.close();
    536. } catch (SQLException se) {
    537. se.printStackTrace();
    538. }
    539. }
    540. return null;
    541. }
    542. /**
    543. * 查询图书信息
    544. *
    545. * @param number 输入的密码
    546. * @return 返回值
    547. */
    548. public static String BookInformation(String number) {
    549. Connection conn = null;
    550. Statement stmt = null;
    551. try {
    552. //连接数据库,获得连接对象
    553. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    554. //创建执行环境
    555. stmt = conn.createStatement();
    556. String sql = "SELECT * FROM books WHERE number =" + number;
    557. ResultSet rs = stmt.executeQuery(sql);
    558. while (rs.next()) {
    559. String a = rs.getString("number");
    560. String a1 = ("\t");
    561. String b = rs.getString("name");
    562. String b1 = ("\t");
    563. String c = rs.getString("category");
    564. String c1 = ("\t");
    565. String d = rs.getString("author");
    566. String d1 = ("\t");
    567. String e = rs.getString("press");
    568. String e1 = ("\t");
    569. String f = rs.getString("pdate");
    570. String f1 = ("\t");
    571. String g = rs.getString("wdate");
    572. String g1 = ("\t");
    573. String h = rs.getString("books");
    574. String h1 = ("\t");
    575. String i = rs.getString("extant");
    576. return a + a1 + b + b1 + c + c1 + d + d1 + e + e1 + f + f1 + g + g1 + h + h1 + i;
    577. }
    578. // 完成后关闭
    579. rs.close();
    580. stmt.close();
    581. conn.close();
    582. } catch (SQLException se) {
    583. // 处理 JDBC 错误
    584. se.printStackTrace();
    585. } catch (Exception e) {
    586. // 处理 Class.forName 错误
    587. e.printStackTrace();
    588. } finally {
    589. // 关闭资源
    590. try {
    591. if (stmt != null) stmt.close();
    592. } catch (SQLException se2) {
    593. }// 什么都不做
    594. try {
    595. if (conn != null) conn.close();
    596. } catch (SQLException se) {
    597. se.printStackTrace();
    598. }
    599. }
    600. return null;
    601. }
    602. /**
    603. * 查询学生表信息
    604. *
    605. * @param number 输入的账号
    606. * @param password 输入的密码
    607. * @return 返回值
    608. */
    609. public static void query_data(String number, String password) {
    610. Connection conn = null;
    611. Statement stmt = null;
    612. try {
    613. //连接数据库,获得连接对象
    614. conn = DriverManager.getConnection(DB_URL, USER, PASS);
    615. //创建执行环境
    616. stmt = conn.createStatement();
    617. String sql = "select * from reader where number= " + "'" + number + "'" + " and password=" + "'" + password + "'";
    618. ResultSet rs = stmt.executeQuery(sql);
    619. while (rs.next()) {
    620. String a = rs.getString("number");
    621. String a1 = ("\t");
    622. String b = rs.getString("name");
    623. String b1 = ("\t");
    624. String c = rs.getString("sex");
    625. String c1 = ("\t");
    626. String d = rs.getString("kind");
    627. String d1 = ("\t");
    628. String e = rs.getString("rdate");
    629. String e1 = ("\t");
    630. String f = rs.getString("password");
    631. System.out.println(a + a1 + b + b1 + c + c1 + d + e + d1 + f);
    632. }
    633. // 完成后关闭
    634. rs.close();
    635. stmt.close();
    636. conn.close();
    637. } catch (SQLException se) {
    638. // 处理 JDBC 错误
    639. se.printStackTrace();
    640. } catch (Exception e) {
    641. // 处理 Class.forName 错误
    642. e.printStackTrace();
    643. } finally {
    644. // 关闭资源
    645. try {
    646. if (stmt != null) stmt.close();
    647. } catch (SQLException se2) {
    648. }// 什么都不做
    649. try {
    650. if (conn != null) conn.close();
    651. } catch (SQLException se) {
    652. se.printStackTrace();
    653. }
    654. }
    655. }
    656. /**
    657. * 判断用户类型,登录账号,返回1表示老师,返回2表示学生,返回null表示查无此人
    658. *
    659. * @param number 输入的学号
    660. * @return 返回值
    661. */
    662. public static String UserType(String number, String password) {
    663. Connection connection = null;
    664. Statement statement = null;
    665. try {
    666. //连接数据库,获得连接对象
    667. connection = DriverManager.getConnection(DB_URL, USER, PASS);
    668. //创建执行环境
    669. statement = connection.createStatement();
    670. //执行sql语句,得到结果集 resultSet
    671. String sql = "select kind from reader where number= " + "'" + number + "'" + " and password=" + "'" + password + "'";
    672. ResultSet resultSet = statement.executeQuery(sql);
    673. while (resultSet.next()) {
    674. String a = resultSet.getString("kind");
    675. return a;
    676. }
    677. // 完成后关闭
    678. resultSet.close();
    679. statement.close();
    680. connection.close();
    681. } catch (SQLException se) {
    682. // 处理 JDBC 错误
    683. se.printStackTrace();
    684. } catch (Exception e) {
    685. // 处理 Class.forName 错误
    686. e.printStackTrace();
    687. } finally {
    688. // 关闭资源
    689. try {
    690. if (statement != null) statement.close();
    691. } catch (SQLException se2) {
    692. }// 什么都不做
    693. try {
    694. if (connection != null) connection.close();
    695. } catch (SQLException se) {
    696. se.printStackTrace();
    697. }
    698. }
    699. return null;//这样可以使得调用方无需检查结果是否为null
    700. }
    701. }

    8.JavaOK 页面

    JavaOK是运行调用JavaTest和JOBCUtili方法的主页面,在这个类运行可以实现系统的管理,这个系统仍有不少的bug没修复,但是可以正常跑起来了,可以根据自己的理解,把代码经行完善和修复

    下面是JavaOK页面的代码

    1. package com.moyida.linkage;
    2. import java.lang.constant.Constable;
    3. import java.util.Scanner;
    4. public class JavaOk {
    5. public static void main(String[] args) {
    6. Scanner sc = new Scanner(System.in);
    7. while (true) {
    8. System.out.println("=============首页==============");
    9. System.out.println("1、登录");
    10. System.out.println("2、注册");
    11. int reg = sc.nextInt();
    12. switch (reg) {
    13. case 1:
    14. //登录
    15. while (true) {
    16. System.out.println("=============登陆页面==============");
    17. System.out.println("请您输入账号");
    18. String acc = sc.next();
    19. System.out.println("请您输入密码");
    20. String pass = sc.next();
    21. String sum = JavaTest.UserType(acc, pass);
    22. if (sum == null) {
    23. System.out.println("对不起,查无此人,请重新输入");
    24. break;
    25. }
    26. // int a = Integer.parseInt(sum);
    27. // String a=sum;
    28. //判断用户类型,登录账号,返回1表示老师,返回2表示学生,返回null表示查无此人
    29. System.out.println("返回的数据是" + sum);
    30. switch (sum) {
    31. case "1":
    32. System.out.println("欢迎管理员登录");
    33. conservator(sc);
    34. break;
    35. case "2":
    36. System.out.println("欢迎学生登录");
    37. operate(sc, acc);
    38. break;
    39. default:
    40. System.out.println("对不起,查无此人");
    41. break;
    42. }
    43. break;
    44. }
    45. case 2:
    46. //注册
    47. Register(sc);
    48. break;
    49. default:
    50. System.out.println("您输入的命令错误,请重新输入!");
    51. break;
    52. }
    53. }
    54. }
    55. /**
    56. * 注册
    57. *
    58. * @param sc
    59. */
    60. private static void Register(Scanner sc) {
    61. System.out.println("=============注册页面==============");
    62. System.out.println("请输入要注册的账号(学号)");
    63. String number = sc.next();
    64. //查询数据库中有无该账号
    65. Constable aaa = JavaTest.ReaderTable(number);
    66. if (aaa == null) {
    67. //没有账号,可以进行
    68. System.out.println("请输入您的名字");
    69. String name = sc.next();
    70. System.out.println("请输入您的性别");
    71. String sex = sc.next();
    72. System.out.println("请输入您的类型 学生 2/管理员 1");
    73. int kind = sc.nextInt();
    74. System.out.println("请输入您的登录密码:");
    75. String pass = sc.next();
    76. //调用注册方法
    77. JavaTest.AddReaders(number, name, sex, String.valueOf(kind), pass);
    78. System.out.println("注册成功!");
    79. //打印注册信息
    80. System.out.println("您的注册信息如下:");
    81. JavaTest.PrintReader(number);
    82. }else {
    83. System.out.println("该账号已注册!");
    84. }
    85. }
    86. /**
    87. * 管理员操作页面
    88. *
    89. * @param sc
    90. */
    91. private static void conservator(Scanner sc) {
    92. while (true) {
    93. System.out.println("=============操作页面==============");
    94. System.out.println("0、退出");
    95. System.out.println("1、添加图书表书籍");
    96. System.out.println("2、添加图书类别信息");
    97. System.out.println("3、图书废弃");
    98. System.out.println("4、图书下架");
    99. System.out.println("5、查询全部图书信息");
    100. int i = sc.nextInt();
    101. switch (i) {
    102. case 0:
    103. System.out.println("已退出账号,欢迎再次登录!");
    104. return;
    105. case 1:
    106. System.out.println("=============添加书籍页面==============");
    107. System.out.println("图书名称");
    108. String name = sc.next();
    109. System.out.println("图书类别");
    110. String category = sc.next();
    111. System.out.println("作者");
    112. String author = sc.next();
    113. System.out.println("出版社");
    114. String press = sc.next();
    115. System.out.println("出版日期");
    116. String pdate = sc.next();
    117. System.out.println("要存的数量");
    118. String quantity = sc.next();
    119. String charu = JavaTest.AddBooks(name, category, author, press, pdate, quantity);
    120. System.out.println("添加成功");
    121. break;
    122. case 2:
    123. System.out.println("=============添加图书类别页面==============");
    124. System.out.println("输入类别编号");
    125. int leibie = sc.nextInt();
    126. System.out.println("输入类别名称");
    127. String name1 = sc.next();
    128. JavaTest.AddCategories(leibie, name1);
    129. System.out.println("添加成功");
    130. break;
    131. case 3:
    132. System.out.println("=============图书废弃页面==============");
    133. System.out.println("请输入要废弃图书的图书编号");
    134. String reduce = sc.next();
    135. System.out.println("您要废除的书籍是:");
    136. System.out.println(JavaTest.BookInformation(reduce));
    137. System.out.println("是否确认废除y/n");
    138. String rs = sc.next();
    139. switch (rs) {
    140. case "y":
    141. //可以废除
    142. String ff = JavaTest.BooksAbandoned(reduce);
    143. System.out.println(JavaTest.BookInformation(reduce));
    144. System.out.println("废弃成功,该图书减一");
    145. break;
    146. default:
    147. System.out.println("您取消废除,当前书籍继续保留~");
    148. }
    149. break;
    150. case 4:
    151. System.out.println("=============图书下架页面==============");
    152. System.out.println("请输入要下架图书的图书编号");
    153. String reduce1 = sc.next();
    154. System.out.println("您要下架的书籍是:");
    155. System.out.println(JavaTest.BookInformation(reduce1));
    156. System.out.println("是否确认把该图书下架y/n");
    157. String rs1 = sc.next();
    158. switch (rs1) {
    159. case "y":
    160. //可以废除
    161. String ff = JavaTest.BooksAbandoned(reduce1);
    162. System.out.println(JavaTest.Undercarriage(reduce1));
    163. System.out.println("下架成功,图书已从图书系统中去除");
    164. break;
    165. default:
    166. System.out.println("您取消废除,当前书籍继续保留~");
    167. }
    168. break;
    169. case 5:
    170. //查看所有书籍
    171. JavaTest.AllBookInformation();
    172. break;
    173. default:
    174. System.out.println("输入错误!");
    175. break;
    176. }
    177. }
    178. }
    179. /**
    180. * 学生操作页面
    181. *
    182. * @param sc
    183. */
    184. private static void operate(Scanner sc, String acc) {
    185. while (true) {
    186. System.out.println("=============学生操作页面==============");
    187. System.out.println("0、退出");
    188. System.out.println("1、查看所有书籍");
    189. System.out.println("2、借书");
    190. System.out.println("3、还书");
    191. String student = sc.next();
    192. switch (student) {
    193. case "0":
    194. System.out.println("已退出账号,欢迎再次登录!");
    195. return;
    196. case "1":
    197. //查看所有书籍
    198. JavaTest.AllBookInformation();
    199. break;
    200. case "2":
    201. //借书
    202. // public static boolean BorrowBooks(String rnumber, String bnumber, String quantity) {
    203. System.out.println("请输入要借的书籍编号");
    204. String Borrow = sc.next();
    205. System.out.println("您要借的书籍是:");
    206. System.out.println(JavaTest.BookInformation(Borrow));
    207. System.out.println("是否借该图书?y/n");
    208. String rs1 = sc.next();
    209. switch (rs1) {
    210. case "y":
    211. //可以借书
    212. System.out.println("您要借几本书?");
    213. String books = sc.next();
    214. JavaTest.BorrowBooks(acc, Borrow, books);
    215. System.out.println("借书完成,您的借书信息如下");
    216. //打印借书信息
    217. JavaTest.BookTable(acc, Borrow);
    218. System.out.println("");
    219. break;
    220. default:
    221. System.out.println("您取消借书操作,欢迎再次使用!");
    222. }
    223. break;
    224. case "3":
    225. //还书
    226. System.out.println("您可以还的书籍如下");
    227. JavaTest.NumberBookTable(acc);
    228. System.out.println("");
    229. System.out.println("请输入要还的书籍编号");
    230. String AlsoBook = sc.next();
    231. System.out.println("您要还的书籍是:");
    232. //打印借书信息
    233. JavaTest.BookTable(acc, AlsoBook);
    234. //再次确定归还
    235. System.out.println("是否还该图书?y/n");
    236. String rs2 = sc.next();
    237. switch (rs2) {
    238. case "y":
    239. //可以还书
    240. System.out.println("您要还此编号的几本书?");
    241. String books = sc.next();
    242. // 还书
    243. JavaTest.AlsoBook(acc, AlsoBook, books);
    244. //查询欠费账单有没有欠费
    245. String bill = JavaTest.ArrearageTable(acc, AlsoBook);
    246. if (bill == null) {
    247. //可以了
    248. System.out.println("还书完成,您还有此类书籍尚为归还");
    249. //打印借书信息
    250. JavaTest.BookTable(acc, AlsoBook);
    251. break;
    252. } else {
    253. //钱没还
    254. while (true) {
    255. System.out.println("您欠费的金额是" + bill);
    256. System.out.println("如已支付,请输入内容:支付完成");
    257. String ff = sc.next();
    258. String dd = "支付完成";
    259. if (ff.equals(dd)) {
    260. //删除欠费账单
    261. JavaTest.repayment(acc, AlsoBook);
    262. //打印借书信息
    263. System.out.println("还书完成,您还有此类书籍尚为归还");
    264. //打印借书信息
    265. JavaTest.BookTable(acc, AlsoBook);
    266. break;
    267. } else {
    268. System.out.println("支付失败,请完成支付");
    269. }
    270. }
    271. }
    272. }
    273. }
    274. }
    275. }
    276. }

    9.运行

    在IEDA的JavaOK页面,右键点击运行,就可以使用了。

    10.资料

    我在阿里云盘中存有该系统程序的源代码,可提供下载学习使用。

    阿里网盘 链接

    Java连接数据库实现图书馆...系统(详细教程)阿里云盘分享

    声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/article/detail/36200
    推荐阅读
    相关标签