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

news2025/2/25 20:57:42

摘  要

信息管理系统就是我们常说的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.coloradmin.cn/o/1627426.html

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

相关文章

untiy avpro播放超过8K视频的解决方案

安转LAV Filters解码器&#xff0c;然后指定Avpro使用这个解码器播放即可 第一步 安装解码器 下载链接 第二步 AVPro设置 MediaPlayer脚本中一共两处

计算完美数

一、概要 完全数&#xff08;Perfect number&#xff09;&#xff0c;又称完美数或完备数&#xff0c;是一些特殊的自然数。 它所有的真因子&#xff08;即除了自身以外的约数&#xff09;的和&#xff08;即因子函数&#xff09;&#xff0c;恰好等于它本身。 例如&#xf…

排序算法-计数排序

一、计数排序 这种排序算法 是利用数组下标来确定元素的正确位置的。 如果数组中有20个随机整数&#xff0c;取值范围为0~10&#xff0c;要求用最快的速度把这20个整数从小到大进行排序。 很大的情况下&#xff0c;它的性能甚至快过那些时间复杂度为O(nlogn&#xff09;的排序。…

API和微服务设计的优化方式有哪些?

在构建响应迅速、用户体验良好的应用程序中&#xff0c;API性能的优化至关重要。在构建高性能的API时&#xff0c;采取综合策略是至关重要的。通过采用一系列策略&#xff0c;我们可以确保API在处理请求时高效运行&#xff0c;提供流畅的服务。 一、API和微服务设计的优化可以…

Linux系统安全及应用(1)

目录 一.账号安全控制 系统账号清理 二.密码安全控制 密码安全控制 三.命令历史限制 命令历史限制 四.限制su切换用户 1&#xff09;将信任的用户加入到wheel组中 2&#xff09;修改su的PAM认证配置文件 ​编辑五.PAM认证的构成 六.使用sudo机制提升权限…

机器人系统ros2-开发实践03-监听节点的参数变化(C++)

背景&#xff1a; 通常&#xff0c;节点需要响应其自身参数或另一个节点参数的更改。 ParameterEventHandler 类可以轻松侦听参数更改&#xff0c;以便您的代码可以响应它们。本教程将向您展示如何使用 ParameterEventHandler 类的 C 版本来监视节点自身参数的更改以及另一个节…

深入了解Semaphore、CountDownLatch等实用工具的用法

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

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…

【智能算法】囊状虫群算法(TSA)原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2020年&#xff0c;S Kaur等人受到囊状虫群自然行为启发&#xff0c;提出了囊状虫群算法&#xff08;Tunicate Swarm Algorithm, TSA&#xff09;。 2.算法原理 2.1算法思想 TSA模拟了囊状虫群在导…

2分钟自己写小游戏:使用js和css编写石头剪刀布小游戏、扫雷小游戏、五子棋小游戏。新手老手毕业论文都能用。

系列文章目录 【复制就能用1】2分钟玩转轮播图,unslider的详细用法 【复制就能用2】css实现转动的大风车&#xff0c;效果很不错。 【复制就能用3】2分钟自己写小游戏&#xff1a;剪刀石头布小游戏、扫雷游戏、五子棋小游戏 【复制就能用4】2024最新智慧医疗智慧医院大数据…

【介绍下OneFlow概念清单】

&#x1f308;个人主页: 程序员不想敲代码啊 &#x1f3c6;CSDN优质创作者&#xff0c;CSDN实力新星&#xff0c;CSDN博客专家 &#x1f44d;点赞⭐评论⭐收藏 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共…

61、回溯-分割回文串

思路&#xff1a; 还是全排列的思路&#xff0c;列出每一种组合&#xff0c;然后验证是否是回文&#xff0c;如果是子串放入path中&#xff0c;在验证其他元素是否也是回文。代码如下&#xff1a; class Solution {// 主方法&#xff0c;用于接收一个字符串s并返回所有可能的…

【GO】命令行解析 os 与 flag

目录 OS解析命令 简单用法 进阶用法 flag命令解析 基础实例 1. 自定义数据类型 2. 创建多个 FlagSet 3. 整合环境变量和配置文件 os与flag 关键点解析 程序的作用 示例命令行调用 在 Go 语言中&#xff0c;命令行解析是一项基本且常用的功能&#xff0c;它允许开发者…

玄子Share-Shell编程之条件语句

玄子Share-Shell编程之条件语句 条件测试操作 test命令 测试表达式是否成立&#xff0c;若成立返回0&#xff0c;否则返回其他数值 格式1&#xff1a;test 条件表达式 格式2&#xff1a;[ 条件表达式 ] # 至少应有一个空格文件测试 [ 操作符 文件或目录 ][rootlocal…

[Algorithm][模拟][替换所有问号][提莫攻击][N字形变换][外观数列][数青蛙] + 模拟原理详细讲解

目录 0.原理讲解1.替换所有的问号1.题目链接2.代码实现 2.提莫攻击1.题目链接2.算法原理详解3.代码实现 3.N 字形变换1.题目链接2.算法原理详解3.代码实现 4.外观数列1.题目链接2.算法原理详解3.代码实现 5.数青蛙1.题目链接2.算法原理详解3.代码实现 0.原理讲解 模拟&#xf…

实现SpringMVC底层机制(一)

文章目录 1.环境配置1.创建maven项目2.创建文件目录3.导入jar包 2.开发核心控制器文件目录1.流程图2.编写核心控制器SunDispatcherServlet.java3.类路径下编写spring配置文件sunspringmvc.xml4.配置中央控制器web.xml5.配置tomcat&#xff0c;完成测试1.配置发布方式2.配置热加…

Vue入门篇:生命周期,钩子函数,工程化开发Vue(脚手架安装),组件化开发(全局注册,局部注册)

目录 1.Vue生命周期和生命周期的四个阶段2.Vue生命周期函数&#xff08;钩子函数)3.工程化开发&脚手架Vue CLI1.在powershell管理员权限下打开命令行安装脚手架&#xff1a;2.查看vue版本&#xff1a;3.创建项目架子4.运行项目 4.组件化开发&根组件1.App.vue文件&#…

JavaSE字节缓冲流

欢迎来到 请回答1024 的博客 &#x1f353;&#x1f353;&#x1f353;欢迎来到 请回答1024的博客 关于博主&#xff1a; 我是 请回答1024&#xff0c;一个追求数学与计算的边界、时间与空间的平衡&#xff0c;0与1的延伸的后端开发者。 博客特色&#xff1a; 在我的博客中&a…

解决minIO 文件上传回显报 403 问题

一、问题描述&#xff1a; minIO 上传文件回显时 提示 403 Forbidden 二、问题原因&#xff1a; minIO 中文件相对应的 buckets 权限问题造成 三、解决办法&#xff1a; 进入 minIO 控制台&#xff0c;将 buckets 中 access Policy 改为 public

监听器模式(三)

一、介绍 监听器模式是一种软件设计模式&#xff0c;在对象的状态发生改变时&#xff0c;允许依赖它的其他对象获得通知。在Java中&#xff0c;可以使用接口和回调机制来实现监听器模式。 二、代码实例 1、事件Event类 package com.xu.demo.listener;// 事件类 public class…