4.1积分添加类具体实现 首先在FSPB_1250的构造函数中建立共同函数的读取类Iniconfig;如果共同函数取得成功没有发生异常的错误或者不为空,就建立数据库连接类SkyConnet; 以便程序中能方便调用;其中判断INI文件的存在十分重要,它是整个系统衔接的核心,如果INI文件的读取失败(1代表INI文件不存在;2代表INI文件不能打开;3代表INI文件内容为空,主键或者内容格式的错误),将不做任何的其他操作;直接结实程序; 内容来自www.paper51.com
paper51.com 如果读取失败需要输出失败原因,因为程序的所有数据库操作都封装在SkyConnect类中的,而SkyConnect类也需要INI文件的读取返回的参数地址等初期数据成功才可以;所以INI的报错必须自己手动建立数据库的连接才行,以下是发生错误3的情况下手动连接数据库的情况: 内容来自www.paper51.com
http://www.paper51.com
在INI文件读取成功的条件下进行本模块的具体操作: paper51.com 首先向FSPB_LOG表里面输入程序开始日志: http://www.paper51.com copyright paper51.com 检索奖励积分添加结果表数据FSPB_POINT_BONUS是否存在数据: 内容来自www.paper51.com 以处理日FSPB_SYORIBI的日期SHORI_YM为主键搜索奖励积分添加结果表数据表 内容来自www.paper51.com 内容来自论文无忧网 www.paper51.com 如果有适当的数据存在则向日志FSPB_LOG输入完成信息,表示当天的添加处理已经处理完成程序正常结束,否则进行积分点的添加,判断条件是以if (DataSet_FSPTB_POINT_BONUS.Tables[0].Rows.Count != 0)的方式,读取数据库的文件,判断是否有记录来区分的。 paper51.com 读入积分添加规则文件FSP_BONUS_RULE.CSV并把读出的信息(购买金额上限,购买金额下限,添加点数,奖励区分)信息分别写入临时的TXT文件new_FSP_BONUS_RULE.txt中,如果CSV文件中无信息则向日志文件FSPB_LOG中写如相应的出错信息,同时程序终止,此功能的实现由Read_FSP_BONUs_RULECSV()函数来实现的,代码如下: http://www.paper51.com
内容来自www.paper51.com http://www.paper51.com
内容来自论文无忧网 www.paper51.com
(CSV文件读取不成功,向FSPB_LOG文件中的输入的信息的代码未给出;) copyright paper51.com 根据条件(当前购买金额大于0和区分无效=0)搜索积分基本信息表FSPB_POINT,如果有匹配的记录则继续进行添加处理,没有就终止程序。读取的方式是foreach循环的,这也是本程序的难点,循环过程中的数据处理相当烦琐,不时需要查询相关的数据表,读入相关文件,保存临时信息到变量,比较判断循环条件;循环过程中再对每一条匹配记录处理(详细情况见后);判断的代码见下: paper51.com
paper51.com
每条记录的详细处理情况: 内容来自论文无忧网 www.paper51.com 1) 当前记录信息的保存: 内容来自www.paper51.com
内容来自www.paper51.com Now_BEFORE_TUKI_KAIAGE_M = Int32.Parse(New_Row["BEFORE_TUKI_KAIAGE_M"].ToString()); copyright paper51.com
Now_MEMBER_CODE = New_Row["MEMBER_CODE"].ToString(); http://www.paper51.com Now_YUTAI_RANK = New_Row["YUTAI_RANK"].ToString(); paper51.com 2) 奖励积分临时规则文件进行检索,对奖励积分添加对象数据进行判定: 内容来自www.paper51.com 内容来自论文无忧网 www.paper51.com ChechFrom_BONUS_RULETxt()函数主要实现:根据输入参数的信息,即当前购买金额,来循环判断一个txt文件的每行信息,该txt文件每行信息的每个数据用“,”分割开,通过逐行对比对应字节的字符串找到对应的数据后,返回该行字符串的一部分内容,并同时保存到新建立的两个txt文件中(Bonustable.txt和Pointtable.txt)供以后使用;此txt文件在本模块中是new_FSP_BONUS_RULE.txt临时文件;代码如下: copyright paper51.com
copyright paper51.com 内容来自论文无忧网 www.paper51.com ChechFrom_BONUS_RULETxt()函数中又使用到一个Make_path函数和一个String_To_Array的函数的调用,Make_path函数主要是生成新文件的字符串路径的作用(代码省),String_To_Array是式样将指定格式的字符串保存到分别保存到返回的一维数组的作用: 内容来自www.paper51.com 函数Sting_To_Array http://www.paper51.com 3) 会员状态基本信息表FSPB_STATUS信息追加: http://www.paper51.com 以会员基本信息表FSPB_MENBER的会员编号为主键,检索会员状态基本信息表FSPB_MENBER_STATUS,如果有匹配数据则对奖励积分添加结果表FSPB_POINT_BONUS进行追加,以及对积分基本信息表进行更新并且再根据条件(积分履历表FSPB_POINT_RIREKI中是否有与当前MENBER_CODE会员编号和SHORI_YM处理日为共同主键)判断,对积分日志更新FSPB_JNL和积分履历表FSPTB_POINT_RIREKI进行更新或者追加 : 内容来自www.paper51.com
内容来自论文无忧网 www.paper51.com
string Sql_FSPTB_MEMBER_STATUS = "SELECT * FROM FSPTB_MEMBER_STATUS WHERE MEMBER_CODE = " + "'" + Now_MEMBER_CODE + "'"; copyright paper51.com DataSet DataS_MS = skyConnect.GetDataSet(Sql_FSPTB_MEMBER_STATUS); 内容来自论文无忧网 www.paper51.com
if (DataS_MS.Tables[0].Rows.Count != 0) 内容来自论文无忧网 www.paper51.com {对奖励积分添加结果表FSPB_POINT_BONUS进行追加。。。。。。。 copyright paper51.com 对积分基本信息表FSPB_POINT进行更新。。。。。。。。。。 copyright paper51.com 条件判断(积分履历表中是否有与当前MENBER_CODE会员编号和SHORI_YM处理日为共同主键相匹配的记录)。。。。 paper51.com { copyright paper51.com 积分日志更新FSPB_JNL和积分履历表FSPTB_POINT_RIREKI进行更新或者追加 内容来自论文无忧网 www.paper51.com }} copyright paper51.com
|