人事系统总结——维护细节

来源:互联网 发布:不厌书法软件下载 编辑:程序博客网 时间:2024/04/30 11:06




  现实是善变的,用户的需求也在跟随发展在变化。人事系统经过艳玲、唐欢社河师哥,到我们这里已经是3.0版。此篇博文主要针对系统新需求以及实现思路进行概述。

新需求1——>数据由死到活 

 1)数据动态导入导出:

          原系统的不足之一在于没有后台动态导入考生信息的功能,以至于每次都需要进入数据库,手动导入考生信息。所以该系统3.0版,我们增加了后台管理员动态将数据入库的功能。第一反应出来的就是机房收费系统中导出excel的逆向工作——excel动态导入数据库。具体代码如下:

D:

public  class ImportDAL    {        /// <summary>        /// excel导入到数据库中        /// </summary>        /// <param name="dataTableName">创建的数据库的表名</param>        /// <param name="excelName">excel文件的路径</param>        /// <returns></returns>       public int Import(string dataTableName,string excelName)       {           string strSql = "procImport";           SqlParameter[] paras=new SqlParameter[]{new SqlParameter("@tableName",dataTableName), new SqlParameter("@excel",excelName)};           SqlHelper sqlhelper=new SqlHelper();           return sqlhelper.ExecuteNonQuery(strSql, CommandType.StoredProcedure,paras);       }

D层存储过程:

-- Create date: 2014年12月15号-- Description:存储过程:用来将excel表的数据导入到数据库中。-- =============================================ALTER PROCEDURE [dbo].[procImport] @tableName varchar(50), @excel varchar(300)  ASdeclare @strSQL varchar(300),        @str varchar(300),        @fieldsname varchar(200)BEGIN--添加新的表,存放excel中的数据set @str='openrowset(''MICROSOFT.ACE.OLEDB.12.0'',''Excel 5.0;HDR=YES;IMEX=1 DATABASE='+@excel+''',[sheet1$])' set @strSQL='select * into'+char(32)+@tableName+CHAR(32)+'from'+CHAR(32)+@strexec(@strSQL)--将该表名存入t_tableName表中insert into t_TableName(tableName) values (@tableName)--将新添加的表的字段名、表名、和state状态添加到t_FieldsNameinsert into t_FieldsName(fieldsName) Select Name from SysColumns Where id=Object_Id(''+@tableName+'')update t_FieldsName set tableName =@tableName where tableName is null update t_FieldsName set [state]='Y' where [state] is nullEND

B层:

 private readonly ImportDAL impDal = new ImportDAL();        public int import(string dataTableName, string excelName)        {            return impDal.Import(dataTableName, excelName);        }
U层:

        BackMrgBLL bmb = new BackMrgBLL();       //将文件名分离出来        string[] sArray = fileName.Split(new char[1] { '.' });                 //除了扩展名和“.”之外的完整文件名        string tableName = sArray[0];           int b = bmb.import(tableName, serverPath);        if (b != 0)        {         Response.Write(" <script language=javascript>alert('导入成功 ') </script>");        }

 2)前台字段动态显示:

       前台字段显示原系统是查的考生表里的所有信息,由于每次考试显示的信息都在变换,所以一股脑通通显示虽然省事,但是这样设计也存在不小的问题。要是下一年考试显示字段有变,而数据库里又没有该字段,那么又得动数据库,不断增加字段,导致很多信息为空或者根本无需显示但依旧执着的给显示出来了。

      应对这个问题,我们实现了根据考生不同考试,动态配置前台考生显示信息。实现该功能的难点在于考试是在变的,数据库里的字段也是在变的。经过思索,我的思路是:在考生登录时,判断该考生的考试类型,传入exam参数,根据该参数后台显示该考试下所有字段,利用checkbox进行勾选,判断前台显示字段。最后经过协商,决定在考生登录界面出来一个下拉框,让学生自己选择考试类型。这样做的优点在于:当该学生在同一时段内有多门考试时,动态选择,动态控制前台字段显示。弊端在于:大多数情况之下,每个学生只有一门考试,让用户一步选择操作,未免显得画蛇添足。但多门考试的需求是合理的。同时.net云平台中的考试系统也存在相同的需求,组长建议动态增删改均需实现。

新需求2——>考试时效性控制

    根据用户历年考试使用系统的规律,添加控制系统失效性的需求。每年相应时间内——>考哪几场试——>固定显示字段——>控制查询时间——过时动态更新

新需求3——>界面调整

    因为有机会跟用户面对面的交流,刚开始拿到系统只知道是某单位一招聘便用该系统,让考生用来查询成绩。做的时候也全屏师姐的指导和描述进行。但通过跟用户的接触,了解其工作背景,使用该系统的大环境,对用户需要一个什么效果的系统更加清晰。所以在界面上决定奔着方便用户的需要进行调整。

体会:

    系统维护一开始上手是一个比较漫长且磨练人的工作。读别人写的代码,看着注释,理清他做系统时是什么思路。要的不仅是维护人员看代码理解能力和清晰的大脑,还需要一颗比较耐得住折磨的强大心脏。维护工作的不易,也让我思考设计编码时,就要大胆的发挥想象,把握这么一个让你思维自由的机会去编程,同时注意写好关键代码注释。

 

 

 

0 0
原创粉丝点击