H5+css+js一个简单的图书管理系统

15 篇文章 0 订阅
9 篇文章 0 订阅

一个简单的网页图书管理系统,不同的权限登陆显示不同的内容,界面做了一点点的美化


1 登录注册,默认有三个人员信息,可以注册,也可以直接登录(弹窗提示用户,是登录还是注册)


 


2 登录后展示所有列表,包括图书的(编号,书名,作者,出版时间,书的数量),以及借阅按钮,点击按钮可以实现借阅,数量 -1


 


3 提供录入按钮 点击后对图书信息进行录入,录入的时候需要查重,如果已经存在了则只需要累加数量


 


4 添加录入 权限,只有管理员才有权限录入


 


有:函数的封装,数组的使用,对象的封装



<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style>
        .mbody{
            width: 98%;
            height: 96%;
            margin: 0 auto;
            border: 2px solid gray;
            border-radius: 15px;
            box-shadow:10px 10px 5px #888888;
            position: absolute;
            background-image:url("img/bg.png") ;
            background-repeat: no-repeat;
            background-size: cover;
        }
        input{
            width: 80px;
            height: 35px;
            background: #c90c18;
            color: #ffffff;
            border-radius: 5px;
            border: 2px solid #db5e66;
            font-size: 16px;
            cursor: pointer;
            transition: 0.3s;
        }
        input:hover{
            background-color: #02bbff;
            border: 1px solid orange;
            transform: scale(1.08);
        }
    </style>
</head>
<body>
<div class="mbody" id="mbody">
</div>

</body>
<script>
    var userArray=new Array(3);
    var bookArray=new Array(15);
    var isRegist=false;
    var isLogin=false;
    var mbody=document.getElementById("mbody");

    userArray[0]=new Object();
    userArray[0].userName="Admin";
    userArray[0].password="Admin";
    userArray[0].isAdmin=true;
    userArray[1]=new Object();
    userArray[1].userName="user";
    userArray[1].password="user";
    userArray[1].isAdmin=false;
    userArray[2]=new Object();
    userArray[2].userName="TY";
    userArray[2].password="TY";
    userArray[2].isAdmin=true;

    for(var i=0;i<bookArray.length;i++){
        bookArray[i]=new Object();
        bookArray[i].bookId=i+1001;
        bookArray[i].bookName="书"+bookArray[i].bookId;
        bookArray[i].bookAuthor="TY";
        bookArray[i].bookTime="2017-7-29";
        bookArray[i].bookNum=2;
    }
    bookArray[14].bookName="鬼吹灯";
    bookArray[14].bookAuthor="天下霸唱";
    bookArray[14].bookTime="2008-7-1";
    bookArray[14].bookNum=3;
    function creatTable(isAdmin){
        var str;
        var tStr="";
        var adminStr="<input type='button'  value='录入新书' οnclick='adminAdd()'" +
                "style='border: 2px solid red; font-size:18px; cursor: pointer; " +
                "color:white; background-color:hotpink; display:block; margin: 0 auto; " +
                "margin-top: 60px; height:40px; width:100px;'>";
        if(isAdmin){
            tStr+=  "<th>借书</th>"+
                    "<th>录入</th>"+
                    "<th>删除</th>"+
                    "</tr>";
            tStr+=adminStr;
        }
        else{
            tStr+= "<th>借书</th>"+
                    "</tr>";
        }
        for(var i=0;i<bookArray.length;i++){
            if(isAdmin){
                tStr+="<tr  height='35' align='center'>" +
                        "<td>"+bookArray[i].bookId+"</td>"+
                        "<td>"+bookArray[i].bookName+"</td>"+
                        "<td>"+bookArray[i].bookAuthor+"</td>"+
                        "<td>"+bookArray[i].bookTime+"</td>"+
                        "<td>"+bookArray[i].bookNum+"</td>"+
                        "<td><input type='button' value='借书' οnclick='borrow("+i+","+isAdmin+")'/>"+"</td>"+
                        "<td><input type='button' value='录入' οnclick='add(\""+i+"\")'/>"+"</td>"+
                        "<td><input type='button' value='删除' οnclick='del(\""+i+"\")'/>"+"</td>"+
                        "</tr>"
            }else{
                tStr+="<tr  height='35' align='center'>" +
                        "<td>"+bookArray[i].bookId+"</td>"+
                        "<td>"+bookArray[i].bookName+"</td>"+
                        "<td>"+bookArray[i].bookAuthor+"</td>"+
                        "<td>"+bookArray[i].bookTime+"</td>"+
                        "<td>"+bookArray[i].bookNum+"</td>"+
                        "<td><input type='button' value='借书' οnclick='borrow("+i+","+isAdmin+")'/>"+"</td>"+
                        "</tr>"
            }
        }
        str="<table border='0px' width='100%' style='margin: 30px auto'>" +
                "<tr height='45'>" +
                    "<th> 编号 </th>"+
                    "<th> 书名 </th>"+
                    "<th> 作者 </th>"+
                    "<th>发布日期</th>"+
                    "<th>库存数量</th>"+
                tStr+
                "</table>";
        return str;
    }

    function borrow(i,isAdmin){
        if(bookArray[i].bookNum<1){
            alert("借书失败!库存不足。")
        }else{
            bookArray[i].bookNum--;
        }
        mbody.innerHTML=creatTable(isAdmin);
    }

    function add(i){
        bookArray[i].bookNum++;
        mbody.innerHTML=creatTable(true);
    }

    function adminAdd(){
        var isExist=false;
        var j;
        var num=prompt("请输入要录入的书本种类数:")-0||0;
        for(var i=0;i<num;i++){
            var book=new Object();
            book.bookId=prompt("请输入第"+(i+1)+"种书的编号:")-0||-1;
            if(book.bookId==-1){
                alert("第"+(i+1)+"种书的编号格式不正确,请重新输入!");
                i--;
                continue;
            }
            book.bookName=prompt("请输入第"+(i+1)+"种书的书名:")||"无名书";
            book.bookAuthor=prompt("请输入第"+(i+1)+"种书的作者:")||"无名氏";
            book.bookTime=prompt("请输入第"+(i+1)+"种书的发布时间:")||"1970-1-1";
            book.bookNum=prompt("请输入第"+(i+1)+"种书的数量:")-0||1;
            for(j=0;j<bookArray.length;j++){
                if(bookArray[j].bookId==book.bookId){
                    isExist=true;
                    break;
                }
            }
            if(!isExist){
                bookArray.push(book);
            }else{
                bookArray.splice(j,1,book);
            }
            mbody.innerHTML=creatTable(true);
        }
    }

    function del(i){
        bookArray.splice(i,1);
        mbody.innerHTML=creatTable(true);
    }

    function regAlog(isregist,islogin){
        if(isregist){
            var regist=new Object();
            var rname=prompt("请输入用户名:");
            for(var rg=0;rg<userArray.length;rg++){
                if(userArray[rg].userName==rname){
                    rname=prompt("该用户已存在!:");
                    rg=-1;
                }
            }
            regist.userName=rname;
            regist.password=prompt("请输入密码:");
            regist.isAdmin=confirm("是否需要管理员权限?");
            userArray.push(regist);
            alert("注册成功!");
            islogin=true;
            if(islogin){
                mbody.innerHTML=creatTable(regist.isAdmin);
            }
        }
        else{
            var lname=prompt("请输入用户名:");
            var j=0;
            var k=0;
            var lg;
            for(lg=0;lg<userArray.length;lg++){
                if(userArray[lg].userName==lname){
                    var passw=prompt("请输入密码:");
                    if(passw==userArray[lg].password){
                        alert("登陆成功!");
                        islogin=true;
                        break;
                    }else{
                        for(k=0;k<2 && passw!=userArray[lg].password;k++){
                            passw=prompt("密码错误!请重新输入密码:");
                        }
                        if(k>=2){
                            alert("超过次数,请重新登陆!");
                            break;
                        }else if(passw==userArray[lg].password){
                            alert("登陆成功!");
                            islogin=true;
                            break;
                        }
                    }
                }else if(lg==userArray.length-1){
                    lname=prompt("用户名错误,请重新输入:");
                    lg=-1;
                    if(j++>3){
                        alert("超过次数,请重新登陆!");
                        break;
                    }
                }
            }
            if(islogin){
                mbody.innerHTML=creatTable(userArray[lg].isAdmin);
            }
        }
    }

    isRegist=window.confirm("请选择是否注册");
    regAlog(isRegist,isLogin);
    console.log(userArray);
</script>
</html>


运行结果:







好的,我可以为您提供一个简单的登陆界面示例代码。以下是 HTMLCSS 和 JavaScript 代码: HTML 代码: ``` <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login Page</title> <link rel="stylesheet" href="style.css"> </head> <body> <div class="login-box"> <h2>Login Here</h2> <form> <div class="user-box"> <input type="text" name="" required=""> <label>Username</label> </div> <div class="user-box"> <input type="password" name="" required=""> <label>Password</label> </div> <a href="#"> <span></span> <span></span> <span></span> <span></span> Submit </a> </form> </div> </body> </html> ``` CSS 代码: ``` * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: sans-serif; background: #f1f1f1; } .login-box { width: 400px; height: 500px; background: #fff; color: #000; top: 50%; left: 50%; position: absolute; transform: translate(-50%, -50%); box-shadow: 0 10px 20px rgba(0, 0, 0, 0.5); padding: 70px 30px; border-radius: 20px; } .login-box h2 { margin: 0; padding: 0 0 20px; text-align: center; font-size: 30px; } .login-box .user-box { position: relative; } .login-box .user-box input { width: 100%; padding: 10px 0; font-size: 16px; margin-bottom: 30px; border: none; border-bottom: 1px solid #000; outline: none; background: transparent; } .login-box .user-box label { position: absolute; top: 0; left: 0; padding: 10px 0; font-size: 16px; color: #000; pointer-events: none; transition: 0.5s; } .login-box .user-box input:focus ~ label, .login-box .user-box input:valid ~ label { top: -20px; left: 0; color: #000; font-size: 12px; } .login-box a { display: inline-block; text-decoration: none; color: #000; background: #fff; padding: 10px 20px; font-size: 20px; border-radius: 20px; margin-top: 40px; position: relative; overflow: hidden; } .login-box a span { position: absolute; display: block; } .login-box a span:nth-child(1) { top: 0; left: -100%; width: 100%; height: 2px; background: linear-gradient(90deg, transparent, #000); animation: animate1 1s linear infinite; } @keyframes animate1 { 0% { left: -100%; } 50%, 100% { left: 100%; } } .login-box a span:nth-child(2) { top: -100%; right: 0; width: 2px; height: 100%; background: linear-gradient(180deg, transparent, #000); animation: animate2 1s linear infinite; animation-delay: 0.25s; } @keyframes animate2 { 0% { top: -100%; } 50%, 100% { top: 100%; } } .login-box a span:nth-child(3) { bottom: 0; right: -100%; width: 100%; height: 2px; background: linear-gradient(270deg, transparent, #000); animation: animate3 1s linear infinite; animation-delay: 0.5s; } @keyframes animate3 { 0% { right: -100%; } 50%, 100% { right: 100%; } } .login-box a span:nth-child(4) { bottom: -100%; left: 0; width: 2px; height: 100%; background: linear-gradient(360deg, transparent, #000); animation: animate4 1s linear infinite; animation-delay: 0.75s; } @keyframes animate4 { 0% { bottom: -100%; } 50%, 100% { bottom: 100%; } } .login-box a:hover span { animation: none; } .login-box a:hover span:nth-child(1) { left: 0; } .login-box a:hover span:nth-child(2) { top: 0; } .login-box a:hover span:nth-child(3) { right: 0; } .login-box a:hover span:nth-child(4) { bottom: 0; } ``` JavaScript 代码: ``` const inputs = document.querySelectorAll(".user-box input"); function addClass() { let parent = this.parentNode; parent.classList.add("focus"); } function removeClass() { let parent = this.parentNode; if (this.value == "") { parent.classList.remove("focus"); } } inputs.forEach(input => { input.addEventListener("focus", addClass); input.addEventListener("blur", removeClass); }); ``` 这段代码将会渲染一个登陆框,包含输入用户名和密码的文本框,以及一个提交按钮。CSS 代码将添加一些样式,而 JavaScript 代码将帮助我们在文本框获得焦点和失去焦点时添加或删除一个类名,以便更好地控制样式。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ah_ty

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

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

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

打赏作者

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

抵扣说明:

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

余额充值