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.mzph.cn/diannao/3948.shtml

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

相关文章

《2024年绿色发展报告》:算力与电力矛盾愈加突出!

2024年4月22日&#xff0c;第55个世界地球日&#xff0c;超聚变发布《2024年绿色发展报告》&#xff0c;向社会展示超聚变面对宏观形势变化、产业趋势变化&#xff0c;推进绿色发展、科技向绿的探索与实践成果。 2023年&#xff0c;算力产业发生了深刻变化。大模型带来AI算力需…

Git如何配合Github使用

1.安装Git https://git-scm.com/ ##2.配置 Git 安装完成后&#xff0c;你需要设置 Git 的用户名和邮箱地址&#xff0c;这样在提交代码时就能知道是谁提交的。你可以在命令行中输入以下命令来配置&#xff1a; git config --global user.name "Your Name" git con…

探索UTONMOS《神念无界-源起山海》元宇宙游戏的奇幻世界

在科技的前沿&#xff0c;元宇宙游戏如同一扇神秘的大门&#xff0c;缓缓开启&#xff0c;引领我们进入一个前所未有的奇幻世界。 UTONMOS《神念无界-源起山海》元宇宙游戏是数字世界的巅峰之作&#xff0c;它打破了现实与虚拟的界限&#xff0c;让玩家能够身临其境地体验各种奇…

U盘格式转换GPT格式转回DOS

当前格式 fdisk /dev/sdb# 在 fdisk 提示符下&#xff0c;输入以下命令删除分区&#xff1a; d # 选择要删除的分区编号&#xff08;如 1、2 等&#xff09; w开始转换 [rootnode-24 ~]# fdisk /dev/sdbWelcome to fdisk (util-linux 2.37.4). Changes will remain in memory o…

[笔试训练](八)

目录 022&#xff1a;求最小公倍数 023&#xff1a;数组中的最长连续子序列 024&#xff1a;字母收集 022&#xff1a;求最小公倍数 求最小公倍数_牛客题霸_牛客网 (nowcoder.com) 题目&#xff1a; 题解&#xff1a; 求最小公倍数公式&#xff1a;lcm(a,b)a*b/gcd(a,b)&am…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject&#xff1a;build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…

星尘智能 AI 机器人 S1——国产机器人的巅峰之作

AI智能机器人真的太炸裂了 国产科技威武-CSDN直播AI智能机器人真的太炸裂了 国产科技威武https://live.csdn.net/v/382519 最近发现了一个国产的机器人&#xff0c;真的让人惊叹不已&#xff01;它就是星尘智能 AI 机器人 S1&#xff01; 这个机器人简直太牛逼了&#xff01;…

elaticsearch windows安装

es下载地址 https://www.elastic.co/cn/downloads/elasticsearch https://www.elastic.co/cn/downloads/past-releases#elasticsearch 在这里插入图片描述 下载直接解压&#xff0c;解压后目录 双击bin目录下的elasticsearch.bat开启服务 注意&#xff1a;9300 端口为 Elas…

03 spring-boot+mybatis+jsp 的增删改查的入门级项目

前言 主要是来自于 朋友的需求 项目概况 就是一个 用户信息的增删改查然后 具体到业务这边 使用 mybatis xml 来配置的增删改查 后端这边 springboot mybatis mysql fastjson 的一个基础的增删改查的学习项目, 简单容易上手 前端这边 jsp 的 基础的试题的增删改查 学习项…

Android使用AlertDialog实现弹出菜单

最近又开始捣鼓APP&#xff0c;许多api , class都忘记怎么用了&#xff0c;楼下使用AlertDialog实现个弹出菜单&#xff0c;结果直接crash&#xff0c;查了半天&#xff0c;终于即将&#xff0c;记录一下…… 1 实现代码 AlertDialog.Builder mBuilder new AlertDialog.Builde…

MySQL B+索引的工作原理及应用

引言 在数据库系统中&#xff0c;索引是优化查询、提高性能的关键技术之一。特别是在MySQL数据库中&#xff0c;B树索引作为最常用的索引类型&#xff0c;对数据库性能有着至关重要的影响。本文旨简单解析MySQL中B树索引的工作原理&#xff0c;帮助学生朋友们更好地理解和利用…

微信小程序实时日志使用,setFilterMsg用法

实时日志 背景 为帮助小程序开发者快捷地排查小程序漏洞、定位问题&#xff0c;我们推出了实时日志功能。开发者可通过提供的接口打印日志&#xff0c;日志汇聚并实时上报到小程序后台。开发者可从We分析“性能质量->实时日志->小程序日志”进入小程序端日志查询页面&am…

嵌入式学习Day18

一、输入两个数&#xff0c;实现排序 代码&#xff1a; #!/bin/bashread -p "please enter n m:" n m if [ $n -gt $m ] thentemp$nn$mm$temp fi echo $n $m运行结果 二、输入一个数判断是否水仙花数 代码&#xff1a; echo narcissistic number read -p "p…

Hive——DDL(Data Definition Language)数据定义语句用法详解

1.数据库操作 1.1创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)];IF NOT EXISTS&#xff1a;可选参数&#xff0c;表示如果数据库已经存在&#xff0c…

【Ant-Desgin 头像上传框】限制数量为1张图片,base64,其他需求可以改我组件中的代码

Ant-Desgin 头像上传框 样式图参数主要代码UpLoad 组件父组件 样式图 图片数量限制为1&#xff0c;当选择了图片后&#xff0c;需要切换图像时需点击头像完成切换 参数 /*** description: 图片上传组件* param {*} action: 上传地址* param {*} width: 宽度* param {*} height…

三级等保建设及测评技术方案书(Word原件2024)

1信息系统详细设计方案 1.1安全建设需求分析 1.1.1网络结构安全 1.1.2边界安全风险与需求分析 1.1.3运维风险需求分析 1.1.4关键服务器管理风险分析 1.1.5关键服务器用户操作管理风险分析 1.1.6数据库敏感数据运维风险分析 1.1.7“人机”运维操作行为风险综合分析 1.2…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(四)

课程地址&#xff1a; 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程&#xff0c;一套精通鸿蒙应用开发 &#xff08;本篇笔记对应课程第 7 - 9节&#xff09; P7《06.ArkUI组件-Text》 本节我们继续学习 Text 文本组件&#xff1a; reaources目录下有3个主要的目录&…

Java使用SpringBoot和EasyExcel 实现动态数据导出实战

Java使用SpringBoot和EasyExcel 实现动态数据导出实战 1、前言2、【资源地址】3、代码示例(demo)4、目前Java实现数据导出为Excel方式5、依赖6、总结 1、前言 工作中有用到将数据导出为Excel的场景&#xff0c;在此记录下。在日常开发中&#xff0c;Excel文件处理是一项常见的…

JSON六种值类型的写法

JSON&#xff08;JavaScript Object Notation&#xff09;是一种人类可读的文本数据格式。它源于JavaScript&#xff0c;标准开放&#xff0c;格式要求更为严格&#xff0c;独立于具体编程语言&#xff0c;常用于数据交换。 列举一段JSON数据&#xff0c;解释JSON六种值类型的…

C基础语法速览

叠甲&#xff1a;以下文章主要是依靠我的实际编码学习中总结出来的经验之谈&#xff0c;求逻辑自洽&#xff0c;不能百分百保证正确&#xff0c;有错误、未定义、不合适的内容请尽情指出&#xff01; 文章目录 1.数据类型1.1.数据类型的常见分类1.2.数据类型的符号修饰1.3.数据…