学生管理系统(Web)Sql Server+Eclipse
项目源代码:下载
一、应用名称:STD学生管理系统(Javaweb)
二、使用工具:sql server数据库,Eclipse软件
三、实现的功能:多表的综合运用,学生信息的增删改查、条件查询、模糊查询、精确查询等
四、步骤:
1、新建数据库:student_message_mis
2、新建表:
①学生表:student(sno,sname,ssex,ssdept,sgrade)
属性含义:(学号,姓名,性别,所在系,年级)
②宿舍表:home(sno,shome)
属性含义:(学号,宿舍号)
create table student(
sno int primary key,
sname varchar(10) not null,
ssex varchar(10),
ssdept varchar(10),
sgrade varchar(10));
create table home(
sno int,
shome varchar(10) not null,
primary key(sno),
foreign key(sno) references student(sno));
3、在eclipse新建web工程并导入连接sql server数据库的jar包:sqljdbc4.jar
数据库连接测试代码
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
package com.test; import java.sql.*; public class Main { public static void main(String [] args) { String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dbURL="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=student";//test为你的数据库名 String userName="sa";//你的数据库用户名 String userPwd="123456";//你的密码 try { Class.forName(driverName); System.out.println("加载驱动成功!"); }catch(Exception e){ e.printStackTrace(); System.out.println("加载驱动失败!"); } try{ Connection dbConn=DriverManager.getConnection(dbURL,userName,userPwd); System.out.println("连接数据库成功!"); }catch(Exception e) { e.printStackTrace(); System.out.print("SQL Server连接失败!"); } } }
4、新建index.jsp,实现加载学生所有信息,以及提供增加信息和查询功能
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="css/bootstrap.min.css" rel="stylesheet"> <title>学生管理系统</title> </head> <script type="text/javascript"> function add() { location.href = "add.jsp"; } </script> <style> .form-control { width: 90%; } </style> <body> <table class="table table-hover table-striped table-bordered table-sm" id="resultshow"> <tr> <td colspan="7" align="center"> <h1>STD学生管理系统</h1> </td> </tr> <tr> <td colspan="3" align="center"> <button type="button" class="btn btn-info" onclick="add()">添加信息</button> </td> <td colspan="4" align="center"> <form action="select.jsp" method="post"> <table > <tr> <td><input type="text" class="form-control" name="content"></td> <td><select name="way" class="form-control" > <option value="">--请选择查询方式--</option> <option value="1">学号</option> <option value="2">性别</option> <option value="3">所在系</option> <option value="4">年级</option> <option value="5">宿舍</option> <option value="6">姓名</option> </select></td> <td> <button type="submit" class="btn btn-info">查询</button></td> </tr> </table> </form> </td> </tr> <tr> <td align="center">学号</td> <td align="center">姓名</td> <td align="center">性别</td> <td align="center">所在系</td> <td align="center">年级</td> <td align="center">宿舍号</td> <td align="center">操作</td> </tr> <% String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); Statement stmt = dbConn.createStatement(); String sql = "select student.sno,sname,ssex,ssdept,sgrade,shome from student join home on student.sno=home.sno"; ResultSet rs = stmt.executeQuery(sql); //执行查询语句 //从结果集中读取各字段并输出 while (rs.next()) { String id = rs.getString(1); out.println("<tr><td align='center'>" + rs.getString(1) + "</td><td align='center'>" + rs.getString(2) + "</td><td align='center'>" + rs.getString(3) + "</td><td align='center'>" + rs.getString(4) + "</td><td align='center'>" + rs.getString(5) + "</td><td align='center'>" + rs.getString(6) + "</td><td align='center'><a href='update.jsp?id=" + id + "'>修改</a> <a href='del.jsp?id=" + id + "' onclick = 'return del()'>删除</a></td></tr>"); } //关闭操作 rs.close(); stmt.close(); dbConn.close(); %> </table> <script> //删除确认 function del() { if (!window.confirm('是否要删除数据??')) return false; } </script> </body> </html>
5、add.jsp以及addsave.jsp用来保存学生基本信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page contentType="text/html; charset=utf-8" import="java.sql.*"%> <html> <head> <meta charset="UTF-8"> <title>添加学生信息</title> </head> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css"> <style> .container { width: 100%; height: 700px; position: relative; background: url("img/2.png") no-repeat center/cover; } .login { width: 500px; height: auto; background-color: white; position: absolute; top: 100px; left: 350px; border-radius: 8px; } label { float: left; width: 100px; margin-top: 7px; margin-right: 5px; } .form-control { width: 60%; } .logtip { padding-top: 20px; padding-bottom: 20px; border-bottom: 2px solid red; text-align: center; } .form-group { margin-left: 40px; margin-top: 20px; } .btn { height: 50px; width: 100px; float: left; border-radius: 10px; } .btnbag { margin-left: 200px; margin-right: 200px; height: 50px; overflow: hidden; margin-top: 30px; margin-bottom: 40px; } </style> <body> <div class="container"> <div class="login"> <h2 class="logtip">学生信息</h2> <form action="addsave.jsp" method="post" onsubmit="return check()"> <div class="form-group"> <label for="sno">学号</label> <input type="text" class="form-control" id="sno" name="sno"> </div> <div class="form-group"> <label for="sname">姓名</label> <input type="text" class="form-control" id="sname" name="sname"> </div> <div class="form-group"> <label for="ssex">性别</label> <select name="ssex" id="ssex" class="form-control" > <option value="">--请选择--</option> <option value="男">男</option> <option value="女">女</option> </select> </div> <div class="form-group"> <label for="ssdept">所在系</label> <input type="text" class="form-control" id="ssdept" name="ssdept"> </div> <div class="form-group"> <label for="sgrade">年级</label> <select name="sgrade" id="sgrade" class="form-control" > <option value="">--请选择--</option> <option value="2017级">2017级</option> <option value="2018级">2018级</option> <option value="2019级">2019级</option> <option value="2020级">2020级</option> </select> </div> <div class="btnbag"> <input type="submit" class="btn btn-primary logbtn" value="确定"> </div> </form> </div> </div> </body> <script type="text/javascript"> function check() { var sno = document.getElementById("sno").value; var sname = document.getElementById("sname").value; if ((sno == "") || (sname == "")) { alert("学号/姓名必填!"); return false; } return true; } </script> </html>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <html> <head> <title>添加学生信息</title> </head> <body> <% request.setCharacterEncoding("utf-8"); String sno = request.getParameter("sno"); session.setAttribute("sno", sno); String sname = request.getParameter("sname"); String ssex = request.getParameter("ssex"); String ssdept = request.getParameter("ssdept"); String sgrade = request.getParameter("sgrade"); String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); String sql = "insert into student(sno,sname,ssex,ssdept,sgrade) values(?,?,?,?,?)"; PreparedStatement stmt = dbConn.prepareStatement(sql); stmt.setString(1, sno); stmt.setString(2, sname); stmt.setString(3, ssex); stmt.setString(4, ssdept); stmt.setString(5, sgrade); int i = stmt.executeUpdate(); if (i == 1) { out.println("<script>location.href = 'addhome.jsp';</script>"); } else { out.println("<script>alert('添加失败');location.href = 'add.jsp';</script>"); } stmt.close(); dbConn.close(); %> </body> </html>
6、addhome.jsp以及addhomesave.jsp用来保存学生宿舍信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page contentType="text/html; charset=utf-8" import="java.sql.*"%> <html> <head> <meta charset="UTF-8"> <title>添加学生信息</title> </head> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css"> <style> .container { width: 100%; height: 700px; position: relative; background: url("img/2.png") no-repeat center/cover; } .login { width: 500px; height: auto; background-color: white; position: absolute; top: 100px; left: 350px; border-radius: 8px; } label { float: left; width: 100px; margin-top: 7px; margin-right: 5px; } .form-control { width: 60%; } .logtip { padding-top: 20px; padding-bottom: 20px; border-bottom: 2px solid red; text-align: center; } .form-group { margin-left: 40px; margin-top: 20px; } .btn { height: 50px; width: 100px; float: left; border-radius: 10px; } .btnbag { margin-left: 200px; margin-right: 200px; height: 50px; overflow: hidden; margin-top: 30px; margin-bottom: 40px; } </style> <body> <div class="container"> <div class="login"> <h2 class="logtip">宿舍</h2> <form action="addhomesave.jsp" method="post" onsubmit="return check()"> <div class="form-group"> <label for="sno">学号</label> <input type="text" class="form-control" id="sno" name="sno" value=<%=(String)(session.getAttribute("sno"))%> readonly="readonly"> </div> <div class="form-group"> <label for="shome">宿舍</label> <input type="text" class="form-control" id="shome" name="shome" placeholder="1栋001"> </div> <div class="btnbag"> <input type="submit" class="btn btn-primary logbtn" value="确定"> </div> </form> </div> </div> </body> <script type="text/javascript"> function check() { var shome = document.getElementById("shome").value; if (shome == "") { alert("宿舍必填!"); return false; } return true; } </script> </html>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <html> <head> <title>添加学生信息</title> </head> <body> <% request.setCharacterEncoding("utf-8"); String sno = request.getParameter("sno"); String shome = request.getParameter("shome"); String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); String sql = "insert into home(sno,shome) values(?,?)"; PreparedStatement stmt = dbConn.prepareStatement(sql); stmt.setString(1, sno); stmt.setString(2, shome); int i = stmt.executeUpdate(); if (i == 1) { out.println("<script>alert('添加成功');location.href = 'index.jsp';</script>"); } else { out.println("<script>alert('添加失败');location.href = 'add.jsp';</script>"); } stmt.close(); dbConn.close(); %> </body> </html>
7、update.jsp以及updatesave.jsp实现信息的修改
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <html> <head> <meta charset="UTF-8"> <title>修改学生信息</title> </head> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/4.3.1/css/bootstrap.min.css"> <style> .container { width: 100%; height: 700px; position: relative; background: url("img/2.png") no-repeat center/cover; } .login { width: 500px; height: auto; background-color: white; position: absolute; top: 100px; left: 350px; border-radius: 8px; } label { float: left; width: 100px; margin-top: 7px; margin-right: 5px; } .form-control { width: 60%; } .logtip { padding-top: 20px; padding-bottom: 20px; border-bottom: 2px solid red; text-align: center; } .form-group { margin-left: 40px; margin-top: 20px; } .btn { height: 50px; width: 100px; float: left; border-radius: 10px; } .logbtn { margin-right: 20px; } .btnbag { margin-left: 140px; margin-right: 140px; height: 50px; overflow: hidden; margin-top: 30px; margin-bottom: 40px; } </style> <body> <% String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); Statement stmt = dbConn.createStatement(); String sql = "select student.sno,sname,ssdept,shome from student join home on student.sno=home.sno"; ResultSet rs = stmt.executeQuery(sql); //执行查询语句 rs.next(); %> <div class="container"> <div class="login"> <h2 class="logtip">修改信息</h2> <form action="updatesave.jsp" method="post" onsubmit="return check()"> <div class="form-group"> <label for="sno">学号</label> <input type="text" class="form-control" id="sno" name="sno" value="<%=rs.getString(1)%>" readonly="readonly"> </div> <div class="form-group"> <label for="sname">姓名</label> <input type="text" class="form-control" id="sname" name="sname" value="<%=rs.getString(2)%>"> </div> <div class="form-group"> <label for="ssex">性别</label> <select name="ssex" id="ssex" class="form-control"> <option value="">--请选择--</option> <option value="男">男</option> <option value="女">女</option> </select> </div> <div class="form-group"> <label for="ssdept">所在系</label> <input type="text" class="form-control" id="ssdept" name="ssdept" value="<%=rs.getString(3)%>"> </div> <div class="form-group"> <label for="sgrade">年级</label> <select name="sgrade" id="sgrade" class="form-control"> <option value="">--请选择--</option> <option value="2017级">2017级</option> <option value="2018级">2018级</option> <option value="2019级">2019级</option> <option value="2020级">2020级</option> </select> </div> <div class="form-group"> <label for="shome">宿舍</label> <input type="text" class="form-control" id="shome" name="shome" value="<%=rs.getString(4)%>" readonly="readonly"> </div> <div class="btnbag"> <input type="submit" class="btn btn-primary logbtn" value="确定"> <input type="reset" class="btn btn-primary mangbtn" value="重置"> </div> </form> </div> </div> </body> <script type="text/javascript"> function check() { var sno = document.getElementById("sno").value; var sname = document.getElementById("sname").value; if ((sno == "") || (sname == "")) { alert("学号/姓名必填!"); return false; } return true; } </script> </html>
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <html> <head> <title>修改完成</title> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <% request.setCharacterEncoding("utf-8"); String sno = request.getParameter("sno"); String sname = request.getParameter("sname"); String ssex = request.getParameter("ssex"); String ssdept = request.getParameter("ssdept"); String sgrade = request.getParameter("sgrade"); String shome = request.getParameter("shome"); String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); String sql = "update student set sname='" + sname + "',ssex='" + ssex + "',ssdept='" + ssdept + "',sgrade='" + sgrade + "' where sno=" + sno; PreparedStatement stmt = dbConn.prepareStatement(sql); int i = stmt.executeUpdate(); if (i == 1) { out.println("<script>alert('修改成功');location.href = 'index.jsp';</script>"); } else { out.println("<script>alert('修改失败');location.href = 'update.jsp?id='"+sno+";</script>"); } stmt.close(); dbConn.close(); %> </body> </html>
8、del.jsp实现删除功能
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" pageEncoding="utf-8"%> <html> <head> <title>删除学生信息</title> <link rel="stylesheet" type="text/css" href="css/style.css"> </head> <body> <% request.setCharacterEncoding("utf-8"); String id = request.getParameter("id"); String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); String sql = "delete from home from home JOIN student on home.sno=student.sno where home.sno="+id; // out.println(sql); PreparedStatement stmt = dbConn.prepareStatement(sql); int i = stmt.executeUpdate(); if (i == 1) { out.println("<script>alert('删除成功');;location.href = 'index.jsp';</script>"); } else { out.println("<script>alert('删除成功');;location.href = 'index.jsp';</script>"); } stmt.close(); dbConn.close(); %> </body> </html>
9、select.jsp
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<%@ page language="java" import="java.sql.*" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link href="css/bootstrap.min.css" rel="stylesheet"> <title>学生管理系统</title> </head> <script type="text/javascript"> function add() { location.href = "add.jsp"; } function shouye() { location.href = "index.jsp"; } </script> <style> .form-control { width: 90%; } </style> <body> <table class="table table-hover table-striped table-bordered table-sm" id="resultshow"> <tr> <td colspan="7" align="center"> <h1>学生管理系统</h1> </td> </tr> <tr> <td colspan="3" align="center"> <button type="button" class="btn btn-info" onclick="add()">添加信息</button> </td> <td colspan="4" align="center"> <button type="button" class="btn btn-info" onclick="shouye()">返回首页</button> </td> </tr> <tr> <td align="center">学号</td> <td align="center">姓名</td> <td align="center">性别</td> <td align="center">所在系</td> <td align="center">年级</td> <td align="center">宿舍号</td> <td align="center">操作</td> </tr> <% String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动 String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=student";//连接服务器和数据库sample String userName = "sa"; //默认用户名 String userPwd = "123456"; //密码 Class.forName(driverName); Connection dbConn = DriverManager.getConnection(dbURL, userName, userPwd); Statement stmt = dbConn.createStatement(); request.setCharacterEncoding("utf-8"); String content = request.getParameter("content"); String way = request.getParameter("way"); String sql1="select student.sno,sname,ssex,ssdept,sgrade,shome from student join home on student.sno=home.sno"; if(content!=""&&"1".equals(way)){ sql1 +=" where student.sno="+content; }else if(content!=""&&"2".equals(way)){ sql1 += " where student.ssex='"+content+"'"; }else if(content!=""&&"3".equals(way)){ sql1 += " where student.ssdept like'%" + content + "%'"; }else if(content!=""&&"4".equals(way)){ sql1 += " where student.sgrade='"+content+"'"; }else if(content!=""&&"5".equals(way)){ sql1 += " where home.shome like '%" + content + "%'"; }else if(content!=""&&"6".equals(way)){ sql1 += " where student.sname='"+content+"'"; }else{ sql1 ="select student.sno,sname,ssex,ssdept,sgrade,shome from student join home on student.sno=home.sno"; } ResultSet rs1 = stmt.executeQuery(sql1); //执行查询语句 //从结果集中读取各字段并输出 while (rs1.next()) { String id = rs1.getString(1); out.println("<tr><td align='center'>" + rs1.getString(1) + "</td><td align='center'>" + rs1.getString(2) + "</td><td align='center'>" + rs1.getString(3) + "</td><td align='center'>" + rs1.getString(4) + "</td><td align='center'>" + rs1.getString(5) + "</td><td align='center'>" + rs1.getString(6) + "</td><td align='center'><a href='update.jsp?id=" + id + "'>修改</a> <a href='del.jsp?id=" + id + "' onclick = 'return del()'>删除</a></td></tr>"); } //关闭操作 rs1.close(); stmt.close(); dbConn.close(); %> </table> <script> //删除确认 function del() { if (!window.confirm('是否要删除数据??')) return false; } </script> </body> </html>
五、运行截图
添加信息
查询通过宿舍号模糊查询
修改