博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

第4章 总体设计

4.1 系统总体模块图

河北工程大学内部的教务管理系统发展等过程的系统化、规范化和自动化,完成了用户管理、课程管理、选课管理等。具体功能模块图如4.1所示:

图4.1 系统总体模块图

4.2 数据库层的设计

4.2.1 概念模型设计


(2)系统中实体E-R图

大学内部的系别信息实体,主要包括 系别编号,大学内部的系别 等信息实体。如图4.2所示:

图4.2 系别实体属性图

学生信息实体,主要包括 学生编号,学生用户名,学生登录密码,学生实际姓名,学生的入学时间,学生出生时间,学生性别,学生所在系别,学生所在班级 等信息实体。如图4.3所示:

图4.3 学生实体属性图

教师信息实体,主要包括 教师编号,教师登录的用户名,教师登录的密码,教师的真实姓名,教师所学的专业,学生的性别,学生的年龄 等信息实体。如图4.5所示:

图4.5 教师实体属性图

管理员信息实体,主要包括 管理员编号,管理员的用户名,管理员的密码,管理员的真实姓名 等信息实体。如图4.6所示:

图4.6 管理员实体属性图

教室信息信息实体,主要包括 教室信息编号,教室名称,教室信息介绍 等信息实体。如图4.7所示:

图4.7 大学的教室信息实体属性图

大学在线教学的课程信息实体,主要包括 课程编号,课程名称,讲课教师,课程的授课课时,教师授课内容,教室 等信息实体。如图4.7所示:

图4.7  课程实体属性图

学生选课信息实体,主要包括 学生选课编号,学生课程,学生用户,选课操作的时间,选课状态 等信息实体.。如图4.8所示:

图4.8  学生选课实体属性图

学生成绩信息实体,主要包括 学生成绩编号,课程,学生姓名,课程成绩,成绩登记录入时间 等信息实体。如图4.9所示:

图4.9  学生成绩实体属性图

4.2.2 关系模式设计

在河北工程大学的教务管理系统中,实体有工程大学系别实体,教务内部的学生实体,教师实体,系统内的管理员实体,教室信息实体,教学课程实体,学生选课实体,成绩实体,等实体,他们之间的关系如图4.13所示:

图4.13 实体之间关系图

4.3 本章小结

本章主要介绍的内容是教务管理系统的总体设计或者概要设计,介绍了工程大学的教务管理系统的设计,主要是在教务管理系架构设计、总体模块设计和数据库设计的方面介绍的,为进一步的详细设计做准备。


第5章  详细设计

5.1 后台设计

普通用户或管理员输入自己的用户账号、密码,通过身份验证后可以进入相应的管理界面首页。系别信息管理与查看,学生信息管理与查看,教师信息管理与查看,管理员信息管理与查看,教室信息信息管理与查看,课程信息管理与查看,选课信息管理与查看,成绩信息管理与查看。

5.2 数据库设计

5.2.1 逻辑结构设计

1 系别( 系别编号,系别名称 )

2 学生( 学生编号,学生用户名,学生密码,学生姓名,学生入学时间,学生出生时间,学生性别,学生所在系别,学生所在班级 )

3 教师( 教师编号,教师用户名,教师密码,教师姓名,教师所学的专业,教师性别,教师年龄 )

4 管理员( 管理员编号,管理员用户名,管理员密码,管理员姓名 )

5 教室信息( 教室信息编号教室名称,教室信息介绍 )

6 大学课程( 课程编号,课程名称,讲课教师,课程课时,课程授课内容,课程所在教室 )

7 学生选课( 选课编号,选课课程,选课学生,选课时间,选课状态 )

8 学生成绩( 成绩编号,课程,成绩学生,成绩成绩,成绩录入时间 )

  

  

5.2.2 物理结构设计

由教务管理系统的各个关系,模式和根据教务管理系统的需求分析阶段数据字典的数据项描述,给出各教务管理系统数据表结构。

(1)河北工程大学系别信息表如表5.1所示:

表5.1 工程大学的系别信息表

系别表序号

系别表字段名称

系别表数据类型

系别表长度

系别表主键

系别表描述

1

jwgl_k_xbid

INTEGER

13

教务管理系别系别编号

2

jwgl_k_xb

VARCHAR

878

教务管理系别系别

(2)学生如表5.2所示:

表5.2 学生表

学生表序号

学生表字段名称

学生表数据类型

学生表长度

学生表主键

学生表描述

1

jwgl_k_xsid

INTEGER

52

教务管理学生学生编号

2

jwgl_k_yhm

VARCHAR

700

教务管理学生用户名

3

jwgl_k_mm

VARCHAR

15

教务管理学生密码

4

jwgl_k_xm

VARCHAR

517

教务管理学生姓名

5

jwgl_k_rxsj

VARCHAR

230

教务管理学生入学时间

6

jwgl_k_cssj

VARCHAR

687

教务管理学生出生时间

7

jwgl_k_sex

VARCHAR

700

教务管理学生性别

8

jwgl_k_xb

VARCHAR

554

教务管理学生系别

9

jwgl_k_bj

VARCHAR

108

教务管理学生班级

(3)教师表如表5.3所示:

表5.3 教师表

教师表序号

教师表字段名称

教师表数据类型

教师表长度

教师表主键

教师表描述

1

jwgl_k_jsid

INTEGER

52

教务管理教师教师编号

2

jwgl_k_yhm

VARCHAR

761

教务管理教师用户名

3

jwgl_k_mm

VARCHAR

382

教务管理教师密码

4

jwgl_k_xm

VARCHAR

750

教务管理教师姓名

5

jwgl_k_zy

VARCHAR

880

教务管理教师专业

6

jwgl_k_xb

VARCHAR

411

教务管理教师性别

7

jwgl_k_nl

VARCHAR

115

教务管理教师年龄

(4)管理员表如表5.4所示:

表5.4 教务管理员信息表

项目类别表序号

项目类别表字段名称

项目类别表数据类型

项目类别表长度

项目类别表主键

项目类别表描述

1

mrglxmlbid

INTEGER

28

美容管理项目类别项目类别编号

2

mrgllb

VARCHAR

55

美容管理项目类别类别

(5)教室信息表如表5.5所示:

表5.5 教室信息表

教室信息表序号

教室信息表字段名称

教室信息表数据类型

教室信息表长度

教室信息表主键

教室信息表描述

1

jwgl_k_jsxxid

INTEGER

33

教务管理教室信息教室信息编号

2

jwgl_k_jsmc

VARCHAR

768

教务管理教室信息教室名称

3

jwgl_k_js

VARCHAR

140

教务管理教室信息介绍

(6)课程表如表5.6所示:

表5.6课程表

课程表序号

课程表字段名称

课程表数据类型

课程表长度

课程表主键

课程表描述

1

jwgl_k_kcid

INTEGER

11

教务管理课程课程编号

2

jwgl_k_kcmc

VARCHAR

508

教务管理课程课程名称

3

jwgl_k_jkjs

VARCHAR

886

教务管理课程讲课教师

4

jwgl_k_ks

VARCHAR

728

教务管理课程课时

5

jwgl_k_sknr

VARCHAR

211

教务管理课程授课内容

6

jwgl_k_js

VARCHAR

266

教务管理课程教室

(7)选课表如表5.7所示:

表5.7选课表

选课表序号

选课表字段名称

选课表数据类型

选课表长度

选课表主键

选课表描述

1

jwgl_k_xkid

INTEGER

10

教务管理选课选课编号

2

jwgl_k_kc

VARCHAR

333

教务管理选课课程

3

jwgl_k_xs

VARCHAR

730

教务管理选课学生

4

jwgl_k_sj

VARCHAR

714

教务管理选课时间

5

jwgl_k_zt

VARCHAR

52

教务管理选课状态

(8)成绩表如表5.8所示:

表5.8成绩表

成绩表序号

成绩表字段名称

成绩表数据类型

成绩表长度

成绩表主键

成绩表描述

1

jwgl_k_cjid

INTEGER

48

教务管理成绩成绩编号

2

jwgl_k_kc

VARCHAR

130

教务管理成绩课程

3

jwgl_k_xs

VARCHAR

526

教务管理成绩学生

4

jwgl_k_cj

VARCHAR

111

教务管理成绩成绩

5

jwgl_k_lrsj

VARCHAR

316

教务管理成绩录入时间

5.3 本章小结

本章主要是在上一章的教务管理系统总体设计的基础之上对教务管理系统进行详细设计,主要分为教务管理系统两个方面来设计,教务管理系统分别为后台设计和数据库设计,在后台设计方面,主要是设计的教务管理系统的权限分配,角色登录的验证;在数据库方面是设计系统的物理结构的设计和逻辑结构的设计。


第6章 系统的实施

河北工程大学教务管理系统的名称是“教务管理系统”,教务管理系统界面要求是简洁大方,避免过度包装,目的是为了为企业用户提供一个操作平台

6.1 登录模块界面

登录系统首页,出现用户名、密码的输入框,填写用户名和密码点击【提交】按钮,即可登录[2];具体的登录页面如图6.1所示:

图6.2 登录界面图

主要代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>

<%@ page import="com.util.DBO"%>

<%

DBO db=new DBO();

request.setCharacterEncoding("gb2312");

String yhm=(String)request.getParameter("yhm");

String mm=(String)request.getParameter("mm");

String qx=(String)request.getParameter("qx");



String sql="";



if(qx.equals("管理员")){

sql="select * from gly where yhm='"+yhm+"' and mm='"+mm+"' ";

}

if(qx.equals("学生")){

sql="select * from xuesheng where yhm='"+yhm+"' and mm='"+mm+"' ";

}



if(qx.equals("教师")){

sql="select * from jiaoshi where yhm='"+yhm+"' and mm='"+mm+"' ";

}





System.out.println("sql="+sql);

db.open();

ResultSet rs=db.query(sql);

out.println("<script>");

if(rs.next()){





if(qx.equals("管理员")){

session.setAttribute("id",rs.getString("glyid"));

}

if(qx.equals("学生")){

session.setAttribute("id",rs.getString("xsid"));

}



if(qx.equals("教师")){

session.setAttribute("id",rs.getString("jsid"));

}







session.setAttribute("yhm",rs.getString("yhm"));

session.setAttribute("mm",rs.getString("mm"));

session.setAttribute("qx",qx);

;



out.println("alert('登录成功');");

out.println("window.location='index.jsp'");

}else{

out.println("alert('用户名或者密码错误');");

out.println("window.location='login.jsp'");

}

out.println("</script>");

%>

6.2 学生管理管理界面

1、功能描述

该功能用于实现对系统的学生信息的管理。用户可以对系统内添加、删除和更改学生信息,以及学生信息列表展现

2、输入项目

对于中的学生的基本信息,包括学生编号,用户名,密码,姓名,入学时间,出生时间,性别,系别,班级

3、输出项目

(1)验证模块会对系统的学生的基本信息存入到数据库表xuesheng信息表。

(2)输入的学生信息,主要包括学生编号,用户名,密码,姓名,入学时间,出生时间,性别,系别,班级 等,不能为空。

(3)若输入不合理内容,则给出错误提示信息。

4、算法描述

当用户进入学生基本信息页面后,用户通过web页面输入学生信息编辑内容,并将输入的学生信息提交到后台进行处理,系统校验学生编号,用户名,密码,姓名,入学时间,出生时间,性别,系别,班级 信息,正确后,将学生信息进行逻辑进行处理,组织好相关的学生sql语句后,调用系统公共数据库访问类,进行相关的业务操作,由系统数据访问层访问数据库进行学生信息更新。如果前台用户输入的学生信息不符合业务设计的要求,则应用程序将以Request对象存入错误提示信息,并跳转到学生信息页面,并显示该错误提示信息,如图所示:

Action层主要代码:

package com.action;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import com.util.DBO;

import com.bean.xuesheng;

import com.dao.xueshengDao;

@SuppressWarnings("serial")

public class xueshengAction extends ActionSupport {



private xueshengDao dao=new xueshengDao();

private xuesheng xuesheng=new xuesheng();

private List<xuesheng> xueshengs=new ArrayList<xuesheng>();

public xuesheng getXuesheng() {

return xuesheng;

}



public void setXuesheng(xuesheng xuesheng) {

this.xuesheng = xuesheng;

}

public List<xuesheng> getXueshengs() {

return xueshengs;

}



public String execute()

{

return "";

}

public String addPage(){

return "xueshengaddPage";

}

public String add()

{

try{



String sql="select count(1) as num from xuesheng where yhm='"+xuesheng.getYhm()+"'";

DBO db=new DBO();

ResultSet rs=null;

int num=0;

rs=db.query(sql);



if(rs.next()){

num=rs.getInt("num");



}

if(num>0){

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('添加失败、用户名重复');</script>");



}else{

dao.insert(xuesheng);

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('添加成功');</script>");

}



}catch(Exception e){

System.out.println(e.toString());



}









return addPage();

}

public String list()

{

try{

xueshengs=dao.findlist("");

}catch(Exception e){

System.out.println(e.toString());



}

return "xueshenglist";

}



public String del()

{

String keyid=ServletActionContext.getRequest().getParameter("keyid").toString();

try{

dao.delete(keyid);

}catch(Exception e){

System.out.println(e.toString());



}

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('删除成功');</script>");

return list();

}

public String modPage(){

String keyid=ServletActionContext.getRequest().getParameter("keyid").toString();

try{

xuesheng=dao.findbean(keyid);

}catch(Exception e){

System.out.println(e.toString());



}

return "xueshengmodPage";

}

public String modm(){

String keyid=ServletActionContext.getRequest().getSession().getAttribute("id").toString();

try{

xuesheng=dao.findbean(keyid);

}catch(Exception e){

System.out.println(e.toString());



}

return "xueshengmodm";

}

public String detail(){

String keyid=ServletActionContext.getRequest().getParameter("keyid").toString();

try{

xuesheng=dao.findbean(keyid);

}catch(Exception e){

System.out.println(e.toString());



}

return "xueshengdetail";

}

public String mod(){

try{

dao.modify(xuesheng);

}catch(Exception e){

System.out.println(e.toString());



}

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('修改成功');</script>");//location.href='bookmanage';

return list();

}



public String update(){

try{

dao.modify(xuesheng);

}catch(Exception e){

System.out.println(e.toString());



}

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('修改成功');</script>");//location.href='bookmanage';

return modm();

}



}



Jsp展现层代码:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<%@ page import="com.util.*"%>

<%@ taglib uri="/struts-tags" prefix="s" %>

<%



request.setCharacterEncoding("gb2312");



%>

<html>

<head>

<link href="<%=request.getContextPath()%>/css/style.css" rel="stylesheet" type="text/css">



<script type="text/javascript" src="<%=request.getContextPath()%>/js/jquery.js"></script>

<link href="<%=request.getContextPath()%>/css/Pager.css" rel="stylesheet" type="text/css" />

    <script src="<%=request.getContextPath()%>/js/jquery-1.5.1.min.js" type="text/javascript"></script>

    <script src="<%=request.getContextPath()%>/js/jquery.pager.js" type="text/javascript"></script>

 <script type="text/javascript" language="javascript">



        $(document).ready(function() {

            $("#pager").pager({ pagenumber: <s:property value="pageNum" />, pagecount: <s:property value="pageCount" />, buttonClickCallback: PageClick });

        });



        PageClick = function(pageclickednumber) {

            $("#pager").pager({ pagenumber: pageclickednumber, pagecount: <s:property value="pageCount" />, buttonClickCallback: PageClick });

location.href='xueshenglist?pageNum='+pageclickednumber;

        }

</script>

<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>学生信息列表</title>





    

    <script type="text/javascript">

$('.tablelist tbody tr:odd').addClass('odd');

</script>



<body>



<div class="place">

    <span> 学生信息列表</span>

    <ul class="placeul">



    </ul>

    </div>

    

    <div class="rightinfo">







 <table class="tablelist">

     <thead>

    <tr>

   <th>序号</th>



         <th >用户名</th>



         <th >密码</th>



         <th >姓名</th>



         <th >入学时间</th>



         <th >出生时间</th>



         <th >性别</th>



         <th >系别</th>



         <th >班级</th>

      





                <th>操作</th>



</tr>





  </thead>

  

   <tbody>

   <s:iterator value="xueshengs" status="i" >

<tr>



<td><s:property value="#i.count"/></td>



         <td><s:property value="yhm"/></td>



         <td><s:property value="mm"/></td>



         <td><s:property value="xm"/></td>



         <td><s:property value="rxsj"/></td>



         <td><s:property value="cssj"/></td>



         <td><s:property value="sex"/></td>



         <td><s:property value="xb"/></td>



         <td><s:property value="bj"/></td>

      <td><a href="<%= request.getContextPath()%>/xueshengdel?keyid=<s:property value="xsid"/>"  onClick="javascript:if(confirm('是否删除')){return true;} else{return false;}">删除</a>|<a href="<%= request.getContextPath()%>/xueshengmodPage?keyid=<s:property value="xsid"/>">修改</a>|<a href="<%= request.getContextPath()%>/xueshengdetail?keyid=<s:property value="xsid"/>">详情</a></td>



</tr>

   

   

      </s:iterator>

     </tbody>



 </table>



  <div class="pagin">

    

       

        <li class="paginItem"><div id="pager" ></div></li>

   

       

    </div>





    </div>















<div align="center">

<font color="#FF0000">

 ${msg}

</font>

</div>

</body>

</html>

6.3  教师管理界面

1、功能描述

该功能用于实现对系统的教师信息的管理。用户可以对系统内添加、删除和更改教师信息,以及教师信息列表展现

2、输入项目

对于中的教师的基本信息,包括教师编号,用户名,密码,姓名,专业,性别,年龄

3、输出项目

(1)验证模块会对系统的教师的基本信息存入到数据库表jiaoshi信息表。

(2)输入的教师信息,主要包括教师编号,用户名,密码,姓名,专业,性别,年龄 等,不能为空。

(3)若输入不合理内容,则给出错误提示信息。

4、算法描述

当用户进入教师基本信息页面后,用户通过web页面输入教师信息编辑内容,并将输入的教师信息提交到后台进行处理,系统校验教师编号,用户名,密码,姓名,专业,性别,年龄 信息,正确后,将教师信息进行逻辑进行处理,组织好相关的教师sql语句后,调用系统公共数据库访问类,进行相关的业务操作,由系统数据访问层访问数据库进行教师信息更新。如果前台用户输入的教师信息不符合业务设计的要求,则应用程序将以Request对象存入错误提示信息,并跳转到教师信息页面,并显示该错误提示信息。如图所示:


大家点赞、收藏、关注、评论啦  其他的定制服务 商务合作  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐