




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、某美容院积分(jfn)管理系统的设计摘 要计算机诞生以来,对数据的管理一直(yzh)是计算机应用中最为重要的环节,数据库管理系统便是这一环节中坚力量。在.NET平台推出以后,由于(yuy)其通用语言基础结构和规范性,让不同语言开发的程序员们都能得心应手地在.NET平台下进行高效的程序开发,ADO.NET框架对数据库管理系统的访问控制是相当的灵活和方便,减少了程序员们操作数据库底层代码,让程序员的精力完全集中到逻辑代码开发之中。因此,采用.NET平台开发管理信息系统是一个明智的选择。某店积分更新记录管理前台采用.NET,后台采用SQL 2000,语言使用C#。实现的系统功能是对用户消费和追加的积
2、分进行更新,并对积分变化进行记录。程序模块读取临时积分表,通过返回临时积分表的数据对积分表,用户状态表,积分奖励记录表进行更新,并对积分累积记录表进行更新,系统着重于对更新失败和程序异常时进行处理。关键词:计算机应用;数据库管理系统;积分更新记录;.NET平台;ADO.NET;C#;SQL2000 The Shops Integral Update Record Management AbstractData management is always the most important link of the computers application, since the inventio
3、n of the computer, and the database management system is a very important in this link. After the .NET was launched, for its common language structure and standard, programmers of all languages carry on the procedure high effectively under the .NET platform. The structure of ADO.NET give a flexible
4、and suitable manage to the access control of database management system, this reduce the chance of operating lower layer code, and make programmer pay more attention to logical code development. Therefore it is wise to choice the .NET platform to development management information.NET is used as ons
5、tage,SQL 2000 is used as backstage and C# is used as developing language in the Integral to update records management. The function of system is to update the integral of consuming and producing, and carries on the record of the integral changing information. When the program module read the tempora
6、ry integral table, it updated the integral table, the user condition table, the integral reward data sheet through returns the data of temporary integral table. This system pay more attention to dealing with update failure and procedure exceptionally when carried on processing.Key words: Computer Ap
7、plications; Database management system; Integral Update Record; .NET platform; ADO.NET; C#; SQL2000 目 录论文(lnwn)总页数:33页 TOC o 1-3 h z u HYPERLINK l _Toc169405371 1 引 言 PAGEREF _Toc169405371 h 2 HYPERLINK l _Toc169405372 2 模块(m kui)需求分析 PAGEREF _Toc169405372 h 2 HYPERLINK l _Toc169405373 2.1 模块(m kui)
8、功能需求 PAGEREF _Toc169405373 h 2 HYPERLINK l _Toc169405374 2.2 客户对模块性能要求 PAGEREF _Toc169405374 h 2 HYPERLINK l _Toc169405375 2.3 模块开发需求 PAGEREF _Toc169405375 h 2 HYPERLINK l _Toc169405376 3 系统开发设计分析 PAGEREF _Toc169405376 h 2 HYPERLINK l _Toc169405377 3.1 系统设计模式 PAGEREF _Toc169405377 h 2 HYPERLINK l _T
9、oc169405378 3.2 模块功能分析 PAGEREF _Toc169405378 h 2 HYPERLINK l _Toc169405379 3.2.1 积分表的更新 PAGEREF _Toc169405379 h 2 HYPERLINK l _Toc169405380 3.2.2 新入会员积分表的更新 PAGEREF _Toc169405380 h 2 HYPERLINK l _Toc169405381 3.2.3 老用户卡片遗失情况下的更新 PAGEREF _Toc169405381 h 2 HYPERLINK l _Toc169405382 3.2.4 当日积分变化进行记录 PA
10、GEREF _Toc169405382 h 2 HYPERLINK l _Toc169405383 3.3 程序流程及分析 PAGEREF _Toc169405383 h 2 HYPERLINK l _Toc169405384 3.4 模块的详细设计 PAGEREF _Toc169405384 h 2 HYPERLINK l _Toc169405385 3.4.1 模块主要对象的定义 PAGEREF _Toc169405385 h 2 HYPERLINK l _Toc169405386 3.4.2 数据库结构设计 PAGEREF _Toc169405386 h 2 HYPERLINK l _T
11、oc169405387 4 模块的实现过程分析 PAGEREF _Toc169405387 h 2 HYPERLINK l _Toc169405388 4.1 积分更新类具体实现 PAGEREF _Toc169405388 h 2 HYPERLINK l _Toc169405389 4.2 积分累计记录类具体实现 PAGEREF _Toc169405389 h 2 HYPERLINK l _Toc169405390 5 系统运行结果 PAGEREF _Toc169405390 h 2 HYPERLINK l _Toc169405391 5.1 积分更新类测试结果 PAGEREF _Toc169
12、405391 h 2 HYPERLINK l _Toc169405392 5.2 积分累计记录更新类测试结果 PAGEREF _Toc169405392 h 2 HYPERLINK l _Toc169405393 结论 PAGEREF _Toc169405393 h 2 HYPERLINK l _Toc169405394 参考文献 PAGEREF _Toc169405394 h 2 HYPERLINK l _Toc169405395 附录 PAGEREF _Toc169405395 h 2 HYPERLINK l _Toc169405396 致谢 PAGEREF _Toc169405396 h
13、 2 HYPERLINK l _Toc169405397 声明 PAGEREF _Toc169405397 h 21引 言随着(su zhe).NET平台(pngti)的推出,其强大(qingd)的功能和多语种的支持无疑给程序员们提供了一个更为广大的开发平台,其即时编译能力在执行效率上毫不逊于当今其它流行编程平台,通用语言规范使得不同语言定义的类能够相互引用,大大地增加了代码的重用性,使得软件开发速度得到质的提高。其中C#综合了JAVA,C+,VB等语言的优点成为Microsoft新一代开发平台下的生力军,在此平台下开发的各种管理应用系统纷纷出现,百货店当然也少不了它。以前消费者都是通过现金交
14、易来购买商品,消费者无意要带大量的现金在身上,这样做既不方便也不安全,为了让消费者消费不再单单依赖于现金进行交易,以及为消费者提供优惠的政策,相应地需要一套积分系统对消费者积分进行必要的管理,从而不但可以方便消费者的购物还能提高购物的趣味性,并通过奖励积分方法激起消费者在百货店的购物兴趣。系统模块主要负责对消费者当日消费和追加的积分进行更新和累计记录管理,对消费者遗失卡片的情况,卡号进行更改并对原有积分进行保留,最大程度上保护消费者的利益。2模块需求分析2.1模块功能需求模块对用户当日消费或者追加的积分进行更新,这种更新不是即时更新,而是在指定的时间间隔后对积分信息进行更新。同时要对新增加的会
15、员信息进行初始化,并添加新会员信息,对老会员遗失积分卡情况进行卡号的再发行,参照原卡信息对再发行的积分卡信息进行更新。所有积分累积变化都应有所记录,模块程序的启动以及结束都要输出日志记录使得程序执行与否有据可查,对于程序的意想不到异常终止也应该输出到日志记录中,从而便于管理者查出异常原因,并即时采取措施。2.2客户对模块性能要求实现模块所有功能模块重用性强模块稳定性和容错能力强模块能稳定运行模块能即时响应2.3模块开发需求积分管理系统是对日软件外包的一个实际项目,系统所有的工作都要求在日文操作系统下进行,客户要求选用.NET作为开发所用平台,为了使系统达到最好性能,所以开发所用的一套工具都使用
16、Microsoft公司的开发产品,C#其融合JAVA ,C+,VB等语言的优点是我们选择它作为开发语言的原因之一。以下列出模块开发基本需求:1.硬件(yn jin)需求:微型(wixng)计算机一台2.操作系统(co zu x tn):Windows 2000(日文)3.开发语言:C#.NET4.数据库:Microsoft SQL Server 20005.其他软件需求:Visual Studio2003集成开发环境 3系统开发设计分析3.1系统设计模式根据用户对模块功能需求描述,初步设计5张数据表:临时积分表:用于记录用户当日和前日为更新到积分表中的数据,主要有当日积分,前日积分,更新区分等
17、字段,系统会定时将当日积分累加到前日积分,最后积分更新时才会写入用户积分表。积分表:记录用户积分信息,主要有消耗积分,追加积分,奖励积分,累积积分等字段。用户状态表:记录用户优先等级,入会店铺等信息。奖励积分表:记录用户得到的奖励积分以及奖励理由。积分历史记录表:记录用户当日积分变化,主要有当日消耗积分,当日追加积分,现有积分,当日奖励积分等字段。模块通过读取临时积分表分别对其它四张表进行更新或者添加操作。遵照临时表对其它表进行操作的模式,进行模块设计。3.2模块功能分析3.2.1积分表的更新对当日用户积分进行时间段更新,因为不是即时更新,记录积分表可见有两张,一张是应该用来记录当日时间段用户
18、积分变化的临时积分表,另一张表则是用户的积分表,积分表的更新应该按照临时积分表的数据进行更新。3.2.2新入会员积分表的更新对于新入会员则起先应在临时表中记录,当积分表进行更新的时候,才将其添加入积分表中,并对新会员入会信息进行记录,则必需要会员表。3.2.3老用户卡片遗失情况下的更新还有种情况便是用户卡片丢失的情况,需要对卡片进行再发行,要将原来用户所有信息移植到新卡片中,由此应在临时积分表中设计一个用于区分更新的字段来识别用户积分表更新情况,还有就是再发行的时候会员的以前的ID就不能再用了,系统还设计到了一个奖励积分表,应该把奖励积分表的ID更新成新卡的ID号。3.2.4当日(dngr)积
19、分(jfn)变化(binhu)进行记录最后还应对用户当日积分变化进行记录,则相应需要一张积分记录表,根据临时表进行更新。3.3程序流程及分析模块程序流程如图1:程序类临时积分表积分表奖励积分表会员表积分累积表图1模块处理流程图该流程说明(详细流程图见附录):1.依次读取临时积分表里的记录,对每一条记录根据其更新区分字段进行相应处理。2.用临时表读出的记录的会员ID字段对会员表进行读取,如无记录则对会员表进行添加。3.临时表读出的记录的更新区分不属于卡片再发行的时候,对积分表进行更新或者添加。4.临时表读出的记录的更新区分属于卡片再发行的时候,对积分表进行更新或者添加,并对奖励积分表会员ID进行
20、更新。5.临时表读出的记录对当日积分历史记录表进行更新或者添加。3.4 模块(m kui)的详细设计3.4.1模块主要(zhyo)对象的定义3.4.2数据库结构设计数据库技术在计算机软件邻域研究中一直是非常(fichng)重要的主题,在积分管理系统中,数据库的结构设计占非常重要的地位,设计好坏与数据库中数据的读取起很大影响作用。而且应该以数据的统计算法相结合,以数据的读取统计方便为目的。在积分更新和积分累计记录模块中,相应的数据库表结构如下:表4 临时积分数据表字段名称数据类型长度是否为空字段说明备注MEMBER_CODEchar13否会员编号OLD_MEMBER_CODEchar13是旧会员
21、编号用于卡片再发行YUTAI_RANKchar2是优待等级YDAY_POINTnumeric8是前日所有积分前日为止所有积分NOW_POINTnumeric8是当前积分当前为止所有积分YDAY_TUKI_KAIAGE_Mnumeric10是前月购买金额前月为止所有积分TUKI_KAIAGE_Mnumeric10是当月购买金额OUT_POINTnumeric6是当日消耗积分OUT_KAIAGE_Mnumeric10是当日减算金额OUT_RIYU_CODEchar2是减算原因ADD_POINTnumeric6是当日添加积分ADD_KAIAGE_Mnumeric10是当日添加金额ADD_RIYU_C
22、ODEchar2是添加原因UPD_KBNchar1是更新区分1注册2修改3删除4卡片再发行DATA_KBNchar1是发生地区分0分店1总店UPD_YMDHMSchar20是更新日期YYYYMMDDHHMMSSUPD_TANTOUchar6是更新担当者之所以要建立临时表是因为模块更新是定时更新而不是即时更新,临时表的主要作用是记录当日和前日用户数据的,这些数据都还没来得及更新到积分表中去,而临时表自己也会定时地将当日积分累加到前日积分中去,即字段NOW_POINT值累加到YDAY_POINT字段中去,ADD_POINT也会定时地向NOW_POINT进行累加,在临时表中会员有两个ID,一个是旧I
23、D,一个是新ID他的作用在于如果会员卡片丢失了就需要对会员注册一个新ID以供用户使用,其中UPD_KBN字段是比较重要的字段,它是用来进行更新区分的,即会员到底是第一次注册,还是会员要求注销自己的帐号,还是由于卡片丢失需要重新办理卡片等。表5 会员(huyun)状态表字段名称数据类型长度是否为空字段说明备注MEMBER_CODEchar13否会员编号OLD_MEMBER_CODEchar13是旧会员编号DOMINANT_CODEchar3是会员等级编号TENPO_CODEchar6是店铺编号OLD_DOMINANT_CODEchar3是会员旧等级编号OLD_TENPO_CODEchar6是旧店
24、铺编号UPD_KBNchar1是更新区分MSTS_AUTO_IDint15否自动编号会员状态表主要(zhyo)是用于记录会员的一些入会信息,在临时表中的会员是否是第一次注册,如果是第一次的话就需要对其信息进行添加到会员状态表中去,不是的话就不需要添加。表6 用户(yngh)积分表字段名称数据类型长度是否为空字段说明备注MEMBER_CODEchar13否会员编号OLD_MEMBER_CODEchar13是旧会员编号YUTAI_RANKchar2是优待等级NOW_POINTnumeric8是当前积分RUIKEI_POINTnumeric8是累积积分OUT_RUIKEI_POINTnumeric8
25、是消耗累计积分ADD_RUIKEI_POINTnumeric8是追加累计积分KIHON_RUIKEI_POINTnumeric8是基本累积积分BONUS_RUIKEI_POINTnumeric8是奖励累积积分KAIAGE_Rchar8是最后消费时间YYYYMMDDTUKI_KAIAGE_Mnumeric10是当月购买金额BEFORE_TUKI_KAIAGE_Mnumeric10是前月购买金额KAIAGE_Fnumeric5是购买次数KAIAGE_Mnumeric10是购买金额MEMBER_WARIBIKI_Mnumeric10是会员打折累积金额KOUNYU_Mnumeric10是买进累积金额M
26、UKOU_KBNchar1是无效区分0有效1无效ADD_YMDHMSchar20是注册时间YYYYMMDDHHMMSSADD_TANTOUchar6是注册担当者UPD_YMDHMSchar20是更新时间YYYYMMDDHHMMSSUPD_TANTOUchar6是更新担当者SYSTEM_UPD_YMDHMSchar20是系统更新时间YYYYMMDDHHMMSS积分(jfn)表则是记录从会员注册之日起到现在,会员积分总的变化,如会员总的消耗积分,总的追加积分,总的奖励积分,最后(zuhu)一次消费时间,打折了好多金额,消费的次数等能反应(fnyng)出会员是否是一个老客户还是不怎么经常光顾的新客户
27、。表7 奖励积分表字段名称数据类型长度是否为空字段说明备注SHORI_YMchar6否处理月份YYYYMMMEMBER_CODEchar13否会员编号TUKI_KAIAGE_Mnumeric10是当月购买金额BONUS_POINTnumeric8是奖励积分BONUS_KUBNnumeric4是奖励区分SYSTEM_UPD_YMDHMSchar14是系统更新时间YYYYMMDDHHMMSS奖励积分表用来记录用户受到奖励的积分数,以及为什么受到奖励,让管理者有据可查。表8 当日积分历史记录表字段名称数据类型长度是否为空字段说明备注MEMBER_CODEchar13否会员编号YMDchar8否日期Y
28、YYYMMDDYUTAI_RANKchar2是优待等级KIHON_POINTnumeric6是当前基本积分BONUS_POINTnumeric6是奖励积分ADD_POINTnumeric6是添加积分OUT_POINTnumeric6是消耗积分NOW_POINTnumeric8是当日积分UPD_YMDHMSchar14是更新日期YYYYMMDDHHMMSSUPD_TANTOUchar6是更新担当者当日积分历史记录(jl)表则是用于记录用户当日记录变化的,其主键是MEMBER_CODE和YMD联合起来的主键,可见(kjin)每当依照临时表对其它表进行更新时,临时表中每条用户的数据(shj)都会备份
29、到当日积分历史记录表中来。模块程序处理过程都是参照临时积分表对其它5个表进行数据库更新,添加删除等工作,程序开始以及结束都要输出相应的日志,但发生异常现象时应输出错误日志到数据库的LOG中去。读取临时表时应该注意每次读取记录条数,以免数据量过大引起服务器系统崩溃。4模块的实现过程分析4.1积分更新类具体实现先在FSPB1210类构造函数里创建数据库连接类和共通文件类:public FSPB1210()/共通情報取得(INI) INI=new IniConfig();if(INI.ErrorString!=1&INI.ErrorString!=2&INI.ErrorString!=3)skyCo
30、nnect1=new SkyConnect();/因为SkyConnect类中会使用到IniConfig类进行INI共同文件的读取,所以要先判断INI文件是否存在,以及文件能否打开和正确读取INI中的字段项,这样才能保证SkyConnect类正常运行。程序首先要读取INI共同文件,如果读取失败需要输出失败原因,并结束程序,因为程序的所有数据库操作都封装在SkyConnect类中的,而SkyConnect类也需要INI文件的读取,固输出错误日志时候需要自己单独创建数据库连接代码。这段代码如下: SlConnection con1=new SqlConnection(server=38;uid=s
31、a;pwd=123456;database=tokyosuper);SqlCommand com1=new SqlCommand(insert FSPTB_LOG(P_Sel,P_Msg,P_AppNM,P_FuncNM,P_JobNM,P_ErrDetail,P_INIFile)values(L,FSP.INI,FSPB1210,UpData,SK-XUFENG,FSP.INI,Common.ini),con1);以下(yxi)是更新积分程序具体实现(shxin)的主要逻辑代码:do DatatableKARI=skyConnect1.GetDataTablePage(select *fro
32、m FSPTB_POINT_KARI,i,100);if( DatatableKARI.Rows.Count!=0)foreach (DataRow DatarowKARI in DatatableKARI.Rows)DataSetDatasetMember=skyConnect1.GetDataSet(select *from FSPTB_MEMBER_STATUS where MEMBER_CODE= + + DatarowKARIMEMBER_CODE.ToString() + );if(DatasetMember.Tables0.Rows.Count=0) FSPTB_MEMBER_S
33、TATUS(DatarowKARI);if (DatarowKARIUPD_KBN.ToString()= 4) DataSet DatasetPOINTJ = skyConnect1.GetDataSet(select *from FSPTB_POINT where OLD_MEMBER_CODE= + + DatarowKARIOLD_MEMBER_CODE.ToString() + );if(DatasetPOINTJ.Tables0.Rows.Count!=0)DataRow DatarowPOINTJ=DatasetPOINTJ.Tables0.Rows0;DataSet Datas
34、etKARIJ = skyConnect1.GetDataSet(select *from FSPTB_POINT_KARI where OLD_MEMBER_CODE= + + DatarowKARIOLD_MEMBER_CODE.ToString() + ); DataRow DatarowKARIJ=DatasetKARIJ.Tables0.Rows0; DataSet DatasetPOINTX = skyConnect1.GetDataSet(select *from FSPTB_POINT where MEMBER_CODE= + + DatarowKARIMEMBER_CODE.
35、ToString() + );if(DatasetPOINTX.Tables0.Rows.Count=0) FSPTB_CARDZ(DatarowKARI,DatarowPOINTJ,DatarowKARIJ);else DataRow DatarowPOINTX=DatasetPOINTX.Tables0.Rows0; FSPTB_CARDG(DatarowKARI,DatarowPOINTJ,DatarowKARIJ,DatarowPOINTX);elsereturn 0;DataSet DatasetBONUS = skyConnect1.GetDataSet(select *from
36、FSPTB_POINT_BONUS where MEMBER_CODE= + DatarowKARIOLD_MEMBER_CODE + );if(DatasetBONUS.Tables0.Rows.Count!=0)DataRow DatarowBONUS=DatasetBONUS.Tables0.Rows0;FSPTB_POINT_BONUS(DatarowBONUS,DatarowKARI);elseDataSet DatasetPOINT = skyConnect1.GetDataSet(select *from FSPTB_POINT where MEMBER_CODE= + + Da
37、tarowKARIMEMBER_CODE.ToString() + );DataTable DatatablePOINT=DatasetPOINT.Tables0;if(DatatablePOINT.Rows.Count=0)FSPTB_POINTZ(DatarowKARI);elseDataRow DatarowPOINT=DatatablePOINT.Rows0;FSPTB_POINTG(DatarowKARI,DatarowPOINT);else return 0; i=i+100;while(DatatableKARI.Rows.Count=100);catch(Exception E
38、)skyConnect1.SqlExecute(insert FSPTB_LOG(P_Sel,P_Msg,P_AppNM,P_FuncNM,P_JobNM,P_ErrDetail,P_INIFile)values(L,履歴更新,FSPB1210,UpData,SK-XUFENG,+E.Message+,Common.ini);finallyskyConnect1.SqlExecute(insert FSPTB_LOG(P_Sel,P_Msg,P_AppNM,P_FuncNM,P_JobNM,P_ErrDetail,P_INIFile)values(E,終了,FSPB1210,UpData,SK
39、-XUFENG,終了,Common.ini);this.Dispose();说明(shumng):int 1=0;DataTable DatatableKARI;doDatatableKARI=skyConnect1.GetDataTablePage(select *from FSPTB_POINT_KARI,i,100)if( DatatableKARI.Rows.Count!=0) elsereturn 0;i=i+100;while(DatatableKARI.Rows.Count=100)这段代码(di m)是表示(biosh)一次从临时积分表中读取100条记录,用于避免数据量读取过大
40、造成系统崩溃,是处理过程的精髓所在,skyConnect1.GetDataTablePage()将返回一个有100条或者100条以下的记录条数。if(DatasetMember.Tables0.Rows.Count=0) FSPTB_MEMBER_STATUS(DatarowKARI);判断会员状态表中是否有这个会员的信息(xnx),如果没有,则用于对会员(huyun)状态表进行添加,FSPTB_MEMBER_STATUS(DatarowKARI);这个函数的具体(jt)实现请见附录。 if (DatarowKARIUPD_KBN.ToString()= 4) /会员卡片再发行更新处理else
41、 /普通更新处理 用于更新区分,当该条临时表积分记录更新区分字段值为“4”的时候是会员遗失卡片的情况,否则便是一般的更新。两种更新的具体实现请见附录。4.2积分累计记录类具体实现积分累计记录类的实现大概思路和积分更新类相同,因为它们更新的参照物都是以临时积分表为基础的,首先都要通过skyConnect1.GetDataTablePage()一次从临时表中读取100条记录,直到将表中的记录读取完毕为止,程序开始正常运行时需要输入开始日志,正常运行结束也需要输入结束日志,出现异常需要输出异常信息,它们都是通过skyConnect1.SqlExecute()来实现向日志数据表输出一条记录信息。 模块
42、通过if(DatatableRIREKI.Rows.Count!=0)判断当日积分变化表是否存在临时表中指定日期用户的这天变化记录,如果存在存在则通过FSPTB_POINT_RIREKIG(DatarowKARI,DatarowRIREKI)函数更新,不存在通过FSPTB_POINT_RIREKIZ(DatarowKARI)函数追加。两个函数的具体实现请见附录。主要的处理逻辑代码如下:int i=0;DataTable DatatableKARI;doDatatableKARI=skyConnect1.GetDataTablePage(select *from FSPTB_POINT_KARI
43、,i,100); if (DatatableKARI.Rows.Count != 0)foreach (DataRow DatarowKARI in DatatableKARI.Rows)DataSet DatasetRIREKI = skyConnect1.GetDataSet(select *from FSPTB_POINT_RIREKI where MEMBER_CODE= + DatarowKARIMEMBER_CODE.ToString() + and UPD_YMDHMS= + DatarowKARIUPD_YMDHMS.ToString()+);DataTable Datatab
44、leRIREKI=DatasetRIREKI.Tables0;if(DatatableRIREKI.Rows.Count!=0) DataRow DatarowRIREKI=DatatableRIREKI.Rows0; FSPTB_POINT_RIREKIG(DatarowKARI,DatarowRIREKI);elseFSPTB_POINT_RIREKIZ(DatarowKARI);elsereturn 0;i=i+100;while(DatatableKARI.Rows.Count=100);5系统(xtng)运行结果5.1积分更新类测试(csh)结果该模块的测试包括共通信息(xnx)取得
45、、文件存在检查处理、文件打开处理、对数据库表检索,追加,更新,正常和异常处理等合计16个测试点。图3 共通文件错误命名后的文件图3将共通文件的名字进行了更改,这样程序就无法读取共通文件。图4 共通文件读取失败错误信息输出图4由于无法读取共通文件,则程序将输出一条错误信息到日志中,这条信息的意思是没有找到共通文件。图5 程序更新开始输入日志输出图5是在共通文件读取成功的前提下,输出一条程序开始运行的日志,说明此程序运行开始。图6 会员状态表添加前图6是测试会员状态表能否正常添加,假如(jir)起先表中没有任何值。图7 会员(huyun)状态表添加后图7从临时积分表中读取的记录(jl),在会员状态
46、表中找不到这条记录,就将其添加到会员状态表中去。图8 积分表追加前图8是测试积分表能否正常添加,假如起先表中没有任何值。图9 积分表追加后结果图9从临时积分表中读取的记录,在积分表中找不到这条记录,就将其添加到积分表中去。图10 积分表更新前图10是积分更新前积分表中数据的初始值,当更新后其值将发生变化。图11 积分(jfn)表更新后结果图11积分表根据(gnj)临时表进行了积分更新,积分表值发生变化。图12 卡片(kpin)再发行时积分表追加前图12测试卡片再发行的时候,用临时表中旧会员号对积分表进行检索,如果存在着个旧会员号,通过积分表旧会员号记录的数据和临时表旧会员号记录进行运算,把新会
47、员号信息添加到积分表中,此图是添加前时积分表的数据。图13 卡片再发行时积分表追加后结果图13卡片再发行时成功添加了临时表中的新会员信息后积分表的数据。图14 卡片再发行(fhng)时积分表更新前图14卡片再发行时候,如果临时表中新会员号能在积分表中找到对应的记录,则就不需要另外添加一项,只需在该项进行更新(gngxn)即可,此图是更新前积分表的数据。图15 卡片再发行时积分(jfn)表更新后结果图15是卡片再发行时,直接对积分表中存在的新会员号进行更新后的数据。图16 卡片再发行时奖励积分表更新前图16是卡片再发行时候需要将奖励积分表中以前的会员号进行更改,此图为更改前的数据。图17 卡片(
48、kpin)再发行时奖励积分(jfn)表更新后结果(ji gu)图17是奖励积分表会员号更改后的状态。图18 程序结束日志输出图18是程序正常运行后输出一个结束日志,意思表示程序已经正常结束。5.2积分累计记录更新类测试结果FSPB1220模块的测试内容和过程基本上和FSPB1210测试内容一致,以下只将同FSPB1210测试不同的结果列出:图19 当日积分记录表追加前图19是测试当日积分记录表能否正常添加,假如起先表中没有任何值。图20 当日积分记录表追加后结果图20从临时积分表中读取的记录,在当日积分记录表中找不到这条记录,就将其添加,此图为添加后的结果。图21 当日积分记录表更新前图21当
49、日积分记录表中有此条记录只需要进行更新,此图为表更新前状态。图22 当日(dngr)积分记录表更新(gngxn)后结果图22当日积分表根据临时积分表更新(gngxn)后的结果。结 论通过翻阅资料和实践编码,模块顺利地实现了对系统的积分更新和历史积分记录,即通过读取积分临时表对用户(yngh)状态表,用户积分表,奖励积分表和历史积分(jfn)记录更新(gngxn)表进行了更新操作,模块能够成功地捕捉程序中出现的异常,并对异常信息进行记录。除此之外还可以对模块程序运行状态进行记录,即程序是否开始进行更新运行,以及程序是否正常运行结束,都会以一条信息形式记录到数据库中,从而满足商业软件要求程序严谨性
50、,无差错性。系统的设计与开发在老师的领导下完全遵从对日软件开发的标准。系统进行了需求分析,概要设计、详细设计、编码、测试等每一部分的学习和实践。系统的设计阶段有举足轻重的地位,设计阶段的质量优劣,直接影响到以后系统质量。需求是否准确,影响到最后系统是否能达到用户的要求,概要设计的数据结构的设计,影响数据库的设计是否优越,如果设计合理,在编码阶段实现就相对容易了。而某店积分管理系统是一个大型的团队开发项目。团队合作的概念和团队精神是非常重要性。如何在一个团队里寻找到自己的位置和与人相处是团队开发的重要环节之一。参考文献1 Jesse Liberty美.C#程序设计(chn x sh j)M.北京
51、(bi jn):中国(zhn u)电力出版社,2002。2 方睿,吴四九等.网络数据库原理及应用M.成都:四川大学出版社,2005。3 杜斌,幸利等.软件设计工程M.成都:电子科技大学出版社,2005。4 李超,罗积玉等.软件制造工程M.成都:电子科技大学出版社,2005。5 唐耀.C#程序设计实用教程M.北京:中国水利水电出版社,2005。6 郝春强.C#基础与实例教程M.北京:中国电力出版社,2005。7 Joseph Mayo美.C#技术内幕M.北京:机械工业出版社,2003。附 录详细(xingx)流程图如图23所示:图23 程序(chngx)详细流程图FSPB1210模块(m kui
52、)中的各函数代码: public void FSPTB_MEMBER_STATUS(DataRow DatarowKARI) skyConnect1.SqlExecute(insert FSPTB_MEMBER_STATUS(MEMBER_CODE,UPD_KBN)values( + + DatarowKARIMEMBER_CODE.ToString()+ + ,1); public void FSPTB_POINTG(DataRow DatarowKARI, DataRow DatarowPOINT) decimal NowPoint =(decimal)DatarowPOINTRUIKEI
53、_POINT + (decimal)DatarowKARIYDAY_POINT + (decimal)DatarowKARINOW_POINT - (decimal)DatarowPOINTOUT_RUIKEI_POINT - (decimal)DatarowKARIOUT_POINT;decimal RuikeiPoint =(decimal)DatarowPOINTADD_RUIKEI_POINT+(decimal)DatarowPOINTKIHON_RUIKEI_POINT+ (decimal)DatarowPOINTBONUS_RUIKEI_POINT+(decimal)Datarow
54、KARIADD_POINT; decimal OutruikeiPoint; decimal AddruikeiPoint; decimal TukikaiageM; string UpdYmdhms; if (DatarowKARIOUT_POINT = System.DBNull.Value) OutruikeiPoint =(decimal)DatarowPOINTOUT_RUIKEI_POINT; else OutruikeiPoint = (decimal)DatarowPOINTOUT_RUIKEI_POINT + (decimal)DatarowKARIOUT_POINT; if
55、 (DatarowKARIADD_POINT = System.DBNull.Value) AddruikeiPoint =(decimal)DatarowPOINTADD_RUIKEI_POINT; else AddruikeiPoint = (decimal)DatarowPOINTADD_RUIKEI_POINT + (decimal)DatarowKARIADD_POINT; TukikaiageM = (decimal)DatarowPOINTTUKI_KAIAGE_M + (decimal)DatarowKARIADD_KAIAGE_M - (decimal)DatarowKARI
56、OUT_KAIAGE_M; UpdYmdhms = System.DateTime.Now.ToString(); skyConnect1.SqlExecute(update FSPTB_POINT set MEMBER_CODE= + DatarowKARIMEMBER_CODE.ToString() + ,OLD_MEMBER_CODE= + DatarowKARIOLD_MEMBER_CODE.ToString() + ,YUTAI_RANK= + DatarowKARIYUTAI_RANK.ToString() + ,NOW_POINT= + NowPoint.ToString() +
57、 ,RUIKEI_POINT= + RuikeiPoint.ToString() + ,OUT_RUIKEI_POINT= + OutruikeiPoint.ToString() + ,ADD_RUIKEI_POINT= + AddruikeiPoint.ToString() + ,TUKI_KAIAGE_M= + TukikaiageM.ToString() + ,SYSTEM_UPD_YMDHMS= + UpdYmdhms.ToString() + where MEMBER_CODE= + DatarowKARIMEMBER_CODE.ToString() + ); /追加(zhuji)
58、public void FSPTB_POINTZ(DataRow DatarowKARI) decimal NowPoint=(decimal)DatarowKARIYDAY_POINT + (decimal)DatarowKARINOW_POINT- (decimal)DatarowKARIOUT_POINT; decimal OutruikeiPoint; decimal AddruikeiPoint; string UpdYmdhms; if (DatarowKARIOUT_POINT != System.DBNull.Value) OutruikeiPoint = (decimal)D
59、atarowKARIOUT_POINT; else OutruikeiPoint = 0; if (DatarowKARIADD_POINT != System.DBNull.Value) AddruikeiPoint = (decimal)DatarowKARIADD_POINT; else AddruikeiPoint = 0; UpdYmdhms = System.DateTime.Now.ToString(); skyConnect1.SqlExecute(insert FSPTB_POINT values( + + DatarowKARIMEMBER_CODE.ToString()
60、+ + , + DatarowKARIOLD_MEMBER_CODE.ToString() + + , + DatarowKARIYUTAI_RANK.ToString() + + , + NowPoint.ToString() + , + DatarowKARIADD_POINT.ToString() + , + OutruikeiPoint.ToString() + , + AddruikeiPoint.ToString() + , + 0,0,NULL,0 + , + DatarowKARITUKI_KAIAGE_M.ToString() + ,0,0,0,0 + , + 0 + + ,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年消费者行为学全民必知知识考试题与答案
- 2025年监理工程师继续教育考试题及答案
- 2025年上海市“安全生产月”知识考试试题及参考答案
- 摄影电影基础知识培训课件
- 辽宁省沈阳市沈北新区2024-2025学年八年级下学期期末语文试题(解析版)
- 摄影挂拍基础知识培训课件
- 林业生物技术试题及答案
- 2025饮品连锁加盟经营合同
- 2025夫妻自愿同居合同书
- 2025年高一数学(人教A版)复数的乘除运算-1教案
- 2025年《工会法》知识竞赛试题库及答案
- 2025氯化工艺复审题库及答案详解
- 初中语文培训成果
- 2023年北京中考化学真题(含答案)
- TPM管理基础知识培训课件
- 2025年湖北省初中地理学业水平考试(会考)真题评析
- 树莓栽培技术课件
- 农机购买销售合同(2025版)
- 硬质合金成型工专业知识考试题库含答案
- 视神经脊髓炎病例汇报
- 消除艾滋病、梅毒和乙肝母婴传播项目工作制度及流程(模板)
评论
0/150
提交评论