版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、畢業(yè)設(shè)計(jì)(論文)某店積分更新記錄管理論文作者姓名:申請(qǐng)學(xué)位專(zhuān)業(yè):申請(qǐng)學(xué)位類(lèi)別:指導(dǎo)教師姓名(職稱):論文提交日期:某店積分更新記錄管理摘 要計(jì)算機(jī)誕生以來(lái),對(duì)數(shù)據(jù)的管理一直是計(jì)算機(jī)應(yīng)用中最為重要的環(huán)節(jié),數(shù)據(jù)庫(kù)管理系統(tǒng)便是這一環(huán)節(jié)中堅(jiān)力量。在.net平臺(tái)推出以后,由于其通用語(yǔ)言基礎(chǔ)結(jié)構(gòu)和規(guī)范性,讓不同語(yǔ)言開(kāi)發(fā)的程序員們都能得心應(yīng)手地在.net平臺(tái)下進(jìn)行高效的程序開(kāi)發(fā),ado.net框架對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)的訪問(wèn)控制是相當(dāng)?shù)撵`活和方便,減少了程序員們操作數(shù)據(jù)庫(kù)底層代碼,讓程序員的精力完全集中到邏輯代碼開(kāi)發(fā)之中。因此,采用.net平臺(tái)開(kāi)發(fā)管理信息系統(tǒng)是一個(gè)明智的選擇。某店積分更新記錄管理前臺(tái)采用.net
2、,后臺(tái)采用sql 2000,語(yǔ)言使用c#。實(shí)現(xiàn)的系統(tǒng)功能是對(duì)用戶消費(fèi)和追加的積分進(jìn)行更新,并對(duì)積分變化進(jìn)行記錄。程序模塊讀取臨時(shí)積分表,通過(guò)返回臨時(shí)積分表的數(shù)據(jù)對(duì)積分表,用戶狀態(tài)表,積分獎(jiǎng)勵(lì)記錄表進(jìn)行更新,并對(duì)積分累積記錄表進(jìn)行更新,系統(tǒng)著重于對(duì)更新失敗和程序異常時(shí)進(jìn)行處理。關(guān)鍵詞:計(jì)算機(jī)應(yīng)用;數(shù)據(jù)庫(kù)管理系統(tǒng);積分更新記錄;.net平臺(tái);ado.net;c#;sql2000 the shops integral update record management abstractdata management is always the most important link of the co
3、mputers application, since the invention 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. th
4、e structure of ado.net give a flexible 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 ma
5、nagement information.net is used as onstage,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. w
6、hen the program module read the temporary 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 carri
7、ed on processing.key words: computer applications; database management system; integral update record; .net platform; ado.net; c#; sql2000 目 錄論文總頁(yè)數(shù):33頁(yè)1 引 言22 模塊需求分析22.1 模塊功能需求22.2 客戶對(duì)模塊性能要求22.3 模塊開(kāi)發(fā)需求23 系統(tǒng)開(kāi)發(fā)設(shè)計(jì)分析23.1 系統(tǒng)設(shè)計(jì)模式23.2 模塊功能分析23.2.1 積分表的更新23.2.2 新入會(huì)員積分表的更新23.2.3 老用戶卡片遺失情況下的更新23.2.4 當(dāng)日積分變化進(jìn)行記
8、錄23.3 程序流程及分析23.4 模塊的詳細(xì)設(shè)計(jì)23.4.1 模塊主要對(duì)象的定義23.4.2 數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)24 模塊的實(shí)現(xiàn)過(guò)程分析24.1 積分更新類(lèi)具體實(shí)現(xiàn)24.2 積分累計(jì)記錄類(lèi)具體實(shí)現(xiàn)25 系統(tǒng)運(yùn)行結(jié)果25.1 積分更新類(lèi)測(cè)試結(jié)果25.2 積分累計(jì)記錄更新類(lèi)測(cè)試結(jié)果2結(jié)論2參考文獻(xiàn)2附錄2致謝2聲明21引 言隨著.net平臺(tái)的推出,其強(qiáng)大的功能和多語(yǔ)種的支持無(wú)疑給程序員們提供了一個(gè)更為廣大的開(kāi)發(fā)平臺(tái),其即時(shí)編譯能力在執(zhí)行效率上毫不遜于當(dāng)今其它流行編程平臺(tái),通用語(yǔ)言規(guī)范使得不同語(yǔ)言定義的類(lèi)能夠相互引用,大大地增加了代碼的重用性,使得軟件開(kāi)發(fā)速度得到質(zhì)的提高。其中c#綜合了java,c+
9、,vb等語(yǔ)言的優(yōu)點(diǎn)成為microsoft新一代開(kāi)發(fā)平臺(tái)下的生力軍,在此平臺(tái)下開(kāi)發(fā)的各種管理應(yīng)用系統(tǒng)紛紛出現(xiàn),百貨店當(dāng)然也少不了它。以前消費(fèi)者都是通過(guò)現(xiàn)金交易來(lái)購(gòu)買(mǎi)商品,消費(fèi)者無(wú)意要帶大量的現(xiàn)金在身上,這樣做既不方便也不安全,為了讓消費(fèi)者消費(fèi)不再單單依賴于現(xiàn)金進(jìn)行交易,以及為消費(fèi)者提供優(yōu)惠的政策,相應(yīng)地需要一套積分系統(tǒng)對(duì)消費(fèi)者積分進(jìn)行必要的管理,從而不但可以方便消費(fèi)者的購(gòu)物還能提高購(gòu)物的趣味性,并通過(guò)獎(jiǎng)勵(lì)積分方法激起消費(fèi)者在百貨店的購(gòu)物興趣。系統(tǒng)模塊主要負(fù)責(zé)對(duì)消費(fèi)者當(dāng)日消費(fèi)和追加的積分進(jìn)行更新和累計(jì)記錄管理,對(duì)消費(fèi)者遺失卡片的情況,卡號(hào)進(jìn)行更改并對(duì)原有積分進(jìn)行保留,最大程度上保護(hù)消費(fèi)者的利益。2
10、模塊需求分析2.1模塊功能需求模塊對(duì)用戶當(dāng)日消費(fèi)或者追加的積分進(jìn)行更新,這種更新不是即時(shí)更新,而是在指定的時(shí)間間隔后對(duì)積分信息進(jìn)行更新。同時(shí)要對(duì)新增加的會(huì)員信息進(jìn)行初始化,并添加新會(huì)員信息,對(duì)老會(huì)員遺失積分卡情況進(jìn)行卡號(hào)的再發(fā)行,參照原卡信息對(duì)再發(fā)行的積分卡信息進(jìn)行更新。所有積分累積變化都應(yīng)有所記錄,模塊程序的啟動(dòng)以及結(jié)束都要輸出日志記錄使得程序執(zhí)行與否有據(jù)可查,對(duì)于程序的意想不到異常終止也應(yīng)該輸出到日志記錄中,從而便于管理者查出異常原因,并即時(shí)采取措施。2.2客戶對(duì)模塊性能要求Ø 實(shí)現(xiàn)模塊所有功能Ø 模塊重用性強(qiáng)Ø 模塊穩(wěn)定性和容錯(cuò)能力強(qiáng)Ø 模塊能穩(wěn)定
11、運(yùn)行Ø 模塊能即時(shí)響應(yīng)2.3模塊開(kāi)發(fā)需求積分管理系統(tǒng)是對(duì)日軟件外包的一個(gè)實(shí)際項(xiàng)目,系統(tǒng)所有的工作都要求在日文操作系統(tǒng)下進(jìn)行,客戶要求選用.net作為開(kāi)發(fā)所用平臺(tái),為了使系統(tǒng)達(dá)到最好性能,所以開(kāi)發(fā)所用的一套工具都使用microsoft公司的開(kāi)發(fā)產(chǎn)品,c#其融合java ,c+,vb等語(yǔ)言的優(yōu)點(diǎn)是我們選擇它作為開(kāi)發(fā)語(yǔ)言的原因之一。以下列出模塊開(kāi)發(fā)基本需求:1.硬件需求:微型計(jì)算機(jī)一臺(tái)2.操作系統(tǒng):windows 2000(日文)3.開(kāi)發(fā)語(yǔ)言:c#.net4.數(shù)據(jù)庫(kù):microsoft sql server 20005.其他軟件需求:visual studio2003集成開(kāi)發(fā)環(huán)境 3系統(tǒng)開(kāi)
12、發(fā)設(shè)計(jì)分析3.1系統(tǒng)設(shè)計(jì)模式根據(jù)用戶對(duì)模塊功能需求描述,初步設(shè)計(jì)5張數(shù)據(jù)表:1) 臨時(shí)積分表:用于記錄用戶當(dāng)日和前日為更新到積分表中的數(shù)據(jù),主要有當(dāng)日積分,前日積分,更新區(qū)分等字段,系統(tǒng)會(huì)定時(shí)將當(dāng)日積分累加到前日積分,最后積分更新時(shí)才會(huì)寫(xiě)入用戶積分表。2) 積分表:記錄用戶積分信息,主要有消耗積分,追加積分,獎(jiǎng)勵(lì)積分,累積積分等字段。3) 用戶狀態(tài)表:記錄用戶優(yōu)先等級(jí),入會(huì)店鋪等信息。4) 獎(jiǎng)勵(lì)積分表:記錄用戶得到的獎(jiǎng)勵(lì)積分以及獎(jiǎng)勵(lì)理由。5) 積分歷史記錄表:記錄用戶當(dāng)日積分變化,主要有當(dāng)日消耗積分,當(dāng)日追加積分,現(xiàn)有積分,當(dāng)日獎(jiǎng)勵(lì)積分等字段。模塊通過(guò)讀取臨時(shí)積分表分別對(duì)其它四張表進(jìn)行更新或者
13、添加操作。遵照臨時(shí)表對(duì)其它表進(jìn)行操作的模式,進(jìn)行模塊設(shè)計(jì)。3.2模塊功能分析3.2.1積分表的更新對(duì)當(dāng)日用戶積分進(jìn)行時(shí)間段更新,因?yàn)椴皇羌磿r(shí)更新,記錄積分表可見(jiàn)有兩張,一張是應(yīng)該用來(lái)記錄當(dāng)日時(shí)間段用戶積分變化的臨時(shí)積分表,另一張表則是用戶的積分表,積分表的更新應(yīng)該按照臨時(shí)積分表的數(shù)據(jù)進(jìn)行更新。3.2.2新入會(huì)員積分表的更新對(duì)于新入會(huì)員則起先應(yīng)在臨時(shí)表中記錄,當(dāng)積分表進(jìn)行更新的時(shí)候,才將其添加入積分表中,并對(duì)新會(huì)員入會(huì)信息進(jìn)行記錄,則必需要會(huì)員表。3.2.3老用戶卡片遺失情況下的更新還有種情況便是用戶卡片丟失的情況,需要對(duì)卡片進(jìn)行再發(fā)行,要將原來(lái)用戶所有信息移植到新卡片中,由此應(yīng)在臨時(shí)積分表中設(shè)
14、計(jì)一個(gè)用于區(qū)分更新的字段來(lái)識(shí)別用戶積分表更新情況,還有就是再發(fā)行的時(shí)候會(huì)員的以前的id就不能再用了,系統(tǒng)還設(shè)計(jì)到了一個(gè)獎(jiǎng)勵(lì)積分表,應(yīng)該把獎(jiǎng)勵(lì)積分表的id更新成新卡的id號(hào)。3.2.4當(dāng)日積分變化進(jìn)行記錄最后還應(yīng)對(duì)用戶當(dāng)日積分變化進(jìn)行記錄,則相應(yīng)需要一張積分記錄表,根據(jù)臨時(shí)表進(jìn)行更新。3.3程序流程及分析模塊程序流程如圖1:程序類(lèi)臨時(shí)積分表積分表獎(jiǎng)勵(lì)積分表會(huì)員表積分累積表圖1模塊處理流程圖該流程說(shuō)明(詳細(xì)流程圖見(jiàn)附錄):1.依次讀取臨時(shí)積分表里的記錄,對(duì)每一條記錄根據(jù)其更新區(qū)分字段進(jìn)行相應(yīng)處理。2.用臨時(shí)表讀出的記錄的會(huì)員id字段對(duì)會(huì)員表進(jìn)行讀取,如無(wú)記錄則對(duì)會(huì)員表進(jìn)行添加。3.臨時(shí)表讀出的記錄
15、的更新區(qū)分不屬于卡片再發(fā)行的時(shí)候,對(duì)積分表進(jìn)行更新或者添加。4.臨時(shí)表讀出的記錄的更新區(qū)分屬于卡片再發(fā)行的時(shí)候,對(duì)積分表進(jìn)行更新或者添加,并對(duì)獎(jiǎng)勵(lì)積分表會(huì)員id進(jìn)行更新。5.臨時(shí)表讀出的記錄對(duì)當(dāng)日積分歷史記錄表進(jìn)行更新或者添加。3.4 模塊的詳細(xì)設(shè)計(jì)系統(tǒng)的開(kāi)發(fā)設(shè)計(jì)由下面這些基本模塊構(gòu)成:1. 數(shù)據(jù)庫(kù)后臺(tái)操作類(lèi) skyconnect;2. 共用文件讀取類(lèi) inifile;3. 共用文件 common.ini;3.4.1模塊主要對(duì)象的定義模塊使用到的類(lèi)如圖2所示:fspb1220fspb1210inifileskyconnectini文件數(shù)據(jù)庫(kù)圖2類(lèi)調(diào)用邏輯圖模塊fspb1210和fspb1220
16、通過(guò)類(lèi)inifile和類(lèi)skyconnect進(jìn)行對(duì)文件和數(shù)據(jù)庫(kù)的訪問(wèn)。圖各類(lèi)一覽表:表1模塊類(lèi)說(shuō)明表命名空間類(lèi)名說(shuō)明百貨店pos情報(bào)管理.fspb1210fspb1210用戶積分更新百貨店pos情報(bào)管理.fspb1220fspb1220積分累積更新百貨店pos情報(bào)管理inifile共通文件讀取百貨店pos情報(bào)管理skyconnect數(shù)據(jù)庫(kù)操作模塊中skyconnect類(lèi)是用作數(shù)據(jù)庫(kù)操作的,其將所有數(shù)據(jù)庫(kù)操作所要用到的返回對(duì)象都封裝在其中,這樣就不用再在其它類(lèi)中聲明數(shù)據(jù)庫(kù)連接對(duì)象對(duì)數(shù)據(jù)庫(kù)進(jìn)行連接操作,只需要聲明skyconnect的實(shí)例既可,該類(lèi)skyconnect聲明的對(duì)象定義表如下表:表2
17、skyconnect類(lèi)對(duì)象定義表對(duì)象名稱類(lèi)型說(shuō)明connsqlconnection數(shù)據(jù)庫(kù)連接對(duì)象commsqlcommandsql語(yǔ)言執(zhí)行對(duì)象readersqldatareader按條讀取數(shù)據(jù)庫(kù)對(duì)象dasqldataadapter適配器對(duì)象dsdataset按塊讀取數(shù)據(jù)庫(kù)對(duì)象_disposingbool資源釋放與否標(biāo)記對(duì)于整個(gè)系統(tǒng)而言,所涉及到的屬性較多,因此建立一個(gè)文件存儲(chǔ)系統(tǒng)的屬性值,每個(gè)模塊通過(guò)相應(yīng)方法調(diào)用對(duì)應(yīng)的屬性。通過(guò)類(lèi)inifile需要從配置文件common.ini中讀取的屬性值,如果文件不存在或者讀取失敗都要輸出錯(cuò)誤日志記錄,讀取的屬性大概如下表:表3 inifile類(lèi)讀取屬性表
18、common.ini中的屬性值對(duì)應(yīng)的參數(shù)說(shuō)明sqlconnection_string_sqlconnection_string數(shù)據(jù)庫(kù)連接字符串filepath_filepath文件路徑member_kari_data_h_member_kari_data_h文件名pos_item_pos_item文件名pos_torihiki_pos_torihiki文件名uriage_kei_uriage_kei文件名member_ment_data_h_member_ment_data_h文件名point_ment_data_h_point_ment_data_h文件名member_data_member
19、_data文件名bonus_rule_bonus_rule文件名out_member_prefix_out_member_prefix文件名item_data_item_data文件名out_shohin_prefix_out_shohin_prefix文件名pos_data_pos_data文件名out_pos_prefix_out_pos_prefix文件名logfile_logfile文件名point_rireki_csv_point_rireki_csv文件名point_jnl_csv_point_jnl_csv文件名pos_torihiki_csv_pos_torihiki_csv文
20、件名pos_item_csv_pos_item_csv文件名seisan_csv_seisan_csv文件名hanbai_csv_hanbai_csv文件名由于模塊fspb1210和模塊fspb1220無(wú)需對(duì)文件進(jìn)行操作,唯一需要的是對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)服務(wù)器連接所需的連接字符串進(jìn)行讀取,即用到的字符串是sqlconnection_string,其它的文件只是通過(guò)聲明類(lèi)inifile實(shí)例進(jìn)行文件存在與否的判斷,但是如果上面所列文件中有一個(gè)不存在的話,模塊就會(huì)輸出錯(cuò)誤信息到日志數(shù)據(jù)庫(kù)中去,即使沒(méi)有用到這些文件也要輸出文件不存在的錯(cuò)誤信息,這是遵從共通文件讀取要求規(guī)范所必需要的。 3.4.2數(shù)據(jù)庫(kù)結(jié)構(gòu)
21、設(shè)計(jì)數(shù)據(jù)庫(kù)技術(shù)在計(jì)算機(jī)軟件鄰域研究中一直是非常重要的主題,在積分管理系統(tǒng)中,數(shù)據(jù)庫(kù)的結(jié)構(gòu)設(shè)計(jì)占非常重要的地位,設(shè)計(jì)好壞與數(shù)據(jù)庫(kù)中數(shù)據(jù)的讀取起很大影響作用。而且應(yīng)該以數(shù)據(jù)的統(tǒng)計(jì)算法相結(jié)合,以數(shù)據(jù)的讀取統(tǒng)計(jì)方便為目的。在積分更新和積分累計(jì)記錄模塊中,相應(yīng)的數(shù)據(jù)庫(kù)表結(jié)構(gòu)如下:表4 臨時(shí)積分?jǐn)?shù)據(jù)表字段名稱數(shù)據(jù)類(lèi)型長(zhǎng)度是否為空字段說(shuō)明備注member_codechar13否會(huì)員編號(hào)old_member_codechar13是舊會(huì)員編號(hào)用于卡片再發(fā)行yutai_rankchar2是優(yōu)待等級(jí)yday_pointnumeric8是前日所有積分前日為止所有積分now_pointnumeric8是當(dāng)前積分當(dāng)前為止
22、所有積分yday_tuki_kaiage_mnumeric10是前月購(gòu)買(mǎi)金額前月為止所有積分tuki_kaiage_mnumeric10是當(dāng)月購(gòu)買(mǎi)金額out_pointnumeric6是當(dāng)日消耗積分out_kaiage_mnumeric10是當(dāng)日減算金額out_riyu_codechar2是減算原因add_pointnumeric6是當(dāng)日添加積分add_kaiage_mnumeric10是當(dāng)日添加金額add_riyu_codechar2是添加原因upd_kbnchar1是更新區(qū)分1注冊(cè)2修改3刪除4卡片再發(fā)行data_kbnchar1是發(fā)生地區(qū)分0分店1總店upd_ymdhmschar20是更
23、新日期yyyymmddhhmmssupd_tantouchar6是更新?lián)?dāng)者之所以要建立臨時(shí)表是因?yàn)槟K更新是定時(shí)更新而不是即時(shí)更新,臨時(shí)表的主要作用是記錄當(dāng)日和前日用戶數(shù)據(jù)的,這些數(shù)據(jù)都還沒(méi)來(lái)得及更新到積分表中去,而臨時(shí)表自己也會(huì)定時(shí)地將當(dāng)日積分累加到前日積分中去,即字段now_point值累加到y(tǒng)day_point字段中去,add_point也會(huì)定時(shí)地向now_point進(jìn)行累加,在臨時(shí)表中會(huì)員有兩個(gè)id,一個(gè)是舊id,一個(gè)是新id他的作用在于如果會(huì)員卡片丟失了就需要對(duì)會(huì)員注冊(cè)一個(gè)新id以供用戶使用,其中upd_kbn字段是比較重要的字段,它是用來(lái)進(jìn)行更新區(qū)分的,即會(huì)員到底是第一次注冊(cè),還
24、是會(huì)員要求注銷(xiāo)自己的帳號(hào),還是由于卡片丟失需要重新辦理卡片等。表5 會(huì)員狀態(tài)表字段名稱數(shù)據(jù)類(lèi)型長(zhǎng)度是否為空字段說(shuō)明備注member_codechar13否會(huì)員編號(hào)old_member_codechar13是舊會(huì)員編號(hào)dominant_codechar3是會(huì)員等級(jí)編號(hào)tenpo_codechar6是店鋪編號(hào)old_dominant_codechar3是會(huì)員舊等級(jí)編號(hào)old_tenpo_codechar6是舊店鋪編號(hào)upd_kbnchar1是更新區(qū)分msts_auto_idint15否自動(dòng)編號(hào)會(huì)員狀態(tài)表主要是用于記錄會(huì)員的一些入會(huì)信息,在臨時(shí)表中的會(huì)員是否是第一次注冊(cè),如果是第一次的話就需要對(duì)其信
25、息進(jìn)行添加到會(huì)員狀態(tài)表中去,不是的話就不需要添加。表6 用戶積分表字段名稱數(shù)據(jù)類(lèi)型長(zhǎng)度是否為空字段說(shuō)明備注member_codechar13否會(huì)員編號(hào)old_member_codechar13是舊會(huì)員編號(hào)yutai_rankchar2是優(yōu)待等級(jí)now_pointnumeric8是當(dāng)前積分ruikei_pointnumeric8是累積積分out_ruikei_pointnumeric8是消耗累計(jì)積分add_ruikei_pointnumeric8是追加累計(jì)積分kihon_ruikei_pointnumeric8是基本累積積分bonus_ruikei_pointnumeric8是獎(jiǎng)勵(lì)累積積分kai
26、age_rchar8是最后消費(fèi)時(shí)間yyyymmddtuki_kaiage_mnumeric10是當(dāng)月購(gòu)買(mǎi)金額before_tuki_kaiage_mnumeric10是前月購(gòu)買(mǎi)金額kaiage_fnumeric5是購(gòu)買(mǎi)次數(shù)kaiage_mnumeric10是購(gòu)買(mǎi)金額member_waribiki_mnumeric10是會(huì)員打折累積金額kounyu_mnumeric10是買(mǎi)進(jìn)累積金額mukou_kbnchar1是無(wú)效區(qū)分0有效1無(wú)效add_ymdhmschar20是注冊(cè)時(shí)間yyyymmddhhmmssadd_tantouchar6是注冊(cè)擔(dān)當(dāng)者upd_ymdhmschar20是更新時(shí)間yyyymm
27、ddhhmmssupd_tantouchar6是更新?lián)?dāng)者system_upd_ymdhmschar20是系統(tǒng)更新時(shí)間yyyymmddhhmmss積分表則是記錄從會(huì)員注冊(cè)之日起到現(xiàn)在,會(huì)員積分總的變化,如會(huì)員總的消耗積分,總的追加積分,總的獎(jiǎng)勵(lì)積分,最后一次消費(fèi)時(shí)間,打折了好多金額,消費(fèi)的次數(shù)等能反應(yīng)出會(huì)員是否是一個(gè)老客戶還是不怎么經(jīng)常光顧的新客戶。表7 獎(jiǎng)勵(lì)積分表字段名稱數(shù)據(jù)類(lèi)型長(zhǎng)度是否為空字段說(shuō)明備注shori_ymchar6否處理月份yyyymmmember_codechar13否會(huì)員編號(hào)tuki_kaiage_mnumeric10是當(dāng)月購(gòu)買(mǎi)金額bonus_pointnumeric8是獎(jiǎng)
28、勵(lì)積分bonus_kubnnumeric4是獎(jiǎng)勵(lì)區(qū)分system_upd_ymdhmschar14是系統(tǒng)更新時(shí)間yyyymmddhhmmss獎(jiǎng)勵(lì)積分表用來(lái)記錄用戶受到獎(jiǎng)勵(lì)的積分?jǐn)?shù),以及為什么受到獎(jiǎng)勵(lì),讓管理者有據(jù)可查。表8 當(dāng)日積分歷史記錄表字段名稱數(shù)據(jù)類(lèi)型長(zhǎng)度是否為空字段說(shuō)明備注member_codechar13否會(huì)員編號(hào)ymdchar8否日期yyyymmddyutai_rankchar2是優(yōu)待等級(jí)kihon_pointnumeric6是當(dāng)前基本積分bonus_pointnumeric6是獎(jiǎng)勵(lì)積分add_pointnumeric6是添加積分out_pointnumeric6是消耗積分now_
29、pointnumeric8是當(dāng)日積分upd_ymdhmschar14是更新日期yyyymmddhhmmssupd_tantouchar6是更新?lián)?dāng)者當(dāng)日積分歷史記錄表則是用于記錄用戶當(dāng)日記錄變化的,其主鍵是member_code和ymd聯(lián)合起來(lái)的主鍵,可見(jiàn)每當(dāng)依照臨時(shí)表對(duì)其它表進(jìn)行更新時(shí),臨時(shí)表中每條用戶的數(shù)據(jù)都會(huì)備份到當(dāng)日積分歷史記錄表中來(lái)。模塊程序處理過(guò)程都是參照臨時(shí)積分表對(duì)其它5個(gè)表進(jìn)行數(shù)據(jù)庫(kù)更新,添加刪除等工作,程序開(kāi)始以及結(jié)束都要輸出相應(yīng)的日志,但發(fā)生異?,F(xiàn)象時(shí)應(yīng)輸出錯(cuò)誤日志到數(shù)據(jù)庫(kù)的log中去。讀取臨時(shí)表時(shí)應(yīng)該注意每次讀取記錄條數(shù),以免數(shù)據(jù)量過(guò)大引起服務(wù)器系統(tǒng)崩潰。4模塊的實(shí)現(xiàn)過(guò)程
30、分析4.1積分更新類(lèi)具體實(shí)現(xiàn)先在fspb1210類(lèi)構(gòu)造函數(shù)里創(chuàng)建數(shù)據(jù)庫(kù)連接類(lèi)和共通文件類(lèi):public fspb1210()/共通情報(bào)取得(ini) ini=new iniconfig();if(ini.errorstring!="1"&&ini.errorstring!="2"&&ini.errorstring!="3")skyconnect1=new skyconnect();/因?yàn)閟kyconnect類(lèi)中會(huì)使用到iniconfig類(lèi)進(jìn)行ini共同文件的讀取,所以要先判斷ini文件是否存在,以及文件
31、能否打開(kāi)和正確讀取ini中的字段項(xiàng),這樣才能保證skyconnect類(lèi)正常運(yùn)行。程序首先要讀取ini共同文件,如果讀取失敗需要輸出失敗原因,并結(jié)束程序,因?yàn)槌绦虻乃袛?shù)據(jù)庫(kù)操作都封裝在skyconnect類(lèi)中的,而skyconnect類(lèi)也需要ini文件的讀取,固輸出錯(cuò)誤日志時(shí)候需要自己?jiǎn)为?dú)創(chuàng)建數(shù)據(jù)庫(kù)連接代碼。這段代碼如下: slconnection con1=new sqlconnection("server=38;uid=sa;pwd=123456;database=tokyosuper");sqlcommand com1=new sqlcomm
32、and("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);以下是更新積分程序具體實(shí)現(xiàn)的主要邏輯代碼:do datatablekari=skyconnect1.getdatatablepage(&q
33、uot;select *from 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=" + "'" + datarowkari"member_code".tostr
34、ing() + "'");if(datasetmember.tables0.rows.count=0) fsptb_member_status(datarowkari);if (datarowkari"upd_kbn".tostring()= "4") dataset datasetpointj = skyconnect1.getdataset("select *from fsptb_point where old_member_code=" + "'" + datarowkar
35、i"old_member_code".tostring() + "'");if(datasetpointj.tables0.rows.count!=0)datarow datarowpointj=datasetpointj.tables0.rows0;dataset datasetkarij = skyconnect1.getdataset("select *from fsptb_point_kari where old_member_code=" + "'" + datarowkari"
36、old_member_code".tostring() + "'"); datarow datarowkarij=datasetkarij.tables0.rows0; dataset datasetpointx = skyconnect1.getdataset("select *from fsptb_point where member_code=" + "'" + datarowkari"member_code".tostring() + "'");if(d
37、atasetpointx.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 fsptb_point_b
38、onus where member_code='" + datarowkari"old_member_code" + "'");if(datasetbonus.tables0.rows.count!=0)datarow datarowbonus=datasetbonus.tables0.rows0;fsptb_point_bonus(datarowbonus,datarowkari);elsedataset datasetpoint = skyconnect1.getdataset("select *from fspt
39、b_point where member_code=" + "'" + datarowkari"member_code".tostring() + "'");datatable datatablepoint=datasetpoint.tables0;if(datatablepoint.rows.count=0)fsptb_pointz(datarowkari);elsedatarow datarowpoint=datatablepoint.rows0;fsptb_pointg(datarowkari,data
40、rowpoint);else return 0; i=i+100;while(datatablekari.rows.count=100);catch(exception e)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.mess
41、age+"','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-xufeng','終了','common.ini')");this.dispose(
42、);說(shuō)明: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)這段代碼是表示一次從臨時(shí)積分表中讀取100條記錄,用于避免數(shù)據(jù)量讀取過(guò)大造成系統(tǒng)崩潰,是處理過(guò)程的精髓所在,skyconnect1.getdatatablepag
43、e()將返回一個(gè)有100條或者100條以下的記錄條數(shù)。if(datasetmember.tables0.rows.count=0) fsptb_member_status(datarowkari);判斷會(huì)員狀態(tài)表中是否有這個(gè)會(huì)員的信息,如果沒(méi)有,則用于對(duì)會(huì)員狀態(tài)表進(jìn)行添加,fsptb_member_status(datarowkari);這個(gè)函數(shù)的具體實(shí)現(xiàn)請(qǐng)見(jiàn)附錄。 if (datarowkari"upd_kbn".tostring()= "4") /會(huì)員卡片再發(fā)行更新處理else /普通更新處理 用于更新區(qū)分,當(dāng)該條臨時(shí)表積分記錄更新區(qū)分字段值為“4”
44、的時(shí)候是會(huì)員遺失卡片的情況,否則便是一般的更新。兩種更新的具體實(shí)現(xiàn)請(qǐng)見(jiàn)附錄。4.2積分累計(jì)記錄類(lèi)具體實(shí)現(xiàn)積分累計(jì)記錄類(lèi)的實(shí)現(xiàn)大概思路和積分更新類(lèi)相同,因?yàn)樗鼈兏碌膮⒄瘴锒际且耘R時(shí)積分表為基礎(chǔ)的,首先都要通過(guò)skyconnect1.getdatatablepage()一次從臨時(shí)表中讀取100條記錄,直到將表中的記錄讀取完畢為止,程序開(kāi)始正常運(yùn)行時(shí)需要輸入開(kāi)始日志,正常運(yùn)行結(jié)束也需要輸入結(jié)束日志,出現(xiàn)異常需要輸出異常信息,它們都是通過(guò)skyconnect1.sqlexecute()來(lái)實(shí)現(xiàn)向日志數(shù)據(jù)表輸出一條記錄信息。 模塊通過(guò)if(datatablerireki.rows.count!=0)判斷
45、當(dāng)日積分變化表是否存在臨時(shí)表中指定日期用戶的這天變化記錄,如果存在存在則通過(guò)fsptb_point_rirekig(datarowkari,datarowrireki)函數(shù)更新,不存在通過(guò)fsptb_point_rirekiz(datarowkari)函數(shù)追加。兩個(gè)函數(shù)的具體實(shí)現(xiàn)請(qǐng)見(jiàn)附錄。主要的處理邏輯代碼如下:int i=0;datatable datatablekari;dodatatablekari=skyconnect1.getdatatablepage("select *from fsptb_point_kari",i,100); if (datatablekar
46、i.rows.count != 0)foreach (datarow datarowkari in datatablekari.rows)dataset datasetrireki = skyconnect1.getdataset("select *from fsptb_point_rireki where member_code='" + datarowkari"member_code".tostring() + "'and upd_ymdhms='" + datarowkari"upd_ymdhm
47、s".tostring()+"'");datatable datatablerireki=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
48、=100);5系統(tǒng)運(yùn)行結(jié)果5.1積分更新類(lèi)測(cè)試結(jié)果該模塊的測(cè)試包括共通信息取得、文件存在檢查處理、文件打開(kāi)處理、對(duì)數(shù)據(jù)庫(kù)表檢索,追加,更新,正常和異常處理等合計(jì)16個(gè)測(cè)試點(diǎn)。圖3 共通文件錯(cuò)誤命名后的文件圖3將共通文件的名字進(jìn)行了更改,這樣程序就無(wú)法讀取共通文件。圖4 共通文件讀取失敗錯(cuò)誤信息輸出圖4由于無(wú)法讀取共通文件,則程序?qū)⑤敵鲆粭l錯(cuò)誤信息到日志中,這條信息的意思是沒(méi)有找到共通文件。圖5 程序更新開(kāi)始輸入日志輸出圖5是在共通文件讀取成功的前提下,輸出一條程序開(kāi)始運(yùn)行的日志,說(shuō)明此程序運(yùn)行開(kāi)始。圖6 會(huì)員狀態(tài)表添加前圖6是測(cè)試會(huì)員狀態(tài)表能否正常添加,假如起先表中沒(méi)有任何值。圖7 會(huì)員狀態(tài)表
49、添加后圖7從臨時(shí)積分表中讀取的記錄,在會(huì)員狀態(tài)表中找不到這條記錄,就將其添加到會(huì)員狀態(tài)表中去。圖8 積分表追加前圖8是測(cè)試積分表能否正常添加,假如起先表中沒(méi)有任何值。圖9 積分表追加后結(jié)果圖9從臨時(shí)積分表中讀取的記錄,在積分表中找不到這條記錄,就將其添加到積分表中去。圖10 積分表更新前圖10是積分更新前積分表中數(shù)據(jù)的初始值,當(dāng)更新后其值將發(fā)生變化。圖11 積分表更新后結(jié)果圖11積分表根據(jù)臨時(shí)表進(jìn)行了積分更新,積分表值發(fā)生變化。圖12 卡片再發(fā)行時(shí)積分表追加前圖12測(cè)試卡片再發(fā)行的時(shí)候,用臨時(shí)表中舊會(huì)員號(hào)對(duì)積分表進(jìn)行檢索,如果存在著個(gè)舊會(huì)員號(hào),通過(guò)積分表舊會(huì)員號(hào)記錄的數(shù)據(jù)和臨時(shí)表舊會(huì)員號(hào)記錄進(jìn)
50、行運(yùn)算,把新會(huì)員號(hào)信息添加到積分表中,此圖是添加前時(shí)積分表的數(shù)據(jù)。圖13 卡片再發(fā)行時(shí)積分表追加后結(jié)果圖13卡片再發(fā)行時(shí)成功添加了臨時(shí)表中的新會(huì)員信息后積分表的數(shù)據(jù)。圖14 卡片再發(fā)行時(shí)積分表更新前圖14卡片再發(fā)行時(shí)候,如果臨時(shí)表中新會(huì)員號(hào)能在積分表中找到對(duì)應(yīng)的記錄,則就不需要另外添加一項(xiàng),只需在該項(xiàng)進(jìn)行更新即可,此圖是更新前積分表的數(shù)據(jù)。圖15 卡片再發(fā)行時(shí)積分表更新后結(jié)果圖15是卡片再發(fā)行時(shí),直接對(duì)積分表中存在的新會(huì)員號(hào)進(jìn)行更新后的數(shù)據(jù)。圖16 卡片再發(fā)行時(shí)獎(jiǎng)勵(lì)積分表更新前圖16是卡片再發(fā)行時(shí)候需要將獎(jiǎng)勵(lì)積分表中以前的會(huì)員號(hào)進(jìn)行更改,此圖為更改前的數(shù)據(jù)。圖17 卡片再發(fā)行時(shí)獎(jiǎng)勵(lì)積分表更新后
51、結(jié)果圖17是獎(jiǎng)勵(lì)積分表會(huì)員號(hào)更改后的狀態(tài)。圖18 程序結(jié)束日志輸出圖18是程序正常運(yùn)行后輸出一個(gè)結(jié)束日志,意思表示程序已經(jīng)正常結(jié)束。5.2積分累計(jì)記錄更新類(lèi)測(cè)試結(jié)果fspb1220模塊的測(cè)試內(nèi)容和過(guò)程基本上和fspb1210測(cè)試內(nèi)容一致,以下只將同fspb1210測(cè)試不同的結(jié)果列出:圖19 當(dāng)日積分記錄表追加前圖19是測(cè)試當(dāng)日積分記錄表能否正常添加,假如起先表中沒(méi)有任何值。圖20 當(dāng)日積分記錄表追加后結(jié)果圖20從臨時(shí)積分表中讀取的記錄,在當(dāng)日積分記錄表中找不到這條記錄,就將其添加,此圖為添加后的結(jié)果。圖21 當(dāng)日積分記錄表更新前圖21當(dāng)日積分記錄表中有此條記錄只需要進(jìn)行更新,此圖為表更新前狀態(tài)
52、。圖22 當(dāng)日積分記錄表更新后結(jié)果圖22當(dāng)日積分表根據(jù)臨時(shí)積分表更新后的結(jié)果。結(jié) 論通過(guò)翻閱資料和實(shí)踐編碼,模塊順利地實(shí)現(xiàn)了對(duì)系統(tǒng)的積分更新和歷史積分記錄,即通過(guò)讀取積分臨時(shí)表對(duì)用戶狀態(tài)表,用戶積分表,獎(jiǎng)勵(lì)積分表和歷史積分記錄更新表進(jìn)行了更新操作,模塊能夠成功地捕捉程序中出現(xiàn)的異常,并對(duì)異常信息進(jìn)行記錄。除此之外還可以對(duì)模塊程序運(yùn)行狀態(tài)進(jìn)行記錄,即程序是否開(kāi)始進(jìn)行更新運(yùn)行,以及程序是否正常運(yùn)行結(jié)束,都會(huì)以一條信息形式記錄到數(shù)據(jù)庫(kù)中,從而滿足商業(yè)軟件要求程序嚴(yán)謹(jǐn)性,無(wú)差錯(cuò)性。系統(tǒng)的設(shè)計(jì)與開(kāi)發(fā)在老師的領(lǐng)導(dǎo)下完全遵從對(duì)日軟件開(kāi)發(fā)的標(biāo)準(zhǔn)。系統(tǒng)進(jìn)行了需求分析,概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試等每一部分的學(xué)習(xí)和實(shí)踐。系統(tǒng)的設(shè)計(jì)階段有舉足輕重的地位,設(shè)計(jì)階段的質(zhì)量?jī)?yōu)劣,直接影響到以后系統(tǒng)質(zhì)量。需求是否準(zhǔn)確,影響到最后系統(tǒng)是否能達(dá)到用戶的要求,概要設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)的設(shè)計(jì),影響數(shù)據(jù)庫(kù)的設(shè)計(jì)是否優(yōu)越,如果設(shè)計(jì)合理,在編碼階段實(shí)現(xiàn)就相對(duì)容易了。而某店積分管理系統(tǒng)是一個(gè)大型的團(tuán)隊(duì)開(kāi)發(fā)項(xiàng)目。團(tuán)隊(duì)合作的概念和團(tuán)隊(duì)精神是非常重要性。如何在一個(gè)團(tuán)隊(duì)里尋找到自己的位置和與人相處是團(tuán)隊(duì)開(kāi)發(fā)的重要環(huán)節(jié)之一。
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 以品牌故事吸引顧客的零售連鎖計(jì)劃
- 【江蘇專(zhuān)版】2020三維設(shè)計(jì)地理一輪復(fù)習(xí)-課時(shí)跟蹤檢測(cè)(三十一)-資源的跨區(qū)域調(diào)配-以南水北調(diào)為例
- 2025年度消防設(shè)備采購(gòu)及安裝分包合同3篇
- 品牌指數(shù)及評(píng)價(jià)方法
- 2021年《綠色產(chǎn)品認(rèn)證檢查員注冊(cè)準(zhǔn)則(第1版第1次修訂)》
- 飛行器操控系統(tǒng)與模擬訓(xùn)練考核試卷
- 雕塑工藝品設(shè)計(jì)與創(chuàng)新思維訓(xùn)練考核試卷
- 軟件開(kāi)發(fā)專(zhuān)業(yè)拓展課程考核試卷
- 有機(jī)合成工藝創(chuàng)新-洞察分析
- 夜場(chǎng)支付安全監(jiān)管-洞察分析
- 2025年初級(jí)會(huì)計(jì)職稱《經(jīng)濟(jì)法基礎(chǔ)》全真模擬及答案(解析3套)
- 《健康社區(qū)評(píng)價(jià)標(biāo)準(zhǔn)》
- 戶外市場(chǎng)研究報(bào)告-魔鏡洞察-202412
- 浙江省金華市金東區(qū)2023-2024學(xué)年九年級(jí)上學(xué)期語(yǔ)文期末試卷
- 【7地星球期末】安徽省合肥市包河區(qū)智育聯(lián)盟校2023-2024學(xué)年七年級(jí)上學(xué)期期末地理試題(含解析)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專(zhuān)業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之2:“1至3章:范圍、術(shù)語(yǔ)和定義”(雷澤佳編制-2025B0)
- (2021)最高法民申5114號(hào)凱某建設(shè)工程合同糾紛案 指導(dǎo)
- 【9物(人)期末】安慶市宿松縣2023-2024學(xué)年九年級(jí)上學(xué)期期末考試物理試題
- 導(dǎo)航通信一體化考核試卷
- 甘肅省會(huì)寧二中2025屆高考仿真模擬數(shù)學(xué)試卷含解析
- 尊重學(xué)術(shù)道德遵守學(xué)術(shù)規(guī)范學(xué)習(xí)通超星期末考試答案章節(jié)答案2024年
評(píng)論
0/150
提交評(píng)論