当前位置: 首页 > article >正文

基于 web教学管理系统设计与实现

3  总体设计

3.1  系统软件体系结构

系统采用B/S结构,统一管理数据库和Web服务器。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,形成所谓3-tier结构,第一层是客户端(用户界面),提供用户与系统的友好访问;第二层是应用服务器,负责业务逻辑的实现;第三层是数据服务器,负责数据信息的存储、访问及其优化。由于业务逻辑被提取到应用服务器,大大降低了客户端负担,因此也成为瘦客户结构,其系统软件体系结构示意图如图3.1所示:

图3.1 软件结构体系图

 3.2  系统功能需求描述

本教学管理系统包含许多工作流程,围绕教学管理内容,分为学生核心,教师核心和课程核心,相互交织,共同构成学校教学管理的日常工作。以学生为核心的工作包括成绩管理,学籍管理等模块,以教师为核心的工作包括任课安排,教学评估等模块,以课程为核心的工作包括课程管理,排课等模块。

3.3  系统功能结构图

        

图3.2 系统功能结构图

3.4  数据库设计

数据库技术是当今信息时代赖以发展的重要基础技术之一,也是发展较快的计算机技术的重要分支。较好地理解数据库设计原理对于设计出性能高效的数据库系统是很重要的。

数据库技术是计算机软件领域的一个重要分支,已形成相当规模的理论体系和实用技术。它的出现使得计算机应用渗透到工农业生产、商业、行政、科学研究、工程技术和国防军事的各个部门,渗透到社会的每一角落,并正改变着人们的工作方式与生活方式。管理信息系统、办公自动化系统、决策支持系统、智能系统等都是使用了数据库技术的计算机应用系统。数据库已经成为信息高速公路的核心部分

B/S结构的教务管理系统,是一个数据库应用系统,许多信息都是保存在数据库中。在数据库应用系统的开发过程中,数据库的结构设计是一个很重要的问题。我们这里所说的数据库结构设计是指各个表结构的设计,包括信息保存在哪些表格中,各个表的结构如何,以及各个表之间的关系。

数据库结构设计的好坏将直接对应用系统的效率以及实现的效果产生影响,好的数据库结构设计会减少数据库的存储量,数据的完整性和一致性比较高,系统具有较快的响应速度,简化基于此数据库的应用程序的实现等等。

3.4.1  数据库概念结构设计

根据系统功能,设计出如下的ER图,来表示数据库概念结构:

图3.3 学生管理的ER图

图3.4 教师管理的ER图

图5.5 成绩课程管理ER图

3.4.2  数据库逻辑结构设计

根据上面的ER图,转化为关系模式如下:

1)

表3.1 学生表

字段名称

类型

长度

说明

stuID

Varchar

50

学生编号

stuname

Varchar

50

学生姓名

Sex

Char

10

性别

Address

Varchar

50

籍贯

Bir

Datetime

8

生日

Password

Varchar

50

登录密码

gradeID

Varchar

50

入学时间

Specialty

Varchar

50

所属专业

politicalappearance

varchar

50

政治面貌

2)

表3.2 教师表

字段名称

类型

长度

说明

teacherID

Varchar

50

教师编号

teachername

Varchar

50

教师姓名

Sex

Char

10

性别

Address

Varchar

50

地址

Bir

Datetime

8

生日

Password

Varchar

50

登录密码

workyear

Varchar

50

工作时间

Specialty

Varchar

50

所教专业

politicalappearance

varchar

50

政治面貌

3)

表3.3 系部表

字段名称

类型

长度

说明

departmentID

Varchar

50

院系编号

departmentname

Varchar

50

院系名称

telephone

varchar

50

电话

4)

表3.4 专业表

字段名称

类型

长度

说明

specialtyID

Varchar

50

专业编号

specialtyname

Varchar

50

专业名称

departmentID

Varchar

50

所在院系

表3.5 课程表

字段名称

类型

长度

说明

courseID

Varchar

50

课程编号

coursename

Varchar

50

课程名称

style

varchar

50

课程类型

examstyle

Varchar

50

考试类型

xueshi

Int

4

学时

xuefen

int

4

学分

表3.6 成绩表

字段名称

类型

长度

说明

stuID

Varchar

50

学好

courseID

Varchar

50

课程编号

teacherID

varchar

50

教师编号

term

Varchar

50

学期

score

Int

4

所得学时

xuefen

int

4

所得学分

表3.7 课表

字段名称

类型

长度

说明

teacherID

Varchar

50

教师编号

ClassID

Varchar

50

班级编号

courseID

varchar

50

课程编号

classroomID

Varchar

50

教室编号

term

varchar

50

学期

keshi

int

4

课时

表3.8 教室表

字段名称

类型

长度

说明

classroomID

Varchar

50

教室编号

style

Varchar

50

类型

studentsum

int

4

容纳人数

address

Varchar

50

地址

spare

char

10

是否空闲

4  详细设计与实现

4.1  登录界面的设计与实现

1.系统登录界面供三种权限的用户登录:管理员,教师,学生。管理员在输入自己帐号和密码之后进入系统,可对整个教务业务进行操作,待教学计划和排课都完成后,教师输入自己的名称和密码,可进去查询相关信息;同样,学生根据自身的权限,可进入系统查询相关信息。

2. 程序流程图如下:

4.1 登陆界面的流程图

3. 管理员选择“管理员”权限后,输入自己帐号和密码后点击“登录”,即可进入管理院界面。页面后台事件处理程序为:

protected void login_Click(object sender, EventArgs e)

 {

        string st_connstr = ConfigurationManager.ConnectionStrings["st_dbconn"].ToString();

        SqlConnection st_conn = new SqlConnection(st_connstr);

        string  type = usertype.SelectedItem.Value.ToString();

        string user = userID.Text.Trim();

        string inputkey = txtkey.Text.Trim();

        string key = "";

        string sql = "";

    DataSet ds;

        ql = "select password from login where username like '" + user + "'";

        st_conn.Open();

        SqlDataAdapter st_da = new SqlDataAdapter(sql, st_conn);

        ds = new DataSet();

        int count = st_da.Fill(ds, "table");

        if (Convert.ToInt32(Label1.Text) < 3)

        {

                 if (count > 0)

                 { Session["teacherID"] = user; Session["password"] = inputkey; Session["type"] = type; Response.Redirect("Default3.aspx"); }

                          else

                 { Label2.Text = "登陆失败"; Label2.Style["color"] = "red"; int times = Convert.ToInt32(Label1.Text); Label1.Text = (times + 1).ToString(); }

         }

    else { Label2.Text = "您已经被禁止登陆,请稍候再登陆"; }

}

4. 登陆页面为Default.aspx,如下:

图4.2 系统登陆界面Default.aspx

教师选择“教师”权限后,输入自己帐号和密码后点击“登录”,即可进入教师界面。同样,学生也是如此。教师和学生登陆后台处理程序,与管理员相似,不再重复。

4.2  学生管理子系统的设计与实现

4.2.1  学生查询自己信息页面的设计与实现

1. 学生进入系统后,即可查看自己的基本信息。本页面使用了Repeater控件,并与数据库绑定,借助表格展现出来。

2. 核心代码如下:

<asp:Repeater ID="st_rp_information" runat="server">

        <ItemTemplate>

         <table border="1" width="80%">

         <tr>

           <td colspan="4" align="center"> 个人信息</td>

           </tr>

           <tr><td align="right">学号: </td>

               <td><%#Eval("stuID")%></td>

               <td align="right">姓名: </td>

               <td><%#Eval("stuname")%></td>

           </tr>

           <tr><td align="right">性别: </td>

               <td><%#Eval("sex")%></td>

               <td align="right">生日: </td>

               <td><%#Eval("bir")%></td>

           </tr>

           <tr><td align="right">籍贯: </td>

               <td><%#Eval("address")%></td>

               <td align="right">入学时间: </td>

               <td><%#Eval("gradeID")%></td>

           </tr>

           <tr><td align="right">专业: </td>

               <td><%#Eval("specialty")%></td>

               <td align="right">学院: </td>

               <td><%#Eval("department")%></td>

           </tr>

           <tr><td align="right">班级: </td>

               <td><%#Eval("classname")%></td>

               <td align="right">政治面貌: </td>

               <td><%#Eval("politicalappearance")%></td>

   </asp:Repeater>

string st_connstr = ConfigurationManager.ConnectionStrings["st_dbconn"].ToString();

        SqlConnection st_conn = new SqlConnection(st_connstr);

        string st_sqlstr = "select * from student where stuID=@stuID";

        SqlCommand st_comm = new SqlCommand(st_sqlstr, st_conn);

        st_comm.Parameters.Add(new SqlParameter("@stuID", SqlDbType.VarChar, 50));

        

3. 页面如下:

图4.3 学生查询自己信息页面st_query.aspx

4.2.2  学生个人密码修改页面的设计与实现

1. 本页面使用了2个panel控件,一个完成验证用户旧密码,一个完成修改功能,并且2个panel不能同时出现。

2. 程序流程图如下:

图4.4 修改密码流程图

3. 核心代码如下:

protected void st_btn_upst_date_Click(object sender, EventArgs e)

    {

        string st_connstr = ConfigurationManager.ConnectionStrings["st_dbconn"].ToString();

        SqlConnection st_conn = new SqlConnection(st_connstr); st_conn.Open();

        string st_sqlstr = "select * from student where stuID='" + st_tbx_id.Text+ "' and password='" + mimabefore.Text + "'";

        SqlCommand cmd = new SqlCommand(st_sqlstr, st_conn);

        if (st_dr1.Read())

        {

            panel2.Visible = true;

            panel1.Visible = false;

            st_lbl_note.Text = "";

        }

        else

        { st_lbl_note.Text = "无此用户或密码不对!"; }

    }

    protected void st_tbx_ok_Click(object sender, EventArgs e)

    {

        string st_connstr = ConfigurationManager.ConnectionStrings["st_dbconn"].ToString();

        SqlConnection st_conn = new SqlConnection(st_connstr); st_conn.Open();

        string st_sqlstr = "update student set password='" + st_tbx_new.Text + "' where stuID='" + st_tbx_id.Text + "'";

        SqlCommand cmd = new SqlCommand(st_sqlstr, st_conn);

        try

        { cmd.ExecuteNonQuery(); st_lbl_note.Text = "修改成功!"; }

        catch (SqlException)

        { st_lbl_note.Text = "修改有误!"; panel1.Visible = true; }

        st_conn.Close();

}

4. 页面如下:

图4.5 学生个人密码修改页面mima_student.aspx

图4.6 学生个人密码修改页面mima_student.aspx

4.2.3  学生查询成绩页面设计与实现

1. 学生选择学期和课程名后,可查询自己本课程的成绩和所得学分,也可查询自己学期所有课程成绩。本页面使用GridView控件,与数据库绑定。

2. 核心代码如下:

protected void st_btn_query_Click(object sender, EventArgs e)

    {

        string st_sqlstr;

        string st_connstr = ConfigurationManager.ConnectionStrings["st_dbconn"].ToString();

        SqlConnection st_conn = new SqlConnection(st_connstr);

        if (st_tbx_course.Text == "")

        {    

            st_sqlstr= "select subject.coursename,score.courseID,score.term,score.score,score.xuefen,subject.style from subject,score where term='" +st_tbx_term.Text +"'and subject.courseID=score.courseID and score.stuID='" + Session["stuID"].ToString() + "'";

        }

        else

        {    

            st_sqlstr = "select subject.coursename,score.courseID,score.term,score.score,score.xuefen,subject.style from subject,score where term='" + st_tbx_term.Text + "'and subject.courseID=score.courseID and subject.coursename='"+st_tbx_course.Text+"' and score.stuID='" + Session["stuID"].ToString() + "'";

         }

        st_conn.Open();

        SqlDataAdapter st_da = new SqlDataAdapter(st_sqlstr, st_conn);

        DataSet st_ds = new DataSet();

        st_da.Fill(st_ds);

        st_dtg_grade.DataSource = st_ds;

        st_dtg_grade.DataBind();

        st_conn.Close();

        display();

}

3. 页面如下:

图4.7 学生查询成绩页面st_grade_query.aspx

其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者


http://www.kler.cn/a/284828.html

相关文章:

  • 英飞凌Aurix2G TC3XX GPT12模块详解
  • 栈(Stack)和队列(Deque、Queue)
  • 大模型人工智能课程全栈完整学习路径
  • 万字长文解读深度学习——Transformer
  • stm32不小心把SWD和JTAG都给关了,程序下载不进去,怎么办?
  • 使用ThorUi
  • 筛法求欧拉函数
  • sysfs系统
  • Unity实战案例全解析 之 背包/贩卖/锻造系统(左侧类图实现)
  • 如何在JPG文件中隐写数据
  • 类实例化和构造函数
  • 【Go语言成长之路】使用 Go 和 Gin 开发 RESTful API
  • 五,Spring Boot中的 Spring initializr 的使用
  • go.uber.org/ratelimit 源码分析
  • MyBatis一级缓存和二级缓存以及 mybatis架构
  • .net开发日常笔记(持续更新)
  • 续:MySQL的并行复制
  • XtQuant是什么?哪家券商支持miniQMT,XtQuant?
  • 使用SQLite进行Python简单数据存储的线程安全解决方案
  • Centos服务器配置使用密钥登录
  • 【C++题解】1722 - 输出两位的巧数
  • Docker 部署 Kafka 可视化 Kafka-UI
  • Arco Voucher - 不知道有什么用的凭证单据录入表单插件
  • 简易STL实现 | Deque的实现
  • PyMOL的开源版和商业版如何选择 PyMOL开源版安装 PyMOL商业版安装 PyMOL安装教程 远程安装PyMOL正式版 官网版
  • PDF文本指令解析与文本水印去除