文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetASP.NET开发员工业绩评测中心
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
·ASP.NET网络编程中经常会用到的27个函数集
·ASP.NET之上传文件管理策略
·专家:用.NET动态创建类的实例讲解
·ASP.NET WEB服务和Flash打造MP3播放器
·精通ASP.NET中弹出窗口技术
·asp.net常用代码
·asp.net创建文件夹的IO类的问题
·Asp.Net函数集
·Asp.net cache 简述
·如何最大限度提高.NET的性能 (续)
热点TOP10
·DataTable控件的使用
·ASP.NET上传文件的实例
·ASP.NET2.0下含有DropDownList的GridView编辑、删除的完整例子!
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·ASP.NET购物车的实现及结算处理
·在ASP.NET中防止注入攻击[翻译]
·使用ASP.NET2.0的ReportViewer查看RDLC报表
·asp.net程序中最常用的三十三种编程代码
·ASP.NET 2.0的导航控件treeview和menu的实例
·asp.net常用代码
·在C#后代码里使用IE WEB Control TreeView
·Lucene.net 实现全文搜索
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·Access 通用数据访问类(asp.net 2.0 c#)
·.Net分页控件发布
·ASP.NET之上传文件管理策略
·AspNetPager分页控件--使用方法
·asp.net 2.0中gridview里嵌套dropdownlist
·ASP.net在线购物商城系统完全解析
·手把手教你在Win2003下配置ASP.NET开发环境

ASP.NET开发员工业绩评测中心

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


     摘要:本文介绍使用ASP.net开发一个软件公司内部员工业绩评测系统,包括后台所有员工信息管理,部门信息管理,所有部门评测细则信息管理;前台员工每月自我评测和主管对员工的评测.重点介绍数据库设计,以及重要Web服务端和页面控件的使用.笔者相信本文会对读者的数据库设计和使用ASP.NET开发页面技术有很好的启发和帮助。
    一、 系统体系结构
  
    Visual Studio .NET 是微软公司迄今为止推出的最强大的,完整的开发工具,用于生成 Asp Web 应用程序、XML Web Services、桌面应用程序和移动应用程序。Asp.net 是一个已编译的、基于.NET 的环境.。下面的图表给我们演示了Visual Studio.Net Framework是如何支持ASP.NET应用的。 

  图1: Visual Studio.Net
  
    Visual C#(发音为 C sharp)是一种新的面向对象的编程语言,它从 C 和 C++ 演变而来,为开发应用程序提供了一种简单和类型安全的语言。因此在编程环境及语言的选择中,我们使用了Asp.net构架来为页面开发提供支持,Visual C#来进行实际编程。我们的评测系统中采用的是传统的三层体系结构,包括数据存储层(SqlServer2000)、应用逻辑层(.aspx.cs),页面显示(.aspx)。
  
    二、 数据库设计
  
    数据库”ygpc”(员工评测)中共含有五个表,介绍如下:
  
    1. Employee,存放公司所有员工和主管基本信息。
  
    2. Department,所有部门基本信息.
  
    3. bigRules ,包括评测细则大的分类情况,比如”遵守制度”, “专业技能”,”计划与管理”,”工作成果”,”工作态度”等.
  
    4. smallRules, 包括每个细则分类对应的具体评测细则,例如细则分类”专业技能”中对应的”熟练使用设计工具(如Rational Rose或Visio等)”,” 熟练使用数据库或其相关的应用如SQL,OLAP等”,”熟悉公司的技术体系并能熟练地应用于开发当中”。
  
    5. score, 每月评测结果分数,分为员工自测和主管对员工评测,针对每条评测细则存放每个员工每月相应的分数.
  
    各个表主要字段和表间关系如下图所示:
  
  表名 主要字段 主键和外键
  employee employID,departID,leaderID,reallName, userName,usERPass, emal, telephone……. 主键: employID
  外键: departID
  department departID,LeaderID,dName,dDescription… 主键: departID
  smallRules smallID,bigID,departID simpleDiscription,fullDescription,score, 主键: smallID
  外键: bigID, departID
  bigRules bigID,content,totalScore 主键: bigID
  Score testPersonID, testedPersonID,smallID, score, month 主键: 无
  外键: smallID
  
    在大多数的软件公司中,部门分为研发,测试,客服等, 雇员分属若干部门;各个部门既有相同又有不同的评测标准。比如在笔者所在的开发超市软件的公司中,在遵守制度上各个部门需要相同的评测标准,例如:无迟到早退,有事向公司请假,无无故旷工等;同时各个部门又有不同的评测标准,比如在专业技能上,研发部门的员工需要掌握熟练的.Net开发Windows页面技术;而客服部门需要掌握熟练的数据库技术,随时为各个店铺查找商品销售情况,商品进销存情况等;在工作成果上,测试部门会有”测试漏测率”评测标准,而研发和客服部门就不需要。因此,在smallRules(评测细则)表中,不仅需要相应的bigRules(细则分类)中的bigID,使得”熟练使用开发两种以上工具”对应着”专业技能”分类,同时还要存储该细则所属的部门ID。
  
    另外,在Score表中,需要按照每月,每个评测人,每个被测人,每个评测细则分别存储相应的细则上的得分,这样无论是取自测成绩还是主管对自己的评测成绩都是十分方便的。其中所有ID,分数, 分值,月份等数值型数据为int型,描述型信息都为varchar型。

    三、 应用逻辑实现
  
     1、应用概述
  
     系统管理员,各个部门主管及员工从同样的登陆页面分别进入前后台系统。系统管理员完成后台员工信息管理,部门信息管理,各个部门评测标准信息管理等。前台用户包括各部门主管和普通员工。部门主管进入评测主页面后,可以选择本部门的任一员工,选择工作当月为其打分;普通员工只能给自己当月评测。员工在主管为自己本月工作情况评测前可多次修改自己以前的评测结果,一旦主管为自己评测过就无法修改了;主管只有在员工评测之后才能为其打分,主管可为员工多次评定。
  
     2、重要服务器和页面控件的使用
  
     我们使用了相当多的基本控件,比如Button,TextBox,HtmlSelect,DropDownList,隐藏控件等。由于篇幅有限,现只介绍其中起到关键作用的控件。
  
     (1) HtmlTable控件
   。
     
     前台评测主页面如下所示(源代码1): 

   该页面在实现中的逻辑并不复杂,我们以文字叙述如下:遍历bigRules表中每条评测分类,根据当前细则分类ID从smallRules取出对应的若干条评测细则,同时判断当前员工当月是否已经有过成绩,如果有,则取出,放入”黄色”方框中,便于参考。进入该页面后,还需要判断是”谁”在给”谁”评测,如果是主管或者员工的自测,则将评测结果存入数据库时
   testPersonID,testedPersonID都填入同一ID,否则testPersonID存放主管ID,testedPersonID存放被测人ID.
  
     该页面主要使用了HtmlTable控件。使用 HtmlTable控件对 HTML <table> 元素进行编程。在后台页面IDE设计环境中,该控件不含任何内容。在从数据库中取出数据后,我们可以体会到该控件的强大功能。HtmlTable控件由一个表Table的 Rows 集合中存储的行(由 HtmlTableRow 对象表示)组成。每行均由存储在行的 Cells 集合中的单元格(由 HtmlTableCell 对象表示)组成。在实际编程中,首先需要填充若干个HtmlTableCell内容,一次加入到HtmlTableRow对象中,再将该HtmlTableRow对象加入到HtmlTable对象中。
  
  
     (2) DataGrid
  
     .后台管理员维护评测标准主页面如下图所示: 

   DataGrid控件与HtmlTable控件不同在于DataGrid控件是Web服务器端控件。以html语言书写和以服务器端控件的实现在思维方式上已经有了很大的不同,对于html语言而言,只是一种标识;而对服务器端html控件而言,却已演变成为一段程序,一个对象。
  
     它不仅可以方便,快捷的完成数据库中数据的绑定显示,还可以在设计时生成包含“编辑”、“更新”、“取消”按钮的列、包含自定义按钮的列以及模板列。在后台管理页面中我们使用了该控件的编辑数据功能,点击每一小项的Edit按钮可以更新该项内容。点击Update 控件就可完成数据库内容的更新。
  
     另外,在其他情况下也可使用DataGrid控件,例如,评测结果页面如下所示:(源代码2) 

   从该控件在不同情况下的使用我们体会到该控件的强大功能。这也正是ASP.net编程构架给用户提供的切实利益。
    
     四、结束语
  
     笔者在一家开发超市软件的公司进行毕业设计时为公司开发了这个员工评测中心。尽管由于时间短促,未能做出功能更多,更丰富的页面,但是也确实体会到了ASP.NET的种种优势。同样在数据库的设计和使用上也积累了一定的经验,希望能对大家有一定的启迪。相信使用该技术同样可以为公司做出功能更加全面的办公自动化产品

     (以下源代码不排版)
  
    源代码编译环境:安装Visual Studio.net 7.0,SqlServer2000
  
    源代码1(前台评测主页面):
  
  //建立数据库连接,取出bigRules表数据放入ds中
  SqlConnection conn = new SqlConnection(“server=localhost;uid=sa;pwd=;database=ygpc”;
  SqlCommand comm. = new SqlCommand(“select * from bigRules”,conn);
  SqlDataAdapter da = new SqlDataAdapter(comm);
  DataSet ds;
  da.Fill(ds,”bigRules”);
  int nTotalBig = ds.Tables[“bigRules”].Rows.Count;
  int k = Convert.ToInt32(ds.Tables["bigRules"].Rows[0]["bigID"].ToString());
  
  for(int iBig=0;k<=Convert.ToInt32(ds.Tables["bigRules"].Rows[nTotalBig-1]["bigID"].ToString());k=Convert.ToInt32(ds.Tables["bigRules"].Rows[iBig]["ID"].ToString()))
  //iBig代表bigRules表中行值,k代表iBig行对应的ID值
  {
   string commText = "Select * from smallRules where bigID="+k+"order by id";
   SqlCommand commSmall = new SqlCommand(commText,conn);
   SqlDataAdapter daSmall = new SqlDataAdapter(commSmall);
   if(ds1!=null) ds1.Clear();
   ds1 = new DataSet();//每次循环都需要更新ds1中记录的细则数据
   daSmall.Fill(ds1,"smallRules");
   int nTotalRows = ds1.Tables["smallRules"].Rows.Count;
   int i=Convert.ToInt32(ds1.Tables["smallRules"].Rows[0]["ID"].ToString());
   string str = "select * from score where
    _testPersonID="+testID+"and testedPersonID="+testedID+"and month="+curMon+" and smallID="+i;
   //判断当前被测员工当月是否已有过成绩,即检查score表中是否有与testedID, testID,curMon相符
   //的记录,判断结果为true或false存入hidTested隐藏控件中,
   // 在显示”黄框”以往成绩时起到作用,略
   for(int z=0;i<=Convert.ToInt32(ds1.Tables["smallRules"]
    _.Rows[nTotalRows-1][“ID”].ToString());
   i=Convert.ToInt32(ds1.Tables[“smallRules”].Rows[z][“ID”].ToString()))
   //z代表smallRules中的行值,i代表z行的ID值,需要找出i值对应的score表的"成绩"值
   { 
    HtmlTableRow tr = new HtmlTableRow();
    array.SetValue(indexPageRow++,i);
    //array为静态数组,记录每个i值在页面上的对应行,
    // 因为各项评测smallRules经过后台不断的增,删,改,其ID值与页面上的行并不对应
    for(int j=0;j<ds1.Tables["smallRules"].Columns.Count;j++)
    {
     HtmlTableCell tc = new HtmlTableCell();
     if(j==0)//当前范围的零行零列
     {
      if(i == Convert.ToInt32(ds1.Tables["smallRules"].Rows[0]["ID"].ToString()))
      {
       //最左的细则分类列,注意从bigRules表中取数据
       tc.InnerHtml = s.Tables["bigRules"].Rows[iBig][j+1].ToString()+
              _ds.Tables["bigRules"].Rows[iBig]["totalScore"].ToString()+"分";
      }
      tr.Cells.Add(tc);
     }
     else //不是最左列
     {
      if(j!=ds1.Tables["smallRules"].Columns.Count-1)//判断是否最右列
      {
       tc.InnerHtml = ds1.Tables["smallRules"].Rows[z][j].ToString();
      }
      else
      {
       //最右的成绩分值列
      if(hidTested.Value==”true”)
      //最后一个cell列含两个textbox列,显示上次评测的成绩
      {
       TextBox box1= new TextBox();
       box1.Width = 30;
       //找出i值对应的score表中的成绩放入ds2
       box1.Text = ds2.Tables["score"].Rows[0]["score"].ToString();
       box1.ReadOnly = true;
       box1.BackColor = System.Drawing.Color.Beige;
       tc.Controls.Add(box1);
      }
      TextBox box = new TextBox();
      if(hidTested.Value == "false")
        box.Width = 60;
      else
        box.Width = 30;
        box.Attributes["onblur"]="JavaScript:OnChange("+ds1.Tables[
  "smallRules"].Rows[z][j-1].ToString()+",this)";
        //Javascript控制用户评测分数在该项分值之内,
        //ds1.Tables["smallRules"].Rows[z][j-1].ToString()
        //传给OnChange函数该项评测细则分值
      }
      tr.Cells.Add(tc);//将HtmlTableCell对象存入HtmlTableRow对象中
     }
    }
    t.Rows.Add(tr);//一行数据完成,加入到HtmlTable的Rows集合中
    z++;
   }//一个细则分类的所有评测细则完成
   iBig++;
  }//下一个细则分类,如由”遵守制度”到”专业技能”
  
    其中嵌入的javascript语句的OnChange()函数在html页面中head部分实现如下:
  
  <script language=”javascript”>
  function OnChange(maxValue,obj)
  {
   //maxValue为该项细则的分值,obj为该项得分,是object型
   parseInt(obj.value,10); parseInt(maxValue,10);
   if(!isNaN(obj.value)) //判断是否自然数
    if(obj.value>maxValue) //值超过范围
    {
     alert('值超过范围') obj.focus();}
    else {}
    else //值非法
    {
     alert('值非法') obj.focus();}
  </script>
  
    源代码2(评测结果页面,以一个DataGrid为例):
  
  DataTable table1 = ds.Tables.Add("score");//ds,ds1为两个DataSet型数据集
  table1.Columns.Add("smallID",typeof(int));//细则ID列
  table1.Columns.Add("realName", typeof(string));//测评人姓名
  table1.Columns.Add("score", typeof(int));//该项细则得分
  string commText = "select smallID,realName,score from score, employee where score.testPersonID="+testID+"and score.testedPersonID="+testedID+"and score.month="+curMon+"order by score.smallID";
  //其中testID,testedID为页面进入时从前一页面记录的测评人ID和被评人ID值
  SqlConnection conn = new SqlConnection(“server=localhost;uid=sa;pwd=;database=ygpc”;
  Conn.Open();
  SqlCommand comm= new SqlCommand(commText,conn);
  SqlDataReader reader = com1.ExecuteReader();
  int nColCount= table1.Columns.Count;
  while(reader.Read())
  {
   System.Data.DataRow row = table1.NewRow();
   for(int i=0;i<nColCount;i++)
   {
    row[i]=reader[i];
   }
   table1.Rows.Add(row);
  }
  DataGrid1.DataSource=ds.Tables["score"].DefaultView;
  DataGrid1.DataMember =ds.Tables["employee"].TableName;
  DataGrid1.DataBind();
  //使用DataSource和DataMember就能在一个DataGrid控件中显示来自两个表的信息

(出处:清风网络学院






上一篇:利用Repeater控件显示主-从关系数据表

下一篇:ASP.NET实现Cache浏览器的管理

ASP.NET开发员工业绩评测中心 相关文章:
·EZ-USB 68013A开发指南
·极速下载《色戒》 新版迅雷5全面评测
·Visual Studio 2005集成开发环境图解
·windows 2003服务器配置VPN实现各种网络环境VSS协同开发
·兵之利器 软件开发辅助工具纵览
·XPCOM--LINUX下的组件开发技术
·西门子的员工手册
·DirectX游戏开发入门
·华硕员工长篇记实:天堂向左,华硕往右
·谷歌 紫光 搜狗三款拼音输入法横向评测
ASP.NET开发员工业绩评测中心 相关软件:
·孙鑫VC++从入门到精通开发详解视频教程FLASH版
·中国少年儿童智力开发百科全书(上中下)高清PDF全彩图书
·评测耳机音质的7首经典MP3歌曲320KB 强烈推荐!
·嵌入式系统应用开发技术 wmv 视频教程
·新员工入职培训教材
·员工激励手册
·六天乐游戏中心V2.0.1.8
·在世界的中心呼唤爱
·asp.net服务器控件与组件开发
·PHP+MySQL网络开发技术

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot