国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館管理系統(tǒng)(詳細(xì)教程)

這篇具有很好參考價(jià)值的文章主要介紹了Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館管理系統(tǒng)(詳細(xì)教程)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館管理系統(tǒng)(詳細(xì)教程)

該功能用到的軟件為 IDEA 、Navicat 、云服務(wù)器(非必須)

源碼下載

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

Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館管理系統(tǒng)(詳細(xì)教程)

一、建立數(shù)據(jù)庫(kù)

在自己的服務(wù)器或者電腦本機(jī)安裝數(shù)據(jù)庫(kù)系統(tǒng),本次系統(tǒng)演示的數(shù)據(jù)庫(kù)版本為5.6。

1.創(chuàng)建圖書管理數(shù)據(jù)庫(kù)library 字符集為:utf8 -utf8_general_ci


/*
 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 '讀者編號(hào)',
  `rname` varchar(35) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '讀者名字',
  `bnumber` int(11) DEFAULT NULL COMMENT '圖書編號(hào)',
  `bname` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL COMMENT '圖書名稱',
  `quantity` int(11) DEFAULT 0 COMMENT '數(shù)量',
  `bstime` datetime(0) DEFAULT NULL COMMENT '還書和借書時(shí)間',
  `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 '圖書編號(hào)',
  `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 '入庫(kù)日期',
  `books` int(11) DEFAULT NULL COMMENT '庫(kù)存總數(shù)量',
  `extant` int(11) DEFAULT 0 COMMENT '現(xiàn)存數(shù)量',
  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 '讀者編號(hào)',
  `bnumber` int(11) DEFAULT NULL COMMENT '圖書編號(hào)',
  `quantity` int(11) DEFAULT 1 COMMENT '數(shù)量',
  `btime` datetime(0) DEFAULT NULL COMMENT '借書時(shí)間'
) 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 '學(xué)號(hào)',
  `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 '登記時(shí)間',
  `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 '讀者編號(hào)',
  `bnumber` int(11) NOT NULL COMMENT '圖書編號(hào)',
  `quantity` int(11) DEFAULT 1 COMMENT '數(shù)量',
  `stime` datetime(0) DEFAULT NULL COMMENT '還書時(shí)間'
) 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());
    -- 圖書表數(shù)量+還書的數(shù)量
    update books set extant=extant+quant
    where number=bookid ;
    -- 還書后減去對(duì)應(yīng)的數(shù)量
    update borrow set quantity=quantity-quant
    where rnumber =Borrowid and bnumber=bookid
    ORDER BY btime limit 1;    
    -- while循環(huán),如果借書表數(shù)值為負(fù)數(shù),則循環(huán)減去正數(shù)的數(shù)值
    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的數(shù)值刪除
    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;
        -- 減去對(duì)應(yīng)的數(shù)量
    update amerce set quantity=quantity-quant
    where rnumber = rnum and bnumber = bnum
    ORDER BY bstime limit 1;
    -- 把負(fù)數(shù)賦值給cone
    select quantity into cone from amerce where quantity<0;    
    -- while循環(huán),如果cone為負(fù)數(shù),則循環(huán)減去正數(shù)的數(shù)值
    WHILE cone<0 DO
        set cone=cone+1;

        -- 錢數(shù) money-(money/quantity)
         update amerce set money=money-(money/quantity)
        where quantity>0 and rnumber = rnum and bnumber = bnum
        ORDER BY bstime limit 1;
        -- 正數(shù) -1
        update amerce set quantity =quantity-1
        where quantity>0 and rnumber = rnum and bnumber = bnum
        ORDER BY bstime limit 1;
        -- 負(fù)數(shù) +1
        update amerce set quantity=quantity+1
        WHERE quantity<0 and rnumber = rnum and bnumber = bnum
        ORDER BY bstime limit 1;
    END WHILE;
    -- 把等于0的數(shù)值刪除
    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 -- 行級(jí)觸發(fā)器
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;

2.設(shè)計(jì)好將要使用的sql語(yǔ)句

視圖、存儲(chǔ)過(guò)程和觸發(fā)器,在上面創(chuàng)建數(shù)據(jù)庫(kù)的時(shí)候建好了,下面是一下視圖、存儲(chǔ)過(guò)程和觸發(fā)器的創(chuàng)建語(yǔ)句。


-- 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','翠花','女','學(xué)生',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());
    -- 圖書表數(shù)量+還書的數(shù)量
    update books set extant=extant+quant
    where number=bookid ;
    -- 還書后減去對(duì)應(yīng)的數(shù)量
    update borrow set quantity=quantity-quant
    where rnumber =Borrowid and bnumber=bookid
    ORDER BY btime limit 1;    
    -- while循環(huán),如果借書表數(shù)值為負(fù)數(shù),則循環(huán)減去正數(shù)的數(shù)值
    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的數(shù)值刪除
    delete from borrow 
    where quantity=0;    
end ; //
delimiter ;

Call Bookreturn('20215101020051','203','5');
drop procedure Borrowbooks;
drop TRIGGER trigger_still_amerce;

-- 6、讀者還書時(shí)超過(guò)30天罰款 -- 完成
-- 設(shè)置還書的時(shí)候觸發(fā),往罰款表插入數(shù)據(jù)
delimiter //
CREATE TRIGGER trigger_still_amerce
BEFORE INSERT ON still FOR  EACH  ROW   -- 行級(jí)觸發(fā)器
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';

3.創(chuàng)建項(xiàng)目

在IEDA中新建一個(gè)空項(xiàng)目 library

創(chuàng)建軟件包 Module

創(chuàng)建三個(gè)類, JavaOK、JavaTest、JDBCUtils 。JavaOK=>運(yùn)行語(yǔ)句 , JavaTest=> 存放方法 , JOBCUtils =>存放方法

4.導(dǎo)入mysql包(必要)

下載包:mysql網(wǎng)站:MySQL :: Download Connector/J

下拉選擇Platform Independent

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

點(diǎn)擊Download下載

點(diǎn)擊No thanks, just start my download.//不登陸下載

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

或者可以在阿里云盤下載

Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館...系統(tǒng)(詳細(xì)教程)阿里云盤分享文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-460456.html


在IEDA中導(dǎo)入剛剛下載的包:

文件-項(xiàng)目結(jié)構(gòu)-模塊-點(diǎn)擊加號(hào)-1.JAR或目錄-上傳剛剛下載的jar包

導(dǎo)包工作完成,接下來(lái)可以正式編寫代碼了

5.測(cè)試連接數(shù)據(jù)庫(kù)

先來(lái)一個(gè)簡(jiǎn)單的測(cè)試,看是否能成功連接


package com.moyida.linkage;
import java.sql.Connection;
import java.sql.DriverManager;

public class test {
    public static void main(String[] args) {
        Connection con;
// 
        String url = "jdbc:mysql://localhost:3306/library";
        String user = "root";
        String password = "root";
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            con = DriverManager.getConnection(url, user, password);
            if (!con.isClosed())
                System.out.println("成功連接數(shù)據(jù)庫(kù)");
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("連接失敗");
        }
    }
}

運(yùn)行欄顯示”成功連接數(shù)據(jù)庫(kù)“則表示連接成功了

如果顯示”連接失敗“,則沒(méi)有連接成功,檢查上述的步驟是否遺漏

測(cè)試完后可以將代碼刪除

6.JOBCUtili 頁(yè)面

里邊存入釋放資源的方法


 //釋放資源
    public static void close(Connection connection, Statement statement, ResultSet resultSet) {
        try {
            if (resultSet != null) {
                resultSet.close();
                resultSet = null;
            }
            if (statement != null) {
                statement.close();
                statement = null;
            }
            if (connection != null) {
                connection.close();
                connection = null;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }

    }

7.JavaTest 頁(yè)面

這里先寫好數(shù)據(jù)庫(kù)連接方法,修改的時(shí)候數(shù)據(jù)庫(kù)的時(shí)候只要修改一處就好了

ip地址修改成自己的


    static final String DB_URL = "jdbc:mysql://localhost:3306/library";
    static final String USER = "root"; //賬號(hào)
    static final String PASS = "root"; //密碼

這里為了省事兒,我把JavaTest頁(yè)面的所有代碼都放到這里

把IP地址和賬號(hào)密碼給成自己的就可以用了,根據(jù)方法可以看出連接數(shù)據(jù)庫(kù)和執(zhí)行sql語(yǔ)句的原理,用上面的main方法可以測(cè)試這些方法的可行性。


package com.moyida.linkage;
import java.lang.constant.Constable;
import java.sql.*;
public class JavaTest {
    public static void main(String[] args) {
        //查詢用戶信息
//        query_data("20215154515454", "456");
        //查詢登錄信息
//        System.out.println(UserType("20215154515454", "456"));
        //插入書籍到圖書信息表
//        System.out.println("書名,類別,作者,出版社,出版日期,數(shù)量");
//        AddBooks("高原", "1", "小兒", "中華出版社", "2022-1-9", "5");
        //添加類別
//        AddCategories(5, "神話類");
        //3、添加讀者信息
//        AddReaders("20544545446546", "勞務(wù)", "女", "2", "1112222");
        //4、讀者借書
//        Call Borrowbooks('20215101020051','203','3');
//        BorrowBooks("20215101020051","203","3");
        //5、讀者還書
//        AlsoBook("20215101020051","203","2");
        //-- 7、圖書廢棄
        //update books set books=books-1,extant=extant-1 where number='202';
//        BooksAbandoned("203");
        //-- 8、圖書下架
        //delete from books where number='202';
//        Undercarriage("203");
        //查詢圖書信息
//        System.out.println(BookInformation("205"));
//        AllBookInformation();
        //欠費(fèi)查詢
//        System.out.println(ArrearageTable("20215101020051", "203"));
        //刪除罰款賬單
//        repayment("20215154515454","210");
        //查詢讀者信息表有無(wú)該賬號(hào)
//        System.out.println(ReaderTable("2021510102005"));
         // 打印讀者信息
//        PrintReader("20215101024620");
    }

    static final String DB_URL = "jdbc:mysql://localhost:3306/library";
    static final String USER = "root";
    static final String PASS = "root";

    /**
     * 圖書下架
     *
     * @param number
     * @return
     */
    public static boolean Undercarriage(String number) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "delete from books where number='" + number + "'";
            System.out.println(sql);
            int resultSet = stmt.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(conn, stmt, null);
        }
        return false;
    }

    /**
     * 圖書廢棄
     *
     * @param number
     * @return
     */
    public static String BooksAbandoned(String number) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "update books set books=books-1,extant=extant-1 where number='" + number + "'";
            int resultSet = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, null);
        }
        return number;
    }


    /**
     * 讀者還書
     *
     * @param rnumber  讀者編號(hào)
     * @param bnumber  圖書編號(hào)
     * @param quantity 數(shù)量
     */
    static void AlsoBook(String rnumber, String bnumber, String quantity) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "Call Bookreturn(" + "'" + rnumber + "'" + "," + "'" + bnumber + "'" + "," + "'" + quantity + "'" + ")";
            System.out.println(sql);
            int resultSet = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, null);
        }
    }


    /**
     * 欠費(fèi)罰款查詢
     *
     * @param rnumber
     * @param bnumber
     * @return
     */
    public static String ArrearageTable(String rnumber, String bnumber) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "SELECT sum(money) as arrearage FROM amerce  WHERE rnumber =" + rnumber + " and bnumber= " + bnumber + " ORDER BY quantity";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String a = resultSet.getString("arrearage");
                return a;
            }
            // 完成后關(guān)閉
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (statement != null) statement.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (connection != null) connection.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 通過(guò)學(xué)號(hào)打印借書信息表
     *
     * @param rnumber 讀者編號(hào)
     */
    public static void NumberBookTable(String rnumber) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            String sql = "SELECT * FROM borrow WHERE rnumber =" + rnumber;
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.print(rs.getString("rnumber"));
                System.out.print("\t ,");
                System.out.print(rs.getString("bnumber"));
                System.out.print("\t ,");
                System.out.print(rs.getString("quantity"));
                System.out.print("\t ,");
                System.out.println(rs.getString("btime"));
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }

    }

    /**
     * 打印借書信息表
     *
     * @param rnumber 讀者編號(hào)
     * @param bnumber 書籍編號(hào)
     */
    public static void BookTable(String rnumber, String bnumber) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            String sql = "SELECT * FROM borrow WHERE rnumber =" + rnumber + " and bnumber= " + bnumber;
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.print(rs.getString("rnumber"));
                System.out.print("\t ,");
                System.out.print(rs.getString("bnumber"));
                System.out.print("\t ,");
                System.out.print(rs.getString("quantity"));
                System.out.print("\t ,");
                System.out.println(rs.getString("btime"));
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }


    /**
     * 刪除罰款賬單
     *
     * @param rnumber
     * @param bnumber
     */
    //delete amerce WHERE rnumber='20215154515454' and bnumber='210'
    public static void repayment(String rnumber, String bnumber) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "delete from amerce WHERE rnumber=" + rnumber + " and bnumber=" + bnumber;
            int resultSet = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, null);
        }

    }

    /**
     * 讀者借書
     *
     * @param rnumber 讀者編號(hào)
     */
    public static void BorrowBooks(String rnumber, String bnumber, String quantity) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "Call Borrowbooks(" + "'" + rnumber + "'" + "," + "'" + bnumber + "'" + "," + "'" + quantity + "'" + ")";
            System.out.println(sql);
            int resultSet = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, null);
        }

    }

    /**
     * 添加讀者信息(注冊(cè))
     *
     * @param number
     * @param name
     * @param sex
     * @param kind
     * @param password
     */
    public static void AddReaders(String number, String name, String sex, String kind, String password) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            //      // INSERT INTO reader(number,name,sex,kind,rdate) VALUES('20215101020051','翠花','女','學(xué)生',now(),password);
            String sql = "INSERT INTO reader VALUES(" + "'" + number + "'" + "," + "'" + name + "'" + "," + "'" + sex + "'" + "," + "'" + kind + "'" + "," + "now()" + "," + "'" + password + "'" + ")";
            int resultSet = statement.executeUpdate(sql);
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, null);
        }
    }

    /**
     * 2、添加圖書類別信息
     *
     * @param id
     * @param name
     * @return
     */
    public static String AddCategories(int id, String name) {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "INSERT INTO category() VALUES(" + id + "," + "'" + name + "'" + ")";
            resultSet = statement.executeQuery(sql);
//            int resultSet = statement.executeUpdate(sql);
            // 完成后關(guān)閉
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, resultSet);
        }
        return name;
    }

    /**
     * 添加書籍到圖書信息表
     *
     * @param name     圖書名稱
     * @param category 圖書類別
     * @param author   作者
     * @param press    出版社
     * @param pdate    出版日期
     * @param quantity 要存的數(shù)量
     * @return
     */
    public static String AddBooks(String name, String category, String author, String press, String pdate, String quantity) {
        Connection connection = null;
        ResultSet resultSet = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "call Insertbooks(" + "'" + name + "'" + "," + "'" + category + "'" + "," + "'" + author + "'" + "," + "'" + press + "'" + "," + "'" + pdate + "'" + "," + "'" + quantity + "'" + ")";
            resultSet = statement.executeQuery(sql);
            // 完成后關(guān)閉
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            //錯(cuò)誤處理
            e.printStackTrace();
        }//釋放資源
        finally {
            JDBCUtils.close(connection, statement, resultSet);
        }

        return name;
    }

    /**
     * 查詢所有圖書信息
     *
     * @return 返回值
     */
    public static void AllBookInformation() {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();

            String sql = "SELECT * FROM books";
            ResultSet rs = stmt.executeQuery(sql);
            System.out.println("圖書編號(hào)  圖書名稱 圖書類別 作者 出版社 出版日期 入庫(kù)日期 庫(kù)存總數(shù)量 現(xiàn)存數(shù)量");
            while (rs.next()) {
                System.out.print(rs.getString("number") + "\t");
                System.out.print(rs.getString("name") + "\t");
                System.out.print(rs.getString("category") + "\t");
                System.out.print(rs.getString("author") + "\t");
                System.out.print(rs.getString("press") + "\t");
                System.out.print(rs.getString("pdate") + "\t");
                System.out.print(rs.getString("wdate") + "\t");
                System.out.print(rs.getString("books") + "\t");
                System.out.println(rs.getString("extant"));
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }
    /**
     * 打印讀者信息
     */
    public static void PrintReader(String number){
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            String sql = "SELECT * FROM reader WHERE number =" + number;
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.print(rs.getString("number")+"\t");
                System.out.print(rs.getString("name")+"\t");
                System.out.print(rs.getString("sex")+"\t");
                System.out.print(rs.getString("kind")+"\t");
                System.out.print(rs.getString("rdate")+"\t");
                System.out.println(rs.getString("password"));
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }

    }

    /**
     * 查詢讀者信息表有無(wú)該賬號(hào)
     *
     * @return
     */
    public static Constable ReaderTable(String number) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            String sql = "select number from reader where number=" + number;
            ResultSet rs = stmt.executeQuery(sql);
            if (rs.next()) {
                return false;
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 查詢圖書信息
     *
     * @param number 輸入的密碼
     * @return 返回值
     */
    public static String BookInformation(String number) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            String sql = "SELECT * FROM books WHERE number =" + number;
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String a = rs.getString("number");
                String a1 = ("\t");
                String b = rs.getString("name");
                String b1 = ("\t");
                String c = rs.getString("category");
                String c1 = ("\t");
                String d = rs.getString("author");
                String d1 = ("\t");
                String e = rs.getString("press");
                String e1 = ("\t");
                String f = rs.getString("pdate");
                String f1 = ("\t");
                String g = rs.getString("wdate");
                String g1 = ("\t");
                String h = rs.getString("books");
                String h1 = ("\t");
                String i = rs.getString("extant");
                return a + a1 + b + b1 + c + c1 + d + d1 + e + e1 + f + f1 + g + g1 + h + h1 + i;
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        return null;
    }

    /**
     * 查詢學(xué)生表信息
     *
     * @param number   輸入的賬號(hào)
     * @param password 輸入的密碼
     * @return 返回值
     */
    public static void query_data(String number, String password) {
        Connection conn = null;
        Statement stmt = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

            //創(chuàng)建執(zhí)行環(huán)境
            stmt = conn.createStatement();
            String sql = "select * from reader where number= " + "'" + number + "'" + " and password=" + "'" + password + "'";
            ResultSet rs = stmt.executeQuery(sql);
            while (rs.next()) {
                String a = rs.getString("number");
                String a1 = ("\t");
                String b = rs.getString("name");
                String b1 = ("\t");
                String c = rs.getString("sex");
                String c1 = ("\t");
                String d = rs.getString("kind");
                String d1 = ("\t");
                String e = rs.getString("rdate");
                String e1 = ("\t");
                String f = rs.getString("password");
                System.out.println(a + a1 + b + b1 + c + c1 + d + e + d1 + f);
            }
            // 完成后關(guān)閉
            rs.close();
            stmt.close();
            conn.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
    }

    /**
     * 判斷用戶類型,登錄賬號(hào),返回1表示老師,返回2表示學(xué)生,返回null表示查無(wú)此人
     *
     * @param number 輸入的學(xué)號(hào)
     * @return 返回值
     */
    public static String UserType(String number, String password) {
        Connection connection = null;
        Statement statement = null;
        try {
            //連接數(shù)據(jù)庫(kù),獲得連接對(duì)象
            connection = DriverManager.getConnection(DB_URL, USER, PASS);
            //創(chuàng)建執(zhí)行環(huán)境
            statement = connection.createStatement();
            //執(zhí)行sql語(yǔ)句,得到結(jié)果集 resultSet
            String sql = "select kind from reader where number= " + "'" + number + "'" + " and password=" + "'" + password + "'";
            ResultSet resultSet = statement.executeQuery(sql);
            while (resultSet.next()) {
                String a = resultSet.getString("kind");
                return a;
            }
            // 完成后關(guān)閉
            resultSet.close();
            statement.close();
            connection.close();
        } catch (SQLException se) {
            // 處理 JDBC 錯(cuò)誤
            se.printStackTrace();
        } catch (Exception e) {
            // 處理 Class.forName 錯(cuò)誤
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (statement != null) statement.close();
            } catch (SQLException se2) {
            }// 什么都不做
            try {
                if (connection != null) connection.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        return null;//這樣可以使得調(diào)用方無(wú)需檢查結(jié)果是否為null
    }
}

8.JavaOK 頁(yè)面

JavaOK是運(yùn)行調(diào)用JavaTest和JOBCUtili方法的主頁(yè)面,在這個(gè)類運(yùn)行可以實(shí)現(xiàn)系統(tǒng)的管理,這個(gè)系統(tǒng)仍有不少的bug沒(méi)修復(fù),但是可以正常跑起來(lái)了,可以根據(jù)自己的理解,把代碼經(jīng)行完善和修復(fù)

下面是JavaOK頁(yè)面的代碼


package com.moyida.linkage;
import java.lang.constant.Constable;
import java.util.Scanner;

public class JavaOk {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (true) {
            System.out.println("=============首頁(yè)==============");
            System.out.println("1、登錄");
            System.out.println("2、注冊(cè)");
            int reg = sc.nextInt();
            switch (reg) {
                case 1:
                    //登錄
                    while (true) {
                        System.out.println("=============登陸頁(yè)面==============");
                        System.out.println("請(qǐng)您輸入賬號(hào)");
                        String acc = sc.next();
                        System.out.println("請(qǐng)您輸入密碼");
                        String pass = sc.next();
                        String sum = JavaTest.UserType(acc, pass);
                        if (sum == null) {
                            System.out.println("對(duì)不起,查無(wú)此人,請(qǐng)重新輸入");
                            break;
                        }
//                        int a = Integer.parseInt(sum);
//                        String a=sum;
                        //判斷用戶類型,登錄賬號(hào),返回1表示老師,返回2表示學(xué)生,返回null表示查無(wú)此人
                        System.out.println("返回的數(shù)據(jù)是" + sum);
                        switch (sum) {
                            case "1":
                                System.out.println("歡迎管理員登錄");
                                conservator(sc);
                                break;
                            case "2":
                                System.out.println("歡迎學(xué)生登錄");
                                operate(sc, acc);
                                break;
                            default:
                                System.out.println("對(duì)不起,查無(wú)此人");
                                break;
                        }
                        break;
                    }
                case 2:
                    //注冊(cè)
                    Register(sc);
                    break;
                default:
                    System.out.println("您輸入的命令錯(cuò)誤,請(qǐng)重新輸入!");
                    break;
            }
        }
    }

    /**
     * 注冊(cè)
     *
     * @param sc
     */
    private static void Register(Scanner sc) {
        System.out.println("=============注冊(cè)頁(yè)面==============");
        System.out.println("請(qǐng)輸入要注冊(cè)的賬號(hào)(學(xué)號(hào))");
        String number = sc.next();
        //查詢數(shù)據(jù)庫(kù)中有無(wú)該賬號(hào)
        Constable aaa = JavaTest.ReaderTable(number);
        if (aaa == null) {
            //沒(méi)有賬號(hào),可以進(jìn)行
            System.out.println("請(qǐng)輸入您的名字");
            String name = sc.next();
            System.out.println("請(qǐng)輸入您的性別");
            String sex = sc.next();
            System.out.println("請(qǐng)輸入您的類型  學(xué)生 2/管理員 1");
            int kind = sc.nextInt();
            System.out.println("請(qǐng)輸入您的登錄密碼:");
            String pass = sc.next();
            //調(diào)用注冊(cè)方法
            JavaTest.AddReaders(number, name, sex, String.valueOf(kind), pass);
            System.out.println("注冊(cè)成功!");
            //打印注冊(cè)信息
            System.out.println("您的注冊(cè)信息如下:");
            JavaTest.PrintReader(number);
        }else {
            System.out.println("該賬號(hào)已注冊(cè)!");
        }

    }

    /**
     * 管理員操作頁(yè)面
     *
     * @param sc
     */
    private static void conservator(Scanner sc) {
        while (true) {
            System.out.println("=============操作頁(yè)面==============");
            System.out.println("0、退出");
            System.out.println("1、添加圖書表書籍");
            System.out.println("2、添加圖書類別信息");
            System.out.println("3、圖書廢棄");
            System.out.println("4、圖書下架");
            System.out.println("5、查詢?nèi)繄D書信息");
            int i = sc.nextInt();
            switch (i) {
                case 0:
                    System.out.println("已退出賬號(hào),歡迎再次登錄!");
                    return;
                case 1:
                    System.out.println("=============添加書籍頁(yè)面==============");
                    System.out.println("圖書名稱");
                    String name = sc.next();
                    System.out.println("圖書類別");
                    String category = sc.next();
                    System.out.println("作者");
                    String author = sc.next();
                    System.out.println("出版社");
                    String press = sc.next();
                    System.out.println("出版日期");
                    String pdate = sc.next();
                    System.out.println("要存的數(shù)量");
                    String quantity = sc.next();
                    String charu = JavaTest.AddBooks(name, category, author, press, pdate, quantity);
                    System.out.println("添加成功");
                    break;
                case 2:
                    System.out.println("=============添加圖書類別頁(yè)面==============");
                    System.out.println("輸入類別編號(hào)");
                    int leibie = sc.nextInt();
                    System.out.println("輸入類別名稱");
                    String name1 = sc.next();
                    JavaTest.AddCategories(leibie, name1);
                    System.out.println("添加成功");
                    break;
                case 3:
                    System.out.println("=============圖書廢棄頁(yè)面==============");
                    System.out.println("請(qǐng)輸入要廢棄圖書的圖書編號(hào)");
                    String reduce = sc.next();
                    System.out.println("您要廢除的書籍是:");
                    System.out.println(JavaTest.BookInformation(reduce));
                    System.out.println("是否確認(rèn)廢除y/n");
                    String rs = sc.next();
                    switch (rs) {
                        case "y":
                            //可以廢除
                            String ff = JavaTest.BooksAbandoned(reduce);
                            System.out.println(JavaTest.BookInformation(reduce));
                            System.out.println("廢棄成功,該圖書減一");
                            break;
                        default:
                            System.out.println("您取消廢除,當(dāng)前書籍繼續(xù)保留~");
                    }

                    break;
                case 4:
                    System.out.println("=============圖書下架頁(yè)面==============");
                    System.out.println("請(qǐng)輸入要下架圖書的圖書編號(hào)");
                    String reduce1 = sc.next();
                    System.out.println("您要下架的書籍是:");
                    System.out.println(JavaTest.BookInformation(reduce1));
                    System.out.println("是否確認(rèn)把該圖書下架y/n");
                    String rs1 = sc.next();
                    switch (rs1) {
                        case "y":
                            //可以廢除
                            String ff = JavaTest.BooksAbandoned(reduce1);
                            System.out.println(JavaTest.Undercarriage(reduce1));
                            System.out.println("下架成功,圖書已從圖書系統(tǒng)中去除");
                            break;
                        default:
                            System.out.println("您取消廢除,當(dāng)前書籍繼續(xù)保留~");
                    }
                    break;
                case 5:
                    //查看所有書籍
                    JavaTest.AllBookInformation();
                    break;
                default:
                    System.out.println("輸入錯(cuò)誤!");
                    break;
            }
        }
    }

    /**
     * 學(xué)生操作頁(yè)面
     *
     * @param sc
     */
    private static void operate(Scanner sc, String acc) {
        while (true) {
            System.out.println("=============學(xué)生操作頁(yè)面==============");
            System.out.println("0、退出");
            System.out.println("1、查看所有書籍");
            System.out.println("2、借書");
            System.out.println("3、還書");
            String student = sc.next();
            switch (student) {
                case "0":
                    System.out.println("已退出賬號(hào),歡迎再次登錄!");
                    return;
                case "1":
                    //查看所有書籍
                    JavaTest.AllBookInformation();
                    break;
                case "2":
                    //借書
                    //                public static boolean BorrowBooks(String rnumber, String bnumber, String quantity) {
                    System.out.println("請(qǐng)輸入要借的書籍編號(hào)");
                    String Borrow = sc.next();
                    System.out.println("您要借的書籍是:");
                    System.out.println(JavaTest.BookInformation(Borrow));
                    System.out.println("是否借該圖書?y/n");
                    String rs1 = sc.next();
                    switch (rs1) {
                        case "y":
                            //可以借書
                            System.out.println("您要借幾本書?");
                            String books = sc.next();
                            JavaTest.BorrowBooks(acc, Borrow, books);
                            System.out.println("借書完成,您的借書信息如下");
                            //打印借書信息
                            JavaTest.BookTable(acc, Borrow);
                            System.out.println("");
                            break;
                        default:
                            System.out.println("您取消借書操作,歡迎再次使用!");
                    }
                    break;
                case "3":
                    //還書
                    System.out.println("您可以還的書籍如下");
                    JavaTest.NumberBookTable(acc);
                    System.out.println("");
                    System.out.println("請(qǐng)輸入要還的書籍編號(hào)");
                    String AlsoBook = sc.next();
                    System.out.println("您要還的書籍是:");
                    //打印借書信息
                    JavaTest.BookTable(acc, AlsoBook);
                    //再次確定歸還
                    System.out.println("是否還該圖書?y/n");
                    String rs2 = sc.next();
                    switch (rs2) {
                        case "y":
                            //可以還書
                            System.out.println("您要還此編號(hào)的幾本書?");
                            String books = sc.next();
                            // 還書
                            JavaTest.AlsoBook(acc, AlsoBook, books);
                            //查詢欠費(fèi)賬單有沒(méi)有欠費(fèi)
                            String bill = JavaTest.ArrearageTable(acc, AlsoBook);
                            if (bill == null) {
                                //可以了
                                System.out.println("還書完成,您還有此類書籍尚為歸還");
                                //打印借書信息
                                JavaTest.BookTable(acc, AlsoBook);
                                break;
                            } else {
                                //錢沒(méi)還
                                while (true) {
                                    System.out.println("您欠費(fèi)的金額是" + bill);
                                    System.out.println("如已支付,請(qǐng)輸入內(nèi)容:支付完成");
                                    String ff = sc.next();
                                    String dd = "支付完成";
                                    if (ff.equals(dd)) {
                                        //刪除欠費(fèi)賬單
                                        JavaTest.repayment(acc, AlsoBook);
                                        //打印借書信息
                                        System.out.println("還書完成,您還有此類書籍尚為歸還");
                                        //打印借書信息
                                        JavaTest.BookTable(acc, AlsoBook);
                                        break;
                                    } else {
                                        System.out.println("支付失敗,請(qǐng)完成支付");
                                    }
                                }
                            }
                    }
            }
        }

    }
}

9.運(yùn)行

在IEDA的JavaOK頁(yè)面,右鍵點(diǎn)擊運(yùn)行,就可以使用了。

10.資料

我在阿里云盤中存有該系統(tǒng)程序的源代碼,可提供下載學(xué)習(xí)使用。

阿里網(wǎng)盤 鏈接

Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館...系統(tǒng)(詳細(xì)教程)阿里云盤分享

到了這里,關(guān)于Java連接數(shù)據(jù)庫(kù)實(shí)現(xiàn)圖書館管理系統(tǒng)(詳細(xì)教程)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 將Java與數(shù)據(jù)庫(kù)連接起來(lái)(配置idea),實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)

    將Java與數(shù)據(jù)庫(kù)連接起來(lái)(配置idea),實(shí)現(xiàn)一個(gè)簡(jiǎn)單的圖書管理系統(tǒng)

    目錄 1.通過(guò)connector連接Java和Mysql數(shù)據(jù)庫(kù) (1)首先配置idea (2)如何把java和mysql連接起來(lái) 1.簡(jiǎn)單連接 2.認(rèn)識(shí)PrepareStatement 2.實(shí)現(xiàn)簡(jiǎn)單的圖書管理系統(tǒng) (1)創(chuàng)建數(shù)據(jù)庫(kù)jdbc,并且創(chuàng)建出book表 ?(2)在idea中書寫代碼將mysql與java連接,實(shí)現(xiàn)基本的增刪改查 1.JdbcUtiles類,一個(gè)使用jdbc的工具

    2024年02月11日
    瀏覽(28)
  • 數(shù)據(jù)庫(kù)課程設(shè)計(jì)-圖書館管理系統(tǒng)(3. 用戶軟件,基于QT)

    數(shù)據(jù)庫(kù)課程設(shè)計(jì)-圖書館管理系統(tǒng)(3. 用戶軟件,基于QT)

    如果對(duì)你有幫助,可以給卑微的博主留個(gè)贊、關(guān)注、收藏? ?(不是)? (騙一下數(shù)據(jù),說(shuō)不定以后面試就過(guò)了,拜謝) 用戶軟件的實(shí)現(xiàn)根據(jù)自己所用語(yǔ)言選擇對(duì)應(yīng)開發(fā)工具,c++ 較常用的是QT或者M(jìn)FC。這里使用QT做個(gè)示例,但博主前端屬實(shí)現(xiàn)學(xué)現(xiàn)賣,也就是能用級(jí)別,可以參考一下

    2024年02月09日
    瀏覽(25)
  • 圖書信息管理系統(tǒng)(JAVA版)連接MySQL數(shù)據(jù)庫(kù)+GUI

    圖書信息管理系統(tǒng)(JAVA版)連接MySQL數(shù)據(jù)庫(kù)+GUI

    本次項(xiàng)目是實(shí)現(xiàn)的一個(gè)圖書信息管理系統(tǒng),功能算不上太多,但也比較齊全。 隨著社會(huì)的發(fā)展,人們對(duì)知識(shí)的需求也在不斷增長(zhǎng)。書籍作為人們獲取并增長(zhǎng)知識(shí)的主要途徑,使得書城,書店在人們的生活中占有了一定的位置。但是近幾年,隨著書量的不斷增長(zhǎng),造成了圖書擠

    2024年02月04日
    瀏覽(25)
  • 基于java的圖書借閱管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(源代碼+數(shù)據(jù)庫(kù)+部署文檔+部署視頻)

    基于java的圖書借閱管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(源代碼+數(shù)據(jù)庫(kù)+部署文檔+部署視頻)

    ?????? 圖書管理系統(tǒng) 該系統(tǒng)對(duì)數(shù)據(jù)進(jìn)行保存、修改、刪除等管理。為用戶提供了一個(gè)友好、簡(jiǎn)單快捷的運(yùn)行操作平臺(tái)。該統(tǒng)對(duì)數(shù)據(jù)進(jìn)行保存、修改、刪除等管理,為用戶提供了一個(gè)友好、簡(jiǎn)單快捷的運(yùn)行操作平臺(tái)。本系統(tǒng)的各界面設(shè)計(jì)友好、流程正確、功能也較為完善,

    2024年02月03日
    瀏覽(29)
  • Java 實(shí)現(xiàn)圖書館管理系統(tǒng)

    Java 實(shí)現(xiàn)圖書館管理系統(tǒng)

    目錄 一:創(chuàng)建對(duì)象 1.學(xué)生類對(duì)象Student?: 2.圖書類對(duì)象book : 3.管理員類對(duì)象OP: 二.創(chuàng)建主要交互界面MainMenu,并實(shí)現(xiàn)主界面功能 1.創(chuàng)建交互界面: 2.實(shí)現(xiàn)主界面功能: 三:創(chuàng)建OP管理界面: 1.創(chuàng)建主要交互界面及實(shí)現(xiàn)\\\"管理學(xué)生\\\"功能OPmenu: (1).交互界面: (2):實(shí)現(xiàn)\\\"管理學(xué)生\\\"功能: 2.實(shí)現(xiàn)\\\"管理

    2024年02月12日
    瀏覽(29)
  • 基于JAVA圖書館管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    基于JAVA圖書館管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    【后臺(tái)管理員功能】 廣告管理:設(shè)置小程序首頁(yè)輪播圖廣告和鏈接 留言列表:所有用戶留言信息列表,支持刪除 會(huì)員列表:查看所有注冊(cè)會(huì)員信息,支持刪除 資訊分類:錄入、修改、查看、刪除資訊分類 錄入資訊:錄入資訊標(biāo)題、內(nèi)容等信息 管理資訊:查看已錄入資訊列

    2024年02月13日
    瀏覽(31)
  • idea實(shí)現(xiàn)Java連接MySQL數(shù)據(jù)庫(kù)

    idea實(shí)現(xiàn)Java連接MySQL數(shù)據(jù)庫(kù)

    首先如果沒(méi)有mysql的需要先下載MySQL,可以看這個(gè)教程: Mysql超詳細(xì)安裝配置教程(保姆級(jí))_mysql安裝及配置超詳細(xì)教程-CSDN博客 官網(wǎng):MySQL :: Download Connector/J 解壓并將驅(qū)動(dòng)jar包導(dǎo)入idea , 在Java項(xiàng)目中創(chuàng)建一個(gè)bin文件夾,然后把jar包Ctrl+C,V到bin文件夾 ? 然后lib右鍵,點(diǎn)擊Add as L

    2024年02月03日
    瀏覽(21)
  • 用IDEA實(shí)現(xiàn)Java與數(shù)據(jù)庫(kù)連接

    用IDEA實(shí)現(xiàn)Java與數(shù)據(jù)庫(kù)連接

    用sqlyog只能對(duì)所存儲(chǔ)數(shù)據(jù)進(jìn)行增刪改查等操作,與java結(jié)合,便可將進(jìn)行更多操作。代碼怎么寫,數(shù)據(jù)就可以干什么。 為什么要用jar包: jar包可以直接導(dǎo)入,也就是直接用別人寫好的代碼,這部分你就不用再寫了。 1.獲取你的mysql版本號(hào): 輸入status 看到: 其中Server version:就

    2024年04月11日
    瀏覽(24)
  • 33基于Java簡(jiǎn)單實(shí)現(xiàn)圖書館借書管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    33基于Java簡(jiǎn)單實(shí)現(xiàn)圖書館借書管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)

    本章節(jié)給大家介紹一個(gè)基于Java簡(jiǎn)單實(shí)現(xiàn)圖書館借書管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 項(xiàng)目總體分為倆種角色,分別是管理員和閱讀者,管理員可以登錄系統(tǒng)中,進(jìn)行圖書管理,上架下架圖書,對(duì)用戶進(jìn)行管理、對(duì)讀者進(jìn)行管理、查看借閱記錄管理等,讀者角色可以登錄系統(tǒng)查詢圖書信息

    2024年02月03日
    瀏覽(26)
  • java畢業(yè)設(shè)計(jì)——基于java+Java Swing+sqlserver的圖書館書庫(kù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(畢業(yè)論文+程序源碼)——圖書館書庫(kù)管理系統(tǒng)

    java畢業(yè)設(shè)計(jì)——基于java+Java Swing+sqlserver的圖書館書庫(kù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(畢業(yè)論文+程序源碼)——圖書館書庫(kù)管理系統(tǒng)

    大家好,今天給大家介紹基于java+Java Swing+sqlserver的圖書館書庫(kù)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),文章末尾附有本畢業(yè)設(shè)計(jì)的論文和源碼下載地址哦。需要下載開題報(bào)告PPT模板及論文答辯PPT模板等的小伙伴,可以進(jìn)入我的博客主頁(yè)查看左側(cè)最下面欄目中的自助下載方法哦 文章目錄: 畢業(yè)

    2024年02月03日
    瀏覽(35)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包