学生信息管理系统 订阅
学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。 展开全文
学生信息管理系统是针对学校人事处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除,另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。
信息
外文名
Standard Student Information System
类    型
管理软件
主要用于
学校学生信息管理
中文名
学生信息管理系统(SIS)
目    的
科学化、规范化和自动化
学生信息管理系统定义
推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平的重要举措
收起全文
精华内容
下载资源
问答
  • java学生信息管理系统(附源码)

    万次阅读 多人点赞 2016-07-14 16:36:30
     学生管理系统就完成了  其中的登陆界面是 我借鉴别人的  文中难免有不足之处,恳请批评指正  2016-7-14 再此上传不了附件 所以我给链接去在云盘下载  首次上传 (2017_6_12更新)链接: ...

    一:   介绍

          

      1:实现登录界面

        2:实现主界面

               有两种操作 一种是按钮操作  另外一种是SQL语句。

        3:连接SQL server 2008 数据库,后续我更新了,加了一个MySql 版本。在我的下载链接里面都有,里面也有使用说明。另外*myeclipse和eclipse,            jcreator什么的都是IDE,使用都一样,基本没什么区别,只不过myeclipse更商业化不开源,也就意味着收费,里面集成的插件比较多而已。

               *****************************************************************************************************

               用到的软件及环境SQLserver2008,eclipse,sqljdbc4.jar(数据库驱动包)

               *****************************************************************************************************

               另外一个Mysql 5.7.15.  Myeclipse2015,mysql-connector-java-5.1.34.jar

                 **********************************************************************************************************************

     

               java的JDK环境 (自行安装配置)

                切记:

                另外要新建数据库wtf 和新建学生表student(也可以用你自己创建的数据库及表,不过你得在源代码中进行修改):

                还要导入sqljdbc4.jar

            

        4:实现增删改查  (另有退出和刷新)

    二:    使用

      1:首先导入rjgc包

     

    然后点开browse  找到rjgc  

    最后点击finish

    得到    下图

    加载出来以后可能有的java文件前面有错,因为还没有导入sqljdbc4.jar

    (*******************************************************************************************************************************                    注意,方式一导入jdbc的图是之前我做的时候比较麻烦的一种方式,但是也能达到效果,在后期的我更新的链接资源中,如果导入任意版本源码包的话,都会自动加载lib包以及下面不同版本对应的jdbc连接驱动。这时候你只需要在那个lib文件夹下的.jar 文件上右键点击-->build path--->add to build path,导入jdbc结束。

    方式二导入:贴一张图

    上面这张图是方式二导入的,

    **************************************************************************************************************************)

     

    接下来继续,方式一导入  看下图:

     

     

     

    这时候应该就差不多可以运行了,不过还得把SQLserver2008的(MSSQLSERVER)服务开启了。

    上图

    再回到eclipse界面 打开rjgc

    最后双击LoginIn.java打开代码文本

    运行  就可以出现登录界面  

    在LoginIn.java代码文本里面找到登录用户 和密码后就可以登录了 

    比如admin 123  和wangtangfu 123456      (注意不要多加空格)

    其实用户权限都一样  如果你想加用户权限  可以写两个不同的Qframe.java。要做到主窗口里面的功能不同   ,可以屏蔽一些按钮

    比如修改  增加  等功能。然后在不同用户登陆的时候调用不同的Qframe.java,这样应该可以实现权限问题。。。

     

    2:

    还有程序里面应运了一些图片,它们的位置路径位置可能不一样 ,自行参照代码理解修改(很容易的哟);

     

    三:程序运行截图

       登陆窗口

     主窗口

    SQL语句执行  比如select * from student  

    刷新按钮:

    增加按钮:

                                                                                                                                                         添加成功之后刷新即可:

    删除按钮:

    修改按钮:

    查询按钮

     

     

    至此  

          学生管理系统就完成了   

               其中的登陆界面是 我借鉴别人的  

                   文中难免有不足之处,恳请批评指正

                                                                                                                                       2016-7-14

    再此上传不了附件 所以我给链接去在云盘下载 


    首次上传

    (2017_6_12更新)链接: https://pan.baidu.com/s/1aSeKJ8gXxWSElHaTU6_PdA 密码: yqpv

     


    添加myeclipse+mysql 版本:

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k

    (2017_12_17更新)链接: https://pan.baidu.com/s/1dFAlILj 密码: 9z7k


     


    修改student.sql执行报错 (执行时可以打开偷偷看一眼)

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接: https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

    (2019_04_13更新)链接:https://pan.baidu.com/s/121sRLAerxEa3UmTD50Uu6g 密码: xjge

     

    展开全文
  • 学生信息管理系统

    千次阅读 2019-01-11 14:04:54
    C# Winform + SQLServer 做的学生信息管理系统。 实现了: 1、管理员或学生登录 2、管理员可以增加、删除、修改、查询学生信息。 3、学生只可以浏览信息,不可编辑或修改。 截图如下: 登录界面:   从用户...

    C# Winform + SQLServer 做的学生信息管理系统。
    实现了:

    1、管理员或学生登录

    2、管理员可以增加、删除、修改、查询学生信息。

    3、学生只可以浏览信息,不可编辑或修改。

    截图如下:

    登录界面:

     

    从用户类型中可以下拉选择学生或者管理员角色。

    登录失败提示:

    管理员登录成功后,主界面:

    界面上展示了管理员名字,右下角显示了作者信息,中间部分显示数据库统计信息,菜单展示:

    从这里看不出来管理员和学生的权限区别。点击进去看看:

    看得出来,管理员具有添加学生的权限,双击记录查看学生信息:

    管理员具有编辑和删除学生权限,而学生登录只能查看记录,但是无法编辑或删除。如图:

    数据库关系图展示:

    管理员信息是直接记录在Users 表中的,而学生信息是保存在 StudentInfo 这个表中的。

    这就是一个简单的学生信息管理系统,需要的加QQ 972799117,付费购买~~
    预告:下一个系统是成绩管理系统

    展开全文
  • JavaWeb-简单学生信息管理系统的实现-Jsp+Servlet+MySql

    万次阅读 多人点赞 2019-04-05 14:58:42
    关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~ 关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~ 关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~

    关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~

    关注公众号:吾爱代码,回复Java学生管理系统,获取下载链接~

    代码免费!!!代码免费!!!代码免费!!!

    运行截图:

     

    项目文件结构:

    获取 数据库连接类:

    package db;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    
    /**
     * @ClassName: DbConnect
     * @Author: Leo
     * @Description:
     * @Date: 2019/3/27 21:36
     */
    public class DbConnect {
        public static Connection connection;
        public static String url = "jdbc:mysql://localhost/stumanage?user=root&password=root"
                + "&useUnicode=true&characterEncoding=utf-8&useSSL=true";
    
        public static Connection getConnection() {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                connection = DriverManager.getConnection(url);
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return connection;
        }
    }
    

    对应学生的实体类:

    package entity;
    
    
    public class Student {
    
        private long id;
        private String name;
        private String sex;
        private String specialty;
        private String grade;
    
        public Student() {
        }
    
        public Student(long id, String name, String sex, String specialty, String grade) {
            this.id = id;
            this.name = name;
            this.sex = sex;
            this.specialty = specialty;
            this.grade = grade;
        }
    
        public Student(String name, String sex, String specialty, String grade) {
            this.name = name;
            this.sex = sex;
            this.specialty = specialty;
            this.grade = grade;
        }
    
        public long getId() {
            return id;
        }
    
        public void setId(long id) {
            this.id = id;
        }
    
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
    
        public String getSpecialty() {
            return specialty;
        }
    
        public void setSpecialty(String specialty) {
            this.specialty = specialty;
        }
    
    
        public String getGrade() {
            return grade;
        }
    
        public void setGrade(String grade) {
            this.grade = grade;
        }
    
    }
    

    登录界面jsp:

    <%--
      Created by IntelliJ IDEA.
      User: 24234
      Date: 2019/3/27
      Time: 19:26
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
    <html>
    <head>
        <title>学生管理系统</title>
        <meta http-equiv="pragma" content="no-cache">
        <meta http-equiv="cache-control" content="no-cache">
        <meta http-equiv="expires" content="0">
    </head>
    <body>
    <center>
        <form action="/loginServer" method="post">
            <table>
                <tr>
                    <td>
                        用户名
                    </td>
                    <td>
                        <input type="text" name="admin">
                    </td>
                </tr>
                <tr>
                    <td>
                        密&nbsp&nbsp码
                    </td>
                    <td>
                        <input type="password" name="pwd">
                    </td>
                </tr>
                <tr>
                    <td colspan="2" align="center">
                        <input type="submit" value="登录">
                    </td>
                </tr>
    
            </table>
        </form>
    </center>
    </body>
    </html>
    

    登录servlet:(查询所有学生信息显示到主页面jsp)

    package servlet;
    
    import db.DbConnect;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * @ClassName: ${NAME}
     * @Author: Leo
     * @Description:
     * @Date: 2019/3/28 20:29
     */
    @WebServlet(name = "loginServer")
    public class loginServer extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.setContentType("text/html");
            req.setCharacterEncoding("utf-8");
            resp.setCharacterEncoding("utf-8");
            String admin = req.getParameter("admin");
            String pwd = req.getParameter("pwd");
            if (admin.equals("admin") && pwd.equals("123")) {
                Connection connection = DbConnect.getConnection();
                String sql = "SELECT * FROM STUDENT";
                PreparedStatement preparedStatement = null;
                ResultSet resultSet = null;
                try {
                    preparedStatement = connection.prepareStatement(sql);
                    resultSet = preparedStatement.executeQuery();
                    HttpSession httpSession = req.getSession();
    //                设置session有效时间为两小时
                    httpSession.setMaxInactiveInterval(7200);
                    httpSession.setAttribute("resultSet", resultSet);
                    resp.sendRedirect("loginAction.jsp");
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            } else {
                resp.sendRedirect("index.jsp");
            }
    
        }
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            doGet(req, resp);
        }
    }
    

    主页面jsp:

    <%@ page import="java.sql.ResultSet" %><%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/3/28
      Time: 14:31
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
    <% ResultSet resultSet = (ResultSet) session.getAttribute("resultSet");%>
    <html>
    <head>
        <title>学生管理系统</title>
        <link rel="stylesheet" type="text/css" href="css/table.css">
    </head>
    <body>
    <center>
        <table class="gridtable">
            <tr>
                <td align="center" colspan="6">学生信息</td>
            </tr>
            <tr>
                <td>姓名</td>
                <td>性别</td>
                <td>专业</td>
                <td>年级</td>
                <td align="center" colspan="2">操作</td>
            </tr>
            <%
                while (resultSet.next()) {
            %>
    
            <tr>
                <td><%=resultSet.getString("name")%>
                </td>
                <td><%=resultSet.getString("sex")%>
                </td>
                <td><%=resultSet.getString("specialty")%>
                </td>
                <td><%=resultSet.getString("grade")%>
                </td>
                <td><a href="selectServlet?id=<%=resultSet.getInt("id")%>">修改</a></td>
                <td><a href="deleteServlet?id=<%=resultSet.getInt("id")%>" onclick="return confirm('确定删除?')">删除</a></td>
            </tr>
            <%}%>
            <tr>
                <td align="center" colspan="6">
                    <a href="stuAdd.jsp">添加</a>
                </td>
            </tr>
        </table>
    </center>
    </body>
    </html>
    

    根据id查询数据库记录:

    package servlet;
    
    import db.DbConnect;
    import entity.Student;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * @ClassName: ${NAME}
     * @Author: Leo
     * @Description:
     * @Date: 2019/3/29 15:20
     */
    @WebServlet(name = "selectServlet")
    public class selectServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
            request.setCharacterEncoding("utf-8");
            String id = request.getParameter("id");
            String sql = "SELECT * FROM STUDENT WHERE ID=?";
            Connection connection = DbConnect.getConnection();
            PreparedStatement preparedStatement = null;
            ResultSet resultset = null;
            Student student = null;
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setInt(1, Integer.parseInt(id));
                resultset = preparedStatement.executeQuery();
                while (resultset.next()) {
                    String name = resultset.getString("name");
                    String sex = resultset.getString("sex");
                    String specialty = resultset.getString("specialty");
                    String grade = resultset.getString("grade");
                    student = new Student(Integer.parseInt(id), name, sex, specialty, grade);
                }
                HttpSession httpSession = request.getSession();
                httpSession.setAttribute("student", student);
                response.sendRedirect("stuEdit.jsp");
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

     修改学生信息jsp:

    <%@ page import="entity.Student" %><%--
      Created by IntelliJ IDEA.
      User: 24234
      Date: 2019/3/29
      Time: 14:59
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
    <html>
    <head>
        <title>修改学生信息</title>
        <link rel="stylesheet" type="text/css" href="css/table.css">
    </head>
    <body>
    <%Student student = (Student) session.getAttribute("student");%>
    <form action="/updateServlet" method="post">
        <center>
            <table class="gridtable">
                <tr>
                    <td align="center" colspan="2">
                        修改学生信息
                        <input type="hidden" name="id" value="<%=student.getId()%>">
                    </td>
                </tr>
                <tr>
                    <td>姓名</td>
                    <td><input type="text" name="name" value="<%=student.getName()%>"></td>
                </tr>
                <tr>
                    <td>性别</td>
                    <td><%if (student.getSex().equals("男")) {%>
                        <input type="radio" name="sex" value="男" checked="checked">男
                        <input type="radio" name="sex" value="女">女
                    </td>
                    <%
                    } else {
                    %>
                    <td>
                        <input type="radio" name="sex" value="男">男
                        <input type="radio" name="sex" value="女" checked="checked">女
                    </td>
                    <%}%>
                </tr>
                <tr>
                    <td>专业</td>
                    <td><input type="text" name="specialty" value="<%=student.getSpecialty()%>"></td>
                </tr>
                <tr>
                    <td>年级</td>
                    <td>
                        <%
                            if (student.getGrade().equals("大一")) {
                        %>
                        <select name="grade">
                            <option value="大一" selected="selected">大一</option>
                            <option value="大二">大二</option>
                            <option value="大三">大三</option>
                            <option value="大四">大四</option>
                        </select>
                        <%} else if (student.getGrade().equals("大二")) {%>
                        <select name="grade">
                            <option value="大一">大一</option>
                            <option value="大二" selected="selected">大二</option>
                            <option value="大三">大三</option>
                            <option value="大四">大四</option>
                        </select>
                        <%} else if (student.getGrade().equals("大三")) {%>
                        <select name="grade">
                            <option value="大一">大一</option>
                            <option value="大二">大二</option>
                            <option value="大三" selected="selected">大三</option>
                            <option value="大四">大四</option>
                        </select>
                        <%} else if (student.getGrade().equals("大四")) {%>
                        <select name="grade">
                            <option value="大一">大一</option>
                            <option value="大二">大二</option>
                            <option value="大三">大三</option>
                            <option value="大四" selected="selected">大四</option>
                        </select>
                        <%}%>
                    </td>
                </tr>
                <tr>
                    <td align="center" colspan="2">
                        <input type="submit" value="修改">
                    </td>
                </tr>
            </table>
        </center>
    </form>
    </body>
    </html>
    

    修改学生信息servlet:

    package servlet;
    
    import db.DbConnect;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * @ClassName: ${NAME}
     * @Author: Leo
     * @Description:
     * @Date: 2019/3/29 15:44
     */
    @WebServlet(name = "updateServlet")
    public class updateServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
            request.setCharacterEncoding("utf-8");
            String id = request.getParameter("id");
            String name = request.getParameter("name");
            String sex = request.getParameter("sex");
            String specialty = request.getParameter("specialty");
            String grade = request.getParameter("grade");
            Connection connection = DbConnect.getConnection();
            String sql = "UPDATE STUDENT SET name=? , sex=? , specialty=? , grade=? where id=?";
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setInt(5, Integer.parseInt(id));
                preparedStatement.setString(1, name);
                preparedStatement.setString(2, sex);
                preparedStatement.setString(3, specialty);
                preparedStatement.setString(4, grade);
                int i = preparedStatement.executeUpdate();
                HttpSession httpSession = request.getSession();
                if (i == 1) {
                    String selectAll = "SELECT * FROM STUDENT";
                    preparedStatement = connection.prepareStatement(selectAll);
                    resultSet = preparedStatement.executeQuery();
                    httpSession.setMaxInactiveInterval(7200);
                    httpSession.setAttribute("resultSet", resultSet);
                    response.sendRedirect("loginAction.jsp");
                } else {
                    httpSession.setAttribute("message", "修改失败!");
                    response.sendRedirect("error.jsp");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
    
        }
    }
    

    添加学生信息jsp:

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/3/28
      Time: 14:50
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
    <html>
    <head>
        <title>添加学生信息</title>
        <link rel="stylesheet" type="text/css" href="css/table.css">
    </head>
    <body>
    <form action="/addServlet" method="post">
        <center>
            <table class="gridtable">
                <tr>
                    <td align="center" colspan="2">添加学生信息</td>
                </tr>
                <tr>
                    <td>姓名</td>
                    <td><input type="text" name="name"></td>
                </tr>
                <tr>
                    <td>性别</td>
                    <td>
                        <input type="radio" name="sex" value="男" checked="checked">男
                        <input type="radio" name="sex" value="女">女
                    </td>
                </tr>
                <tr>
                    <td>专业</td>
                    <td><input type="text" name="specialty"></td>
                </tr>
                <tr>
                    <td>年级</td>
                    <td><select name="grade">
                        <option value="大一">大一</option>
                        <option value="大二">大二</option>
                        <option value="大三">大三</option>
                        <option value="大四">大四</option>
                    </select></td>
                </tr>
                <tr>
                    <td align="center" colspan="2"><input type="submit" value="添加"></td>
                </tr>
            </table>
        </center>
    </form>
    </body>
    </html>
    

    添加学生信息servlet:

    package servlet;
    
    import db.DbConnect;
    import entity.Student;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * @ClassName: ${NAME}
     * @Author: Leo
     * @Description:
     * @Date: 2019/3/28 20:24
     */
    public class addServlet extends javax.servlet.http.HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            request.setCharacterEncoding("utf-8");
            response.setCharacterEncoding("utf-8");
            String name = request.getParameter("name");
            String sex = request.getParameter("sex");
            String specialty = request.getParameter("specialty");
            String grade = request.getParameter("grade");
            Student student = new Student(name, sex, specialty, grade);
            Connection connection = DbConnect.getConnection();
            String sql = "INSERT INTO student(name,sex,specialty,grade) values(?,?,?,?)";
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setString(1, student.getName());
                preparedStatement.setString(2, student.getSex());
                preparedStatement.setString(3, student.getSpecialty());
                preparedStatement.setString(4, student.getGrade());
                int i = preparedStatement.executeUpdate();
                HttpSession httpSession = request.getSession();
                if (i == 1) {
                    String selectSql = "SELECT * FROM STUDENT";
                    preparedStatement = connection.prepareStatement(selectSql);
                    resultSet = preparedStatement.executeQuery();
                    httpSession.setMaxInactiveInterval(7200);
                    httpSession.setAttribute("resultSet", resultSet);
                    response.sendRedirect("loginAction.jsp");
                } else {
                    httpSession.setAttribute("message", "添加失败!");
                    response.sendRedirect("error.jsp");
                }
    
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

    删除学生信息servlet:

    package servlet;
    
    import db.DbConnect;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
    import java.io.IOException;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    /**
     * @ClassName: ${NAME}
     * @Author: Leo
     * @Description:
     * @Date: 2019/3/29 16:05
     */
    @WebServlet(name = "deleteServlet")
    public class deleteServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            response.setContentType("text/html");
            response.setCharacterEncoding("utf-8");
            request.setCharacterEncoding("utf-8");
            String id = request.getParameter("id");
            String sql = "DELETE FROM STUDENT WHERE ID=?";
            Connection connection = DbConnect.getConnection();
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            HttpSession httpSession = request.getSession();
            try {
                preparedStatement = connection.prepareStatement(sql);
                preparedStatement.setInt(1, Integer.parseInt(id));
                int i = preparedStatement.executeUpdate();
                if (i == 1) {
                    String select = "SELECT * FROM STUDENT";
                    preparedStatement = connection.prepareStatement(select);
                    resultSet = preparedStatement.executeQuery();
                    httpSession.setMaxInactiveInterval(7200);
                    httpSession.setAttribute("resultSet", resultSet);
                    response.sendRedirect("loginAction.jsp");
                } else {
                    httpSession.setAttribute("message", "删除失败!");
                    response.sendRedirect("error.jsp");
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
    

    错误页面:

    <%--
      Created by IntelliJ IDEA.
      User: Administrator
      Date: 2019/3/28
      Time: 15:18
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="utf-8" %>
    <html>
    <head>
        <title>Error</title>
    </head>
    <body>
    <%
        String message = (String) session.getAttribute("message");
        out.print(message);
    %>
    </body>
    </html>
    

    web.xml

    <!DOCTYPE web-app PUBLIC
            "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
            "http://java.sun.com/dtd/web-app_2_3.dtd" >
    
    <web-app>
        <display-name>Archetype Created Web Application</display-name>
        <servlet>
            <servlet-name>addServlet</servlet-name>
            <servlet-class>servlet.addServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>loginServer</servlet-name>
            <servlet-class>servlet.loginServer</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>selectServlet</servlet-name>
            <servlet-class>servlet.selectServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>updateServlet</servlet-name>
            <servlet-class>servlet.updateServlet</servlet-class>
        </servlet>
        <servlet>
            <servlet-name>deleteServlet</servlet-name>
            <servlet-class>servlet.deleteServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
            <servlet-name>addServlet</servlet-name>
            <url-pattern>/addServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>loginServer</servlet-name>
            <url-pattern>/loginServer</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>selectServlet</servlet-name>
            <url-pattern>/selectServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>updateServlet</servlet-name>
            <url-pattern>/updateServlet</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>deleteServlet</servlet-name>
            <url-pattern>/deleteServlet</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

     

    展开全文
  • Python题目:学生信息管理系统-高级版(图形界面+MySQL数据库) 使用图形界面显示,选用list、tuple、dictionary或map等数据结构,操作数据库存储X个学生的三门课的成绩(机器学习、Python程序设计、研究生英语)...

    Python题目:学生信息管理系统-高级版(图形界面+MySQL数据库)

           使用图形界面显示,选用list、tuple、dictionary或map等数据结构,操作数据库存储X个学生的三门课的成绩(机器学习、Python程序设计、研究生英语),并实现以下功能:

    1.添加学生信息
    2.修改学生信息
    3.删除学生
    4.添加学生的成绩
    5.修改学生成绩
    6.按姓名或者学号查找学生,显示学生信息及三门课的成绩,以及排名
    7.学生成绩统计(每门课的平均分、最高分、最低分)

    代码里的注释很清楚了,这里不做讲解了,有任何问题可以评论提问。 

    注意:

    • 数据表不存在则创建表,但自动创建的表是空白的,管理员用户名和密码需要自己数据库中添加一个(也可以运行文章最后的sql语句),为什么会出现这个问题,因为这是个课堂作业,当时没有设计好,现在懒得再改代码了╮(╯﹏╰)╭.......
    • 数据库在代码中(代码里有两处需要修改数据库 用户名、密码 的地方第66行第490行),配置为:
    # 打开数据库连接 连接测试
    db = pymysql.connect("localhost", "root", "root", "student")

           分别表示  主机名:localhost,用户名:root,密码:root,数据库名:student 


    下面是界面的截图

     

     管理员操作界面,拥有增删改查功能,甚至拥有排序功能φ(>ω<*) ,快点击标签栏试试

     

     代码:

    #!/usr/bin/python3
    
    import pymysql
    from tkinter import ttk
    import tkinter as tk
    import tkinter.font as tkFont
    from tkinter import * # 图形界面库
    import tkinter.messagebox as messagebox # 弹窗
    
    
    class StartPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁子界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('学生信息管理系统')
    		self.window.geometry('300x470') # 这里的乘是小x
    
    		label = Label(self.window, text="学生信息管理系统", font=("Verdana", 20))
    		label.pack(pady=100)  # pady=100 界面的长度
    
    		Button(self.window, text="管理员登陆", font=tkFont.Font(size=16), command=lambda: AdminPage(self.window), width=30, height=2,
    			   fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    		Button(self.window, text="学生登陆", font=tkFont.Font(size=16), command=lambda: StudentPage(self.window), width=30,
    			   height=2,fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    		Button(self.window, text="关于", font=tkFont.Font(size=16), command=lambda: AboutPage(self.window), width=30, height=2,
    			   fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    		Button(self.window, text='退出系统', height=2, font=tkFont.Font(size=16), width=30, command=self.window.destroy,
    			   fg='white', bg='gray', activebackground='black', activeforeground='white').pack()
    
    		self.window.mainloop() # 主消息循环
    
    
    #管理员登陆页面
    class AdminPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('管理员登陆页面')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='管理员登陆', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack()
    
    		Label(self.window, text='管理员账号:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.admin_username = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory')
    		self.admin_username.pack()
    
    		Label(self.window, text='管理员密码:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.admin_pass = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory', show='*')
    		self.admin_pass.pack()
    
    		Button(self.window, text="登陆", width=8, font=tkFont.Font(size=12), command=self.login).pack(pady=40)
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back).pack()
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def login(self):
    		print(str(self.admin_username.get()))
    		print(str(self.admin_pass.get()))
    		admin_pass = None
    
    		# 数据库操作 查询管理员表
    		db = pymysql.connect("localhost", "root", "root", "student")  # 打开数据库连接
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM admin_login_k WHERE admin_id = '%s'" % (self.admin_username.get())  # SQL 查询语句
    		try:
    		# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				admin_id = row[0]
    				admin_pass = row[1]
    				# 打印结果
    				print("admin_id=%s,admin_pass=%s" % (admin_id, admin_pass))
    		except:
    			print("Error: unable to fecth data")
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    		db.close()  # 关闭数据库连接
    
    		print("正在登陆管理员管理界面")
    		print("self",self.admin_pass)
    		print("local",admin_pass)
    
    		if self.admin_pass.get() == admin_pass:
    			AdminManage(self.window)  # 进入管理员操作界面
    		else:
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    
    	def back(self):
    		StartPage(self.window) # 显示主窗口 销毁本窗口
    
    
    #学生登陆页面
    class StudentPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('学生登陆')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='学生登陆', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack()
    
    		Label(self.window, text='学生账号:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.student_id = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory')
    		self.student_id.pack()
    
    		Label(self.window, text='学生密码:', font=tkFont.Font(size=14)).pack(pady=25)
    		self.student_pass = tk.Entry(self.window, width=30, font=tkFont.Font(size=14), bg='Ivory', show='*')
    		self.student_pass.pack()
    
    		Button(self.window, text="登陆", width=8, font=tkFont.Font(size=12), command=self.login).pack(pady=40)
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back).pack()
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def login(self):
    		print(str(self.student_id.get()))
    		print(str(self.student_pass.get()))
    		stu_pass = None
    
    		# 数据库操作 查询管理员表
    		db = pymysql.connect("localhost", "root", "root", "student")  # 打开数据库连接
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM stu_login_k WHERE stu_id = '%s'" % (self.student_id.get())  # SQL 查询语句
    		try:
    			# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				stu_id = row[0]
    				stu_pass = row[1]
    				# 打印结果
    				print("stu_id=%s,stu_pass=%s" % (stu_id, stu_pass))
    		except:
    			print("Error: unable to fecth data")
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    		db.close()  # 关闭数据库连接
    
    		print("正在登陆学生信息查看界面")
    		print("self", self.student_pass.get())
    		print("local", stu_pass)
    
    		if self.student_pass.get() == stu_pass:
    			StudentView(self.window, self.student_id.get()) # 进入学生信息查看界面
    		else:
    			messagebox.showinfo('警告!', '用户名或密码不正确!')
    
    	def back(self):
    		StartPage(self.window)  # 显示主窗口 销毁本窗口
    
    
    
    # 管理员操作界面
    class AdminManage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = Tk()  # 初始框的声明
    		self.window.title('管理员操作界面')
    
    		self.frame_left_top = tk.Frame(width=300, height=200)
    		self.frame_right_top = tk.Frame(width=200, height=200)
    		self.frame_center = tk.Frame(width=500, height=400)
    		self.frame_bottom = tk.Frame(width=650, height=50)
    
    		# 定义下方中心列表区域
    		self.columns = ("学号", "姓名", "性别", "年龄")
    		self.tree = ttk.Treeview(self.frame_center, show="headings", height=18, columns=self.columns)
    		self.vbar = ttk.Scrollbar(self.frame_center, orient=VERTICAL, command=self.tree.yview)
    		# 定义树形结构与滚动条
    		self.tree.configure(yscrollcommand=self.vbar.set)
    
    		# 表格的标题
    		self.tree.column("学号", width=150, anchor='center')  # 表示列,不显示
    		self.tree.column("姓名", width=150, anchor='center')
    		self.tree.column("性别", width=100, anchor='center')
    		self.tree.column("年龄", width=100, anchor='center')
    
    		# 调用方法获取表格内容插入
    		self.tree.grid(row=0, column=0, sticky=NSEW)
    		self.vbar.grid(row=0, column=1, sticky=NS)
    
    		self.id = []
    		self.name = []
    		self.gender = []
    		self.age = []
    		# 打开数据库连接
    		db = pymysql.connect("localhost", "root", "root", "student")
    		cursor = db.cursor()  # 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM student_k"  # SQL 查询语句
    		try:
    			# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				self.id.append(row[0])
    				self.name.append(row[1])
    				self.gender.append(row[2])
    				self.age.append(row[3])
    				# print(self.id)
    				# print(self.name)
    				# print(self.gender)
    				# print(self.age)
    		except:
    			print("Error: unable to fetch data")
    			messagebox.showinfo('警告!', '数据库连接失败!')
    		db.close()# 关闭数据库连接
    
    
    		print("test***********************")
    		for i in range(min(len(self.id), len(self.name), len(self.gender), len(self.age))):  # 写入数据
    			self.tree.insert('', i, values=(self.id[i], self.name[i], self.gender[i], self.age[i]))
    
    		for col in self.columns:  # 绑定函数,使表头可排序
    			self.tree.heading(col, text=col,
    							  command=lambda _col=col: self.tree_sort_column(self.tree, _col, False))
    
    		# 定义顶部区域
    		# 定义左上方区域
    		self.top_title = Label(self.frame_left_top, text="学生信息:", font=('Verdana', 20))
    		self.top_title.grid(row=0, column=0, columnspan=2, sticky=NSEW, padx=50, pady=10)
    
    		self.left_top_frame = tk.Frame(self.frame_left_top)
    		self.var_id = StringVar()  # 声明学号
    		self.var_name = StringVar()  # 声明姓名
    		self.var_gender = StringVar()  # 声明性别
    		self.var_age = StringVar()  # 声明年龄
    		# 学号
    		self.right_top_id_label = Label(self.frame_left_top, text="学号:", font=('Verdana', 15))
    		self.right_top_id_entry = Entry(self.frame_left_top, textvariable=self.var_id, font=('Verdana', 15))
    		self.right_top_id_label.grid(row=1, column=0)  # 位置设置
    		self.right_top_id_entry.grid(row=1, column=1)
    		# 姓名
    		self.right_top_name_label = Label(self.frame_left_top, text="姓名:", font=('Verdana', 15))
    		self.right_top_name_entry = Entry(self.frame_left_top, textvariable=self.var_name, font=('Verdana', 15))
    		self.right_top_name_label.grid(row=2, column=0)  # 位置设置
    		self.right_top_name_entry.grid(row=2, column=1)
    		# 性别
    		self.right_top_gender_label = Label(self.frame_left_top, text="性别:", font=('Verdana', 15))
    		self.right_top_gender_entry = Entry(self.frame_left_top, textvariable=self.var_gender,
    											font=('Verdana', 15))
    		self.right_top_gender_label.grid(row=3, column=0)  # 位置设置
    		self.right_top_gender_entry.grid(row=3, column=1)
    		# 年龄
    		self.right_top_gender_label = Label(self.frame_left_top, text="年龄:", font=('Verdana', 15))
    		self.right_top_gender_entry = Entry(self.frame_left_top, textvariable=self.var_age,
    											font=('Verdana', 15))
    		self.right_top_gender_label.grid(row=4, column=0)  # 位置设置
    		self.right_top_gender_entry.grid(row=4, column=1)
    
    		# 定义右上方区域
    		self.right_top_title = Label(self.frame_right_top, text="操作:", font=('Verdana', 20))
    
    		self.tree.bind('<Button-1>', self.click)  # 左键获取位置
    		self.right_top_button1 = ttk.Button(self.frame_right_top, text='新建学生信息', width=20, command=self.new_row)
    		self.right_top_button2 = ttk.Button(self.frame_right_top, text='更新选中学生信息', width=20,
    											command=self.updata_row)
    		self.right_top_button3 = ttk.Button(self.frame_right_top, text='删除选中学生信息', width=20,
    											command=self.del_row)
    
    		# 位置设置
    		self.right_top_title.grid(row=1, column=0, pady=10)
    		self.right_top_button1.grid(row=2, column=0, padx=20, pady=10)
    		self.right_top_button2.grid(row=3, column=0, padx=20, pady=10)
    		self.right_top_button3.grid(row=4, column=0, padx=20, pady=10)
    
    		# 整体区域定位
    		self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
    		self.frame_right_top.grid(row=0, column=1, padx=30, pady=30)
    		self.frame_center.grid(row=1, column=0, columnspan=2, padx=4, pady=5)
    		self.frame_bottom.grid(row=2, column=0, columnspan=2)
    
    		self.frame_left_top.grid_propagate(0)
    		self.frame_right_top.grid_propagate(0)
    		self.frame_center.grid_propagate(0)
    		self.frame_bottom.grid_propagate(0)
    
    		self.frame_left_top.tkraise() # 开始显示主菜单
    		self.frame_right_top.tkraise() # 开始显示主菜单
    		self.frame_center.tkraise() # 开始显示主菜单
    		self.frame_bottom.tkraise() # 开始显示主菜单
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def back(self):
    		StartPage(self.window) # 显示主窗口 销毁本窗口
    
    	def click(self, event):
    		self.col = self.tree.identify_column(event.x)  # 列
    		self.row = self.tree.identify_row(event.y)  # 行
    
    		print(self.col)
    		print(self.row)
    		self.row_info = self.tree.item(self.row, "values")
    		self.var_id.set(self.row_info[0])
    		self.var_name.set(self.row_info[1])
    		self.var_gender.set(self.row_info[2])
    		self.var_age.set(self.row_info[3])
    		self.right_top_id_entry = Entry(self.frame_left_top, state='disabled', textvariable=self.var_id,
    										font=('Verdana', 15))
    
    		print('')
    
    	def tree_sort_column(self, tv, col, reverse):  # Treeview、列名、排列方式
    		l = [(tv.set(k, col), k) for k in tv.get_children('')]
    		l.sort(reverse=reverse)  # 排序方式
    		# rearrange items in sorted positions
    		for index, (val, k) in enumerate(l):  # 根据排序后索引移动
    			tv.move(k, '', index)
    		tv.heading(col, command=lambda: self.tree_sort_column(tv, col, not reverse))  # 重写标题,使之成为再点倒序的标题
    
    	def new_row(self):
    		print('123')
    		print(self.var_id.get())
    		print(self.id)
    		if str(self.var_id.get()) in self.id:
    			messagebox.showinfo('警告!', '该学生已存在!')
    		else:
    			if self.var_id.get() != '' and self.var_name.get() != '' and self.var_gender.get() != '' and self.var_age.get() != '':
    				# 打开数据库连接
    				db = pymysql.connect("localhost", "root", "root", "student")
    				cursor = db.cursor()  # 使用cursor()方法获取操作游标
    				sql = "INSERT INTO student_k(id, name, gender, age) \
    				       VALUES ('%s', '%s', '%s', '%s')" % \
    					  (self.var_id.get(), self.var_name.get(), self.var_gender.get(), self.var_age.get())  # SQL 插入语句
    				try:
    					cursor.execute(sql)  # 执行sql语句
    					db.commit()  # 提交到数据库执行
    				except:
    					db.rollback()  # 发生错误时回滚
    					messagebox.showinfo('警告!', '数据库连接失败!')
    				db.close()  # 关闭数据库连接
    
    				self.id.append(self.var_id.get())
    				self.name.append(self.var_name.get())
    				self.gender.append(self.var_gender.get())
    				self.age.append(self.var_age.get())
    				self.tree.insert('', len(self.id) - 1, values=(
    				self.id[len(self.id) - 1], self.name[len(self.id) - 1], self.gender[len(self.id) - 1],
    				self.age[len(self.id) - 1]))
    				self.tree.update()
    				messagebox.showinfo('提示!', '插入成功!')
    			else:
    				messagebox.showinfo('警告!', '请填写学生数据')
    
    	def updata_row(self):
    		res = messagebox.askyesnocancel('警告!', '是否更新所填数据?')
    		if res == True:
    			if self.var_id.get() == self.row_info[0]:  # 如果所填学号 与 所选学号一致
    				# 打开数据库连接
    				db = pymysql.connect("localhost", "root", "root", "student")
    				cursor = db.cursor()  # 使用cursor()方法获取操作游标
    				sql = "UPDATE student_k SET name = '%s', gender = '%s', age = '%s' \
    				 WHERE id = '%s'" % (self.var_name.get(), self.var_gender.get(), self.var_age.get(), self.var_id.get())  # SQL 插入语句
    				try:
    					cursor.execute(sql)  # 执行sql语句
    					db.commit()  # 提交到数据库执行
    					messagebox.showinfo('提示!', '更新成功!')
    				except:
    					db.rollback()  # 发生错误时回滚
    					messagebox.showinfo('警告!', '更新失败,数据库连接失败!')
    				db.close()  # 关闭数据库连接
    
    				id_index = self.id.index(self.row_info[0])
    				self.name[id_index] = self.var_name.get()
    				self.gender[id_index] = self.var_gender.get()
    				self.age[id_index] = self.var_age.get()
    
    				self.tree.item(self.tree.selection()[0], values=(
    					self.var_id.get(), self.var_name.get(), self.var_gender.get(),
    					self.var_age.get()))  # 修改对于行信息
    			else:
    				messagebox.showinfo('警告!', '不能修改学生学号!')
    
    	def del_row(self):
    		res = messagebox.askyesnocancel('警告!', '是否删除所选数据?')
    		if res == True:
    			print(self.row_info[0])  # 鼠标选中的学号
    			print(self.tree.selection()[0])  # 行号
    			print(self.tree.get_children())  # 所有行
    			# 打开数据库连接
    			db = pymysql.connect("localhost", "root", "root", "student")
    			cursor = db.cursor()  # 使用cursor()方法获取操作游标
    			sql = "DELETE FROM student_k WHERE id = '%s'" % (self.row_info[0]) # SQL 插入语句
    			try:
    				cursor.execute(sql)  # 执行sql语句
    				db.commit()  # 提交到数据库执行
    				messagebox.showinfo('提示!', '删除成功!')
    			except:
    				db.rollback()  # 发生错误时回滚
    				messagebox.showinfo('警告!', '删除失败,数据库连接失败!')
    			db.close()  # 关闭数据库连接
    
    			id_index = self.id.index(self.row_info[0])
    			print(id_index)
    			del self.id[id_index]
    			del self.name[id_index]
    			del self.gender[id_index]
    			del self.age[id_index]
    			print(self.id)
    			self.tree.delete(self.tree.selection()[0])  # 删除所选行
    			print(self.tree.get_children())
    
    
    # 学生查看信息界面
    class StudentView:
    	def __init__(self, parent_window, student_id):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('关于')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='学生信息查看', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack(pady=20)
    
    		self.id = '学号:' + ''
    		self.name = '姓名:' + ''
    		self.gender = '性别:' + ''
    		self.age = '年龄:' + ''
    		# 打开数据库连接
    		db = pymysql.connect("localhost", "root", "root", "student")
    		cursor = db.cursor()# 使用cursor()方法获取操作游标
    		sql = "SELECT * FROM student_k WHERE id = '%s'" % (student_id) # SQL 查询语句
    		try:
    			# 执行SQL语句
    			cursor.execute(sql)
    			# 获取所有记录列表
    			results = cursor.fetchall()
    			for row in results:
    				self.id = '学号:' + row[0]
    				self.name = '姓名:' + row[1]
    				self.gender = '性别:' + row[2]
    				self.age = '年龄:' + row[3]
    		except:
    			print("Error: unable to fetch data")
    		db.close()		# 关闭数据库连接
    
    		Label(self.window, text=self.id, font=('Verdana', 18)).pack(pady=5)
    		Label(self.window, text=self.name, font=('Verdana', 18)).pack(pady=5)
    		Label(self.window, text=self.gender, font=('Verdana', 18)).pack(pady=5)
    		Label(self.window, text=self.age, font=('Verdana', 18)).pack(pady=5)
    
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=16), command=self.back).pack(pady=25)
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def back(self):
    		StartPage(self.window)  # 显示主窗口 销毁本窗口
    
    
    # About页面
    class AboutPage:
    	def __init__(self, parent_window):
    		parent_window.destroy() # 销毁主界面
    
    		self.window = tk.Tk()  # 初始框的声明
    		self.window.title('关于')
    		self.window.geometry('300x450')  # 这里的乘是小x
    
    		label = tk.Label(self.window, text='学生信息管理系统', bg='green', font=('Verdana', 20), width=30, height=2)
    		label.pack()
    
    		Label(self.window, text='作者:清晨的光明', font=('Verdana', 18)).pack(pady=30)
    		Label(self.window, text='blog.csdn.net/kdongyi', font=('Verdana', 18)).pack(pady=5)
    
    		Button(self.window, text="返回首页", width=8, font=tkFont.Font(size=12), command=self.back).pack(pady=100)
    
    		self.window.protocol("WM_DELETE_WINDOW", self.back)  # 捕捉右上角关闭点击
    		self.window.mainloop()  # 进入消息循环
    
    	def back(self):
    		StartPage(self.window)  # 显示主窗口 销毁本窗口
    
    
    if __name__ == '__main__':
    	try:
    		# 打开数据库连接 连接测试
    		db = pymysql.connect("localhost", "root", "root", "student")
    		# 使用cursor()方法获取操作游标
    		cursor = db.cursor()
    		# 如果数据表不存在则创建表 若存在则跳过
    		# 设置主键唯一
    		sql = """CREATE TABLE IF NOT EXISTS student_k(
    				id char(20) NOT NULL,
    				name char(20) default NULL,
    				gender char(5) default NULL,  
    				age char(5) default NULL,
    				PRIMARY KEY (id)
    				
    				) ENGINE = InnoDB 
    				DEFAULT	CHARSET = utf8
    				"""
    		cursor.execute(sql)
    		# 如果数据表不存在则创建表 若存在则跳过
    		sql = """CREATE TABLE IF NOT EXISTS admin_login_k(
    						admin_id char(20) NOT NULL,
    						admin_pass char(20) default NULL,
    						PRIMARY KEY (admin_id)
    						) ENGINE = InnoDB 
    						DEFAULT	CHARSET = utf8
    						"""
    		cursor.execute(sql)
    		# 如果数据表不存在则创建表 若存在则跳过
    		sql = """CREATE TABLE IF NOT EXISTS stu_login_k(
    						stu_id char(20) NOT NULL,
    						stu_pass char(20) default NULL,
    						PRIMARY KEY (stu_id)
    						) ENGINE = InnoDB 
    						DEFAULT	CHARSET = utf8
    						"""
    		cursor.execute(sql)
    
    		# 关闭数据库连接
    		db.close()
    
    		# 实例化Application
    		window = tk.Tk()
    		StartPage(window)
    	except:
    		messagebox.showinfo('错误!', '连接数据库失败!')
    
    

     下面是我从我电脑数据库转储的SQL文件:

    /*
    Navicat MySQL Data Transfer
    
    Source Server         : mysql
    Source Server Version : 50532
    Source Host           : localhost:3306
    Source Database       : student
    
    Target Server Type    : MYSQL
    Target Server Version : 50532
    File Encoding         : 65001
    
    Date: 2019-11-28 15:09:36
    */
    
    SET FOREIGN_KEY_CHECKS=0;
    
    -- ----------------------------
    -- Table structure for `admin_login_k`
    -- ----------------------------
    DROP TABLE IF EXISTS `admin_login_k`;
    CREATE TABLE `admin_login_k` (
      `admin_id` char(20) NOT NULL,
      `admin_pass` char(20) DEFAULT NULL,
      PRIMARY KEY (`admin_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of admin_login_k
    -- ----------------------------
    INSERT INTO `admin_login_k` VALUES ('admin', 'admin');
    
    -- ----------------------------
    -- Table structure for `student_k`
    -- ----------------------------
    DROP TABLE IF EXISTS `student_k`;
    CREATE TABLE `student_k` (
      `id` char(20) NOT NULL,
      `name` char(20) DEFAULT NULL,
      `gender` char(5) DEFAULT NULL,
      `age` char(5) DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of student_k
    -- ----------------------------
    INSERT INTO `student_k` VALUES ('182085211003', 'a', '女', '22');
    INSERT INTO `student_k` VALUES ('182085211004', 'b', '女', '18');
    INSERT INTO `student_k` VALUES ('182085211005', 'abc', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211006', 'abc', '女', '24');
    INSERT INTO `student_k` VALUES ('182085211008', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211009', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211010', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211011', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('1820852110111', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211012', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211013', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211014', 'Tom2', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211015', 'Tom1', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211016', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211017', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211018', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211019', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211020', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211021', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('1820852110211', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211022', 'Tom1', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211023', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211024', 'Tom', '男', '23');
    INSERT INTO `student_k` VALUES ('182085211034', 'Tom', '男', '23');
    
    -- ----------------------------
    -- Table structure for `stu_login_k`
    -- ----------------------------
    DROP TABLE IF EXISTS `stu_login_k`;
    CREATE TABLE `stu_login_k` (
      `stu_id` char(20) NOT NULL,
      `stu_pass` char(20) DEFAULT NULL,
      PRIMARY KEY (`stu_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of stu_login_k
    -- ----------------------------
    INSERT INTO `stu_login_k` VALUES ('182085211000', '123456');
    
    -- ----------------------------
    -- Table structure for `t_course`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_course`;
    CREATE TABLE `t_course` (
      `SNO` char(255) NOT NULL,
      `COURSE` char(255) DEFAULT NULL,
      `CREDIT` char(255) DEFAULT NULL,
      `GRADE` char(255) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of t_course
    -- ----------------------------
    INSERT INTO `t_course` VALUES ('08300205', '程序设计', '4', '88');
    INSERT INTO `t_course` VALUES ('08300205', '数据库', '2.5', '90');
    INSERT INTO `t_course` VALUES ('08300205', '力学', '5', '92');
    INSERT INTO `t_course` VALUES ('08080929', '数据库', '2.5', '85');
    INSERT INTO `t_course` VALUES ('09350124', '数据库', '2.5', '92');
    INSERT INTO `t_course` VALUES ('09620233', '数据库', '2.5', '80');
    INSERT INTO `t_course` VALUES ('09300218', '数据库', '2.5', '78');
    INSERT INTO `t_course` VALUES ('09010122', '数据库', '2.5', '87');
    INSERT INTO `t_course` VALUES ('08080929', '程序设计', '4', '86');
    INSERT INTO `t_course` VALUES ('09010122', '程序设计', '4', '80');
    INSERT INTO `t_course` VALUES ('08300516', '程序设计', '4', '76');
    
    -- ----------------------------
    -- Table structure for `t_st`
    -- ----------------------------
    DROP TABLE IF EXISTS `t_st`;
    CREATE TABLE `t_st` (
      `SNO` char(11) NOT NULL,
      `SNAME` char(255) DEFAULT NULL,
      `SSEX` char(255) DEFAULT NULL,
      `AGE` char(255) DEFAULT NULL,
      `DEPT` char(255) DEFAULT NULL,
      PRIMARY KEY (`SNO`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of t_st
    -- ----------------------------
    INSERT INTO `t_st` VALUES ('08080929', '刘超世', '男', '19', '计算机应用技术');
    INSERT INTO `t_st` VALUES ('08300205', '李媛媛', '女', '19', '软件工程');
    INSERT INTO `t_st` VALUES ('09300218', '王海超', '男', '19', '软件工程');
    INSERT INTO `t_st` VALUES ('09350124', '王彤', '女', '19', '通信原理');
    INSERT INTO `t_st` VALUES ('09620233', '陈晓丽', '女', '21', '通信工程');
    

    觉得有用,点个赞再走吧^_^

    展开全文
  • 学生信息管理系统——C语言版

    万次阅读 多人点赞 2019-04-06 18:07:13
    1)查询学生信息 2)添加学生信息 3)修改学生信息 4)删除学生信息 5)刷新学生信息 6)保存学生信息 7)输出当前学生信息 2.题目要求: 1)使用结构体建立学生信息体制 2)实现七大基本功能 3)采用文件存储学生...
  • java 学生信息管理系统

    万次阅读 多人点赞 2015-10-06 14:03:33
    学生信息管理包括添加,删除,修改,查询,显示全部等 具体结构如图 在SQL Server 2005数据库上实现数据操作。使用纯面向对象的java语言作为开发语言 在sql server 2005新建一个名为Student的数据库,在下面新建一...
  • 练习一:请画出学生信息管理系统的用例图 “学生信息管理系统” 功能性需求包括以下内容:  (1)系统管理员登录后可以对班级的基本信息进行增加、删除、修改、查询等操作。学校领导登录后可以对班级基本信息进行...
  • c#实现简单学生信息管理系统

    万次阅读 多人点赞 2019-06-06 21:40:37
    登录、添加学生信息、修改学生信息、删除学生信息、查询学生信息 三、实现步骤 1、登陆界面功能实现 老规矩,先贴下主要代码: //构造方法 public Login() { InitializeComponent(); this.label3.Parent = ...
  • Java ssm毕业项目实战-学生信息管理系统

    千次阅读 多人点赞 2021-10-13 21:40:17
    Java经典基础毕设项目--学生信息管理系统详细设计【附源码】 主要模块设计如下: 使用Shiro权限管理框架,实现登录验证和登录信息的储存,根据不同的登录账户,分发权限角色,对不同页面url进行角色设置。 管理员...
  • JAVA 学生信息管理系统

    万次阅读 多人点赞 2019-06-28 15:09:10
    java 学生信息管理系统 主要使用的增删改查操作 首先,需要先建一个文件(点击左上角File,选择第一个New里的第一个Java Project) 然后再建一个Javabean包,在这个包里新建一个class类 package ...
  • 学生信息管理系统--(Java+MySQL实现)

    万次阅读 多人点赞 2016-01-07 15:02:15
    基于Java swing+MySQL实现学生信息管理系统:主要实现JDBC对学生信息进行增删改查,应付一般课设足矣,分享给大家。(由于篇幅原因,代码未全部列出,如有需要留下邮箱) 1、 开发环境:jdk7+MySQL5+win7 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 172,674
精华内容 69,069
关键字:

学生信息管理系统