基于Java Web的学生管理系统

零、前提

使用工具:idea、MySQL

使用技术:JDBC、servlet

一、数据库

Database - test1      # 数据库:test1

CREATE TABLE `student` (
  `id` int(3) NOT NULL auto_increment,
  `name` varchar(10) default NULL,
  `age` int(3) default NULL,
  `classes` varchar(10) default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `index_1` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;      # 表:student

insert  into `student`(`id`,`name`,`age`,`classes`) values (7,'李让',28,'毕业'),(8,'张三',20,'大二'),(9,'张四',10,'三年级'),(11,'小张',10,'三年级'),(12,'张丹',17,'高二'),(13,'小暇',19,'大一'),(14,'小兰',19,'大一'),(15,'李杯狐',12,'五年级');             #表中的内容

二、项目框架

                         

  2-1  domain-Student 实体类

public class Student {
    private int id;
    private String name;
    private int age;
    private String classes;

    public Student() {
    }

    public Student(String name, int age, String classes) {
        this.name = name;
        this.age = age;
        this.classes = classes;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getClasses() {
        return classes;
    }

    public void setClasses(String classes) {
        this.classes = classes;
    }
}

2-2  util-JdbcUtils  工具类

public class JdbcUtils {
    private final static String url = "jdbc:mysql://localhost:3306/test1?useUnicode=true&characterEncoding=utf8";
    private final static String user = "root";
    private final static String psw = "mysql";

    public static Connection getConn() {
        Connection conn = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection(url, user, psw);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return conn;
    }
}

2-3  dao-StudentDao接口 

public interface StudentDao {
    public List<Student> findAll() throws SQLException, ClassNotFoundException;

    public Student findById(int id) throws SQLException, ClassNotFoundException;

    public int add(Student s) throws SQLException, ClassNotFoundException;

    public int delete(int id) throws SQLException, ClassNotFoundException;

    public int modify(int id ,Student s) throws SQLException, ClassNotFoundException;
}

2-4  dao-impl-StudentDaoImpl  接口实现

public class StudentDaoImpl implements StudentDao {
    private Connection conn = null;
    private PreparedStatement ps = null;
    private ResultSet rs = null;
    @Override
    public List<Student> findAll() throws SQLException, ClassNotFoundException {
        conn= JdbcUtils.getConn();
        String sql = "select * from student";
        ps = conn.prepareStatement(sql);
        rs = ps.executeQuery();
        List<Student> list = new ArrayList<Student>();
        while(rs.next()){
            Student s = new Student();
            s.setId(rs.getInt("id"));
            s.setAge(rs.getInt("age"));
            s.setClasses(rs.getString("classes"));
            s.setName(rs.getString("name"));
            list.add(s);
        }
        return list;
    }

    @Override
    public Student findById(int id) throws SQLException, ClassNotFoundException {
        conn= JdbcUtils.getConn();
        String sql = "select * from student where id = ?";
        ps = conn.prepareStatement(sql);
        ps.setInt(1,id);
        rs = ps.executeQuery();
        Student s = new Student();
        while(rs.next()){
            s.setId(rs.getInt("id"));
            s.setAge(rs.getInt("age"));
            s.setClasses(rs.getString("classes"));
            s.setName(rs.getString("name"));
        }
        return s;
    }

    @Override
    public int add(Student s) throws SQLException, ClassNotFoundException {
        conn= JdbcUtils.getConn();
        String sql = "insert into student(name,age,classes) values(?,?,?)";
        ps = conn.prepareStatement(sql);
        ps.setString(1,s.getName());
        ps.setInt(2,s.getAge());
        ps.setString(3,s.getClasses());
        int i = ps.executeUpdate();
        return i;
    }

    @Override
    public int delete(int id) throws SQLException, ClassNotFoundException {
        conn= JdbcUtils.getConn();
        String sql = "delete from student where id = ?";
        ps = conn.prepareStatement(sql);
        ps.setInt(1,id);
        int i = ps.executeUpdate();
        return i;
    }

    @Override
    public int modify(int id, Student s) throws SQLException, ClassNotFoundException {
        conn= JdbcUtils.getConn();
        String sql = "update student set name=?,age=?,classes=? where id=?";
        ps = conn.prepareStatement(sql);
        ps.setString(1,s.getName());
        ps.setInt(2,s.getAge());
        ps.setString(3,s.getClasses());
        ps.setInt(4,id);
        int i = ps.executeUpdate();
        return i;
    }
}

2-5 servle-StudentServlet

public class StudentServlet extends HttpServlet {
    StudentDao studentDao = new StudentDaoImpl();

    public List<Student> findAll() throws SQLException, ClassNotFoundException {
        return studentDao.findAll();
    }
    public int modify(int id ,Student s) throws SQLException, ClassNotFoundException {
        return studentDao.modify(id,s);
    }

    public Student findById(int id) throws SQLException, ClassNotFoundException {
        return studentDao.findById(id);
    }

    public int add(Student s) throws SQLException, ClassNotFoundException{
        return studentDao.add(s);
    }

    public int delete(int id) throws SQLException, ClassNotFoundException{
        return studentDao.delete(id);
    }
} 

2-5 servle-StudentServletAdd

@WebServlet("/stu_add")
public class StudentServletAdd extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf8");  //解决乱码
        StudentServlet ss = new StudentServlet();
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String classes = req.getParameter("classes");
        Student s = new Student(name,Integer.parseInt(age),classes);
        try {
            ss.add(s);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        resp.sendRedirect("/five/stu_list.jsp");
    }
}

2-6  web-stu_list.jsp 

<%@ page import="cn.my.sms.servlet.StudentServlet" %>
<%@ page import="cn.my.sms.domain.Student" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>学生界面</title>
</head>
<body>
    <h2 align="center">学生系统管理</h2>
    <p align="center">欢迎你:XX &nbsp;&nbsp;&nbsp;&nbsp; <a href="login.html">安全退出</a></p>
    <hr/>
    <p align="center"><a href="stu_add.jsp">添加学生</a></p>
    <form action="#" method="post">
        <table align="center" border="1px" width="80%">
            <tr>
                <td>学号</td>
                <td>姓名</td>
                <td>年龄</td>
                <td>班级</td>
                <td>操作</td>
            </tr>
            <%
                StudentServlet ss = new StudentServlet();
                List<Student> list = ss.findAll();
                for(Student s:list){
            %>

            <tr>
                <td><%= s.getId() %></td>
                <td><%= s.getName() %></td>
                <td><%= s.getAge() %></td>
                <td><%= s.getClasses() %></td>
                <td>
                    <a href="stu_delete?id=<%= s.getId() %>" onclick="return confirm('真的要删除该学生吗?')">删除</a>|
                    <a href="stu_modify.jsp?id=<%= s.getId() %>">修改</a> </td>
            </tr>

            <%
                }
            %>

           </table>
       </form>
</body>
</html>

2-6  web-stu_add.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加学生界面</title>
</head>
<body>
<form action="stu_add" method="post">
    <table align="center" border="1px">
        <tr>
            <td>姓名</td>
            <td><input type="text" name="name"></td>
        </tr>
        <tr>
            <td>年龄</td>
            <td><input type="text" name="age"></td>
        </tr>
        <tr>
            <td>班级</td>
            <td><input type="text" name="classes"> </td>
        </tr>
        <tr>
            <td align="center" colspan="2"><input type="submit" value="添加学生"></td>
        </tr>
    </table>
</form>
</body>
</html>

2-7  servlet-StudentServletDelete

@WebServlet("/stu_delete")
public class StudentServletDelete extends HttpServlet {
   StudentServlet ss = new StudentServlet();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String id = req.getParameter("id");
        System.out.println("id = " + id);
        int i = 0;
        try {
            i = ss.delete(Integer.parseInt(id));
        } catch (Exception e) {
            e.printStackTrace();
        }

        resp.sendRedirect("/five/stu_list.jsp");

    }
}

2-8   servlet-StudentServletModify

@WebServlet("/stu_modify")
public class StudentServletModify extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        this.doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf8");
        String id = req.getParameter("id");
        String name = req.getParameter("name");
        String age = req.getParameter("age");
        String classes = req.getParameter("classes");
        Student s = new Student(name,Integer.parseInt(age),classes);
        StudentServlet ss = new StudentServlet();
        try {
            ss.modify(Integer.parseInt(id),s);
        } catch (Exception throwables) {
            throwables.printStackTrace();
        }
        resp.sendRedirect("stu_list.jsp");
    }
}

2-9  web-stu_modify.jsp 

<%@ page import="cn.my.sms.servlet.StudentServlet" %>
<%@ page import="cn.my.sms.domain.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改学生</title>
</head>
<body>
<form action="stu_modify" method="post">
    <%
        String id = request.getParameter("id");
        StudentServlet ss = new StudentServlet();
        Student s = ss.findById(Integer.parseInt(id));
    %>
    <input type="hidden" name="id" value="<%= s.getId() %>">
    <table align="center" border="1px">
        <tr>
            <td>姓名</td>
            <td><input type="text" name="name" value="<%= s.getName() %>"></td>
        </tr>
        <tr>
            <td>年龄</td>
            <td><input type="text" name="age" value="<%= s.getAge() %>"></td>
        </tr>
        <tr>
            <td>班级</td>
            <td><input type="text" name="classes" value="<%= s.getClasses() %>"> </td>
        </tr>
        <tr>
            <td align="center" colspan="2"><input type="submit" value="修改学生"></td>
        </tr>
    </table>
</form>
</body>
</html>

三、总结

3-1  根据数据库创建实体类;

3-2  写工具类,获得 conn对象;

3-3  在StudentDao接口中写用到的方法,并在StudentDaoImpl类中实现所有的方法;

3-4  创建servlet包,在StudentServlet中调用所有的StudentDao接口中的方法(目的:方便管理、纠错、隔离);

3-5  创建主界面、新增学生界面、修改学生界面等三个页面;

3-6  在servlet包下创建类(StudentServletAdd、StudentServletDelete、StudentServletModify),三个类继承 HTTPServlet ,与三个页面结合实现新增、删除、修改等操作;

3-7  没有写登录页面。

 

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
该学生成绩信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 管理员为班级设置年级,为年级设置课程,为班级的每门课程设置老师,为学生设置班级。一个年级有多门课程(语文、数学、外语等等),班级的每门课程只能有一名老师,一个老师可以有多门课程;老师选择自己这门课程为该课程的学生登记成绩。老师可以查看其他老师的信息(可以当成是老师的通讯录),查看本课程学生的信息和成绩;学生可以查看班级其他同学的信息(可以看成是班级的同学录)。 考试分为两种,一种是年级统考,一种是平时考试。年级统考需要管理员事先添加一次年级统考,考试成绩出来后,老师进入系统选择该次考试为学生登记成绩。平时考试则是班级平时的考试,老师添加考试信息,登记成绩。成绩统计分析则是针对年级统考进行分析,主要涉及各学科分数名次,总分名次。 技术实现 系统环境:Windows开发工具:IDEAJava版本:JDK 1.8服务器:Tomcat 1.8数据库:MySQL 5.X系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Html+Css+Ajax 系统功能系统主要分为三种用户角色,分别是管理员、老师以及学生,其具体功能如下: - 管理员   学生信息管理、教师信息管理、年级信息管理、班级信息管理、课程信息管理、考试信息管理,系统参数设置 - 老师   教学管理、教师个人信息维护、教师通讯录管理 - 学生考试成绩查询、学生通讯录、学生个人信息维护 运行截图 登录界面: 管理员界面: 考试列表:  成绩统计: 学生信息管理: 教师信息管理: 年级、班级信息管理:  系统设置: 教师界面:  成绩登记:  教师通讯录: 个人信息:  学生界面: 学生成绩查询: 班级通讯录: 学生个人信息:              

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值