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控件,代码不再列出。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

docker容器---docker-compose容器集群的快速编排

一、Docker-compose简介 Docker-Compose项目是基于Python开发的Docker官方开源项目&#xff0c;负责实现对Docker容器集群的快速编排。 Docker-Compose将所管理的容器分为三层&#xff0c;分别是 工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&am…

使用vue3+elementplus的级联选择器实现省市区联动(三级到五级)

中华人民共和国行政区划代码 github地址&#xff1a;https://github.com/uiwjs/province-city-china 中华人民共和国行政区划&#xff08;五级&#xff09;&#xff1a;省级、地级、县级、乡级和村级。来自中华人民共和国民政部&#xff0c;用于查询中国省&#xff0c;市和区数…

linux远程访问及控制

一、SSH远程管理 1.SSH的简介 SSH远程管理是一种通过 SSH 协议安全地管理远程计算机的方法。允许管理员通过加密的连接从本地计算机或其他远程位置连接到远程计算机&#xff0c;并执行管理任务、配置设置、故障排除等操作。 远程链接的两种方法&#xff1a;SSH 、Telnet S…

函数定义域和值域

定义域和值域 1. 函数的定义 函数的定义&#xff1a;一般的&#xff0c;在一个变化过程中&#xff0c;假设有两个变量 x x x&#xff0c; y y y&#xff0c;如果对于任意一个 x x x 都有唯一确定的一个 y y y 和它对应&#xff0c;那么就称 x x x 是自变量&#xff0c; y…

C++初阶学习第四弹——类与对象(中)——刨析类与对象的核心点

类与对象&#xff08;上&#xff09;&#xff1a;C初阶学习第三弹——类与对象&#xff08;上&#xff09;——初始类与对象-CSDN博客 前言&#xff1a; 在前面文章中&#xff0c;我们已经讲了类与对象的思想和类与对象的一些基本操作&#xff0c;接下来这篇文章我们将讲解以下…

会计稳健性Cscore模型(2000-2022年)

01、数据介绍 会计稳健性是指在财务报告中&#xff0c;对损失和收益的确认存在不对称的延迟。具体来说&#xff0c;对于损失或坏消息&#xff0c;企业应尽早确认&#xff1b;而对于收益或好消息&#xff0c;企业应延迟确认。这种稳健的会计处理方式有助于提高财务报告的质量&a…

人工原生动物优化器(APO)-2024年SCI一区新算法-公式原理详解与性能测评 Matlab代码免费获取

声明&#xff1a;文章是从本人公众号中复制而来&#xff0c;因此&#xff0c;想最新最快了解各类智能优化算法及其改进的朋友&#xff0c;可关注我的公众号&#xff1a;强盛机器学习&#xff0c;不定期会有很多免费代码分享~ 目录 原理简介 一、觅食行为 (1)自养模式 (2)异…

[CUDA 学习笔记] GEMM 优化: 双缓冲 (Prefetch) 和 Bank Conflict 解决

GEMM 优化: 双缓冲 (Prefetch) 和 Bank Conflict 解决 前言 本文主要是对 深入浅出GPU优化系列&#xff1a;GEMM优化&#xff08;一&#xff09; - 知乎, 深入浅出GPU优化系列&#xff1a;GEMM优化&#xff08;二&#xff09; - 知乎 以及 深入浅出GPU优化系列&#xff1a;GE…

Git工具的使用

文章目录 Git概述本地仓库命令远程仓库命令分支操作标签操作 IDEA上执行Git Git概述 一般工作流程如下&#xff1a; 从远程仓库中克隆 Git 资源作为本地仓库&#xff1b; 从本地仓库中checkout代码然后进行代码修改&#xff1b; 在提交本地仓库前先将代码提交到暂存区&#xff…

上市公司-双重差分模型手动匹配绿色企业数据及参考资料

01、数据简介 双重差分模型&#xff08;DID&#xff0c;Differences-in-Differences&#xff09;是一种用于估计某个政策或处理效果的经济计量学模型。通过双重差分模型&#xff0c;可以控制一些不易观察的个体特征和时间趋势&#xff0c;以更准确地估计政策的效应。将绿色企业…

OmniReader Pro for Mac:强大且全面的阅读工具

OmniReader Pro for Mac是一款专为Mac用户设计的强大且全面的阅读工具&#xff0c;它集阅读、编辑、管理等多种功能于一身&#xff0c;为用户提供了卓越的阅读体验。 OmniReader Pro for Mac v2.9.5激活版下载 该软件支持多种文件格式的阅读&#xff0c;包括PDF、Word、Excel、…

Python中PYTHONPATH与sys.path详解——看完不会用你打我

一、PYTHONPATH是什么 PYTHONPATH是python查找模块和包的路径&#xff0c;当导入模块时&#xff0c;python解释器将按顺序在PYTHONPATH下寻找。 通过sys.path可以查看PYTHONPATH的值&#xff0c;路径列表的第一个元素为空字符串&#xff0c;代表的是相对路径下的当前目录&…

特斯拉携手百度攻克在华推广辅助驾驶难题,马斯克意外访华成果显著

特斯拉近日宣布与科技巨头百度达成合作协议&#xff0c;共同为中国市场提供地图和导航服务&#xff0c;以进一步推动其辅助驾驶系统的广泛应用。这一重要进展得益于特斯拉CEO埃隆马斯克上周的意外访问。 更多消息&#xff1a;AI人工智能行业动态&#xff0c;aigc应用领域资讯 …

盼你快治好肺癌,处死360那个鬼

近日《网易首页>网易号》发表《周鸿祎突然咳嗽不停&#xff0c;三锥子扎不出血&#xff0c;网友怀疑是癌症》一文&#xff0c;引发网络热议不断。有网友发布一张周鸿祎朋友圈的图片显示&#xff0c;周鸿祎因为“咳嗽不停”在治疗。 周鸿祎在朋友圈写到“咳嗽不停&#xff0…

数之寻软件怎么样?

数之寻软件是一款功能强大的数据恢复和备份软件&#xff0c;以下是对其特点和功能的详细评价&#xff1a; 一、数据恢复方面&#xff1a; 高效的数据恢复能力&#xff1a;数之寻软件采用了先进的算法和数据恢复技术&#xff0c;能够快速有效地恢复丢失或损坏的数据。无论是文…

stm32f103外设学习

RTC STM32F103C8T6基于HAL库制作RTC时钟_stm32f103c8t6 rtc-CSDN博客 【STM32】HAL库 STM32CubeMX教程十三---RTC时钟_基于stm32f407hal库的rtc实时时钟-CSDN博客 方案 有三个时钟&#xff0c;我们选择LSE时钟(前两个时钟是受VDD影响的&#xff0c;而且LSI不稳定有温漂) 有…

数字孪生智慧工厂

万界星空科技数字孪生可视化平台打造的智慧工厂运营管理系统&#xff0c;支持融合工业大数据、物联网、人工智能等各类信息技术&#xff0c;整合工厂现有信息系统的数据资源&#xff0c;通过数字孪生技术将真实的工厂还原。 设备运检可视化 提供统一的生产运检可视化管理平台&…

Windows命令行基本命令

目录 什么是相对路径和绝对路径&#xff1f; 一、目录&#xff08;文件夹&#xff09;和文件操作 1.cd命令 用于切换目录 2.dir命令 用于显示目录和文件列表 3.md或mkdir命令 创建文件&#xff0c;也可以创建多级子目录 4.rd命令 用于删除目录 5.move命令 用于移动…

外包干了16天,技术倒退明显

先说情况&#xff0c;大专毕业&#xff0c;18年通过校招进入湖南某软件公司&#xff0c;干了接近6年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落&#xff01; 而我已经在一个企业干了四年的功能…

HackMyVM-Slackware

目录 信息收集 arp-scan nmap nikto whatweb WEB web信息收集 gobuster wfuzz hydra ssh连接 提权 系统信息收集 get root 信息收集 arp-scan ┌──(root㉿0x00)-[~/HackMyVM] └─# arp-scan -l Interface: eth0, type: EN10MB, MAC: 08:00:27:9d:6d:7b, IPv4…