
該功能用到的軟件為 IDEA 、Navicat 、云服務(wù)器(非必須)
源碼下載
https://www.aliyundrive.com/s/UTz8pNxobGK
一、建立數(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)盤 鏈接文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-460456.html
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)!