基于Bootstrap和本地存储实现简易的图书管理系统

Bootstrap3 简介

Bootstrap3 是 CSS 的一个库,能够为我们提供多种 CSS 样式模版。

本地存储简介

将数据存储在本地,只要不主动删除,数据就会一直存在。本地存储中的数据是以键值对的形式存在的。

如何实现本地存储?

localStorage.setItem("data", JSON.stringify(localArr)) // data 作为键名
var dataList = localStorage.getItem("data");  //获取本地数据键名为 data 的值

实现过程

如何将本地数据渲染到网页?

将数据按照格式渲染——模版引擎

模版:

  <script type="text/html" id="bookList">
        <!-- 遍历数组中每一个对象的每一个值 -->
         {{each list value}}
    <tr class="success">
        <th>{{value.BookId}}</th>
        <th>{{value.BookName}}</th>
        <th>{{value.Author}}</th>
        <th>{{value.Publisher}}</th>
        <th>{{value.PublicTime}}</th>
        <th>{{value.BookNumber}}</th>
        <th>{{value.BookPrice}}</th>
        <th>{{value.BookType}}</th>
        <th>{{value.INSS}}</th>
    </tr>
    {{/each}}
    </script>

调用形式:

//数据存入本地
        localStorage.setItem("tempData", JSON.stringify(tempArr))
        var tempDataList = localStorage.getItem("tempData")
        tempDataList = JSON.parse(tempDataList)
//此处主要为模版引擎的调用
        var htmlBookList = template('bookList', { list: tempDataList })
        // 渲染html结构
        document.getElementById('searchBookList').innerHTML = htmlBookList// 初始渲染加上新渲染
    } else {

图书添加功能

var navClickItems = document.querySelectorAll(".navClick");
var panelShow = document.querySelectorAll(".panelShow");
var inputItems = document.querySelectorAll("#inputInfo input");
var confirmAdd = document.querySelector("#confirmAdd");
var flag //用于判断数据是否出现空或者重复
var flagData = true
var localArr = []
var idList
var dataList = localStorage.getItem("data");  //获取本地数据的列表
var resultShow = document.querySelector("#resultShow")
dataList = JSON.parse(dataList);  //将本地数据转换为对象
if (dataList !== null) {
    for (const obj of dataList)
        localArr.push(obj) //将本地数据压入本地数组中存储
}

// console.log(dataList[0].BookId); // 打印第一个对象的BookId
// console.log(dataList[1].BookId); // 打印第二个对象的BookId
var data = {
    BookId: '',
    BookName: '',
    Author: '',
    Publisher: '',
    PublicTime: '',
    BookNumber: '',
    BookPrice: '',
    BookType: '',
    INSS: ''
}
// arr.push(data)
// localStorage.setItem('data',JSON.stringify(arr))
//--------------------初始化本地数据---------------------------------------------------------//
// 调用模版引擎
var htmlBookList = template('bookList', { list: dataList })
// 渲染html结构
document.getElementById('bookListBox').innerHTML = htmlBookList
//获取所有的id

// var data=localStorage.getItem('data')
// console.log(data);

// console.log(data);

//------------------实现切换功能-----------------//
function realizeToggle(i) {
    for (var j = 0; j < panelShow.length; j++) {
        panelShow[j].classList.remove("toggle")
    }
    panelShow[i].classList.add("toggle")

}

//--------------获取值并更新到data中-----------//
function changeValue(i, value) {
    switch (i) {
        case 0:
            data.BookId = value;
            break;
        case 1:
            data.BookName = value;
            break;
        case 2:
            data.Author = value;
            break;
        case 3:
            data.Publisher = value;
            break;
        case 4:
            data.PublicTime = value;
            break;
        case 5:
            data.BookNumber = value;
            break;
        case 6:
            data.BookPrice = value;
            break;
        case 7:
            data.BookType = value;
            break;
        case 8:
            data.INSS = value;
            break;
        default:
            break;
    }
}
//------------------空数据检查--------------------//
function emptyCheck() {
    for (let i = 0; i < inputItems.length; i++) {
        changeValue(i, inputItems[i].value)
        if (inputItems[i].value === '') {
            resultShow.classList.remove("changeColor")
            resultShow.innerHTML="请输入完整的数据!"
            flag = false
            break;
        }
    }
}
//----------------重复数据检查-------------------//
function duplicateCheck(BookId) {
    //获取 arr 数组中所有对象的 BookId 属性
    idList = localArr.map(function (obj) {
        return obj.BookId;
    });
    for (let i = 0; i < idList.length; i++) {
        if (idList[i] === BookId) {
            flag = false
            resultShow.classList.remove("changeColor")
            resultShow.innerHTML="数据重复!"
            inputItems[0].value = ""
            break
        }
    }
}

//---------------------实现导航栏切换效果---------------------//
for (let i = 0; i < navClickItems.length; i++) {
    navClickItems[i].addEventListener('click', function () {
        realizeToggle(i);
    })
}

//--------------实现文本输入框中的数据读取------------------//
for (let i = 0; i < inputItems.length; i++) {
    //监听事件实时变化
    inputItems[i].addEventListener("input", function () {
        var value = inputItems[i].value;
        changeValue(i, value);
        // console.log(value);
    })
}

for (let i = 0; i < inputItems.length; i++) {
    if (inputItems[i].value === '') {
        flagData = false
        break
    }
}

if (flagData) {
    document.querySelector("fieldset").disabled = false;
}
//-------------------监听提交按钮--------------------//
confirmAdd.addEventListener('click', function () {
    // console.log(arr);
    flag = true
    //重复数据检查
    emptyCheck()
    //判断重复数据
    duplicateCheck(Object.assign({}, data).BookId)
    if (flag) {
        //更改模态框样式
        resultShow.classList.add("changeColor")
        resultShow.innerHTML="添加成功!"
        var arr = []// 用于将新数据添加到列表中
        // 使用 Object.assign()复制对象,保证是值传递
        arr.push(Object.assign({}, data)); // 将新数据压入数组
        localStorage.setItem("dataAdd", JSON.stringify(arr))// 将新压入的数据添加到本地
        localArr.push(Object.assign({}, data))//数据压入本地数组
        //获取数组中的对象
        localStorage.setItem("data", JSON.stringify(localArr))// 将新压入的数据添加到本地
        // console.log(Object.assign({}, data));
        //将符合要求的数据存入本地
        // duplicateCheck(inputItems[0].value)
        // console.log(inputItems[0].value);
        dataList = localStorage.getItem("dataAdd");// 获取待渲染数据
        dataList = JSON.parse(dataList)  //转换为对象
        // 调用模版引擎
        htmlBookList = template('bookList', { list: dataList })
        // 渲染html结构
        document.getElementById('bookListBox').innerHTML += htmlBookList// 初始渲染加上新渲染
        localStorage.setItem("data", JSON.stringify(localArr))//将数据总和压入本地
        // 将所有的输入框清空
        for(var i=0;i<inputItems.length;i++){
            inputItems[i].value = ""
        }
    }
})

图书修改功能

// 获取所有的下拉元素
var selectList = document.querySelectorAll("option")
// 获取修改元素列表
var modifyList = document.querySelectorAll(".modify")
// 获取选择框元素  
var selectElement = document.getElementById("input");
// 获取修改按钮对象  
var confirmModify = document.getElementById("confirmModify");
// 定义变量监测下拉序列的变化
var selectIndex
var resultShow = document.querySelector("#resultShow")
//--------------监听选择框的change事件----------------//  
selectElement.addEventListener("change", function () {
    // 获取当前对象的序列号
    var index = this.selectedIndex;
    selectIndex = this.selectedIndex;
    // console.log(selectIndex);
    for (let i = 0; i < selectElement.length; i++) {
        // 移除所有的输入框
        modifyList[i].classList.remove("modifyToggle")
    }
    // 显示当前的所选择的输入框
    modifyList[index].classList.add("modifyToggle")
    // // 获取当前所选择的对象  
    // var selectedOption = this.options[index];
});
//--------------监听修改按钮的提交事件---------------//
// console.log(confirmModify);
confirmModify.addEventListener("click", function () {
    //获取最新的本地数据的列表
    var LocalArr = JSON.parse(localStorage.getItem("data"));
    //获取最新 LocalArr 数组中所有对象的 BookId 属性
    idList = localArr.map(function (obj) {
        return obj.BookId;
    });
    // 修改内容文本框的对象
    var inputItems = document.querySelectorAll(".modList");
    // 图书编号文本框的对象
    var inputId = document.getElementById("modBookId");
    // 判断当前图书编号是否为空
    if (inputId.value === ""){
        resultShow.classList.remove("changeColor")
         resultShow.innerHTML="图书编号不能为空!"
    }
       
    // 判断当前图书编号是否存在于本地存储数据中
    if (!idList.includes(inputId.value)) {
        resultShow.classList.remove("changeColor")
        // alert("当前图书不存在,请重新输入!")
        resultShow.innerHTML="当前图书不存在,请重新输入!"
        inputId.value = ""
    }
    // 判断修改内容文本框是否为空
    if (selectIndex === undefined && inputItems[0].value === "") {
        resultShow.classList.remove("changeColor")
        // console.log(inputItems[0].value);
        // alert("数据不能为空")
        resultShow.innerHTML="数据不能为空!"
    }
    else if (selectIndex !== undefined && inputItems[selectIndex].value === "") {
        resultShow.classList.remove("changeColor")
        // console.log(selectIndex);
        // console.log(inputItems[selectIndex].value);
        // alert("数据不能为空")
        resultShow.innerHTML="数据不能为空!"
    } else {
        // 根据输入的id值修改目标值
        // 获取要查找的id
        var BookId = inputId.value;
        // 获取要查找的对象
        var obj = LocalArr.filter(function (obj) {
            return obj.BookId === BookId
        })
        // console.log(obj);
        var keys = Object.keys(obj[0]);// 获取所有的键
        // console.log(keys);
        // console.log(keys[0]);
        // console.log("序列号为:"+selectIndex);
        // console.log(obj[0][keys[selectIndex]]);
        //修改目标值
        // console.log(obj[0][keys[0]]);
        // console.log(selectIndex);
        if (selectIndex === undefined && inputItems[0].value !== "") {
            obj[0][keys[1]] = inputItems[0].value;
            resultShow.classList.add("changeColor")
            resultShow.innerHTML="修改成功!"
            // console.log("修改成功");
            // console.log(LocalArr);
        } else {
            obj[0][keys[selectIndex + 1]] = inputItems[selectIndex].value;
            resultShow.classList.add("changeColor")
            resultShow.innerHTML="修改成功!"
            // console.log("修改成功");
            // console.log(LocalArr);
        }
    }
    //修改成功后,重新进行渲染
    // console.log(LocalArr);
    localStorage.setItem("data", JSON.stringify(LocalArr))
    dataList = localStorage.getItem("data");// 获取待渲染数据
    dataList = JSON.parse(dataList)  //转换为对象
    // 调用模版引擎
    htmlBookList = template('bookList', { list: dataList })
    // 渲染html结构
    document.getElementById('bookListBox').innerHTML = htmlBookList// 初始渲染加上新渲染
})

图书删除功能

//------------------删除------------------//
var confirmDelBookName = document.getElementById("confirmDelBookName")
var confirmDelAuthor = document.getElementById("confirmDelAuthor")
var resultShow = document.querySelector("#resultShow")
// console.log(authorList);
//--------------监听删除按钮------------------//
confirmDelBookName.addEventListener("click", function () {
    //获取最新的本地数据的列表
    var LocalArr = JSON.parse(localStorage.getItem("data"));
    // console.log("按书名删除时的本地数据:" + LocalArr);
    // 获取最新的本地数据中所有的 BookName 属性
    bookNameList = localArr.map(function (obj) {
        return obj.BookName;
    });
    var inputText = document.querySelector("#delBookName").value;
    if (inputText === "") {
        resultShow.classList.remove("changeColor")
        resultShow.innerHTML = "书籍名称不能为空!"
    }
    // console.log(inputText.value);  
    // console.log(bookNameList);  
    var obj = LocalArr.filter(function (obj) {
        return obj.BookName === inputText
    });
    if (obj.length > 0) {
        LocalArr = LocalArr.filter(function (obj) {
            return obj.BookName !== inputText
        });
        resultShow.classList.add("changeColor")
        resultShow.innerHTML = "删除成功!"
        // 删除成功后重新渲染页面
        localStorage.setItem("data", JSON.stringify(LocalArr))
        dataList = localStorage.getItem("data");// 获取待渲染数据
        dataList = JSON.parse(dataList)  //转换为对象
        // 调用模版引擎
        htmlBookList = template('bookList', { list: dataList })
        // 渲染html结构
        document.getElementById('bookListBox').innerHTML = htmlBookList// 初始渲染加上新渲染

    } else if (inputText !== "") {
        resultShow.classList.remove("changeColor")
        resultShow.innerHTML = '目标书籍不存在!'
    }
    // console.log(LocalArr);
})
confirmDelAuthor.addEventListener("click", function () {
    //获取最新的本地数据的列表
    var LocalArr = JSON.parse(localStorage.getItem("data"));
    // console.log("按作者名删除时的本地数据:" + LocalArr);
    // 获取最新的本地数据中所有的 Author 属性
    authorList = localArr.map(function (obj) {
        return obj.Author;
    });
    var inputText = document.querySelector("#delAuthor").value;
    var obj = LocalArr.filter(function (obj) {
        return obj.Author === inputText
    });
    if (inputText === ""){
        resultShow.classList.remove("changeColor")
         resultShow.innerHTML = "作者名字不能为空!"
    }
       
    if (obj.length > 0) {
        LocalArr = LocalArr.filter(function (obj) {
            return obj.Author !== inputText
        });
        resultShow.classList.add("changeColor")
        resultShow.innerHTML = "删除成功!"
        // 删除成功后重新渲染页面
        localStorage.setItem("data", JSON.stringify(LocalArr))
        dataList = localStorage.getItem("data");// 获取待渲染数据
        dataList = JSON.parse(dataList)  //转换为对象
        // 调用模版引擎
        htmlBookList = template('bookList', { list: dataList })
        // 渲染html结构
        document.getElementById('bookListBox').innerHTML = htmlBookList// 初始渲染加上新渲染

    } else if (inputText !== "") {
        resultShow.classList.remove("changeColor")
        resultShow.innerHTML = "目标书籍不存在!"
    }
    // console.log(LocalArr);
})

图书查找功能

//----------------查找功能----------------------//
var confirmSearchBookName = document.querySelector("#confirmSearchBookName")
var confirmSearchAuthor = document.querySelector("#confirmSearchAuthor")
var searchResult = document.querySelector("#showSearchInf")
var resultShow = document.querySelector("#resultShow")
confirmSearchBookName.addEventListener("click", function () {
    //获取最新的本地数据的列表
    var LocalArr = JSON.parse(localStorage.getItem("data"));
    // console.log("按书名查找时的本地数据:" + localArr);
    // 获取最新的本地数据中所有的 BookName 属性
    bookNameList = localArr.map(function (obj) {
        return obj.BookName;
    });
    // console.log(bookNameList);
    // 获取当前需要查询的书名
    var searchBookName = document.querySelector("#secBookName").value;
    // 将书名与本地数据进行对比
    if (bookNameList.includes(searchBookName)) {

        // console.log("存在这本书");
        // 获取所查询书名的对象
        var obj = LocalArr.filter(function (obj) {
            return obj.BookName === searchBookName
        });
        // console.log(obj);
        // console.log(obj.length);
        searchResult.classList.remove("showSearchInf")
        //将查询数据渲染到指定区域
        var tempArr = [];
        for (var i = 0; i < obj.length; i++) {
            tempArr.push(obj[i])
        }
        // console.log(tempArr);
        //数据存入本地
        localStorage.setItem("tempData", JSON.stringify(tempArr))
        var tempDataList = localStorage.getItem("tempData")
        tempDataList = JSON.parse(tempDataList)
        var htmlBookList = template('bookList', { list: tempDataList })
        // 渲染html结构
        document.getElementById('searchBookList').innerHTML = htmlBookList// 初始渲染加上新渲染
        // console.log(obj);
        // console.log(obj.length);
        // 遍历输出对象的信息
        // for (var i = 0; i < obj.length; i++) {
        //     for (let key in obj[i]) {
        //         console.log(key + ":" + obj[i][key]);
        //     }
        // }
        resultShow.classList.add("changeColor")
        resultShow.innerHTML = "查询成功!"
    } else {
        resultShow.classList.remove("changeColor")
        resultShow.innerHTML = "不存在这本书!"
        searchResult.classList.add("showSearchInf")
    }
})
confirmSearchAuthor.addEventListener("click", function () {
    //获取最新的本地数据的列表
    var LocalArr = JSON.parse(localStorage.getItem("data"));
    // console.log("按作者名查找时的本地数据:" + localArr);
    // 获取最新的本地数据中所有的 Author 属性
    authorList = localArr.map(function (obj) {
        return obj.Author;
    });
    // console.log("authorList" + authorList);
    // 获取当前需要查询的作者名
    var searchAuthor = document.querySelector("#secAuthor").value;
    // 将作者名与本地数据进行对比
    if (authorList.includes(searchAuthor)) {
        resultShow.classList.add("changeColor")
        resultShow.innerHTML = "查询成功!"
        // console.log("存在这本书");
        // 获取所查询作者名的对象
        var obj = LocalArr.filter(function (obj) {
            return obj.Author === searchAuthor
        });
        searchResult.classList.remove("showSearchInf")
        //将查询数据渲染到指定区域
        var tempArr = [];
        for (var i = 0; i < obj.length; i++) {
            tempArr.push(obj[i])
        }
        // console.log(tempArr);
        //数据存入本地
        localStorage.setItem("tempData", JSON.stringify(tempArr))
        var tempDataList = localStorage.getItem("tempData")
        tempDataList = JSON.parse(tempDataList)
        var htmlBookList = template('bookList', { list: tempDataList })
        // 渲染html结构
        document.getElementById('searchBookList').innerHTML = htmlBookList// 初始渲染加上新渲染
    } else {
        resultShow.classList.remove("changeColor")
        resultShow.innerHTML = "不存在这本书!"
        searchResult.classList.add("showSearchInf")
    }
})

图书页面结构

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>图书管理系统</title>
    <link rel="stylesheet" href="lib/CSS/bootstrap.css">
    <link rel="stylesheet" href="lib/CSS/css.css">
    <script src="lib/JS/jquery.js"></script>
    <script src="lib/JS/bootstrap.js"></script>
    <script src="lib/JS/template-web.js"></script>
</head>

<body style="padding: 20px;letter-spacing: 1px;">

    <!-- 导航栏设置 -->
    <nav class="navbar navbar-default navbar-static-top" role="navigation">
        <a class="navbar-brand" href="#" style="color: #337ab7;font-weight: 600;letter-spacing: 2px;">图书管理系统</a>
        <ul class="nav nav-pills">
            <!-- 添加操作 -->
            <li role="presentation"><a href="#" class="navbar-brand navClick" id="navBtnAdd">添加</a></li>
            <!-- 修改操作 -->
            <li role="presentation"><a href="#" class="navbar-brand navClick" id="navBtnMod">修改</a></li>
            <!-- 删除操作 -->
            <li role="presentation" class="dropdown">
                <a class="dropdown-toggle navbar-brand" data-toggle="dropdown" href="#" role="button"
                    aria-haspopup="true" aria-expanded="false">
                    删除<span class="caret"></span>
                </a>
                <ul class="dropdown-menu">
                    <li><a href="#" id="navBtnDelBook" class="navClick">按书籍名称</a></li>
                    <li><a href="#" id="navBtnDelAuthor" class="navClick">按作者名字</a></li>
                </ul>
            </li>
            <!-- 查询操作 -->
            <li role="presentation" class="dropdown">
                <a class="dropdown-toggle navbar-brand" data-toggle="dropdown" href="#" role="button"
                    aria-haspopup="true" aria-expanded="false">
                    查询<span class="caret"></span>
                </a>
                <ul class="dropdown-menu">
                    <li><a href="#" id="navBtnSearchBook" class="navClick">按书籍名称</a></li>
                    <li><a href="#" id="navBtnSearchAuthor" class="navClick">按作者名字</a></li>
                </ul>
            </li>

        </ul>
    </nav>
    <!-- 面板设置 -->
    <div style="display: flex;">
        <!-- 左侧操作面板 -->
        <div>
            <!-- 添加面板 -->
            <div class="panel panel-primary panelShow toggle">
                <div class="panel-heading">
                    <h3 class="panel-title">添加操作</h3>
                </div>
                <div class="panel-body" id="inputInfo">
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>图书编号</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscBookId" placeholder="请输入图书编号">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书籍名称</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscBookName"
                            placeholder="请输入书籍名称">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>作者名字</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscAuthor" placeholder="请输入作者名字">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>出版单位</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscPublisher"
                            placeholder="请输入出版单位">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>出版时间</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscPublicTime"
                            placeholder="请输入出版时间">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书本数量</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscBookNumber"
                            placeholder="请输入书本数量">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书本价格</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscBookPrice"
                            placeholder="请输入书本价格">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书籍类型</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscBookType"
                            placeholder="请输入书籍类型">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书籍刊号</div>
                        <input type="text" autocomplete="off" class="form-control" id="bscINSS" placeholder="请输入书籍刊号">
                    </div>
                    <fieldset>
                        <button id="confirmAdd" class="btn btn-primary" data-toggle="modal"
                            data-target="#myModal">确认添加</button>
                    </fieldset>
                </div>
            </div>
            <!-- 修改面板 -->
            <div class="panel panel-primary panelShow">
                <div class="panel-heading">
                    <h3 class="panel-title">修改操作</h3>
                </div>
                <div class="panel-body">
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>图书编号</div>
                        <input type="text" autocomplete="off" class="form-control" id="modBookId"
                            placeholder="请输入修改书籍的编号">
                    </div>
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>修改选项</div>
                        <select name="" id="input" class="form-control" required="required">
                            <option value="">书籍名称</option>
                            <option value="">作者名字</option>
                            <option value="">出版单位</option>
                            <option value="">出版时间</option>
                            <option value="">书本数量</option>
                            <option value="">书本价格</option>
                            <option value="">书籍类型</option>
                            <option value="">书籍刊号</option>
                        </select>
                    </div>
                    <div class="input-group modify modifyToggle">
                        <div class="input-group-addon addStyle"><span>*</span>书籍名称</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modBookName"
                            placeholder="请输入书籍名称">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>作者名字</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modAuthor"
                            placeholder="请输入作者名字">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>出版单位</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modPublisher"
                            placeholder="请输入出版单位">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>出版时间</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modPublicTime"
                            placeholder="请输入出版时间">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>书本数量</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modBookNumber"
                            placeholder="请输入书本数量">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>书籍类型</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modBookType"
                            placeholder="请输入书籍类型">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>书本价格</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modBookPrice"
                            placeholder="请输入书本价格">
                    </div>
                    <div class="input-group modify">
                        <div class="input-group-addon addStyle"><span>*</span>书籍刊号</div>
                        <input type="text" autocomplete="off" class="form-control modList" id="modINSS"
                            placeholder="请输入书籍刊号">
                    </div>

                    <button id="confirmModify" class="btn btn-primary" data-toggle="modal"
                        data-target="#myModal">确认修改</button>
                </div>
            </div>
            <!-- 删除面板 -->
            <!-- 按书籍名称 -->
            <div class="panel panel-primary panelShow">
                <div class="panel-heading">
                    <h3 class="panel-title">删除操作/按书籍名称</h3>
                </div>
                <div class="panel-body">
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书籍名称</div>
                        <input type="text" autocomplete="off" class="form-control" id="delBookName"
                            placeholder="请输入书籍名称">
                    </div>
                    <button id="confirmDelBookName" class="btn btn-primary" data-toggle="modal"
                        data-target="#myModal">确认删除</button>
                </div>
            </div>
            <!-- 按作者名字 -->
            <div class="panel panel-primary panelShow">
                <div class="panel-heading">
                    <h3 class="panel-title">删除操作/按作者名称</h3>
                </div>
                <div class="panel-body">
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>作者名字</div>
                        <input type="text" autocomplete="off" class="form-control" id="delAuthor" placeholder="请输入作者名字">
                    </div>
                    <button id="confirmDelAuthor" class="btn btn-primary" data-toggle="modal"
                        data-target="#myModal">确认删除</button>
                </div>
            </div>
            <!-- 查询面板 -->
            <!-- 按书籍名称 -->
            <div class="panel panel-primary panelShow">
                <div class="panel-heading">
                    <h3 class="panel-title">查询操作/按书籍名称</h3>
                </div>
                <div class="panel-body">
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>书籍名称</div>
                        <input type="text" autocomplete="off" class="form-control" id="secBookName"
                            placeholder="请输入书籍名称">
                    </div>
                    <button id="confirmSearchBookName" class="btn btn-primary" data-toggle="modal"
                        data-target="#myModal">确认查询</button>
                </div>
            </div>
            <!-- 按作者名字 -->
            <div class="panel panel-primary panelShow">
                <div class="panel-heading">
                    <h3 class="panel-title">查询操作/按作者名称</h3>
                </div>
                <div class="panel-body">
                    <div class="input-group">
                        <div class="input-group-addon addStyle"><span>*</span>作者名字</div>
                        <input type="text" autocomplete="off" class="form-control" id="secAuthor" placeholder="请输入作者名字">
                    </div>
                    <button id="confirmSearchAuthor" class="btn btn-primary" data-toggle="modal"
                        data-target="#myModal">确认查询</button>
                </div>
            </div>
        </div>
        <!-- 右侧显示面板 -->
        <div class="showInf">
            <div class="panel-primary panel">
                <div class="panel-heading">
                    <h3 class="panel-title">图书列表</h3>
                </div>
                <div class="panel-body">
                    <ul style="padding: 0;">
                        <table class="table table-hover">
                            <tr class="active">
                                <thead>
                                    <tr class="active">
                                        <th>图书编号</th>
                                        <th>书籍名称</th>
                                        <th>作者名字</th>
                                        <th>出版单位</th>
                                        <th>出版时间</th>
                                        <th>书本数量</th>
                                        <th>书本价格</th>
                                        <th>书籍类型</th>
                                        <th>书籍刊号</th>
                                    </tr>

                                </thead>
                                <tbody id="bookListBox">

                                </tbody>
                            </tr>
                        </table>
                    </ul>
                </div>
            </div>
        </div>
    </div>
    <!-- 信息展示区域 -->
    <div class="showInf showSearchInf" id="showSearchInf" style="margin: 10px 0 0 0 ;">
        <div class="panel-primary panel">
            <div class="panel-heading">
                <h3 class="panel-title" style="display: inline-block;">查询结果</h3>
                <span class="close" style="float: right;">
                    <svg t="1699947031573" class="icon" viewBox="0 0 1035 1024" version="1.1"
                        xmlns="http://www.w3.org/2000/svg" p-id="4627" width="16" height="16">
                        <path
                            d="M961.799386 1018.342541c-16.972376 0-28.287293-5.657459-39.60221-16.972375L514.86016 594.033149l-412.994476 412.994475c-22.629834 22.629834-62.232044 22.629834-84.861878 0s-22.629834-62.232044 0-84.861878L429.998281 509.171271 28.318723 96.176796C5.688889 79.20442 5.688889 39.60221 28.318723 16.972376s62.232044-22.629834 84.861879 0L514.86016 424.309392 927.854635 11.314917c22.629834-22.629834 62.232044-22.629834 84.861878 0s22.629834 62.232044 0 84.861879L599.722038 509.171271l412.994475 412.994475c22.629834 22.629834 22.629834 62.232044 0 84.861878-22.629834 0-33.944751 11.314917-50.917127 11.314917z"
                            fill="#fff" p-id="4628"></path>
                    </svg>
                </span>

            </div>
            <div class="panel-body">
                <ul style="padding: 0;">
                    <table class="table table-hover">
                        <tr class="active">
                            <thead>
                                <tr class="active">
                                    <th>图书编号</th>
                                    <th>书籍名称</th>
                                    <th>作者名字</th>
                                    <th>出版单位</th>
                                    <th>出版时间</th>
                                    <th>书本数量</th>
                                    <th>书本价格</th>
                                    <th>书籍类型</th>
                                    <th>书籍刊号</th>
                                </tr>

                            </thead>
                            <tbody id="searchBookList">

                            </tbody>
                        </tr>
                    </table>
                </ul>
            </div>
        </div>
    </div>
    <!-- 模态框区域 -->
    <div class="container">
        <!-- 模态 -->
        <div class="modal fade" id="myModal" role="dialog">
            <div class="modal-dialog">
                <!-- 模态内容-->
                <div class="modal-content panel-primary panel" style="border-radius: 12px;">
                    <div class="modal-header panel-heading" style="border-radius: 10px 10px 0 0;">
                        <button type="button" class="close" data-dismiss="modal" style="transition: transform 1s;">
                            <svg t="1699947031573" class="icon" viewBox="0 0 1035 1024" version="1.1"
                                xmlns="http://www.w3.org/2000/svg" p-id="4627" width="16" height="16">
                                <path
                                    d="M961.799386 1018.342541c-16.972376 0-28.287293-5.657459-39.60221-16.972375L514.86016 594.033149l-412.994476 412.994475c-22.629834 22.629834-62.232044 22.629834-84.861878 0s-22.629834-62.232044 0-84.861878L429.998281 509.171271 28.318723 96.176796C5.688889 79.20442 5.688889 39.60221 28.318723 16.972376s62.232044-22.629834 84.861879 0L514.86016 424.309392 927.854635 11.314917c22.629834-22.629834 62.232044-22.629834 84.861878 0s22.629834 62.232044 0 84.861879L599.722038 509.171271l412.994475 412.994475c22.629834 22.629834 22.629834 62.232044 0 84.861878-22.629834 0-33.944751 11.314917-50.917127 11.314917z"
                                    fill="#fff" p-id="4628"></path>
                            </svg>
                        </button>
                        <h4 class="modal-title">结果</h4>
                    </div>
                    <div class="modal-body">
                        <p id="resultShow">失败</p>
                    </div>
                    <div class="modal-footer">
                        <button type="button" class="btn btn-primary" data-dismiss="modal">关闭</button>
                    </div>
                </div>
            </div>
        </div>
    </div>
    <script type="text/html" id="bookList">
        <!-- 遍历数组中每一个对象的每一个值 -->
         {{each list value}}
    <tr class="success">
        <th>{{value.BookId}}</th>
        <th>{{value.BookName}}</th>
        <th>{{value.Author}}</th>
        <th>{{value.Publisher}}</th>
        <th>{{value.PublicTime}}</th>
        <th>{{value.BookNumber}}</th>
        <th>{{value.BookPrice}}</th>
        <th>{{value.BookType}}</th>
        <th>{{value.INSS}}</th>
    </tr>
    {{/each}}
    </script>
    <script src="lib/JS/add.js"></script>
    <script src="lib/JS/modify.js"></script>
    <script src="lib/JS/delete.js"></script>
    <script src="lib/JS/search.js"></script>
</body>

</html>

最终实现效果

图书管理系统

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啥也不会写呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值