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

news/2024/9/18 5:08:39/ 标签: 前端

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.ppmy.cn/news/1520630.html

相关文章

安装Selenium进行web⾃动化测试

目录 驱动安装驱动管理工具selenium安装selenium驱动浏览器的⼯作原理自动化测试常⽤函数1. 元素定位1.1. find_element 的基本用法1.2. 常见的 find_element 定位方式1.3. find_element 的使用注意事项1.4. find_element 的进阶用法 2. 操作测试对象3. 窗口操作4. 弹窗处理5. …

Hive整合MySQL

目录 Hive整合MySQL 安装MySQL 1&#xff09;上传MySQL安装包以及MySQL驱动jar包 2&#xff09;解压MySQL安装包 3&#xff09;卸载系统自带的mariadb 4&#xff09;安装MySQL依赖 5&#xff09;安装mysql-client 6&#xff09;安装mysql-server 7&#xff09;启动MySQ…

Maven与Gradle差异

作为Java 开发者&#xff0c;你平时用 Maven 还是 Gradle&#xff1f; 我一直用的都是 Maven&#xff0c;但是前几天做了一个小项目&#xff0c;用的是 Gradle&#xff0c;因工作需要就去了解了Gradle的相关信息。 直到看到 Spring 和 Spring Boot 都从 Maven 切换到 Gradle了…

IPSec 参数

IPSec抗重放&#xff1a; 抗重放窗口&#xff1a; ChatGPT 说&#xff1a; ChatGPT 在 IPSec&#xff08;Internet Protocol Security&#xff09;中&#xff0c;“抗重放”机制是一种用于防止重放攻击的安全功能。重放攻击是一种攻击形式&#xff0c;攻击者捕获合法的网络通…

大数据技术之Flume 参数调优(12)

目录 1. Source 调优 增加 Source 个数 调整 batchSize 参数 2. Channel 调优 选择 Channel 类型 配置 dataDirs 参数 设置 Capacity 和 transactionCapacity 参数 3. Sink 调优 增加 Sink 个数 调整 batchSize 参数 4. Flume 的事务机制 事务处理 5. 数据丢失与重…

Linux中的编译器gcc/g++

目录 一、gcc与g的区别 1.gcc编译器使用 2.g编译器使用 二、gcc/g编译器编译源文件过程 1.预处理 2.编译 3.汇编 4.链接 三、静态库和动态库 1.库中的头文件作用 2.静态库 3.动态库 四、gcc编译器的一些选项命令 一、gcc与g的区别 gcc用于编译C语言代码&#xff…

Power Automate向Power Apps传Table数据

Flow返回查询的数据表并返回Apps 场景介绍代码开发Power Automate开发数据库Power Automate调用存储过程 Power Apps开发代码开发 测试 场景介绍 我们通常会使用Flow 查询数据表然后Apps端将表中的数据显示出来&#xff0c;我们怎么来传呢&#xff0c;它自带的response for Po…

揭秘GLM-130B爆火秘诀:颠覆性自回归填空和二维位置编码的训练黑科技

GLM&#xff08;通用语言模型&#xff09;的训练过程确实复杂&#xff0c;尤其是涉及到其独特的预训练目标和架构调整。让我来详细解释一下GLM的训练过程。 1. 模型架构简介 GLM-130B 是基于 Transformer 架构的双语&#xff08;中文和英文&#xff09;语言模型&#xff0c;拥…

仕考网:应届生考公务员的优势

应届生报考公职存在显著优势&#xff0c;建议大家充分利用这一身份&#xff1a; 1.政策优惠 在不缴纳社保的前提下&#xff0c;应届毕业生可在两年内利用此身份参与各类公职考试。国考及省考中&#xff0c;大量岗位专为应届生设置&#xff0c;其中国考约有三分之一的职位仅限…

解除本地Git仓库与远程仓库关联

清除Git凭据缓存 Git在本地会缓存你的认证信息&#xff0c;以便在后续操作中自动使用。你可以通过以下步骤来清除这些缓存的凭据&#xff1a; 对于Windows用户&#xff1a; 打开“控制面板”并选择“凭据管理器”&#xff08;Credential Manager&#xff09;。在“Windows凭据…

C#如何使用外部别名Extern alias

说到 extern 关键字&#xff0c;只是很简单告诉大家用来做区分两个不同 dll 有相同的命名空间和类&#xff0c;可以使用这个关键字。 在遇到了存在两个 dll 都有相同的命名空间&#xff0c;而且有相同的类的时候&#xff0c;如何同时使用这两个 dll 的类。 这里有两个库 Jall…

通俗易懂理解Java枚举类

什么是枚举 一组常量。 比如一年的 4 个季节&#xff0c;一年的 12 个月份&#xff0c;一个星期的 7 天&#xff0c;方向有东南西北等。 Java 枚举类使用 enum 关键字来定义&#xff0c;各个常量使用逗号 , 来分割。 例如定义一个颜色的枚举类。 enum Color { RED, GREEN, …

C++菜鸟教程 - 从入门到精通 第一节

一.C简介 C 是一种编程语言&#xff0c;它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言&#xff0c;是一种面向对象的程序设计语言。C 可运行于多种平台上&#xff0c;如 Windows、MAC 操作系统以及 UNIX 的各种版本。 C 是一种…

MongoDB之MongoDB Compass工具

MongoDB Compass 是 MongoDB 官方提供的一款图形化用户界面 (GUI) 工具&#xff0c;用于与 MongoDB 数据库进行交互和管理。Compass 提供了丰富的功能&#xff0c;能够帮助开发者、数据库管理员以及数据分析师轻松管理和分析 MongoDB 数据。以下是对 MongoDB Compass 的详细介绍…

Go语言 Go程基础

本篇文章主要为Go语言 Go程基础内容介绍及代码示例。 目录 并发与并行 Go程介绍 简单go程示例 匿名函数写法 启动多个子go进程 总结 并发与并行 并发&#xff1a;电脑同时听歌&#xff0c;看小说&#xff0c;看电影。cpu根据时间片进行划分&#xff0c;交替执行这个三个…

Windows安装docker,启动ollama运行open-webui使用AIGC大模型写周杰伦歌词

Windows安装docker&#xff0c;启动ollama运行open-webui使用AIGC大模型写周杰伦歌词 1、下载docker的Windows版本。 docker下载地址&#xff1a; https://docs.docker.com/desktop/install/windows-install/https://docs.docker.com/desktop/install/windows-install/ 2、设…

java基础知识-JVM知识详解

一、JVM内存结构 Java虚拟机(JVM)的内存结构主要分为几个不同的区域,每个区域都有其特定的目的和功能。以下是JVM内存结构的主要组成部分: 先看一下总体的结构图 程序计数器(Program Counter Register) 这是一个较小的内存块,用于存储当前线程所执行的字节码指令的地址…

tomato靶机通关攻略

主机发现 用kali去扫描端口&#xff0c;发现有3个开放端口 访问网站 在kali里面进行目录扫描&#xff0c;找到一个antibot_image 找到一个/antibot_image/ 目录&#xff0c;进而找到/antibots/目录 发现可能存在文件包含 页面通过image传参查看passwd文件 页面通过image传参查…

Linux 虚拟网络三大基石:Namespace、Veth pair 与 Bridge

引言 在 Linux 的世界里&#xff0c;虚拟网络技术是系统管理、云计算和容器化不可或缺的一部分。今天&#xff0c;我们将深入探讨构建这些虚拟网络的三大基石&#xff1a;Namespace、Veth 对和 Bridge&#xff0c;揭示它们如何在背后默默支撑起你的网络环境。 Namespace&…

区块链入门

1.1 区块链技术的发展 随着 2008 年比特币(Bitcoin) 的发明,一个被称为区块链(Blockchain) 的新概念进入了人们的视野,这项新技术据信有可能彻底改变整个社会。 区块链有望对每个行业产生颠覆的影响,包括但不限于 IT、金融、政府、媒体、医疗、法律和艺术等。一个流派将区…