ASP.NET教务平台—学籍管理模块开发与设计

摘  要

教务平台之学籍管理模块是一个典型的教务信息管理系统(MIS),其开发主要包括后台数据库的建立和前端应用程序的开发两个方面。对于后台数据库要求实现数据的完整性、一致性和安全性;对于前台应用程序开发则要求模块功能完备、界面友好、易使用等特点。

教务平台之学籍管理模块是根据高校教务管理的实际需求,采用微软的.NET Framework2.0作为开发平台,使用SQL Server 2005来设计数据库,以ASP.NET和C#作为前台的开发语言,来完成学生学籍的管理。该设计是基于B/S模式的信息管理系统,主要实现用户管理、学生注册、学籍异动,学生花名册查看和打印等主要功能。同时为了保证后台代码和数据的保护性、密封性,使用了一个中间层分离开前台页面和后台数据的交互操作,使该系统层次清晰,便于开发,维护。通过该系统的应用,可以满足高校教务学籍管理工作的高效化、无纸化和网络化的需求,提高高校教务的工作质量与效率。

关键词教务信息管理;B/SASP.NETNET Framework2.0

2.2  系统实现环境与技术

“.NET代表一个集合,一个环境,一个可以作为平台支持下一代Internet的可编程结构。”即.NET=新平台+标准协议+统一开发工具。.NET Framework(框架结构)是.NET平台的基础,它是建设,开发以及运行WEB应用程序和WEB服务的环境,它包含了公共语言运行库(CLR)和.NET Framework类库—就像ADO.NET,ASP.NET和窗体 ——提供了标准的高级服务,能够使各样的计算机系统成为一体。同时.NET Framework提供了特色丰富的应用环境,精简的开发和简单的集成一些不同的开发语言,它所能直接支持的语言有C++, C#, Visual Basic, 和 JScript .NET和J#。

在这样的环境下,教务平台—学籍管理模块在.Net Framework 2.0下实现,采用SQL Server 2005作为数据提供者。系统开发中使用的集成开发环境是和.Net Framework 2.0配套的Visual Studio 2005,使用的语言是C#。

2.2.1  Visual Studio 2005介绍

Visual Studio 2005 是一系列高效的、智能的开发工具的统称,它拥有一个庞大的产品线,包括面向学生、爱好者、初学者的Express版,面向专家、Visual Basic 6的Standard版,面向顾问、企业开发人员的Professional版和面向架构师的Team System版本。在这些版本中,有些集成了开发软件常用到的东西,比如重构、单元测试、类设计器等等,以方便开发人员快速的设计各类软件。

2.2.2  SQL Server 2005介绍

SQL Server 2005 是一个全面的数据库平台,使用集成的商业智能工具提供了企业级的数据管理。SQL Server 2005 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序。SQL Server 2005 数据引擎是企业数据管理解决方案的核心。此外 SQL Server 2005 结合了分析、报表、集成和通知功能。

2.2.3  IIS介绍

Microsoft IIS 是允许在公共Intranet或Internet上发布信息的Web服务器。IISInternet信息服务(Internet Information Server)的缩写。它是一种Web服务,主要包括WWW服务器、FTP服务器等。它使得在Intranet(局域网)或Internet(因特网)上发布信息成了一件很容易的事。

2.2.4  ASP.NET介绍

ASP.NET 不仅仅是 Active Server Page (ASP) 的下一个版本,它还提供了一个统一的 Web 开发模型,其中包括开发人员生成企业级 Web 应用程序所需的各种服务。ASP.NET 的语法在很大程度上与 ASP 兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。可以通过在现有 ASP 应用程序中逐渐添加 ASP.NET 功能,随时增强 ASP 应用程序的功能。它是一个已编译的、基于 .NET 的环境,可以用任何与 .NET 兼容的语言创作应用程序,任何 ASP.NET 应用程序都可以使用整个 .NET Framework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。这不仅使得 Web 开发更加方便,而且还能提供这些工具必须提供的所有优点,包括开发人员可以用来将服务器控件拖放到 Web 页的 GUI 和完全集成的调试支持。当创建 ASP.NET 应用程序时,开发人员可以使用 Web 窗体或 XML Web services,或以他们认为合适的任何方式进行组合。每个功能都能得到同一结构的支持,使您能够使用身份验证方案,缓存经常使用的数据,或者对应用程序的配置进行自定义。

4.1  总模块设计

该模块是主管学籍工作人员的工作界面,可以对全校学生的信息进行录入、维护和查询;对学生的异动信息进行录入、维护和查询;还可提供学生异动情况查询,以及查看和打印学生相关信息的主要功能。用户登陆系统以后,根据相关的权限进行相关的操作。

  图3 功能模块示意图

4.2  具体模块设计与开发

4.2.1  用户角色

用户权限在高校管理平台中是一个公共的模块,学籍管理模块根据实际需求需要,设定了系统管理员、教务处用户、班主任三个用户角色。系统管理员可以修改,查看该系统所有信息。班主任只能对自己所管辖的班级信息进行修改和查看。教务处用户在该模块主要是对学生学籍异动情况进行处理。

角色分配是通过系统管理模块实现的,根据模块需求,为每个用户增加了具体权限,然后通过登陆界面来实现。图4为系统管理员(admin)登陆界面,图5系统管理员进入主页面后的界面。他拥有对整个教务系统的管理权限。

 

图4 系统管理员登陆

   

              图5 高校管理系统所有功能

登陆界面实现代码:

protected void btnLogin_Click(object sender, ImageClickEventArgs e)

 {                      //获取输入的用户名和密码;

      string userName = NJJ.Common.PageValidate.InputText(txtUsername.Value.Trim(), 30);

      string Password = NJJ.Common.PageValidate.InputText(txtPass.Value.Trim(), 30);

  AccountsPrincipal newUser = AccountsPrincipal.ValidateLogin(userName, Password);                   

        if (newUser == null)    //登陆信息判断与验证;

{

            this.lblMsg.Text = "登陆失败: " + userName;

        }

        else

        {

            User currentUser = new NJJ.Accounts.Bus.User(newUser);

            Context.User = newUser;

            if (((SiteIdentity)User.Identity).TestPassword(Password) == 0)

            {

                this.lblMsg.Text = "你的密码无效!";

            }

            else

            {

                FormsAuthentication.SetAuthCookie(userName, false);

                NJJ.TreeAndLog.TreeAndLogManage log = new NJJ.TreeAndLog.TreeAndLogManage();      //系统日志管理,增加日志信息

                log.AddLog(DateTime.Now.ToString(), "用户登陆", User.Identity.Name, "1",Request.UserHostAddress);

                Session["UserInfo"] = currentUser;

                Session["Style"] = currentUser.Style;

                if (Session["returnPage"] != null)

                {

                    string returnpage = Session["returnPage"].ToString();

                    Session["returnPage"] = null;

                    Response.Redirect(returnpage);

                }

                else

                {

                    Response.Redirect("main.htm");    //进入系统的主界面

                }

            }

         }

}

4.2.2  学生注册

学生注册功能实现流程图见图6

 

图6 学生注册流程                        

班主任身份登陆系统,点击进入自己所管辖的班级学生名单,根据年级或者班级进行注册,可以单独或者一个班级批量提交学生注册名单,然后查看每一个班级注册和未注册的学生名单。最终生成注册名单交教务处,教务处备案。

4.2.3  学籍异动

作为一个高校单位,学生的规模是很庞大的,当然就存在学生的调动情况。本功能实现了学生的休学、退学、转学和复学。查看学生异动的清单。用户选择教务处用户登陆,进入学生学籍异动界面,根据学生的学号和所在班级来处 理学生休学、退学、转学、复学等情况。学籍异动流程见上页图7

图7 学籍异动流程

  

  图8 教务处用户登陆界面

     图9 学生注册信息

教务处用户(zz)通过用户登陆进入学籍管理系统,可以进入学生学籍异动,见图11。此时学生注册页面的信息是不可的。

在学籍异动页面上,我们需要输入学籍异动的类型,即有休学、退学、转学和复学。输入学生的学号、学生所在的班级、学生异动的原因。对输入的学生学号、学生所在的班级、原因,我们对它做了检查。学号必须是10位。班级必须按照真确的格式进行录入。原因只能在给定的字符以内。如果以上其中任意一个检查出错,则提示出错,学籍异动不成功。

   图10 学籍异动页面

如果录入数据格式正确,我们就会调用服务器上的方法,进行对数据库插入。数据如果插入正确,会提示操作成功的信息,如果出错,则报相应的错误信息给用户。

学籍异动的代码实现:

     //学籍异动

  public static string TransferStu(string StuID, string ClassID, string type, string Reason)         //学籍异动函数;

 {

       string ShowMSG="";        

       string sql = string.Empty;

       DataSet ds = new DataSet();

       try

       {

            Database db = DatabaseFactory.CreateDatabase();

ds = db.ExecuteDataSet(CommandType.Text, string.Format(" select StuNO,ClassID from student where StuNo='{0}' and ClassID='{1}'", StuID, ClassID));

            if (ds.Tables[0].Rows.Count > 0)

            {

                if (type == "1")        //休学情况代码;

                {

                    try

                    {

                        sql = "INSERT INTO [Xiuxue]([StuNo], [InOrOut], [Reason], [Classid],[time])VALUES('" + StuID.Trim() + "','0','" + Reason.Trim() + "','" + ClassID.Trim() + "',getdate())";

                        sql = sql + "UPDATE [Student] SET  [State]= '休学' WHERE StuNo = '" + StuID.Trim() + "'";              //插入和修改数据库语句;

                        //Database db = DatabaseFactory.CreateDatabase();

                        db.ExecuteNonQuery(CommandType.Text, sql);    //处理那些修改数据但不返回行的 SQL 语句                           

ShowMSG = "学号为" + StuID + "的同学休学了";

                       }

                       catch (Exception ex)

                       {

                           ShowMSG = "学号为" + StuID + "的同学休学失败了";

                           throw ex;

                       }

                   }

                   if (type == "2")        //复学情况代码;

                   {

                       try

                       {

                           sql = "INSERT INTO [Xiuxue]([StuNo], [InOrOut], [Reason], [Classid],[time])VALUES('" + StuID.Trim() + "','1','" + Reason.Trim() + "','" + ClassID.Trim() + "',getdate())";

                           sql = sql + "UPDATE [Student] SET  [State]= '复学' WHERE StuNo = '" + StuID.Trim() + "'";

                           //Database db = DatabaseFactory.CreateDatabase();

                           db.ExecuteNonQuery(CommandType.Text, sql);

                           ShowMSG = "学号为" + StuID + "的同学复学了";

                       }

                       catch (Exception ex)

                       {

                           ShowMSG = "学号为" + StuID + "的同学复学失败了";

                           throw ex;

                       }

              

           catch (Exception ex)

           {

               ShowMSG = "数据库连接异常";

               throw ex;

           }

                    }

          return ShowMSG;

       }

当学籍异动成功后,进入到查看所有学生异动清单的页面,查看异动信息,该页面就是从数据库读取数据,然后按照一定的页面格式,显示给用户。下边代码是学籍异动清单代码实现。

   图11 学生学籍异动清单

/// ///学籍异动

       public static DataSet MoveList()//      学籍异动清单函数;

       {

           string sql = string.Empty;

           DataSet ds = new DataSet();

           try

           {        //查询学籍异信息;

                Database db = DatabaseFactory.CreateDatabase();

                sql = "Select A.*,B.Name from  (select A.*,B.IDCardNo,B.Sex from ";

                sql = sql + " (SELECT [StuNo], '退学' as state,[Reason], [Classid], [Time] as 'time' FROM [ExitSchool]  UNION ";

                sql = sql + " select [StuNo],  state=Case  InOrOut When 0 then '转出'When 1 then '转入'end,[Reason], [Classid], [Transfertime] as 'time' ";

                sql = sql + " from TransferStu UNION ";

                sql = sql + " Select StuNo,state=Case InOrOut When 0 then '休学'When 1 then '复学'end,Reason,Classid,time  from xiuxue)A inner join ";

                sql = sql + " (Select IDCardNo,stuno,Sex from  Student)B on A.stuno = B.stuno)A inner join ";

                sql = sql + " (Select ID,Name from  Class)B on A.ClassID = B.ID ";

                ds = db.ExecuteDataSet(CommandType.Text, string.Format(sql));              

           }

           catch (Exception ex)

           {

               throw ex;

           }

           return ds;

       }

4.2.4  学生花名册查看

根据用户自行选择需要关心的学生字段,查询出所有的班级,根据班级里查询出所有的学生相应的内容。   

 图12 功能实现说明

本功能实现,用了三个页面去处理相应的内容。首先进入学生花名册查看页面,在这里选择班级,然后选择显示配置,选中要显示的学生字段,保存字段,读取信息以及打印页面。

     

图13 学生花名册查看

学生花名册查看部分代码实现:

public class Test

    {                  

        /// <summary>

        /// 根据表名获取该表内所有字段名

        /// </summary>

        /// <param name="TableName">需要获取字段的表名</param>

        /// <returns></returns>

        public static DataSet GetAllField(string TableName)

        {

            string sql = "select * from syscolumns where id=(select id from sysobjects where name='" + TableName + "')";

            Database db = DatabaseFactory.CreateDatabase();

            DataSet ds = null;

            ds = db.ExecuteDataSet(CommandType.Text, sql);

            return (ds);

        }

        /// <summary>

        /// 根据班级id获取班上所有学生列表

        /// </summary>

        /// <param name="sql">需要执行的sql语句</param>

        /// <returns></returns>

        public static DataSet GetStuListByClassId(string sql)

        {

            Database db = DatabaseFactory.CreateDatabase();

            return (db.ExecuteDataSet(CommandType.Text, sql));

        }

        /// <summary>

        /// 根据教师id读取该教师所代班级信息

        /// </summary>

        /// <param name="TeacherId">教师id</param>

        /// <returns></returns>

        public static DataSet GetAllClassByTeacherId(string TeacherId)

        {

            string sql = "select * from Class where HeadTeacherID='" + TeacherId + "'";

            Database db = DatabaseFactory.CreateDatabase();

            return (db.ExecuteDataSet(CommandType.Text, sql));

     }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/4111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java中http调用组件深入详解

目录 一、前言 二、http调用概述 2.1 什么是http调用 2.1.1 http调用步骤 2.2 HTTP调用特点 2.3 HTTP调用应用场景 三、微服务场景下http调用概述 3.1 微服务开发中http调用场景 3.2 微服务组件中http的应用 四、常用的http调用组件 4.1 java中常用的http组件介绍 4…

C++11新特性:lambda表达式

目录 1.lambda表达式 1.1 C98中的一个例子 1.2 lambda表达式 1.3 lamzbda表达式语法 1. lambda表达式各部分说明 2. 捕获列表说明 1.4 函数对象与lambda表达式 1.lambda表达式 1.1 C98中的一个例子 在C98中&#xff0c;如果想要对一个数据集合中的元素进行排序&#xff0…

Kafka 3.x.x 入门到精通(04)——对标尚硅谷Kafka教程

Kafka 3.x.x 入门到精通&#xff08;04&#xff09;——对标尚硅谷Kafka教程 2. Kafka基础2.1 集群部署2.2 集群启动2.3 创建主题2.4 生产消息2.5 存储消息2.5.1 存储组件2.5.2 数据存储2.5.2.1 ACKS校验2.5.2.2 内部主题校验2.5.2.3 ACKS应答及副本数量关系校验2.5.2.4 日志文…

BEC写作和其他英语写作有什么区别?成人学英语去哪里柯桥有专业培训吗?

BEC中级考试的写作与其他英语类考试略有不同。除考查考生的整体写作水平之外&#xff0c;它也考查考生处理日常商务活动及解决商务运作中出现问题的能力。测试题材与体裁均与商务信函有关&#xff0c;往往涉及以下内容&#xff1a; 商务信函&#xff1a;这里所涉及的信函往往是…

CNAS软件测评报告收费标准

随着信息技术的快速发展&#xff0c;软件测评在保障软件质量、提升用户体验等方面扮演着越来越重要的角色。CNAS&#xff08;中国合格评定国家认可委员会&#xff09;作为国内权威的认可机构&#xff0c;其软件测评报告收费标准受到了广泛关注。本文旨在解析CNAS软件测评报告的…

(学习日记)2024.05.06:UCOSIII第六十节:User文件夹函数概览(uCOS-III->Source文件夹)第六部分

写在前面&#xff1a; 由于时间的不足与学习的碎片化&#xff0c;写博客变得有些奢侈。 但是对于记录学习&#xff08;忘了以后能快速复习&#xff09;的渴望一天天变得强烈。 既然如此 不如以天为单位&#xff0c;以时间为顺序&#xff0c;仅仅将博客当做一个知识学习的目录&a…

CentOS安装CRI--containerd

前言 CRI&#xff0c;Container Runtimes&#xff0c;通常直译成容器进行时因为kubernetes&#xff0c;从1.24开始&#xff0c;移除了Dockershim&#xff0c;需要额外安装CRI&#xff0c;保障Pod能顺利运行。网上有很多容器进行时的工具&#xff0c;本文采用containerd工具。 …

解决双击PDF文件出现打印的问题【Adobe DC】

问题描述 电脑安装Adobe Acrobat DC之后&#xff0c;双击PDF文件就会出现打印&#xff0c;而无法直接打开。 右键PDF文件就会发现&#xff0c;第一栏出现的不是用Adobe打开&#xff0c;而是打印。 重装软件多次仍然无法解决。 原因 右键菜单被改写了。双击其实是执行右键菜…

AIGC的发展历程

AI生成内容&#xff08;AIGC&#xff09;的发展历程可以追溯到20世纪50年代&#xff0c;当时人工智能&#xff08;AI&#xff09;的概念还处于起步阶段。然而&#xff0c;AIGC技术的快速发展主要集中在21世纪初&#xff0c;特别是随着深度学习、自然语言处理和其他相关领域的突…

异次元店铺商品系统自带支付源码

异次元店铺系统是荔枝店铺系统3.0的完全重构版本&#xff0c;从零开始编写&#xff0c;采用原生php开发。数据库底层使用Eloquent ORM&#xff0c;模板渲染使用Smarty3.1以及PHP原生渲染&#xff0c;会话保持全程使用session。以下是一些主要功能的简要介绍&#xff1a; 下 载…

MySQL常见问题与解决方案详述

MySQL&#xff1a;常见问题与解决方案详述 作为一款广泛使用的开源关系型数据库管理系统&#xff0c;MySQL对于初学者来说既充满吸引力又充满挑战。本文将列举初学者在使用MySQL过程中可能遇到的一些典型问题&#xff0c;并提供详细的解决方案&#xff0c;配以图片辅助说明&am…

【漏洞复现】艺创科技智能营销路由器后台命令执行漏洞

漏洞描述&#xff1a; 成都艺创科技有限公司是一家专注于新型网络设备研发、生产、销售和服务的企业&#xff0c;在大数据和云时代&#xff0c;致力于为企业提供能够提升业绩的新型网络设备。 智能营销路由器存在后台命令执行漏洞&#xff0c;攻击者可利用漏洞获取路由器控制…

AI预测福彩3D第9套算法实战化测试第5弹2024年4月27日第5次测试

今天继续进行新算法的测试&#xff0c;今天是第5次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月27日福彩3D预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;3、5、6、2、7、1 十位&#xff1a;8、4、9、3、1、0 个位&#xff1a;3、5、2、…

【源码】WBF多语言交易所/申购+自发币平台币+币币+杠杆+合约/附带安装教程/带VUE工程源码

【源码介绍】 WBF多语言交易所/申购自发币平台币币币杠杆合约/附带安装教程/带VUE工程源码 【源码说明】 带VUE工程源码最新申购&#xff0c;自发币平台币&#xff0c;币币&#xff0c;法币&#xff0c;杠杆&#xff0c;合约多语言交易所&#xff0c;附带pc和手机VUE&#x…

网络基础(day3)

【 理论重点】 网络是什么&#xff1f; &#xff08;网络是载体&#xff0c;目的是传输互联网中的数据&#xff0c;数据是终端产生<手机、电脑、服务器等>。&#xff09; 如何组件网络&#xff08;良性网络架构&#xff09;&#xff1f;有网络架构思维&#xff0c;得按层…

C++从入门到精通——string类

string类 前言一、为什么学习string类C语言中的字符串示例 二、标准库中的string类string类string类的常用接口说明string类对象的常见构造string类对象的容量操作string的接口测试及使用string类对象的访问及遍历操作下标和方括号遍历范围for遍历迭代器遍历相同的代码&#xf…

普通话水平测试用朗读作品60篇-(练习版)

普通话考试题型有读单音节字词、读多音节字词、朗读作品和命题说话。 具体分值如下&#xff1a; 1、读单音节字词100个&#xff0c;占10分&#xff1b;目的考查应试人普通话声母、韵母和声调的发音。 2、读双音节词语50个&#xff0c;占20分&#xff1b;目的是除了考查应试人声…

------分割线之 WebSecurityConfigrerAdapter弃用问题------

WebSecurityConfigurerAdapter 被弃用的原因是 Spring Security 项目的维护者希望将项目的主要开发工作集中在新的配置方式上&#xff0c;即基于 Java 的配置&#xff08;Java Configuration&#xff09;和基于 Lambda 的表达式。这主要是因为 Spring 5.0 引入了重量级的 Java …

【NR RedCap】Release 18标准中对5G RedCap的增强

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G技术研究。 博客内容主要围绕…

ArcGIS小技巧—你分得清投影与定义投影吗

Arcmap中关于投影的工具有四个&#xff0c;分别是定义投影、投影、投影栅格、批量投影。这四个工具既有相同之处也有不同之处&#xff0c;下面我将一一介绍。 ①定义投影&#xff1a;Arcmap中关于定义投影工具是这样描述的&#xff1a;“所有地理数据集均具有一个用于显示、测…