ASP.NET某企业信息管理系统的设计与实现

摘  要

信息管理系统就是我们常说的MIS(Management Information System),它是一个计算机软硬件资源以及数据库的人-机系统。经过对题目和内容的分析,选用了Microsoft公司的ASP.NET开发工具,由于它提供了用于从数据库中访问数据的强大工具集,使用它可以建立开发比较完善的数据库操作应用程序,并利用SQL Server2000提供数据库。根据实际情况,使用快速原型法(Rapid Prototyping)即以少量代价快速地构造一个可执行的软件系统模型。以此为基础,搭建了系统框架,对其下的功能模块进行了划分。初步实现了诸如添加、删除、查询、修改等功能,并通过权限控制,为不同的登录用户提供不同的功能。其间不断对系统进行改进和完善,解决了一些在数据更新时遇到的问题,并针对系统的不足之处,提出了新的解决方案。

关键词信息管理系统;ASP.NET;面向对象;原型法

3.1  实现技术简介

ASP.NET是一个已编译的、基于 .NET的环境,可以用任何与 .NET兼容的语言包括Visual Basic。NET、C# 和JScript .NET.)创作应用程序。另外,任何ASP. NET应用程序都可以使用整个 .NET框架。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。

ASP.NET的结构中,IIS(Internet Information Services)为Windows NT/2000/XP操作系统的一个组件,所有Web客户端和ASP.NET应用程序之间的联系都必须通过IIS来进行。ASP.NET应用程序是建立在.NET框架技术的基础上的,因此在这些应用程序中可以充分利用由.NET框架技术提供的各种特性(例如Web表单和Web服务),通过对这些特性的利用,体现.NET框架技术对RAD(Rapid Application Development)和OOP(Object-Oriented Programming)技术的支持,实现减少编程工作量和快速开发的目标。

ASP.NET的结构如下图所示:

图7 ASP.NET结构图

SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracle, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和扩展,但是包括Select, Insert, Update, Delete, Create,以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作。

3.2  页面的具体实现

3.2.1  用户登录页面

整个系统以员工信息管理模块为重点,在首页点击员工信息按钮后跳转到登录界面,如下图所示:

图8登录界面

用户输入后按下“登录”按钮时,将进行数据库连接和用户输入匹配检查等操作,该按钮的处理代码如下:

    private void Btn_login_Click(object sender, System.EventArgs e)

         {

             if(Page.IsValid)

             {

                  string strconn= ConfigurationSettings.AppSettings["dsn"];

                  SqlConnection cn=new SqlConnection(strconn);

                  cn.Open();

                  string strsql="select * from users where UID='"+Tbx_userID.Text+"'and UPassword='"+Tbx_userpwd.Text+"'";

                  SqlCommand cm=new SqlCommand(strsql,cn);

                  SqlDataReader dr=cm.ExecuteReader();

                  if(dr.Read())

                  {

                      Session["userid"]=dr["UID"];

                      Session["userpower"]=dr["UPower"];

                      if((int)Session["userpower"]==1)

                      {

                          Response.Redirect("users.aspx");

                      }

                      else if((int)Session["userpower"]==2)

                      {

                          Response.Redirect("personnel_information.aspx");

                      }

                      else

                      {  

                          Response.Redirect("commonpersonnel.aspx");

                      }

                  }   

                  else

                  {

                      Lbl_message.Text="编号密码不正确,请重新登录!";

                      Lbl_message.Style["color"]="red";

                  }

                  cn.Close();

             }

    }

3.2.2  用户管理页面

用户信息管理页面是管理员操作的主页面。使用了一个DataGrid控件来显示用户信息。

同前文介绍过的管理员界面,如下图所示:

图9用户信息管理页面效果

页面初次加载时,首先要对DataGrid控件进行数据绑定,以显示用户信息。对用户信息的编辑、添加等都要通过直接对DataGrid控件进行操作来完成。Page_Load的代码如下:

private void Page_Load(object sender, System.EventArgs e)

         {

             //判断用户是否为合法用户

             try

                  {

                      if(Session["userpower"].ToString ()=="1");

                      else

                      {                        

                          Response.End ();                       

                      }

                  }

                  catch

                  {

                      Response.Write ("您不是合法用户,请登录后再操作,<a href='default.aspx'>返回</a>");

                      Response.End ();

                  }

             // 在此处放置用户代码以初始化页面

             string strconn= ConfigurationSettings.AppSettings["dsn"];

             SqlConnection cn=new SqlConnection(strconn);

             cn.Open();

             if(!IsPostBack)

             {

                  Bindgrid();

             }

             cn.Close();

    }

数据绑定的处理如下:

public  void Bindgrid()

         {

             string strconn= ConfigurationSettings.AppSettings["dsn"];

             SqlConnection cn=new SqlConnection(strconn);

             cn.Open();

             SqlDataAdapter da=new SqlDataAdapter("select * from users",cn);

             DataSet ds=new DataSet();

             da.Fill(ds);

             Dgd_userinformation.DataSource=ds;

             Dgd_userinformation.DataBind();

             cn.Close();

    }

页面上有一个添加新用户的按钮,如果单击将重定向到addusers.aspx页面。代码如下:

private void Btn_add_Click(object sender, System.EventArgs e)

         {

             Response.Redirect("addusers.aspx");

    }

对用户信息的编辑操作,直接通过对DataGrid进行编辑完成。为此,需要提供DataGrid控件浏览状态和编辑状态之间转换的处理程序,包括DataGrid控件从浏览状态向编辑状态的转换和取消编辑状态。代码如下:

public void DataGrid_cancel(object sender,DataGridCommandEventArgs e)

         {

             Dgd_userinformation.EditItemIndex=-1;

             Bindgrid();

         }

         public void DataGrid_edit(object sender,DataGridCommandEventArgs e)

         {

             Dgd_userinformation.EditItemIndex=(int)e.Item.ItemIndex;

             Bindgrid();

    }

完成编辑之后,一旦要更新DataGrid编辑项,则须更新数据库并刷新DataGrid。这一操作的代码如下:

public void DataGrid_update(object sender,DataGridCommandEventArgs e)

         {

             string strconn= ConfigurationSettings.AppSettings["dsn"];

             SqlConnection cn=new SqlConnection(strconn);

             cn.Open();

             string strsql="update users set UID=@uid,UPassword=@password,UPower=@kind where ID=@userid";

             SqlCommand cm=new SqlCommand(strsql,cn);

             cm.Parameters.Add(new SqlParameter("@uid",SqlDbType.VarChar,50));

             cm.Parameters.Add(new SqlParameter("@password",SqlDbType.VarChar,50));

             cm.Parameters.Add(new SqlParameter("@kind",SqlDbType.Int,4));

             cm.Parameters.Add(new SqlParameter("@userid",SqlDbType.BigInt,8));

             string colvalue=((TextBox)e.Item.Cells[3].Controls[0]).Text;

             cm.Parameters["@uid"].Value=colvalue;

             colvalue=((TextBox)e.Item.Cells[4].Controls[0]).Text;

             cm.Parameters["@password"].Value=colvalue;

             colvalue=((TextBox)e.Item.Cells[5].Controls[0]).Text;

             cm.Parameters["@kind"].Value=colvalue;

             cm.Parameters["@userid"].Value=Dgd_userinformation.DataKeys[(int)e.Item.ItemIndex];    

             try

             {

                  cm.ExecuteNonQuery();

                  Lbl_show.Text="编辑成功";

                  Dgd_userinformation.EditItemIndex=-1;

             }

             catch(SqlException)

             {

                  Lbl_show.Text="编辑失败,请检查输入!";

                  Lbl_show.Style["color"]="red";

             }

             cm.Connection.Close();

             Bindgrid();

    }

类似的,对DataGrid记录的删除操作处理代码如下:

public void DataGrid_delete(object sender,DataGridCommandEventArgs e)

         {

             string strconn= ConfigurationSettings.AppSettings["dsn"];

             SqlConnection cn=new SqlConnection(strconn);

             cn.Open();

             string strsql="delete from users where ID=@userid";

             SqlCommand cm=new SqlCommand(strsql,cn);

             cm.Parameters.Add(new SqlParameter("@userid",SqlDbType.BigInt,8));

             cm.Parameters["@userid"].Value=Dgd_userinformation.DataKeys[(int)e.Item.ItemIndex];

            

             try

             {

                  cm.ExecuteNonQuery();

                  Lbl_show.Text="删除成功";

                 

             }

             catch(SqlException)

             {

                  Lbl_show.Text="删除失败";

                  Lbl_show.Style["color"]="red";

             }

             cm.Connection.Close();

             Bindgrid();

    }

此外,入页面所示,还可以根据用户编号来查找相应用户的信息并显示。这里用到了一个Button控件,其代码如下:

private void Btn_search_Click(object sender, System.EventArgs e)

         {

             string strconn= ConfigurationSettings.AppSettings["dsn"];

             SqlConnection cn=new SqlConnection(strconn);

             cn.Open();

             string strsql="select * from users where UID=@uid";

             SqlCommand cm=new SqlCommand(strsql,cn);

             cm.Parameters.Add(new SqlParameter("@uid",SqlDbType.VarChar,50));

             cm.Parameters["@uid"].Value=Tbx_uid.Text;

             SqlDataReader dr=cm.ExecuteReader();

             Dgd_userinformation.DataSource=dr;

             Dgd_userinformation.DataBind();

            cn.Close();

    }

这里,首先从TextBox控件中取出查询条件,然后调用数据库操作返回查询结果并绑定显示到DataGrid控件上。

3.2.3  员工信息管理页面

系统设计时将员工信息的浏览和管理页面分成了不同的两个页面。另外,由于系统的用户管理部分已有用户的添加功能,这里便不再需要新增员工信息的功能,仅设计了一个修改已有用户的员工信息功能。

员工信息浏览界面如下图所示:

图10员工信息浏览页面设计效果

这里包括了一个“详细信息”列,采用了HyperLinkColumn,从而能够以超链接的形式将数据源中的一个字段绑定到一个列中,也可以很方便地实现页面的跳转。因为按钮的功能与用户管理页面处的同类功能的代码大致相同,故不再列出。

和用户信息管理部分的设计有所不同,员工信息修改部分被设计为在独立页面中实现。

首先需要输入员工编号以查找员工信息,并将其显示在DataGrid控件中。和用户管理部分相似,可以直接针对DataGrid控件进行修改和删除操作。这部分的代码和用户管理部分是相似的,故不再列出。

3.2.4  人事变动页面

人事变动页面如下图所示:

图11人事变动页面设计效果

这个页面和奖惩信息页面都只允许管理员和高级用户访问。和前面员工信息管理页面相似,添加人事变动的功能也是由其它页面完成的。实现功能的代码与用户信息页面处同类功能的代码相似,故不再列出。

3.2.5  奖惩信息页面

奖惩信息页面的设计和人事变动页面基本相似,故不再列出代码,界面如下图所示:

图12奖惩信息页面设计效果

3.2.6  个人信息页面

个人信息页面为普通用户登陆后浏览其个人相关信息的页面,如下图所示:

图13个人信息页面设计效果

如图所示,页面包括了三个Button控件,分别用于显示用户基本信息、人事变动情况以及奖惩情况。

在显示用户基本信息时,DataGrid控件会显示一项记录,即用户的基本信息。但是用户的人事变动情况和奖惩情况记录项依赖于实际次数,因此,将DataGrid控件的AutoGeneratedColumns属性设为False,便可以动态地手动添加,以适应三种不同的报表显示。用于实现功能的代码在之前的用户管理页面都有类似的,故此处不再列出。

3.2.7  高级用户界面

根据系统的设计,高级用户界面和管理员界面几乎相同,登录后的默认页面为员工信息浏览页面。区别仅在于权限的不同,无法使用修改和删除的功能。并且出于安全性考虑,无法浏览用户信息的界面。

3.2.8  招聘相关页面

招聘信息相关的内容,主要由以下页面构成:招聘信息发布页面,招聘信息浏览页面以及简历的提交和浏览界面。根据权限设置,只有管理员和高级用户才能使用相关的所有功能,游客仅能浏览招聘信息页面和提交简历。

招聘信息发布页面如下图所示:

图14招聘信息发布页面设计效果

通过填表的形式实现,核心代码如下:

private void Button1_Click(object sender, System.EventArgs e)

         {

             string strconn= ConfigurationSettings.AppSettings["dsn"];

             SqlConnection cn=new SqlConnection(strconn);

             cn.Open();

            

             string cmdstr = "insert into giveJobInfo (Email,phone,address,addrNum,workPosition,giveNum,workCity,describe,request,publicTime) values ('"+this.TextBox1.Text+"','"+this.TextBox2.Text+"','"+this.TextBox3.Text+"','"+this.TextBox4.Text+"','"+this.TextBox5.Text+"','"+this.TextBox6.Text+"','"+this.TextBox7.Text+"','"+this.TextBox8.Text+"','"+this.TextBox9.Text+"','"+this.TextBox10.Text+"')";

            

             SqlCommand cmd = new SqlCommand(cmdstr,cn);

                  cmd.ExecuteNonQuery();

                  Response.Write("<script>alert('提交成功')</script>");

                  Response.Redirect("ResumeDetails.aspx");

         }

招聘信息浏览界面如下图所示:

图15招聘信息浏览页面设计效果

使用DateGrid控件,在详细信息处通过HyperLinkColumn实现页面跳转,并在右下角用Button控件转到提交简历的界面。关于数据绑定的代码同用户管理页面处类似,这里不再列出。

点击右下角按钮跳转后的提交简历界面和前面的发布招聘信息界面大致相同,故不再列出代码。界面如下:

图16简历提交页面设计效果

简历信息浏览界面和前面的招聘信息浏览界面大致相同,故也不再列出代码。界面如下:

图17简历信息浏览页面设计效果

3.2.9  留言板相关页面

与留言板信息相关的主要有两个页面:留言发布页面和留言板管理页面。前者可以通过主页上的按钮来跳转,后者需有管理员或高级用户身份登录后进行操作。留言发布页面如下所示:

图18留言发布页面设计效果

使用到了DataGrid控件,并通过Button控件提交,主要代码如下:

private void Button1_Click(object sender, System.EventArgs e)

         {

                  string i,j,k;

             i=this.TextBox1.Text.ToString();

             j=this.TextBox2.Text.ToString();

         k=this.TextBox3.Text.ToString();

             if(i==""&&j==""&&k=="")

             {

                  this.Label1.Visible=true;

                  this.Label1.Text="内容不能为空,请输入!";

                  this.Label1.ForeColor=Color.Red;

             }

             else

             {

                  DateTime t=System.DateTime.Now;

                  string strconn= ConfigurationSettings.AppSettings["dsn"];

                  SqlConnection cn=new SqlConnection(strconn);

                  cn.Open();

                  SqlCommand com=new SqlCommand("insert into MB values('"+i+"','"+j+"','"+k+"','"+t+"')",cn);

                  com.ExecuteNonQuery();

                  this.Label1.Visible=true;

                  this.Label1.Text="留言发表成功!";

                  this.bind();

             }

         }

留言板管理页面如下所示:

图19留言板管理页面设计效果

同样用到了DataGrid控件,代码不再列出。

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

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

相关文章

等保测评有那些流程?为什么要做等保

根据《网络安全法》规定&#xff0c;网络运营者应当按照国家的网络安全技术标准和要求&#xff0c;采取技术措施保障网络安全&#xff0c;避免网络安全事件的发生。而等保测评是国家对企事业单位进行信息系统安全等级评定的一项重要制度&#xff0c;通过等级测评&#xff0c;可…

Linux下怎么快速部署MySQL服务,并使用

下载镜像 [zrylocalhost ~]$ docker pull mysql Using default tag: latest latest: Pulling from library/mysql bce031bc522d: Pull complete cf7e9f463619: Pull complete 105f403783c7: Pull complete 878e53a613d8: Pull complete 2a362044e79f: Pull complete 6e4d…

C语言进阶:进阶指针(下)

一、 函数指针数组 我们都知道 数组是一个存放相同类型数据的存储空间 那我们已经学习了指针数组 那么函数有没有对应的指针数组呢&#xff1f; 如果有那应该怎么定义呢&#xff1f; 1. 函数指针数组的定义 我们说 函数指针数组的定义 应该遵循以下格式 int (*p[10])(); 首…

thinkphp5.0.23漏洞复现以及脚本编写

1 thinkphp5.0.23远程代码执行漏洞简介 ThinkPHP5.0.23漏洞主要涉及远程代码执行(RCE)的安全隐患。这一漏洞的存在是因为ThinkPHP框架在底层对控制器名的过滤不够严格,导致攻击者有可能通过特定的URL构造,调用到框架内部的敏感函数,进而执行任意命令。 2 thinphp5.0.23漏…

安装或者更新VMware提示:

the file is not avalid installation package for the product Microsoft Visual C 2015 x86 Minimum Runtime Try to find the installation pakcage vc_runtimeMinimum_x86.msi in a folder from which you can install Microsoft Visual C 2015 x86 Minimum Runtime 解决方…

Baidu comate智能编程助手评测

Baidu comate智能编程助手评测 作者&#xff1a;知孤云出岫 目录 一&#xff0e; 关于comate产品 二&#xff0e; 关于comate产品体验 三&#xff0e; 关于实际案例. 四&#xff0e; 关于baidu comate编程助手的实测体验感悟 五&#xff0e; …

与健康码一起落寞的,还有不被投资者待见的圣湘生物们

&#xff08;题图&#xff09; 文&#xff5c;新熔财经 作者&#xff5c;宏一 都2024年了&#xff0c;没想到还有用到健康码的一天。 前段时间&#xff0c;我咳嗽比较严重&#xff0c;去当地医院挂号做了个肺部CT&#xff0c;结果医生居然让我出示健康码&#xff0c;让我感…

力扣HOT100 - 994. 腐烂的橘子

解题思路&#xff1a; 因为要记录轮数&#xff08;分钟数&#xff09;&#xff0c;所以不能一口气遍历到底&#xff0c;所以不能用深搜&#xff08;bfs&#xff09;&#xff0c;而要用广搜&#xff08;bfs&#xff0c;层序遍历&#xff09;。 先记录下新鲜橘子数&#xff0c;…

2024年618有哪些数码家电值得入手?全网最省钱攻略指南

作为全年唯一设在夏季的大型电商狂欢节&#xff0c;618一直是很多人购置数码类、家电类的最好时间节点之一。但是问题来了&#xff0c;现在的数码家电行业“鱼龙混杂”&#xff0c;不仅越来越多新品牌涌入市场&#xff0c;而且各个大品牌为了抢占市场&#xff0c;旗下产品的品类…

新手Pytorch入门笔记-transforms.Compose()

我使用的图片是上图&#xff0c;直接下载即可 transforms.Compose 是PyTorch中的一个实用工具&#xff0c;用于创建一个包含多个数据变换操作的变换对象。这些变换操作通常用于数据预处理&#xff0c;例如图像数据的缩放、裁剪、旋转等。使用transforms.Compose 可以将多个数据…

用了十年以上的破旧电脑还能干啥?Ubuntu 24.04

用了十年之久的电脑卡不卡&#xff1f; 写博客&#xff0c;刷视频一点都不卡&#xff0c;敲敲代码也OK。 宏碁Aspire 4741G系列笔记本电脑是宏碁在2010年8月推出的产品&#xff0c;因此其生产日期可能大致在那个时间段或附近。但请注意&#xff0c;具体的生产日期可能会因生产…

Linux多进程(四) 守护进程

守护进程&#xff08;Daemon Process&#xff09;&#xff0c;也就是通常说的 Daemon 进程&#xff08;精灵进程&#xff09;&#xff0c;是 Linux 中的后台服务进程。它是一个生存期较长的进程&#xff0c;通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件…