• 基于bootstrap+Java+MySQL的高校成绩管理系统


    目录
    系统功能需求 11
    2、概念结构设计 14
    全局 E-R 图 16
    3、逻辑结构设计 18
    数据类型定义 19
    4、物理结构设计 21
    索引设计 21
    5、数据库实施 21
    视图的建立 29
    触发器建立 34
    6、应用系统开发与试运行 37
    前台界面与后台数据库连接说明,代码实现。 37
    7、实验总结 77
    系统设计的不足 78
    1.2系统功能需求
    图 1.5 成绩管理系统 UML 图
    成绩管理主要是教务处对教师、对课程、对学生成绩管理,以便于教师,学生能够随时对学生成绩进行各种查询。
    他服务的对象不同,提供的功能也不同。
    (1)高权限教师(系统管理员)
    图 1.6 系统管理员功能模块图

    1.学生信息管理:按学好可以查找到学生的详细信息,并可以添加、删除、修改学生信息
    2.教师信息管理:教师以学院为单位划分,可按学院,按教师名,教师号等方式查看教师信息,并由添加,删除、修改教师信息的功能。
    3.课程管理:可以按课程编号查看课程的详细信息,可以添加,删除修改开课记录。
    4.班级开课管理,以班级为单位,根据班级进行开课管理
    5.成绩管理:按学号可以查找学生的全部成绩信息。可以查看该学生的成绩但没有修改成绩功能。成绩录入应由相应老师完成。
    6.学院信息管理,查看,添加,修改,删除学院信息。
    7.专业信息管理,查看,添加,修改,删除专业信息。
    8.班级信息管理,查看,添加,修改,删除班级信息。
    (2)普通教师
    教师登录后可以修改自己的教师信息,可以修改登录密码,以班级为单位查询学生的课程信息,以班级为单位录入成绩。可以查看任课情况。
    图 1.7 教师功能模块图
    1.成绩录入模块:根据教师编号,上课学期,查询所有开课记录,以及开课记录对应班级的所有学生,对每个学生的该科成绩进行录入修改。
    2.成绩查询模块:教师只能查询自己教授的课程的所有同学的成绩。可获得不及格学生名单。课程的平均成绩。
    3.教师任课情况查询:自动获得教师的所有任课情况, 包括课程名称, 班级名称,平均成绩。
    (3)学生
    学生登陆后可以修改自己的信息,可以修改登陆密码;查看全部已考科目的成绩,查看本学期成绩以及不及格科目成绩,查看本学期或学年的班级以及年级名次,以及班级课表、已修学分、总平均绩点、专业教学计划查询等查询。
    图 1.8 学生功能模块图
    1.成绩查询:
    a)学生成绩查询:按学期(学年)查询,获得该学期(学年)成绩单, 平均绩点,不及格科目,班级排名,年级排名。
    b)课程平均成绩查询:按班级、学期(学年)查询,获得该学期(学年) 各个课程的平均成绩。
    2. 课程查询:
    a)班级课程开课查询:根据学期查询,上课科目,任课教师
    b)学生教学计划查询:专业教学计划,已修学分,平均绩点。(毕业最低学分,毕业最低绩点)已修科目各科成绩。
    1.3其他性能需求
    该系统应支持多用户同时对数据库进行访问,即支持并发。
    实现方法主要是通过 java 数据源进行数据库连接,并且 Servlet 编程自带多线程可以支持并发,以此来提升响应速度。
    当然响应时间越短越好,但考虑到服务器成本问题,实际响应时间不需要很段,因为也没有必要,在数据访问高峰期,如期末考后,则应该增强服务器的性能。本文转载自http://www.biyezuopin.vip/onews.asp?id=15597
    因此,数据库服务器性能最好能动态变化。因此需要在统计高峰期后做好高并发准备。

    package com.example.final_database.controller;
    
    import com.example.final_database.dao.loginDao;
    import com.example.final_database.model.Student;
    import com.example.final_database.model.Teacher;
    
    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.annotation.*;
    import java.io.IOException;
    
    @WebServlet(name = "loginServlet", value = "/loginServlet")
    public class loginServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    
        }
    
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            request.setCharacterEncoding("utf-8"); //1
            response.setContentType("text/html;charset=utf-8");  //2
            response.setCharacterEncoding("utf-8");  //3
            String kind =request.getParameter("kind");
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            HttpSession session=request.getSession();
            String message=null;
            RequestDispatcher dispatcher=null;
            loginDao userdao=new loginDao();
            if(kind.equals("student")){
    
                Student user=userdao.StudentLogin(username,password);
                if(user==null){
                    message="用户名或密码错误";
                    dispatcher=request.getRequestDispatcher("./VIEW/index.jsp");
                }
                else{
                    message="登录成功!欢迎!";
                    session.setAttribute("user",user);
                    dispatcher=request.getRequestDispatcher("./VIEW/student.jsp");
                }
                session.setAttribute("message",message);
                session.setAttribute("kind","学生");
                dispatcher.forward(request,response);
            }
            else if(kind.equals("teacher")){
                Teacher user=userdao.TeacherLogin(username,password);
                if(user==null){
                    message="用户名或密码错误";
                    dispatcher=request.getRequestDispatcher("./VIEW/index.jsp");
                }
                else{
                    message="登录成功!欢迎!";
                    session.setAttribute("user",user);
                    if(user.getTauthority()<2) {
                        dispatcher = request.getRequestDispatcher("./VIEW/teacher.jsp");
                    }
                    else{
                        dispatcher = request.getRequestDispatcher("./VIEW/admin.jsp");
                    }
                }
                session.setAttribute("message",message);
                session.setAttribute("kind","老师");
                dispatcher.forward(request,response);
            }
        }
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    bindParam() 和 bindValue() 的区别
    C Primer Plus(6) 中文版 第3章 数据和C 3.7 转义序列示例
    [Qt]QListView 重绘实例之一:背景重绘
    基于CNN的图片识别
    四肽Suc-AAPD-对硝基苯胺,165174-58-3
    Win10下安装CARLA
    python中__init__subclass__方法用法详解
    使用NNO区域进行色偏检测
    Linux中navicat连接windows服务端
    ai批量剪辑矩阵无人直播一站式托管系统源头技术开发
  • 原文地址:https://blog.csdn.net/newlw/article/details/126687267