久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5552|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

SQLServer數(shù)據(jù)庫圖書管理系統(tǒng)設(shè)計(jì) 基于Java的源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:823873 發(fā)表于 2020-11-29 14:07 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
  •           項(xiàng)目環(huán)境
    • Windows2000或以上版本;
    • SQLServer 2005或以上版本。
  •           項(xiàng)目目的
    掌握數(shù)據(jù)庫設(shè)計(jì)的基本方法,了解C/S與B/S結(jié)構(gòu)應(yīng)用系統(tǒng)的特點(diǎn)與適用場合,了解C/S與B/S結(jié)構(gòu)應(yīng)用系統(tǒng)的不同開發(fā)設(shè)計(jì)環(huán)境與開發(fā)設(shè)計(jì)方法,綜合運(yùn)用前面實(shí)驗(yàn)掌握的數(shù)據(jù)庫知識(shí)與技術(shù)設(shè)計(jì)某小型數(shù)據(jù)庫應(yīng)用系統(tǒng)。
  •           項(xiàng)目要求
完成實(shí)驗(yàn)指導(dǎo)書中p255 (2)。
  •           項(xiàng)目設(shè)計(jì)開發(fā)過程及參考源代碼
  • 需求分析
實(shí)現(xiàn)需要我們能夠?qū)D書數(shù)據(jù)進(jìn)行管理,開發(fā)圖書管理系統(tǒng),簡化管理以及借閱圖書信息的步驟。
功能分析:
  •           登錄功能(包括管理員登錄,讀者登錄)
  •           注冊功能(自主注冊)
  •           讀者功能模塊
  •           管理員功能模塊
  •           管理員對圖書信息的管理(包括增刪改,查詢,瀏覽圖書信息)
  •           管理員對讀者信息的管理(包括瀏覽,修改讀者信息,以及添加讀者信息)
  •           讀者功能(包括瀏覽圖書信息,以及借閱圖書,查詢圖書信息)
  •           管理員對借閱記錄的管理(保存借閱記錄,查看借閱記錄)
  •           管理員對還書記錄的管理(保存還書記錄,歸還圖書,超期判斷)
  • 數(shù)據(jù)庫概念結(jié)構(gòu)設(shè)計(jì)

  • 數(shù)據(jù)庫邏輯結(jié)構(gòu)設(shè)計(jì)
下畫線為主碼
GUL_LOGIN   (  SNAME,  PASSWORD ) 管理員登錄表。

BORROW     (BNO ,RNO, BNAME,BRNUM, BOTIME) 借閱表,包括圖書號(hào),讀者編號(hào),圖書名稱,借閱時(shí)間。

BOOK_LIST  (BNO, BNAEM, PRICE, AUTHOR. INTIME, BNUM ,BWHERE, ISBORROW)圖書表,包括圖書編號(hào)、圖書名稱,價(jià)格,入庫時(shí)間,藏書位置,是否被借閱。

BACK_LIST   (BNO , RNO , BNAME, BACKTIME, PRISE)還書表,包括圖書號(hào),讀者編號(hào),圖書名稱,還書時(shí)間,超期金額。
REDER_LIST  (RNO, RNAME, RSEX, RGRADE, DEPNAME, CLASS,PASSWODE,BNUM,BMAX) 讀者信息表,包括讀者編號(hào),讀者姓名,性別,年級,所在系別,班級,密碼, 借閱數(shù)量,最大借閱數(shù)量。
  • 表及視圖的創(chuàng)建代碼

  • 存儲(chǔ)過程和觸發(fā)器的設(shè)計(jì)
當(dāng)歸還圖書或是借閱圖書時(shí),圖書信息表中要更改相應(yīng)的借出或未借出記錄。
借書時(shí)同步更改圖書表,更改屬性ISBORROW。
this.sql=
        "CREATE TRIGGER DB_BOOKBOOK_INSERT2 ON BORROW_LIST\n" +
        "AFTER INSERT AS\n" +
        "DECLARE @bno varchar(30);\n" +
        "SELECT @bno =bno \n" +
        "FROM inserted \n" +
        "\n" +
        "BEGIN\n" +
        "UPDATE BOOK_LIST \n" +
        "SET ISBORROW ='已借出'\n" +
        "WHERE BNO=@bno\n" +
        "END";
rs = stat.executeQuery(this.sql);

還書時(shí)同步更改圖書表,更改屬性ISBORROW。
this.sql=
        "CREATE TRIGGER DB_BACK_LIST_INSERT1 ON BACK_LIST\n" +
                "AFTER INSERT AS\n" +
                "DECLARE @bno varchar(30);\n" +
                "SELECT @bno =bno \n" +
                "FROM inserted \n" +
                "\n" +
                "BEGIN\n" +
                "UPDATE BOOK_LIST \n" +
                "SET ISBORROW ='未借出'\n" +
                "WHERE BNO=@bno\n" +
                "END";
rs = stat.executeQuery(this.sql);

設(shè)置借閱數(shù)量不能大于限制總數(shù)
String sql=
        " CREATE TRIGGER BorUPDETE\n" +
                " ON REDER_LIST\n" +
                " AFTER UPDATE\n" +
                " AS\n" +
                " DECLARE @ABN INT\n" +
                "  DECLARE @MBN INT\n" +
                " SELECT @ANUM = BNUM,@MNUMN=BMAX FROM INSERTED\n" +
                " IF(@ANUM>@MNUMN)\n" +
                "  BEGIN\n" +
                " RAISERROR('已達(dá)到最大可借書數(shù)量',17,1)\n" +
                " rollback transaction\n" +
                " END";
rs = stmt.executeQuery(sql);

借閱書籍時(shí)自動(dòng)更新學(xué)生借閱數(shù)量
String sql=
        " CREATE TRIGGER rnumUPDETE\n" +
                " ON BORROW_LIST\n" +
                " AFTER INSERT\n" +
                " AS\n" +
                " DECLARE @NUN INT\n" +
                  " SELECT @NUM = BNUM FROM INSERTED\n" +
              
                "  BEGIN\n" +
                " UPDATE REDER_LIST\n" +
                " SET BNUM=@BNUM+1\n" +
                " END";
rs = stmt.executeQuery(sql);

設(shè)置還書時(shí)間大于借閱時(shí)間。

String sql=
        " CREATE TRIGGER \n" +
                "            ON BACK_LIST\n" +
                "            AFTER INSERT\n" +
                "            AS\n" +
                "            DECLARE @BOTIME1 DATE\n" +
                "            DECLARE @BACKTIME1  DATE\n" +
                "            SELECT @BOTIME1 = INSERTED.BOTIME ,@BACKTIME1 = INSERTED.@BACKTIME FROM INSERTED\n" +
                "            IF(@BOTIME1> @BACKTIME1 OR (SELECT YEAR(@BOTIME1) AS YEAR FROM INSERTED)!=(SELECT YEAR( @BACKTIME1) AS YEAR FROM INSERTED))\n" +
                "            BEGIN\n" +
                "            RAISERROR('輸入日期不正確!',17,1)\n" +
                "            rollback transaction\n" +
                "            END";
rs = stmt.executeQuery(sql);

判斷超期金額:
String sql=
        " CREATE TRIGGER \n" +
     "            ON BACK_LIST\n" +
     "            AFTER INSERT\n" +
     "            AS\n" +
     "            DECLARE @NUMDAY  DATE\n"+

     "            SELECT @NUMDAY =Z.TD" +
                "SELECT  TOTALDAY  TD --得到借書時(shí)間與還書時(shí)間之間相差多少天,使用內(nèi)嵌視圖\n" +
                "FROM\n" +
                "(\n" +
                "SELECT DAY(X.PDATE)-DAY(Y.NDATE) TOTALDAY\n" +
                "FROM \n" +
                "\n" +
                "(SELECT RNO,BOTIME PDATE \n" +
                "FROM BORROW_LIST)X,\n" +
                "\n" +
                "(SELECT RNO ,BACKTIME NDATE\n" +
                "FROM BACK_LIST)Y\n" +
                "\n" +
                "WHERE X.RNO =Y.RNO \n" +
                ")Z\n" +
     "            IF(NUMDAY>=60)\n" +
     "            BEGIN\n" +
     "            RAISERROR('已超期!',17,1)\n" +
     "           UPDATE BACK_LIST\n" +
     "           SET PRISE=(NUMDAY-60)*2" +
                "END";
rs = stmt.executeQuery(sql);




前臺(tái)系統(tǒng)連接數(shù)據(jù)庫代碼
String JDriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";// SQL數(shù)據(jù)庫引擎
String connectDB = "jdbc:sqlserver://127.0.0.1:0;DatabaseName=db_tsgl";
try {

    Class.forName(JDriver);// 加載數(shù)據(jù)庫引擎,返回給定字符串名的類
    user = "sa";// 你自己創(chuàng)建的用戶名字和密碼!!!!!!!!!!!!
    password1 = "123456";
    ct = DriverManager.getConnection(connectDB,user,password1);// 連接數(shù)據(jù)庫對象
pstmt = ct.prepareStatement(strsql);

} catch (Exception arg1) {
    arg1.printStackTrace();
} finally {
    try {
        if (rs != null) {
            rs.close();
            rs = null;
        }
        if (pstmt != null) {
            pstmt.close();
            pstmt = null;
        }
        if (ct != null) {
            ct.close();
            ct = null;
        }
    } catch (Exception arg2) {
        arg2.printStackTrace();
    }


  • 具體實(shí)現(xiàn)

首先在數(shù)據(jù)庫中建立基本信息。在通過系統(tǒng)來操控其中數(shù)據(jù)。
學(xué)生登錄表基本信息
管理員登錄基本信息:
以及圖書基本信息:

以及讀者基本信息:
  • 登錄模塊
1)管理員登錄
輸入相應(yīng)的用戶名,以及密碼。系統(tǒng)在數(shù)據(jù)庫中調(diào)取管理員登錄信息表,匹配其中的用戶名以及密碼是否匹配。

若不匹配,則提示輸入錯(cuò)入,累計(jì)三次輸入錯(cuò)誤,自動(dòng)退出。

  • 學(xué)生登錄

輸入相應(yīng)的用戶名,以及密碼。系統(tǒng)在數(shù)據(jù)庫中調(diào)取學(xué)生登錄信息表,匹配其中的用戶名以及密碼是否匹配。

若不匹配,則提示輸入錯(cuò)入,累計(jì)三次輸入錯(cuò)誤,自動(dòng)退出。

  • 注冊
若之前數(shù)據(jù)庫中沒有,相應(yīng)的記錄,則輸入相應(yīng)的用戶名,密碼,以及所屬權(quán)限。入下圖:
注冊之后數(shù)據(jù)插入數(shù)據(jù)庫的學(xué)生登錄表。


  • 管理員模塊
通過管理員賬號(hào)登錄

  • 瀏覽圖書信息
點(diǎn)擊按鈕瀏覽,在界面顯示圖書信息。
  •   查詢圖書信息
輸入圖書號(hào),查詢結(jié)果會(huì)顯示在界面。
3)添加圖書信息
點(diǎn)擊添加按鈕,在彈出來的界面輸入相應(yīng)信息后,再次點(diǎn)擊添加。

結(jié)果顯示:成功添加。并顯示出來。

數(shù)據(jù)庫中圖書表中也添加相應(yīng)的數(shù)據(jù)

4)修改圖書信息
點(diǎn)擊修改按鈕,提示如下:
點(diǎn)擊確定,后顯示如下

再次點(diǎn)擊確定,即可修改數(shù)據(jù)
如將圖書價(jià)格改為100.
點(diǎn)擊修改,提示修改成功
顯示如下:

數(shù)據(jù)庫中相應(yīng)也同步修改,結(jié)果顯示修改成100.
5)刪除功能
點(diǎn)擊刪除按鈕,提示
點(diǎn)擊確定,提示

點(diǎn)擊確定 ,如刪除剛才修改的數(shù)據(jù)。
顯示界面:
未顯示其信息:
成功刪除。
數(shù)據(jù)庫同步刪除:
6)借閱功能
點(diǎn)擊借閱按鈕,提示

點(diǎn)擊確定:輸入信息
點(diǎn)擊借閱,在界面中顯示,借閱的相關(guān)信息

再次瀏覽圖書信息顯示編號(hào)為1 的圖書已被借出

假如再次借同一本書(已借出的書)
  • 還書功能
借書記錄如下:

圖書基本信息如下:編號(hào)為1 2 3的圖書已借出

點(diǎn)擊還書按鈕,提示
點(diǎn)擊確定,歸還圖書編號(hào)為1 的圖書。

歸還后在還書記錄界面,顯示所還記錄。

再次瀏覽圖書信息。發(fā)現(xiàn)編號(hào)為1的圖書已被自動(dòng)歸還,更新借出記錄。之前為已借出,現(xiàn)在改為未借出。

  • 查看讀者信息

10)修改讀者信息
點(diǎn)擊修改讀者信息按鈕,
點(diǎn)擊確定

修改名字為張飛9的讀者信息,更改其名字為岳飛。
更改成功
數(shù)據(jù)庫中也做出同步修改

  •   學(xué)生模塊

通過相應(yīng)的用戶名和密碼,系統(tǒng)調(diào)取數(shù)據(jù)庫中的學(xué)生登錄信息表,匹配其中信息。若正確則顯示如下:
  • 查詢圖書信息
查詢圖書號(hào)為1的圖書信息。
  • 借閱
借閱編號(hào)為4的圖書。
再次查看圖書信息,圖書編號(hào)為4的圖書已被借出,符合實(shí)際邏輯。
  • 瀏覽圖書信息
點(diǎn)擊瀏覽按鈕即可看到圖書信息。

  • 項(xiàng)目總結(jié)
通過此次綜合性,加強(qiáng)對數(shù)據(jù)庫的理解與運(yùn)用以及貫通java,實(shí)現(xiàn)數(shù)據(jù)庫和前端的連接。利用圖形用戶界面,實(shí)現(xiàn)用戶交互,進(jìn)行圖書信息管理。可以完成對數(shù)據(jù)庫的操作。滿足實(shí)際需求。

以上的Word格式文檔51黑下載地址:
先哥 圖書管理子系統(tǒng).doc (1.97 MB, 下載次數(shù): 18)
為防止有人抄,只公開部分代碼(不含數(shù)據(jù)庫和界面):
源碼.7z (5.12 KB, 下載次數(shù): 17)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕 国产 | 91精品国产99 | 亚洲精品久久久久久久久久久久久 | 国产丝袜一区二区三区免费视频 | 亚洲国产二区 | 观看毛片 | 毛片一级片 | 亚洲免费三级 | 日韩在线精品视频 | 国产一区二区三区高清 | 一区二区三区在线观看视频 | 最新国产在线 | 精品一区电影 | 日本在线观看网址 | 中文字幕日韩三级 | 欧美全黄 | 香蕉婷婷 | 激情av网站 | 久久久久久久一区二区三区 | 一级大片 | 在线观看黄视频 | 精品欧美一区二区精品久久久 | 自拍视频一区二区三区 | 羞羞视频在线观免费观看 | 中文字幕在线第一页 | 91精品国产高清久久久久久久久 | 国产欧美一区二区三区日本久久久 | 在线日韩 | 国产精品一区二区视频 | 日韩国产一区二区三区 | 日本一区二区视频 | 久久久久99 | 久草在线免费资源 | 精品视频导航 | 男女羞羞视频免费看 | 国产黄色网址在线观看 | 青青伊人久久 | 国产蜜臀 | 偷拍自拍在线观看 | 综合二区 | 国产精品av久久久久久久久久 |