<nav id="w0g0m"><code id="w0g0m"></code></nav>
  • <xmp id="w0g0m">
    <xmp id="w0g0m"><nav id="w0g0m"></nav><menu id="w0g0m"><strong id="w0g0m"></strong></menu>
  • <xmp id="w0g0m">
  • <nav id="w0g0m"></nav>
    <menu id="w0g0m"><menu id="w0g0m"></menu></menu>
    1. 網站地圖
    2. 設為首頁
    3. 關于我們
    ?

    某數字證書公司客戶業務信息管理系統的設計與實現

    發布時間:2023-07-19 10:35
    目錄
    1緒論 1
    1.1研究背景和意義 1
    1.1.1研究背景 1
    1.1.2研究意義 1
    1.2國內外發展現狀 2
    1.3本文的組織結構 2
    2系統相關技術 3
    2.1DELPHI 技術介紹 3
    2.2C/S 結構模式概述 3
    2.3SQL SERVER 數據庫 4
    2.4本章小結 5
    3客戶業務信息管理系統需求分析 6
    3.1系統業務需求分析 6
    3.1.1組織結構分析 6
    3.1.2業務流程分析 7
    3.2系統功能需求分析 11
    3.2.1系統功能需求 12
    3.2.2系統功能的用例圖 13
    3.3 系統非功能性需求 15
    3.3.1性能需求 15
    3.3.2安全需求 15
    3.3.3可保障需求 16
    3.4本章小結 16
    4客戶業務信息管理系統設計 17
    4.1總體結構設計 17
    4.2系統主要功能模塊設計 18
    4.2.1證書業務受理功能的設計 18
    4.2.2客戶信息審核功能的設計 20
    4.2.3綜合業務查詢功能的設計 21
    4.2.4批量數據管理功能的設計 22
    4.2.5系統后臺維護功能的設計 23
    4.3數據庫設計 23
    4.3.1數據庫需求分析 23
    4.3.2數據庫設計結果 26
    4.3.3數據庫安全設計 29
    4.4 本章小結 30
    5客戶業務信息管理系統實現與測試 31
    5.1系統主要模塊的實現 31
    5.1.1證書業務受理功能的實現 31
    5.1.2客戶信息審核功能的實現 37
    5.1.3綜合業務查詢功能的實現 40
    5.1.4批量數據管理功能的實現 42
    5.1.5系統后臺維護功能的實現 50
    5.2系統部分模塊的實現 55
    5.2.1系統用戶登錄的實現 56
    5.2.2用戶密碼修改的實現 59
    5.3 系統測試 60
    5.4本章小結 63
    6總結與展望 64
    6.1本文工作總結 64
    6.2未來工作展望 64
    參考文獻 66
    致 謝 69
    Contents
    11ntroduction 1
    1.1Research background and significance 1
    1.1.1Background 1
    1.1.2Significance 1
    1.2Development status at home and abroad 2
    1.3Organizational structure of this paper 2
    2Related technology 3
    2.1Delphi technology introduction 3
    2.2C/S structure mode overview 3
    2.3SQL Server database 4
    2.4Summary 5
    3Requirements analysis 6
    3.1System business needs analysis 6
    3.1.1Organizational structure analysis 6
    3.1.2Business process analysis 7
    3.2System function requirement analysis 11
    3.2.1System function requirements 12
    3.2.2Use case diagram of system function 13
    3.3System non-functional requirements 15
    3.3.1Performance requirements 15
    3.3.2Safety requirements 15
    3.3.3Guaranteed demand 16
    3.4Summary 16
    4System design 17
    4.1Overall structural design 17
    4.2System main function module design 18
    4.2.1Design of certificate business acceptance function 18
    4.2.2Design of customer information review function 20
    4.2.3Design of integrated business query function 21
    4.2.4Design ofbatch data management functions 22
    4.2.5Design of system background maintenance function 23
    4.3Database design 23
    4.3.1Database requirements analysis 23
    4.3.2Database design result 26
    4.3.3Database security design 29
    4.4Summary 30
    5System implementation and testing 31
    5.1Implementation of the main module of the system 31
    5.1.1Implementation of certificate business acceptance function 31
    5.1.2Implementation of customer information review function 37
    5.1.3Implementation of integrated business query function 40
    5.1.4Implementation ofbatch data management functions 42
    5.1.5System background maintenance function implementation 50
    5.2Implementation of part of the system module 55
    5.2.1System user login implementation 56
    5.2.2User password modification implementation 59
    5.3System test 60
    5.4Summary 63
    6Conclusion and future work 64
    6.1Conclusions 64
    6.2Future work 64
    References 66
    Acknowledgment 69
    摘要
    隨著企業的發展,原先手工的管理模式早已經滿足不了當今社會的需求,而 且數據整理非常的麻煩,不易統計。在這種條件下,一個完整準確的客戶業務信 息管理系統是必不可少的,這不僅帶來了方便快捷的辦公體驗,同時也為公司節 約了大量的人力資源成本。
    客戶業務信息管理系統主要有以下三個方面的內容:一是消費者自己的信息; 二是我國境內依法注冊登記的企業、個體工商戶、事業單位、機關、社會組織及 其他組織機構的基本信息;三是關于消費者購買數字證書的信息。由于顧客數量 的持續上漲、業務類型的多樣化以及顧客購買量的大幅增加,因此該系統包含很 多信息數據的管理。只要你準確的輸入信息、數據,報表就能快速、準確地顯示 出信息,極大的提高工作效率。
    本研究針對某一數字證書公司的業務需求,探討了客戶業務信息管理系統開 發的途徑、手段和方法,具體而言,使用Delphi作為開發語言,采用C/S模式和 SQL Server數據庫。站在業務需求分析的角度上來構想該系統的功能模塊,規劃 出證書業務受理、客戶信息審核、綜合業務查詢、批量數據管理和系統后臺維護 這五個方面。對客戶業務信息管理系統進行了總體結構設計和主要功能模塊設計, 介紹了 E-R圖的設計,建立了系統數據庫表結構,給出了系統的效果顯示圖及實 現的關鍵代碼。經過重復嚴格的測試,能滿足某一數字證書公司的業務正常使用。 論文最后對所做的研究工作進行了總結,對系統當中的一些不足問題提出了展望, 并且希望能夠在今后的研究過程中進一步的工作進行完善。
    關鍵詞:客戶業務;信息系統;Delphi; C/S
     
    如圖3-4所示,補辦申請是指客戶遺失了數字證書、人為損壞了數字證書或正 常使用超過一年后出現的壞損。其流程是證書用戶填寫數字證書申請表,錄入員 對信息初審,應用表單是否填寫完成,審核對應業務所需有效的證件復印件(加 蓋公章或執業章)與數字證書主題內容是否一致,若不一致,則需先走變更申請 流程后才能證書補辦;若一致,刪除原數字證書介質編碼,存盤最新的數字證書 介質編碼并告知客戶繳費。收費員看到審核員已審核的數據后收取客戶費用并開 發票,審核員看到客戶出示的發票后簽發數字證書,最后客戶簽收數字證書及發 票。
    (4)變更申請
    變更申請:是指變更數字證書里信息或者密鑰。客戶證件號碼、證書名稱或 證書中包含的信息有變化則需要對數字證書進行變更,變更申請不能變更數字證 書的所有信息,否則屬于新開申請。變更需要的資料為需要變更內容的證件和申 請變更的申請表。
     
     
    如圖 3-5 所示,變更申請是指客戶現有的身份信息與持有的數字證書中的身份 信息不一致,其流程是證書用戶填寫數字證書申請表,錄入員對信息初審,應用 表單是否填寫完成,審核對應業務所需原件及證明文件,若數字證書(即 UKEY) 的證書主題內容全變了,則需要重新開戶;若數字證書(即UKEY)的證書主題 內容個別信息變了,修改信息后存盤并告知客戶繳費。收費員看到審核員已審核 的數據后收取客戶費用并開發票,審核員看到客戶出示的發票后簽發數字證書, 最后客戶簽收數字證書及發票。
    3.2系統功能需求分析
    從某數字證書公司的實際情況出發,系統功能需求主要解決數字證書業務的 需求,完成客戶證書的申請延期等功能。此外,客戶業務信息管理系統還可以管 理和維護客戶信息,提供便捷的證書申請和批準流程[12]。客戶業務信息管理系統 采用客戶端/服務器端結構,業務操作員需要登錄系統來處理證書申請、制作證書 和證書管理等事務,客戶端與服務器間采用安全通信協議進行加密通信。
    主要功能包括:
    (1)操作員的授權和管理;
    (2)申請數字證書;
    (3) 本系統中的所有用戶身份記錄的管理與維護;
    (4) 核查客戶身份信息以確保其與客觀事實相符;
    (5) 下載數字證書;
    (6) 數字證書的頒發和管理[13]。
    3.2.1系統功能需求
    系統功能邊界劃分為證書業務受理功能、客戶信息審核功能、綜合業務查詢 功能、批量數據管理功能和系統后臺維護功能。
    1 、證書業務受理功能
    證書業務受理,主要是依據客戶的需求,簽發支持其應用的數字證書。業務 員操作員登錄客戶業務信息管理系統進行相關操作,提交證書申請,數字證書認 證系統收到客戶業務信息管理系統的請求并處理,返回帶密鑰的數字證書調用控 件,將雙證書安裝到證書介質中,系統的密鑰存儲介質采用國家密碼管理局審批 通過的海泰方圓 HaiKey3000 智能密碼鑰匙。
    2、客戶信息審核功能
    客戶信息審核,就是讓錄入員提交未經審核的證書申請,審核員選擇并查看 待審核證書申請的詳細信息,檢查數據的有效性,及時返回證書申請結果。主要 有以下兩種結果:
    (1)審核通過:檢查錄入員提交的證書申請具體信息是否正確,確認無誤后, 已審核通過的證書記錄自動從客戶審核信息表傳輸到基本和歷史表中,同時封裝 證書申請信息到數字證書認證系統簽發真正的申請證書。
    (2)審核不通過:在備注里指明不通過的原因,及時告知錄入員,錄入員根 據備注修改后,重新提交審核。
    3、 綜合業務查詢功能
    綜合業務查詢功能是根據相應查詢條件查詢信息,查詢的是客戶歷史信息表 數據,形成數據明細列表,可將查詢的結果按照一定的格式導出到Excel電子表格 當中,為與批量客戶數據核對及結算報表提供依據。
    財務人員可以選擇當日時間、該辦證點和操作時間查詢,收取客戶費用,等 當日業務結束后,根據自動統計的結果,核對金額與發票。根據不同的批量服務 商,自定義設置報表參數與其核對。
    4、 批量數據管理功能
    批量數據管理功能主要用于同一單位統一給員工辦理一批數字證書或者同一 應用辦理一批數字證書,客戶提供電子文件的證書信息,同時自身也要確保其電 子文檔數據的準確性,對電子檔的格式為Excel文檔即可,沒有很嚴格的要求。該 功能主要是數據的批量導入與導出,錄入員將Excel格式的申請表數據導入到本系 統,審核員在數據表內容瀏覽審核,需要符合數字證書認證中心制證系統的標準, 以特別指定的格式批量導出XML數據文檔,實現了大批量的證書申請會自動且連 續地簽發。
    由于批量數據的導入不需要二次審核,為了保證數據庫中的數據準確性,錄 入員選擇需要導入的Excel數據,導入客戶業務信息系統,審核員數據表內容瀏覽, 可雙擊對記錄進行修改,選擇相同字段后,導出XML文件批量制證,實現批量數 據管理,應對需要批量制證的服務商。
    5、系統后臺維護功 系統后臺維護功能主要為系統管理員提供管理系統平臺的輔助管理功能。它 分別是用戶權限管理、代碼維護管理和數據庫維護管理。在系統開發流程中,系 統后臺維護功能的成熟度是評價系統成熟度的關鍵指標。系統在其生命周期中, 可能需要修復和升級,系統后臺維護功能既方便管理和維護,也控制了系統的進 化。
    3.2.2系統功能的用例圖
    (1)證書業務受理用例
    證書業務受理是錄入員根據客戶基本信息表為基礎,進行新開戶和客戶信息 變更操作,實現數字證書的新開、延期、補辦和變更等業務的受理。新開戶可以 新增證書記錄,在審核員未審核通過之前修改或是刪除記錄;客戶信息變更可以 查詢證書,修改客戶基本信息表。證書業務受理用例圖如圖3-6 所示。
     
    圖 3-6 證書業務受理用例圖
     
    (2)客戶信息審核用例
    客戶信息審核用例圖如圖 3-7 所示。客戶信息審核是審核員查詢未審核記錄, 審核數據的有效性,修改或刪除歷史信息表記錄:錄入員查詢審核未通過記錄,
    修改后重新提交審核。
     
    圖 3-7 客戶信息審核用例圖
     
    3)綜合業務查詢用例
    綜合業務查詢是選擇所需條件查詢系統已完結的業務情況,自動統計總費用 與總業務筆數,自定義格式導出 Excel 報表。數據員按需查詢制作統計報表,收費 員按需查詢核對金額與發票。綜合業務查詢用例圖如圖 3-8 所示。
     
    圖 3-8 綜合業務查詢用例圖
     
    (4)批量數據管理用例
    批量數據管理是導入Excel表,批量審核新開戶信息,可以修改或是刪除記錄, 最后實現批量簽發制證。錄入員導入Excel數據,審核員瀏覽審核數據,單條記錄 選中修改或是刪除,生成批量XML文件批量制證。批量數據管理用例圖如圖3-9 所示。
     
     
    (5)系統后臺維護用例
    系統后臺維護主要是用戶權限管理、代碼維護管理和數據庫維護管理。其中 每一個模塊都可以新增、修改和刪除記錄,數據庫維護管理比其他管理還多一個
    查詢功能。系統管理員有系統后臺維護的所有權限,檔案員只有數據庫維護管理
    的查詢與修改權限。系統后臺維護用例圖戈口圖3-10所示。
     
     
    3.3系統非功能性需求
    通常來講,系統的非功能性需求是系統在運行的過程中排除功能性需求以外 的性能需求,占據著系統一個相對比較大的比例。所以,客戶業務信息管理系統 分別從性能、安全性和可保障性方面來分析其非功能性。
    3.3.1性能需求
    能夠容納100個用戶同時在線,并且不超30秒的時間去響應不同的業務操作,
    同時還支持 500 并發,表現穩定。
    3.3.2安全需求
    使用操作員權限控制、操作員身份認證和其他技術,依據具體的工作內容, 每一個操作員被賦予不同的操作權限。在操作員進行任何的操作之前,應執行身 份認證與權限的檢查,預先做好未經授權或其他非法操作的防備。與此同時,同 步對操作員進行日志記錄,以便日后的審計與跟蹤 [13]。
    客戶業務信息可通過系統所制定的備份策略和備份方式,定期地將這些信息 備份,以便在必要的時候恢復。
    3.3.3可保障需求
    合理的系統設計以及軟件能夠適應長期的、多樣的運行環境,可靠地保證了 客戶業務信息管理系統高效、準確運轉,同時系統具有故障診斷運行模式可實現 檢錯、糾錯功能。為了能應付公司業務發展的變化,設計和實現應該具有一定的 可延展性,以此來保障日后擴展業務范圍和增加各種應用程序的需要。
    3.4本章小結
    在這一章中,對客戶業務信息管理系統進行需求分析,采用流程圖來介紹業 務流程,并分析具體功能,為系統的詳細設計打下堅實的基礎。
    4客戶業務信息管理系統設計
    客戶業務信息管理系統是根據辦理數字證書業務正常發生而開發的實用型系 統,該系統功能齊全,滿足了數字證書業務辦理的需求,保有明顯的實用性價值。 這個章節主要涉及系統功能模塊劃分和數據庫設計。
    4.1總體結構設計
    在了解客戶業務信息管理需求分析的基礎上,本文分析并設計了一個數字證 書公司的客戶業務信息管理系統。經過詳細的需求分析,其總體結構設計如圖 4-1
     
     
    在上面的總體結構設計中,具有如下的特點:
    (1) 系統采用 C/S 架構設計,包含用戶客戶端程序和系統服務器。客戶端和 服務器通過公司內部局域網連接[14],采用 VPN 遠程訪問技術,可以非常方便地增 加業務受理點。
    (2) 高效性:適合大量的證書發放業務。
    (3) 豐富的策略控制規則和許可規則,為每個操作員執行相應的功能和權限 設置,因此提供了更大的安全性、靈活性和易用性[15]。
    (4) 版面設計主要采用一欄式版式,又稱為“單欄式版式”,由上至下瀏覽, 個別采用兩欄式版式,在主要內容區的旁邊增加一欄輔助區,關聯性導航。
    4.2系統主要功能模塊設計
    功能設計是系統架構的靈魂。系統開發人員和客戶都關心系統構建的功能體 系結構。通過對某一數字證書公司業務正常發生的深入研究,分析了系統的功能 需求。系統將功能劃分為五個模塊,包括證書業務受理功能模塊、客戶信息審核 功能模塊、綜合業務查詢功能模塊、批量數據管理功能模塊和系統后臺維護功能 模塊。
    4.2.1證書業務受理功能的設計
    證書業務受理功能實現對數字證書的制作、發放、管理和監控等,將其分為 新開戶和客戶信息變更兩類操作,新開戶處理新開申請,客戶信息變更則處理延 期、補辦、變更和重新開戶。新開戶錄入客戶基本信息表,客戶信息變更只需要 部分證書主題內容作為查詢條件,就能查到該客戶的基本信息表,可以對證書信 息進行添加、刪除和修改。
    客戶基本信息表如下:
    起始時間:新開戶系統默認當天日期,不可更改,客戶信息變更默認新開戶 日期,可以修改,重新開戶更改為當日日期。
    有效期:新開戶系統默認390天,不可更改,客戶信息變更可點擊“加一年”, 以年為倍數疊加,延長失效時間。
    到期時間:依據起始時間和有效期,系統自動計算生成,新開戶和客戶信息 變更都不可更改。
    業務類型:證書的應用項目,包括:國稅、地稅、公共資源,國土資源、社 保、衛生、住建等。
    服務商:主要區分一般客戶與批量客戶。
    通用名:通用標識,個人或是機構,個人是客戶的姓名,機構是統一社會信 用代碼。
    序號:新開戶用來檢測該客戶是否已存在,如已存在,查詢客戶已辦所有業 務,提供客戶合理建議。
    辦卡序號:默認辦卡序號是 1,如已辦過就依次往后推。
    單位名稱:證書申請機構的名稱。
    身份證號:個人的身份證號碼。
    辦證點:區分各個辦證點,一般地級市一個點,省會城市多個點。
    經辦人:辦理當次數字證書人的姓名。
    聯系電話:經辦人的聯系電話。
    聯系地址:機構地址或是個人的住址。
    檔案號:檔案管理編碼。 介質編碼:海泰方圓密鑰的介質編碼。 費用:申請數字證書的費用。 備注:附加必要的注解說明。 操作類型:分為新開、延期、補辦、變更等。 申請狀態:分為未審核和已審核兩種,新開戶默認未審核,不顯示該選擇窗 口,客戶信息變更默認顯示已審核,處理業務后選擇未審核。
    (1)新開戶 新開戶主要是錄入員登錄系統主界面后,點擊“日常工作”,進入“新開戶”頁面, 默認包括有效期 390 天、起始時間是今天和操作類型是新開戶,選擇業務類型, 業務類型對應相應的證書模板。選擇服務商后進入詳細頁面,業務類型和服務商 為必選項,不選彈出提示框提醒。詳細頁面中“客戶基本信息”采用高拍儀掃描輸入, 手工補錄填寫,可以選擇保存添加或是取消重置,在審核員還未審核前,還可以 在“本次操作記錄列表”中修改或是刪除,產生證書申請信息至客戶審核信息表中。 新開戶功能結構圖如圖4-2所示。
    新開戶
     
    圖 4-2 新開戶功能結構圖
     
    (2)客戶信息變更
    錄入員登錄系統主界面后,點擊“日常工作”,進入“客戶信息變更”頁面,復制 密鑰中證書的關鍵信息查詢,單擊目標證書記錄,可在“歷史信息表業務操作明細 記錄”看到證書的詳細信息,雙擊目標證書記錄進入修改狀態,“基本信息表證書業 務操作”顯示該證書最近一次操作的信息。根據操作類型的不同填寫相應的更新信 息,延期:延長有效期;補辦:更改數字證書介質編碼;變更:修改具體內容; 重新開戶:當日作為起始時間。客戶信息變更功能結構圖如圖 4-3 所示。
     
     
    客戶信息變更
     
     
     
    4.2.2客戶信息審核功能的設計
    客戶信息審核是指審核員登錄客戶業務信息管理系統后,點擊“日常工作”,進 入“客戶信息審核”頁面,選擇待審核的申請信息,雙擊進入修改狀態,檢查數據有 效性,是否允許申請此證書。客戶信息審核功能結構圖如圖4-4所示。
    客戶信息審核
     
    圖 4-4 客戶信息審核功能結構圖
    1)查詢條件:主要有申請狀態和辦證點,申請狀態分為未審核和審核未通
    過兩種,辦證點是為了區分各個辦證點,一般地級市一個點,省會城市多個點。 審核員選擇未審核和該辦證點查找,錄入員選擇審核未通過和該辦證點查找。
    (2) 客戶審核信息表數據查詢結果:顯示符合條件的查詢結果,包括通用名、 辦卡序號、單位名稱、起始時間、有效期、操作類型、業務類型、服務商、操作 時間和備注。
    (3) 客戶審核信息表證書業務操作:鼠標移至某條客戶信息記錄,雙擊進入 修改狀態,審核員檢查數據的有效性,如果不通過,申請狀態選擇審核未通過并 備注原因,錄入員根據備注修改后重新提交審核;如果通過,申請狀態選擇已審 核并存盤,批準的證書客戶信息記錄從客戶審核信息表傳輸到客戶基本信息表和 客戶歷史信息表,同時封裝證書申請信息到數字證書認證系統簽發真正的申請證 書,數字證書認證系統解析客戶業務信息系統發來的申請信息,檢查審核員是否 有申請此證書的權限,權限檢查通過后,返回雙證書和被加密的私鑰,調用控件, 將雙證書安裝到介質中。
    4.2.3綜合業務查詢功能的設計
    綜合業務查詢,指具有查詢權限的操作員登錄客戶業務信息管理系統進入“綜 合業務查詢”頁面,按需挑選查詢條件,瀏覽限定的詳細信息列表,與此同時顯示 記錄條數和總費用,還可以自定義導出Excel表格。綜合業務查詢功能結構圖如圖 4-5所示。
    綜合業務查詢
     
    (1)查詢條件:可以通過辦證時間、審核人、業務類型、服務商、操作類型、 辦證點以及選擇排序字段進行查詢。
    辦證時間:業務操作的起止時間,以時間控件進行選擇,查詢該時間段內所 做的證書。系統支持“按年份”、“按年度”、“按月度”、“按日”四種統計方式,默認 為“按日”查詢。
    選擇排序字段:默認按操作時間排序查詢,也可以選擇任一客戶歷史信息表
    字段查詢。 審核人:默認按全部查詢,也可以單獨選擇系統中有的某一審核人查詢。 業務類型:默認按全部查詢,也可以選擇某一業務類型查詢。 服務商:默認按全部查詢,也可以就某一服務商查詢。
    操作類型:默認按全部查詢,包括新開戶、延期、變更、補辦等。 辦證點:默認按全部查詢,也可以單獨查詢某個辦證點。
    (2) 數據明細列表:數據明細列表顯示通用名、辦卡序號、單位名稱、身份 證號、業務類型、服務商、聯系地址、辦證點、操作類型、費用、備注、審核人、 操作時間、經辦人、聯系電話、起始時間、有效期、到期時間、介質編碼和檔案 號。
    (3) 報表導出:查詢結果可以隱藏字段,也可以多字段排序,根據不同的批 量客戶,自定義需要的格式導出 Excel 電子表格,核對數據,開具發票并結算費用。
    4.2.4批量數據管理功能的設計
    批量數據管理,指錄入員登錄客戶業務信息管理系統,點擊“日常工作”,進入
    “新開戶”頁面,選擇“業務類型”和“服務商”后點擊“導入Excel數據”。Excel數據可 以是錄入員按照客戶基本表的格式把數據批量錄入Excel表中,也可以去告知服務 商所需信息,由服務商提供。審核員在數據表內容瀏覽審核,分固定信息、特殊 字段選擇和導入字段選擇導入,重復通用名自動往后編辦卡序號,生成批量XML 文件批量制證。批量數據管理功能結構圖如圖4-6所示。
    批量數據管理
     
    圖 4-6 批量數據管理功能結構圖
    1)數據表列表:勾選需要導入的 Excel 電子表格。
    2) 數據表內容瀏覽:審核員瀏覽審核數據,可對某個記錄進行修改。
    3) 固定信息:包括起始時間、有效期、到期時間、服務商、業務類型、辦 證點和費用。起始時間、有效期、到期時間、服務商和業務類型是不可更改的, 辦證點需要選擇,費用需要手動輸入。
    (4) 特殊字段選擇:通用名作為關鍵字字段,自動彈出重復通用名記錄以供 再次確認,確認無誤后自動往后編辦卡序號。
    (5) 導入字段選擇:逐一選擇或同名選擇后,對應顯示接收字段和導入字段 清單,接收字段是系統里的字段,導入字段是Excel電子表格里的字段。同名選擇 后,一一對應顯示接收字段和導入字段有相同的名稱,如發現多選可以單個刪除, 如發現少選可以通過逐一選擇添加。
    4.2.5系統后臺維護功能的設計
    系統后臺維護既實現了控制系統中用戶和角色的設置,還實現了對用戶和角 色權限的控制,權限最大程度地滿足系統的需要。與此同時,后臺將實現常用代 碼的維護和管理,確保了該系統的靈活性[16],加上對數據庫的維護管理,大大增 加了系統的整體性能。
    (1) 用戶權限管理
    用戶權限管理指的是利用客戶業務信息管理系統對用戶信息進行管理。系統 管理員可以將用戶添加到系統中,用戶基本信息包含了用戶帳號、用戶名稱、登 錄密碼、顯示序列和備注,勾選相匹配的權限,權限有業務操作權限、數據查詢 權限和系統維護權限。在工作中用戶的崗位發生變動或是信息發生改變時,該用 戶在系統中的基本信息就需要系統管理員來修改或是刪除。
    (2) 代碼維護管理
    代碼維護管理主要包括證書模板代碼維護、操作類型代碼維護、業務類型代 碼維護、服務商代碼維護和辦證點代碼維護,分別設置代碼和名稱,操作類型代 碼維護另加一個收費標準,業務類型代碼維護關聯證書模板代碼維護,業務類型 代碼的設置還對應有證書模板代碼和證書模板名稱,系統管理員可以對這些代碼 維護設置信息進行添加、修改和刪除。
    (3)數據庫維護管理
    數據庫維護管理指使用通用數據庫管理系統登錄SQL Server服務器,對數據 備份\恢復,也可以發布命令查詢,編輯查詢結果,對記錄進行添加、修改及刪除。
    4.3 數據庫設計
    4.3.1數據庫需求分析
    經過調研與分析,客戶業務信息管理系統涵蓋的信息有十種,每一種信息即 是一個數據實體,而每個數據實體包含了若干個屬性, E-R 圖是描述數據實體及其 屬性的基本工具。客戶審核信息、客戶歷史信息數據實體與屬性同客戶基本信息, 客戶審核信息主要存儲錄入員錄入還未審核的業務數據,如果審核員審核了此條 業務數據則存儲到客戶基本信息和客戶歷史信息中,同時客戶審核信息將自動刪 除此條業務數據。客戶歷史信息存儲的是客戶的所有記錄,客戶在CA公司操作的 所有記錄都存儲在客戶歷史信息表中,方便查詢這條記錄所有操作,包含操作人、 操作時間、操作類型、業務類型等,相當是這條記錄的所有日志信息,后續查詢 歷史記錄一目了然。
    (1)客戶基本信息數據實體與屬性:包含的信息比較多,客戶基本信息數據 實體的屬性有:通用名、辦卡序號、單位名稱、身份證號、聯系地址、辦證點代 碼、辦證點、經辦人、聯系電話、起始時間、有效期、到期時間等。客戶基本信 息數據實體E-R圖如圖4.7所示。
     
    圖 4-7 客戶基本信息數據實體 E-R 圖
     
    (2)操作類型代碼數據實體與屬性:代碼、名稱、收費標準和是否選用,名 稱主要有新開、延期、補辦、變更等。操作類型代碼數據實體E-R圖如圖4.8所示。
     
    圖 4-8 操作類型代碼數據實體 E-R 圖
     
    (3)服務商代碼數據實體與屬性:代碼、名稱和是否選用,名稱主要有個人
    和批量服務商的名稱。服務商代碼數據實體的E-R圖如圖4.9所示。
     
     
    (4)辦證點代碼數據實體與屬性:代碼、名稱和是否選用,名稱為每個地市
    的辦證點名稱。辦證點代碼數據實的 E-R 圖如圖 4.10所示。
     
    圖 4-10 辦證點代碼數據實體 E-R 圖
     
    (5)業務類型代碼數據實體與屬性:代碼、名稱、證書模板代碼、證書模板 名稱和是否選用,名稱主要有國稅、地稅、公共資源,國土資源、社保、衛生、 住建等,每個業務類型名稱對應不同的證書模板。業務類型代碼數據實體E-R圖 如圖 4.11 所示。
     
    圖 4-11 業務類型代碼數據實體 E-R 圖
     
    (6)證書模板代碼數據實體與屬性:代碼、名稱和是否選用,名稱主要有營 改增雙證書模板、公共資源雙證書模板、國土資源雙證書模板等。證書模板代碼 數據實體E-R圖如圖4.12所示。
     
    圖 4-12 證書模板代碼數據實體 E-R 圖
     
    (7)用戶設置數據實體與屬性:用戶序號、用戶賬號、用戶名稱、賬號密碼 和備注,用戶賬號是員工名字的拼音簡稱,用戶名稱是員工的中文名字。用戶設 置數據實體E-R圖如圖4.13所示。
     
    (8)用戶權限數據實體與屬性:用戶賬號、菜單組、菜單項和備注,菜單組 有日常工作、綜合業務查詢和系統后臺維護,菜單項有新開戶、客戶信息變更、 客戶信息審核、綜合業務查詢等。用戶權限數據實體E-R圖如圖4.14所示。
     
     
    4.3.2數據庫設計結果
    客戶業務信息管理系統的數據庫是SQLServer 2008,進行需求分析之后,數 據庫表設計結果如下所示:
    (1)客戶基本信息表
    客戶基本信息表主要存儲客戶的基本信息和證書中要求的相關信息。它僅保 存客戶最新的一條業務信息,可以擴展。這個表包含很多字段,有兩個主鍵,分 別是通用名和辦卡序號,辦卡序號的默認值為1,類型為int,通用名一樣的情況 下累加,通用名字段定義長度為50的可變字符類型。
    該表只有單位名稱、身份證號、備注和檔案號可以為空,其他都不能為空。 如果客戶是來辦理單位數字證書的,單位名稱就要必填,不能填身份證號;如果 客戶是來辦理個人數字證書的,身份證號就要必填,不能填單位名。檔案號是客 戶辦理數字證書的紙質材料編碼,檔案員于客戶辦理業務的第二日統一分類歸檔 填寫,不需要在辦理數字證書的時候就編寫檔案號。備注是為附加必要的注解說 明而留的一欄,因此以上四類可以不為空。
    在對上述信息進行整理后,得到了客戶基本信息表的表結構。每個字段的名 稱、長度、類型、主鍵和其他信息都有清楚的描述[1]。客戶基本信息表的表結構如 下表 4-1 所示,設置表格結構是設置表格的第一步。
     
    表 4-1 客戶基本信息表
    字段名稱 數據類型及大小 備注 默認值
    通用名 varchar(50) 主鍵,不能為空
    辦卡序號 int(4) 主鍵,不能為空 1
    單位名稱 varchar(80) 可以為空
    身份證號 varchar(20) 可以為空
    聯系地址 varchar(80) 不能為空
    辦證點代碼 varchar(3) 不能為空
    辦證點 varchar(30) 不能為空
    經辦人 varchar(10) 不能為空
    聯系電話 varchar(30) 不能為空
    起始時間 datetime(8) 不能為空 getdate()
    有效期 int(4) 不能為空 390
    到期時間 datetime(8) 不能為空 dateadd(day,390,getdate())
    費用 money(8) 不能為空 0
    操作類型代碼 varchar(3) 不能為空
    操作類型 varchar(20) 不能為空
    業務類型代碼 varchar(6) 不能為空
    業務類型 varchar(20) 不能為空
    服務商代碼 varchar(6) 不能為空
    服務商 varchar(20) 不能為空
    審核人 varchar(10) 不能為空
    操作時間 varchar(20) 不能為空
    備注 varchar(100) 可以為空
    檔案號 varchar(20) 可以為空
    申請狀態 varchar(10) 不能為空
     
    (2)操作類型代碼表 操作類型代碼表用于記錄證書業務相關操作,與費用結合。代碼作為該表的 主鍵,代碼字段的類型是可變字符型,長短是3。名稱也是可變字符型,占20個 存儲單位。收費標準采用money類型,在數據表顯示前面多加了一個壬樣式的符 號,看上去舒服,其實跟float是同類型數據,其默認值是0。是否選用的默認值 為是,字段的類型是可變字符型,長度是2,顯示效果是勾選框。把上述描述信息 進行整理,就得到了如下表4-2所示的操作類型代碼表的表結構。
    表 4-2 操作類型代碼表
    字段名稱 數據類型及大小 備注 默認值
    代碼 varchar(3) 主鍵,不能為空
    名稱 varchar(20) 不能為空
    收費標準 money(8) 不能為空 0
    是否選用 varchar(2) 不能為空
    (3)服務商代碼表
    服務商代碼表用于同一業務記錄證書不同的使用者。這個表都不能為空,字 段的類型都是可變字符型。代碼是主鍵,長度是6,是操作類型和辦證點代碼長度 的一倍,其擴展的空間比較大。整理上述信息,以此獲得服務商代碼表的表結構, 如表4-3 所示。
    表 4-3 服務商代碼表
    字段名稱 數據類型及大小 備注
    代碼 varchar(6) 主鍵,不能為空
    名稱 varchar(20) 不能為空
    是否選用 varchar(2) 不能為空
     
    (4)辦證點代碼表
    辦證點代碼表用于新增業務受理點,代碼是主鍵,且不能為空,長度是 3。名 稱的類型是可變字符型,也不能為空,占30個存儲單位。是否選用的默認值為是, 也不能為空,長度僅為 2。對上述信息進行整理以獲得辦證點代碼表的表結構,如 表 4-4 所示。
    表 4-4 辦證點代碼表
    字段名稱 數據類型及大小 備注 默認值
    代碼 varchar(3) 主鍵,不能為空
    名稱 varchar(30) 不能為空
    是否選用 varchar(2) 不能為空
     
    (5)業務類型代碼表
    業務類型代碼表用于登記各種業務種類,與簽發系統中的證書模板一一對應。
    代碼是主鍵,定義成長度為 6 的可變字符類型,不能為空。證書模板代碼是外鍵, 它的類型為int,長度是4,默認值是101。名稱和證書模板名稱都是長度為30的 可變字符類型,且都不能為空。是否選用的默認值為是,同樣是不能為空,長度 為 2。把上述信息進行整理,業務類型代碼表的表結構如下表 4-5所示。
    表 4-5 業 務類型代碼表
    字段名稱 數據類型及大小 備注 默認值
    代碼 varchar(6) 主鍵,不能為空
    名稱 varchar(30) 不能為空
    證書模板代碼 int(4) 外鍵,不能為空 101
    證書模板名稱 varchar(30) 不能為空
    是否選用 varchar(2) 不能為空
     
    (6)證書模板代碼表
    證書模板代碼表的證書模板名稱與證書簽發系統中的模板一致,用于客戶業 務信息管理系統與證書簽發系統對接,從客戶業務信息管理系統導出的數據可以 直接在證書簽發系統中導入。代碼是該表的主鍵,默認值是0,數據類型是into 證書模板代碼表與業務類型代碼表關聯,不能是空的。對上述信息進行整理,從 而得出證書模板代碼表的表結構,如表4-6所示。
    表 4-6 證書模板代碼表
    字段名稱 數據類型及大小 備注 默認值
    代碼 int(4) 主鍵,不能為空 0
    名稱 varchar(30) 不能為空
    是否選用 varchar(2) 不能為空
     
    (7)用戶設置表
    用戶設置表用于存儲客戶業務信息管理系統中的業務操作員相關信息。為了 唯一標識用戶,設置用戶賬號為主鍵,一般是用戶姓名的縮寫拼音簡稱。用戶序 號的默認值是99,類型為int,長度是4。在此表中,用戶賬號、用戶名稱、賬戶 密碼和備注都是可變字符類型,大部分是為了節省空間。整理上述內容,從而得 到用戶設置表的表結構,如表4-7所示[1]。
    表 4-7 用戶設置表
    字段名稱 數據類型及大小 備注 默認值
    用戶序號 int(4) 不能為空 99
    用戶賬號 varchar(20) 主鍵,不能為空
    用戶名稱 varchar(36) 不能為空
    賬號密碼 varchar(90) 不能為空
    備注 varchar(50) 不能為空
     
    (8)用戶權限表 用戶權限表用于給客戶業務信息管理系統中的操作員授予相關業務操作權 限。這個表都不能為空,都是可變字符類型,用戶賬號是主鍵,菜單組、菜單項 和備注的長度都是50個存儲單位。把上述信息整理后,用戶權限表的表結構如下 表 4-8 所示。
    表 4-8 用戶權限表
    字段名稱 數據類型及大小 備注
    用戶賬號 varchar(20) 主鍵,不能為空
    菜單組 varchar(50) 不能為空
    菜單項 varchar(50) 不能為空
    備注 varchar(50) 不能為空
     
    4.3.3數據庫安全設計
    為了安全起見,采用服務器自帶的正版Windows 2008 Server標準版,起到了 一定的穩定系統與堵住安全漏洞的作用。 Windows 2008 Server 標準版在默認情況 下會安裝一些常用的組件,根據安全原則“最少的服務+最小的權限=最大的安全”。
    (1) 權限控制
    大型數據庫管理系統提供分層訪問控制。這些權限控制方法包括由各種權限 和特權形成的樹狀層次結構,高級的權限和特權能夠管理低級權限和特權[17]。按 照數據庫系統中不同人員的不同角色,從數據庫實例到數據庫表,給予數據庫人 員不同的權限和特權,以確保每個人只能操作自己能夠操作的對象。數據庫訪問 控制可以防止非法用戶訪問和修改數據[18]。
    通過充分利用數據庫本身提供的權限控制機制,可以防止數據庫中的數據被 非法訪問(包括未經授權的訪問),從而增強用戶數據的安全性[19]。
    (2) 服務配置
    服務是服務器所提供的服務項目,為優化服務器資源,同時也杜絕一些安全 隱患,把不必要的服務關閉與否直接影響到主機的安全。為了保證安全,所有機 器只開放與應用軟件有關的服務,只在系統上安裝了“附件+通信”及必要的索引服 務,關閉了時間同步、自動更新、網絡共享等服務。
    (3) 數據完整性和一致性保護
    數據庫本身提供了一系列數據的一致性和完整性的保護措施,例如使用約束 和觸發器來提供數據完整性保護,避免寫入非法數據在插入、刪除和修改數據庫 時提供帶有事務概念的數據一致性保護[20]。對于分布式數據,數據庫還提供了兩 階段提交技術,以確保分布式數據的完整性和一致性[21]。
    4.4本章小結
    本章詳細介紹了系統的總體結構設計、主要功能模塊設計和數據庫設計,為 系統的實現打下了良好的鋪墊。
    5客戶業務信息管理系統實現與測試
    此部分內容是在上一章的基礎上,處理客戶業務信息管理系統的研發,對結 構化的系統設計信息轉換成可以具體操作的系統。做好系統測試工作,不耽誤發 現系統中存在的問題,幫助程序開發人員馬上調整存在的問題,避免在系統正式 投入使用后通過修改系統來增加開發成本。
    5.1系統主要模塊的實現
    客戶業務信息管理系統是使用Delphi作為開發語言,采用C/S模式和SQL Server數據庫[22]。本章是五個功能模塊的實現,包括證書業務受理、客戶信息審 核、綜合業務查詢、批量數據管理和系統后臺維護,還給出了系統實現的關鍵代 碼和效果顯示圖。
    5.1.1證書業務受理功能的實現
    證書業務受理的功能主要是實現數字證書的新開、延期、補辦、變更等業務 的受理。系統登錄后,按照業務流程,在主界面菜單欄的第一個“日常工作”中, “新 開戶”排首位,其次是“客戶信息變更”。
    新開戶實現界面如圖5-1所示,左上端顯示公司logo、界面名稱和錄入員的賬 號名稱,中間內容區分客戶基本信息和本次操作業務記錄列表。業務類型和服務 商在詳細頁面中不可更改,但可以點擊右下角的“返回”鍵重新選擇,重新選擇后就 會初始化詳細頁面。客戶的基本信息必須根據客戶的實際情況編輯,包括添加、 修改、刪除等功能, “存盤”是把當前客戶基本信息保存。當新開戶記錄增加到本次 操作記錄列表中時,該記錄在審核員未審核之前作為默認值“修改”、“取消”或是“刪 除”, “取消”是作廢已修改的客戶基本信息。
    除了可以單個錄入客戶的基本信息外,還可以通過Excel批量導入客戶提供的 基本信息。導入時有手動導入和自動導入兩種選擇:手動導入,需選擇Excel字段 與數據庫中字段對應;自動導入,Excel中的字段不能多于數據庫中的字段,Excel 的字段必需與數據庫的字段名一致,就是Excel中字段與數據庫中的字段一一對 應。批量導入是沒有二次審核,所以Excel批量導入必需保證Excel的數據信息準 確無誤。批量XML功能是把本次操作記錄列表中的所有數據按照一定的格式導出 為XML文件,此XML文件是證書簽發系統中批量導入的文件格式。這樣客戶業 務信息管理系統就與證書簽發系統相連,因證書簽發系統未提供相應的接口,所 以只能通過這種方式來對接。
     
    圖 5-1 新開戶界面圖
     
    新開戶“修改”的關鍵代碼如下:
    begin
    if XmlDataSet02.Active=false then Exit;
    sIdCard:=XmlDataSet02.fieldbyname('通用名').AsString;
    ipOrder:=XmlDataSet02.fieldbyname('辦卡序號').AsInteger; sOrder:=IntToStr(ipOrder);
    ifbpWriteNewClient=true then sTableName:='客戶審核信息表'
    else sTableName:='客戶基本信息表';
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select Count(*) from '+sTableName); vpQueryExec.SQL.Add('Where 通用名='+#39+sIdCard+#39); vpQueryExec.SQL.Add('And 辦卡序號='+sOrder);
    vpQueryExec.Open;
    except
    on E:exception do begin
    sTemp:='“客戶審核信息表”檢測該記錄是否存在失敗! '+#13+E.Messa
    ge;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb _iconstop);
    Exit;
    end;
    iRecourdCount:=vpQueryExec.Fields[0].AsInteger;
    if iRecourdCount<=0 then begin
    sTemp:='該用戶可能已經通過了審批!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select * from '+sTableName); vpQueryExec.SQL.Add('Where 通用名='+#39+sIdCard+#39); vpQueryExec.SQL.Add('And 辦卡序號='+sOrder); vpQueryExec.Open;
    except
    on E:exception do begin
    sTemp:='“客戶審核信息表”打開失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    bpIsRework:=true;〃設置修改標志 spUniversalId:=vpQueryExec.fieldbyname('通用名').AsString; ipOrder:=vpQueryExec.fieldbyname('辦卡序號').AsInteger;
    RzSpinEditOrder.IntValue:=ipOrder;
    RzEditUniversal.Text:=vpQueryExec.fieldbyname('通用名').AsString;
    RzEditUnitName.text:=vpQueryExec.fieldbyname('單位名稱').AsString; RzEditLocalTax.Text:=vpQueryExec.fieldbyname('身份證號').AsString; RzEditUnitAddress.Text:=vpQueryExec.fieldbyname('聯系地址').AsString; sGetCode:=Trim(vpQueryExec.fieldbyname('辦證點代碼').AsString); sGetName:=Trim(vpQueryExec.fieldbyname('辦證點').AsString); sGetValue:='['+sGetCode+']'+sGetName;
    iOrder:=RzComboBoxBigCity.Items.IndexOf(sGetValue);
    if iOrder<0 then iOrder:=0;
    RzComboBoxBigCity.ItemIndex:=iOrder;
    RzEditClerk.Text:=vpQueryExec.fieldbyname('經辦人').AsString; RzEditLinkPhone.Text:=vpQueryExec.fieldbyname('聯系 電話').AsString; RzNumericEditMoney.Value:=vpQueryExec.fieldbyname('費用').AsCurrency; RzEditRemark.Text:=vpQueryExec.fieldbyname('備注').AsString; RzEditdangah.Text:=vpQueryExec.fieldbyname('檔案號').AsString; RzEditID cod.Text: =vpQueryExec .fieldbyname('介質編碼').AsString; RzEditUniversal.SetFocus;
    end;
    客戶信息變更實現界面如圖5-2所示,查詢條件有:通用名、單位名稱和身份 證號碼,基本信息表數據查詢結果與歷史信息表證書業務操作明細記錄比較相似, 相同項有通用名、辦卡序號、單位名稱、起始時間、操作時間、操作類型、業務 類型、服務商和備注,歷史信息表證書業務操作明細記錄比基本信息表數據查詢 結果多身份證號和費用,還有不同在于基本信息表數據查詢結果是有效期,歷史 信息表證書業務操作明細記錄是到期時間。基本信息表證書業務操作比客戶基本 信息多操作類型和申請狀態,因為“新開戶”默認操作類型是新開戶及申請狀態為未 審核。
    通過選定需要維護的客戶基本信息加以維護,在該窗口有一個查詢功能由錄 入員指定查詢條件,按模糊條件進行查詢,只要含有要查詢字段的值便會查找出 來。基本信息表數據查詢結果按照辦卡序號排序,歷史信息表證書業務操作明細 記錄按照操作時間排序。
    由于字段內容較多,查詢結果中只顯示了一些關健信息,如果需要查看某條 記錄的詳細信息,只需要雙擊該記錄,就可在基本信息表證書業務操作欄顯示這 條記錄的全部信息;如需要辦理相關業務,根據業務辦理需要,修改相應內容即 可,點擊存盤會在客戶基本信息表和客戶歷史信息表中各存一條記錄。客戶基本 信息表只保存這條業務的最新操作記錄,客戶歷史信息表保存了這條業務的所有 操作記錄,方便查看這條業務于何時何地何人都做了什么操作,相當是這條記錄 的所有業務日志信息。
     
     
    客戶信息變更“查找”的關鍵代碼如下:
    begin
    sSQLWhere:='';
    slSQLWhere:=TStringList.Create;
    try
    slSQLWhere.Clear;
    sGetValue:=Trim(RzEditUniversal_F.Text);
    if sGetValue<>'' then
    slSQLWhere.Add('(通用名 like '+#39+sGetValue+'%'+#39+')');
    sGetValue:=Trim(RzEditUnitName_F.Text);
    //sGetValue2:=Trim(RzEditUnitName_F2.Text);
    if sGetValue<>'' then
    〃slSQLWhere.Add('(單位名稱 like'+#39+'%'+sGetValue+'% and'+ sGet Value2+'%'+#39+')');
    slSQLWhere.Add('(單位名稱 like '+#39+'%'+sGetValue+'%'+#39+')');
    〃slSQLWhere.Add('Contains(單位名稱,'+#39+'"sGetValue" and sGetVal ue2'+#39+')');
    sGetValue:=Trim(RzEdit1.text);
    if sGetValue<>'' then slSQLWhere.Add('身份證號='+#39+sGetValue+#39);
    sGetValue:=Trim(RzEditNationTax_F.Text);
    ifslSQLWhere.Count<=0 then begin
    sTemp:='請選擇查詢條件!’;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    sGetValue:=slSQLWhere.Strings[0]; sGetValue:='Where '+sGetValue;
    slSQLWhere.Strings[0]:=sGetValue;
    for I:=1 to slSQLWhere.Count-1 do begin
    sGetValue:=slSQLWhere.Strings[I];
    sGetValue:='And '+sGetValue; slSQLWhere.Strings[I]:=sGetValue;
    end;
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select count(*) from 客戶基本信息表'); vpQueryExec.SQL.AddStrings(slSQLWhere);
    vpQueryExec.Open;
    except
    on E:exception do begin
    sTemp:='檢測所要查詢的數據是否存在失敗! '+# 13+E.Message; Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    iRecordCount:=vpQueryExec.Fields[0].AsInteger;
    if iRecordCount<=0 then begin
    sTemp:='數據庫中沒有符合查詢條件的記錄!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    try
    vpQueryList.Close;
    vpQueryList.SQL.Clear;
    vpQueryList.SQL.Add('Select * from 客戶基本信息表');
    vpQueryList.SQL.AddStrings(slSQLWhere);
    vpQueryList.Open;
    except
    on E:Exception do begin
    sTemp:='查詢數據失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    end;
    QueryListAfterScroll(vpQueryList);
    PanelRecordCount.Caption:=inttostr(iRecordCount);
    finally
    FreeAndNil(slSQLWhere);
    end;
    end;
    5.1.2客戶信息審核功能的實現
    客戶信息審核的功能主要是實現對證書申請的審核,也適用于新增受理點的 業務操作,由于他們業務不熟練,先通過給予一些簡單的業務讓他們操作,業務 熟悉的操作員來審核他們的業務操作。通過選擇辦證點和申請狀態查詢符合要求 的結果,錄入員申請狀態選擇審核未通過,審核員申請狀態選擇未審核。客戶審 核信息表數據查詢結果顯示的是未審核和審核未通過的記錄,選擇需要審核或是 要修改的記錄,雙擊后可以在客戶審核信息表證書業務操作修改,審核通過后, 該記錄不會顯示客戶審核信息表查詢結果,則是顯示在歷史信息表證書業務操作 明細記錄,未審核通過的記錄仍停留在客戶審核信息表查詢結果內。歷史信息表 證書業務操作明細記錄顯示的是這個證書自新開戶起所有業務操作明細記錄,這 樣,審核員在審核當前申請的同時,有之前的歷史明細作為參考,較為全面的了 解后,更加利于審核員審核數據的有效性。客戶信息審核實現界面如圖5-3所示。
     
    井證處」[M]淞犬廳 ▼丨申帶狀蠡;丨未審核 ▼丨|號查拔|
     
     
     
     
    麻呂閆琵.翻老劃狷鳳觀削囲
    I伺存盤I〔②取消|
    起始時jBh〔2018/ 8/2廠刁有效期』55 ―訂加_年|到期時fgj. |2020/ 9/20 業務類型,血1]國稅 ▼ | JB務BiJ血8]航天信息 + |
    理用名;^oooooooooooooo^辦卡序號:| 1 : |單位名稱,|國稅測試 二|券粉證號.|二
    辦證點I |[01]瞅廳 -I申情狀査:|未審核 ▼ |操作類型:[005]補辦 + I庶豪地址”礙跚機X區]□{路熬號
    檔案號,|1234羽 ~|弁廣13碼:|12345E —|噩舟人< 怫三 |聯攝電話1 |堆3的旳111 | |費用:¥200.00 |備哇<
     
    客戶信息審核“雙擊選中記錄”的關鍵代碼如下:
    begin
    //雙擊選中記錄
    if vpQueryList.Active=false then Exit;
    if vpQueryList.RecordCount<=0 then Exit;
    SettingReworkComponentEnabled(true);// 將數據修改組件打開 vDateTime:=vpQueryList.f!eldbyname('起始時間').AsDateTime; RzDateTimePicker_S.DateTime:=vDateTime;
    RzSpinEditDays.IntValue:=vpQueryList.fieldbyname('有效期').AsInteger; vDateTime:=vpQueryList.fieldbyname('到期時間').AsDateTime; RzDateTimePicker_E.DateTime:=vDateTime;
    RzDateTimePicker_SChange(RzDateTimePicker_S);〃 計算到期時間 sGetCode:=Trim(vpQueryList.fieldbyname('業務類型代碼').AsString); sGetName:=Trim(vpQueryList.fieldbyname('業務類型').AsString); sGetValue:='['+sGetCode+']'+sGetName; iOrder:=RzComboBoxOperationType.Items.IndexOf(sGetValue); RzComboBoxOperationType.ItemIndex:=iOrder; sGetCode:=Trim(vpQueryList.fieldbyname('服務商代碼').AsString); sGetName:=Trim(vpQueryList.fieldbyname('服務商').AsString); sGetValue:='['+sGetCode+']'+sGetName; iOrder:=RzComboBoxServicer.Items.IndexOf(sGetValue);
     
    RzComboBoxServicer.ItemIndex:=iOrder; spUniversal:=vpQueryList.fieldbyname('通用名').AsString;〃 關鍵字 RzEditUniversal.Text:=Trim(spUniversal); ipOrder:=vpQueryList.fieldbyname('辦卡序號').AsInteger; RzSpinEditOrder.IntValue:=ipOrder;
    RzEditUnitName.text:=Trim(vpQueryList.fieldbyname('單位名稱').AsString);
    RzEditNationTax.text:=Trim(vpQueryList.fieldbyname('身份證號').AsString); RzEditIDcod.text:=Trim(vpQueryList.fieldbyname('檔案號').AsString); RzEditdangah.text:=Trim(vpQueryList.fieldbyname('介質編碼').AsString); RzEditUnitAddress.text:=Trim(vpQueryList.fieldbyname('聯系地址').AsStrin
    sGetCode:=Trim(vpQueryList.fieldbyname('代辦點代碼').AsString); sGetName:=Trim(vpQueryList.fieldbyname('代辦點').AsString); sGetValue:='['+sGetCode+']'+sGetName; iOrder:=RzComboBoxBigCity.Items.IndexOf(sGetValue);
    RzComboBoxBigCity.ItemIndex:=iOrder; sGetName:=Trim(vpQueryList.fieldbyname('申請狀態').AsString); sGetValue:= sGetName;
    iOrder:=RzComboBoxBigCity.Items.IndexOf(sGetValue);
    RzComboBoxBigCity.ItemIndex:=iOrder;
    RzEditClerk.Text:=Trim(vpQueryList.fieldbyname('經辦人').AsString);
    RzEditLinkPhone.Text:=Trim(vpQueryList.fieldbyname('聯系 電話').AsString);
    //RzNumericEditMoney.Value:=vpQueryList.fieldbyname('費用').AsCurrency; RzNumericEditMoney.Value:=0;
    RzEditRemark.Text:=vpQueryList.fieldbyname('備注').AsString; sGetCode:=Trim(vpQueryList.fieldbyname('操作類型代碼').AsString); sGetName:=Trim(vpQueryList.fieldbyname('操作類型').AsString); sGetValue:='['+sGetCode+']'+sGetName;
    iOrder:=RzComboBoxHandleType.Items.IndexOf(sGetValue);
    if iOrder<=0 then iOrder:=0; RzComboBoxHandleType.ItemIndex:=iOrder;
    if (Trim(RzEditNationTax.text)<>'') and
    (Trim(RzEditLocalTax.text)<>'') then begin
    sTemp:='請注意:本卡為一卡多用!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」conlnformation);
    end;
    end;
    5.1.3綜合業務查詢功能的實現
    綜合業務查詢的功能主要是實現對系統內已成功保存的業務進行查詢,查詢 條件默認是當日的所有業務情況,也可根據條件按業務類型、操作類型、辦證時 間、辦證點和操作時間排序查詢。查詢結果在數據明細列表顯示,直觀顯示 36條 記錄,可以橫向和縱向拉動查看。系統會自動統計總費用和記錄條數,可以點擊 左下角的“報表導出”,自定義設置導出參數,導出 Excel 表格。綜合業務查詢實現 界面如圖 5-4 所示。
     
    圖 5-4 綜合業務查詢界面圖
     
    綜合業務查詢“雙擊選中記錄”的關鍵代碼如下:
    begin
    vGetDate:=RzDateTimePicker_S.Date; sGetDate_S:=FormatDateTime('yyyy-mm-dd',vGetDate); vGetDate:=RzDateTimePicker_E.Date; sGetDate_E:=FormatDateTime('yyyy-mm-dd 23:59',vGetDate);
    if RzComboBox1.text='客戶歷史信息表'then begin
    sSQLWhere:='Where (修改時間〉='+#39+sGetDate_S+#39; sSQLWhere:=sSQLWhere+' And 修改時間<='+#39+sGetDate_E+#39+')'; if RzComboBoxspOperator.ItemIndex>= 1 then begin sGetValue:=Trim(RzComboBoxspOperator.Text); bResult:=bGetValueToCode(sGetValue,sGetCode,sGetName);
    if bResult=true then begin
    sSQLWhere:=sSQLWhere+' And 審核人='+#39+sGetCode+#39;
    end;
    end;
    if RzComboBoxOperationType.ItemIndex>=1 then begin sGetValue:=Trim(RzComboBoxOperationType.Text); bResult:=bGetValueToCode(sGetValue,sGetCode,sGetName);
    if bResult=true then begin
    sSQLWhere:=sSQLWhere+' And 業務類型代碼='+#39+sGetCode+#39; sSQLWhere:=sSQLWhere+' And 業務類型='+#39+sGetName+#39; end;
    end;
    if RzComboBoxServicer.ItemIndex>=1 then begin sGetValue:=Trim(RzComboBoxServicer.Text); bResult:=bGetValueToCode(sGetValue,sGetCode,sGetName);
    if bResult=true then begin
    sSQLWhere:=sSQLWhere+' And 服務商代碼='+#39+sGetCode+#39;
    sSQLWhere:=sSQLWhere+' And 服務商='+#39+sGetName+#39; end;
    end;
    if RzComboBoxBigCity.ItemIndex>=1 then begin sGetValue:=Trim(RzComboBoxBigCity.Text); bResult:=bGetValueToCode(sGetValue,sGetCode,sGetName);
    if bResult=true then begin
    sSQLWhere:=sSQLWhere+' And 辦證點代碼='+#39+sGetCode+#39;
    sSQLWhere:=sSQLWhere+' And 辦證點='+#39+sGetName+#39; end;
    end;
    if RzComboBoxHandleType.ItemIndex>=1 then begin sGetValue:=Trim(RzComboBoxHandleType.Text); bResult:=bGetValueToCode(sGetValue,sGetCode,sGetName);
    if bResult=true then begin
    sSQLWhere:=sSQLWhere+' And 操作類型代碼='+#39+sGetCode+#39; sSQLWhere:=sSQLWhere+' And 操作類型='+#39+sGetName+#39; end;
    end;
    on E:Exception do begin
    sTemp:='查詢用戶數據失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    end;
    PanelRecordCount.Caption:=inttostr(vpQueryList.RecordCount);
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear; vpQueryExec.SQL.Add('select sum(費用)from 客戶歷史信息表'); vpQueryExec.SQL.Add(sSQLWhere);
    vpQueryExec.Open;
    except
    on E:Exception do begin
    sTemp:='統計用戶總費用失敗! '+# 13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    end;
    5.1.4批量數據管理功能的實現
    批量數據管理的功能主要是實現批量申請新開戶,通過圖5-1新開戶界面圖的 左下角“導入Excel數據”進入“數據導入”詳細頁面,logo下面顯示導入Excel格式 基本信息表數據的路徑與名稱,分左右兩欄是布局,左邊是數據表列表,錄入員 輸入的數據表,右邊是數據表內容瀏覽,審核數據有效性,上下拉動顯示條數, 左右按動顯示字段,內容區域顯示一個字段內容。數據導入實現界面如圖 5-5 所示。
     
     
     
     
    審核員瀏覽審核后點擊右下角的“批量導入”進入“數據批量導入”,選擇或輸入 固定信息,特殊字段選擇和導入字段選擇后,點擊右下角“導入”,回到圖5-1 新開 戶界面,本次操作列表就會顯示需批量新開的記錄,點擊左下角的“批量XML”進 行批量制證。數據批量導入實現界面如圖 5-6所示。
     
    圖 5-6 數據批量導入界面圖
    數據批量導入“導入”的關鍵代碼如下:
    begin
    bIsOpt:=false;
    ifRzComboBoxBigCity.ItemIndex>=1 then bIsOpt:=true;
    //ifRzComboBoxBigCityField.ItemIndex>=1 then bIsOpt:=true;
    if bIsOpt=false then begin
    sTemp:='“辦證點”和“辦證點存放字段”必須二選一 !'; sTemp:='“辦證點”不能為空!'; Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    if RzComboBoxUniversal.ItemIndex<=0 then begin sTemp:='請選擇“通用名”對應的導入字段!'; Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    ifXmlDataSet.RecordCount<=0 then begin
    sTemp:='請選擇“接收字段”和“導入字段”對應信息!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    //檢測是否在表在存在可能重復的字段
    sUniversalField:=Trim(RzComboBoxUniversal.text);
    sOrderFN:='';
    try
    XmlDataSet01.EmptyDataSet;
    except
    on E:Exception do begin
    sTemp:='初始化導入表中重復記錄表初始化失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    end;
    if RzComboBoxOrder.ItemIndex>=1 then
    sOrderFN:=Trim(RzComboBoxOrder.Text);〃 辦卡序號對應字段 //對欲導入的數據先進行檢測,測試是否有重復記錄 vpDataSet03.First;
    slKeyField:=TStringList.Create;
    try
    Gauge1.Progress:=0;
    Gauge1.MinValue:=0;
    Gauge1.MaxValue:=vpDataSet03.RecordCount;
    Gauge1.Visible:=true;
    sError:='';
    iEmptyKeyCount:=0;
    iRepeatCount:=0;〃在源表中是否有重復記錄
    iRepeatCount02:=0;〃在實際表中重復
    iRepeatCount03:=0;〃 正式數據表
    iRepeatCount04:=0;〃是否在待審核表中重復
    While not vpDataSet03.Eof do begin
    Gauge1.AddProgress(1);
    try sUniversal:=Trim(vpDataSet03.fieldbyname(sUniversalField).AsString); if sUniversal='' then begin
    iEmptyKeyCount:=iEmptyKeyCount+1;
    Continue;
    end;
    if sOrderFN<>'' then begin iGetOrder:=vpDataSet03.fieldbyname(sOrderFN).AsInteger;
    end else iGetOrder:=1; sKeyField:=sUniversal+' '+intToStr(iGetOrder); iOrder:=slKeyField.IndexOf(sKeyField); if iOrder<0 then slKeyField.Add(sKeyField) else begin
    //導入數據表中存在重復關鍵字 iRepeatCount:=iRepeatCount+1; bGetCollateFieldValue(XmlDataSet,vpDataSet03,'單位名稱',sUnitN
    ame);
    bFindKey:=XmlDataSetO1.Locate('通用名;辦卡序號',VarArray Of ([sUniversal,iGetOrder]),[]);
    if bFindKey=true then begin iTemp:=XmlDataSet01.fieldbyname('記錄數').AsInteger; iTemp:=iTemp+1;
    XmlDataSet01.Edit; XmlDataSet01.fieldbyname('記錄數').AsInteger:=iTemp;
    end else begin
    XmlDataSet01.Append;
    XmlDataSet01.fieldbyname('記錄數').AsInteger:=2;
    end;
    try
    XmlDataSetO1.FieldByName('通用名').AsString:=sUniversal;
    XmlDataSetO1.FieldByName('辦卡序號').AsInteger: =i GetOrder;
    XmlDataSet01.FieldByName('單位名稱').AsString:=sUnitName;
    XmlDataSet01.post;
    except
    XmlDataSet01.Cancel;
    end;
    Continue;
    end;
    //是否在接收表中存在重復記錄
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select Count(*) from '+spTableName); vpQueryExec.SQL.Add('Where 通用名='+#39+sUniversal+#39); vpQueryExec.SQL.Add('And 辦卡序號='+IntToStr(iGetOrder)); vpQueryExec.Open;
    except
    Continue;
    end;
    iGetCount:=vpQueryExec.Fields[0].AsInteger;
    if iGetCount>=1 then begin 〃在導入的表中存在重復記錄
    bGetCollateFieldValue(XmlDataSet,vpDataSet03,'單位名稱',sUnit Name);
    if bpWriteNewClient=true then begin 〃新用戶 待審核用戶表中的 數據
    vDataSet:=XmlDataSet02; iRepeatCount02:=iRepeatCount02+1;
    end else begin//審核用戶 已審基本信息表
    vDataSet:=XmlDataSet03;
    iRepeatCount03:=iRepeatCount03+1;
    end;
    bFindKey:=vDataSet.Locate('通用名;辦卡序號',Var Array Of ([s
    Universal,iGetOrder]),[]);
    if bFindKey=true then begin
    iTemp:=vDataSet.fieldbyname('記錄數').AsInteger;
    iTemp:=iTemp+1;
    vDataSet.Edit;
    vDataSet.fieldbyname('記錄數').AsInteger:=iTemp;
    end else begin
    vDataSet.Append;
    vDataSet.fieldbyname('記錄數').AsInteger:=1;
    end;
    try
    vDataSet.FieldByName('通用名').AsString:=sUniversal;
    vDataSet.FieldByName('辦卡序號').AsInteger: =i GetOrder;
    vDataSet.FieldByName('單位名稱').AsString:=sUnitName; vDataSet.post;
    except
    vDataSet.Cancel;
    end;
    end;
    if bpWriteNewClient=true then begin //新導用戶
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
     
    vpQueryExec.SQL.Add('Select Count(*) from 客戶基本信息表'); vpQueryExec.SQL.Add('Where 通用名='+#39+sUniversal+#39); vpQueryExec.SQL.Add('And 辦卡序號='+IntToStr(iGetOrder)); vpQueryExec.Open;
    except
    Continue;
    end;
    iGetCount:=vpQueryExec.Fields[0].AsInteger;
    if iGetCount>=1 then begin iRepeatCount03:=iRepeatCount03+1; bGetCollateFieldValue(XmlDataSet,vpDataSetO3,'單位名稱',sUn
    itName); bFindKey:=XmlDataSetO3.Locate('通用名;辦卡序號', VarArrayOf([sUniversal,iGetOrder]),[]);
    if bFindKey=true then begin iTemp:=XmlDataSetO3.f!eldbyname('記錄數').AsInteger; iTemp:=iTemp+1;
    XmlDataSet03.Edit;
    XmlDataSetO3.f!eldbyname('記錄數').AsInteger:=iTemp;
    end else begin
    XmlDataSet03.Append; XmlDataSetO3.f!eldbyname('記錄數').AsInteger:=1;
    end;
    try
    XmlDataSetO3.FieldByName('通用名').AsString:=sUniversal;
    XmlDataSetO3.FieldByName('辦卡序號').Aslnteger: = iGet
    Order; XmlDataSetO3.FieldByName('單位名稱').AsString: = sUnit
    Name; XmlDataSet03.post;
    except
    XmlDataSet03.Cancel; end;
    end;
    end else begin //審核用戶
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select Count(*) from 客戶審核信息表'); vpQueryExec.SQL.Add('Where 通用名='+#39+sUniversal+#39); vpQueryExec.SQL.Add('And 辦卡序號='+IntToStr(iGetOrder)); vpQueryExec.Open;
    except
    Continue;
    end;
    iGetCount:=vpQueryExec.Fields[0].AsInteger;
    if iGetCount>=1 then begin iRepeatCount02:=iRepeatCount02+1; //iRepeatCount04:=iRepeatCount04+1;
    bGetCollateFieldValue(XmlDataSet,vpDataSet03,'單位名稱',sU nitName);
    bFindKey:=XmlDataSet02.Locate('通用名;辦卡序號',VarArrayO f([sUniversal,iGetOrder]),[]);
    if bFindKey=true then begin iTemp:=XmlDataSet02.fieldbyname('記錄數').AsInteger; iTemp:=iTemp+1;
    XmlDataSet02.Edit; XmlDataSet02.fieldbyname('記錄數').AsInteger:=iTemp;
    end else begin
    XmlDataSet02.Append; XmlDataSet02.fieldbyname('記錄數').AsInteger:=1;
    end;
    try
    XmlDataSetO2.FieldByName('通用名').AsString:=sUniversal;
    XmlDataSetO2.FieldByName('辦卡序號').As Integer: = iGe tOrder;
    XmlDataSetO2.FieldByName('單位名稱').As String: = sUni t Name;
    XmlDataSet02.post;
    except
    XmlDataSet02.Cancel;
    end;
    end;
    end;
    finally
    vpDataSet03.Next;
    end;
    end;
    finally
    FreeAndNil(slKeyField);
    Gauge1.Visible:=false;
    end;
    5.1.5系統后臺維護功能的實現
    系統后臺維護的功能主要是實現用戶權限管理、代碼維護管理和數據庫維護 管理。
    用戶權限管理功能不僅可以新增、修改及刪除操作員信息,還可以修改其操 作權限。隨著業務受理點的增減,人員的變動、操作員業務熟練程度的增強等, 需要對用戶權限管理數據進行維護。用戶權限管理主要分操作員信息列表和操作 員權限列表,在左下角新增操作員,輸入操作員信息,勾選操作員相應權限。操 作員權限分兩級菜單權限,選中操作員信息列表中的操作員,就會顯示該操作員 信息和權限。用戶權限管理實現界面如圖5-7 所示。
     
    圖 5-7 用戶權限管理界面圖
     
    用戶權限管理“新增”關鍵代碼如下:
    begin
    //獲得最大序列號
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select Max(用戶序號)from 用戶設置表'); vpQueryExec.SQL.Add('Where 用戶賬號<>'+#39+'Admin'+#39); vpQueryExec.Open;
    except
    on E:Exception do begin
    sTemp:='計算最大序號失敗! '+#13+E.Message; Application.MessageBox(Pchar(sTemp),'信息提示',Mb _iconstop); Exit;
    end;
    end;
    bSettingEditPaneEnabled(True);
    iGetMaxOrder:=vpQueryExec.Fields[0].AsInteger; iGetMaxOrder:=iGetMaxOrder+1;
     
    RzSpinEditOrder.IntValue:=iGetMaxOrder;
    ipReworkType:=l;〃 新增記錄
    end;
    代碼維護功能主要是客戶業務辦理情況的登記。管理功能主要有代碼、名稱 和是否選用,業務類型代碼維護和操作類型代碼維護有些不同。業務類型代碼設 置關聯證書模板代碼,信息列表會多證書模板代碼和證書模板名稱,信息操作欄 有證書模板的選擇。業務類型代碼維護管理主要是對業務情況進行登記,并與證 書簽發系統中的模板關聯,方便批量業務操作。隨著電子時代的迅速發展,在網 上辦理業務的應用越來越多,如網上辦公傳輸審批系統、電子合同、招投標系統、 電子簽章及電子病歷等系統,數字證書的使用也越來越廣,為了區分不同業務類 型的數字證書,也方便CA公司向上級匯報不同業務類型的數字證書應用數據,此 功能只有系統管理員才能操作。
    操作類型代碼維護會多收費標準,在處理業務的時候,選擇了操作類型就默 認顯示這個收費的標準。操作類型代碼維護實現界面如圖5-8 所示。
     
     
     
    蟄存盤11③取消I I孟新増11彗修改11二刪除11田■返回I
    圖 5-8 操作類型代碼維護界面圖
    操作類型代碼維護中新增操作代碼如下:
    begin
     
    sGetCode:=Trim(RzEditCode.Text);
    if sGetCode='' then begin
    sTemp:='“代碼”不能為空!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    RzEditCode.SetFocus;
    Exit;
    end;
    sGetName:=Trim(RzEditName.Text);
    if sGetCode='' then begin
    sTemp:='“名稱”不能為空!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    RzEditName.SetFocus;
    Exit;
    end;
    vGetMoney:=RzNumericEditMoney.Value; sGetMoney:=CurrToStr(vGetMoney);
    sIsCheck:='';
    ifRzCheckBoxIsOpt.Checked=true then sIsCheck:='是';
    if ipReworkType=1 then begin //新增
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select Count(*) from 操作類型代碼表');
    vpQueryExec.SQL.Add('Where 代碼='+#39+sGetCode+#39); vpQueryExec.Open;
    except
    on E:Exception do begin
    sTemp:='檢測新增記錄代碼是否重復是否存在失敗! '+#13 + E.Me
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end;
    end;
    iGetRecord:=vpQueryExec.Fields[0].AsInteger;
    if iGetRecord>=l then begin
    sTemp:='“'+sGetCode+'”重復,請重新輸入代碼!'; Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Insert into 操作類型代碼表'); vpQueryExec.SQL.Add('(代碼,名稱,收費標準,是否選用)');
    vpQueryExec.SQL.Add('Values('+#39+sGetCode+#39+','+#39+sGetName+#39); vpQueryExec.SQL.Add(','+sGetMoney+','+#39+sIsCheck+#39+')'); vpQueryExec.ExecSQL;
    except
    on E:exception do begin
    sTemp:='數據新增失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    end;
    if ipReworkType=2 then begin
    sOldCode:=vpQueryList.fieldbyname('代碼').AsString; sOldCode:=spKeyField;
    if (Trim(sGetCode)<>Trim(sOldCode)) then begin
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Select Count(*) from 操作類型代碼表'); vpQueryExec.SQL.Add('Where 代碼='+#39+sGetCode+#39); vpQueryExec.Open;
    except
    on E:Exception do begin
    sTemp:='檢測新增記錄代碼是否重復是否存在失敗! '+#13+E.
    Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb _iconstop);
    Exit;
    end;
    end; iGetRecord:=vpQueryExec.Fields[0].AsInteger; if iGetRecord>=1 then begin
    sTemp:='“'+sGetCode+'”重復,請重新輸入代碼!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb _iconstop);
    Exit;
    end;
    end;
    數據庫維護管理功能主要是實現數據庫的備份/恢復,對數據庫的數據進行維 護, SQL 命令查詢窗口可以通過左邊選擇具體的表,也可以通過右上邊的發布查 詢命令窗口執行 SQL 查詢語句,勾選可編輯查詢結果對查詢內容顯示窗口的記錄 添加、刪除或修改,還可以選擇導出類型來導出數據。SQL命令查詢窗口實現界 面如圖5-9所示。
     
    圖 5-9 SQL 命令查詢窗口界面圖
     
    5.2系統部分模塊的實現 本章是對系統用戶登錄與用戶密碼修改的實現,并給出系統實現的關鍵代碼 以及效果展示圖。
    5.2.1系統用戶登錄的實現
    本系統開始使用的時候需要通過安全認證才能登錄,只有當用戶名稱和用戶 密碼匹配,才能使用客戶業務信息管理系統。當用戶名稱與密碼其中一個輸入錯 誤,就會出現錯誤提示:驗證用戶登錄信息失敗,請重新輸入正確的“用戶名稱” 或“用戶密碼”,遇到這種情況請檢查用戶名稱輸入是否正確、密碼輸入是否有錯、 用戶名稱與登錄密碼的校驗對字母的大小寫是敏感的,請檢查字母的大小寫是否 有錯。本系統既可以通過內網登錄,也可以通過外網登入,兩者的服務器名不同。 如出錯,則出現錯誤提示:
    數據庫連接失敗! [DBNETLIB][ConnectionOpen(Connect()).]SQL Server 不存
    在或拒絕訪問。系統用戶登錄窗口如圖 5.10 所示。
     
    圖 5-10 系統用戶登錄窗口界面圖
     
    系統用戶登錄實現的關鍵代碼如下:
    begin
    sGetUserId:=Trim(RzEditUserName.text);
    if sGetUserId='' then begin
    sTemp:='“用戶名”不能為空!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);〃調用 wi ndows 自帶控件
    ActiveControl:=RzEditUserName;
    Exit;
    end;
    sGetPassWord:=Trim(RzEditPassWord.text);
    sgNewServerName:=RzEditServer.text;〃月服務器 IP 地址
    Data_Module:=TData_Module.Create(Application);
    MainForm:=TMainForm.Create(Application);
    try
    With Data_Module do begin
    try
    QueryExec.Close;
    QueryExec.SQL.Clear;
    QueryExec.SQL.Add('Select Count(*) as 記錄數 from 用戶設置表');
    QueryExec.SQL.Add('Where 用戶賬號='+#39+sGetUserId+#39); QueryExec.Open;
    except
    on E:Exception do begin
    sTemp:='檢測用戶賬號是否合法失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    iRecordCount:=QueryExec.fieldbyname('記錄數').AsInteger;
    if iRecordCount<=0 then begin
    if LowerCase(sGetUserId)<>'admin' then begin
    sTemp:='“用戶名稱”不合法,無法登錄本系統!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end else begin
    try
    QueryExec.Close;
    QueryExec.SQL.Clear;
    QueryExec.SQL.Add('insert into 用戶設置表');
    QueryExec.SQL.Add('(用戶賬號,用戶序號)');
    QueryExec.SQL.Add('Values('+#39+'Admin'+#39+',99'+')');
    QueryExec.ExecSQL;
    except
    on E:Exception do begin
    sTemp:='“用戶設置表”初始化默認用戶失敗! '+# 13+ E.
    Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb _ ic onstop);
    Exit;
    end;
    end;
    end;
    end;
    try
    QueryExec.Close;
    QueryExec.SQL.Clear;
    QueryExec.SQL.Add('Select 賬號密碼 from 用戶設置表');
    QueryExec.SQL.Add('Where 用戶賬號='+#39+sGetUserId+#39); QueryExec.Open;
    except
    on E:Exception do begin
    sTemp:='檢測用戶賬號是否合法失敗! '+#13+E.Message;
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    sReadPassWord:=Trim(QueryExec.fieldbyname('賬號密碼').AsString);
    if bCheckedIsDESEncrypt(sReadPassWord)=true then sReadPassWord:=sDESEncryptStringCBHead(sReadPassWord,false);
    if LowerCase(sGetPassWord)<>LowerCase(sReadPassWord) then begin sTemp:='“用戶名稱”或“登錄密碼”輸入錯誤!'; Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    Self.Hide;
    MainForm.vShowModal(Data_Module.QueryExec,sGetUserId);
    Self.Close();
     
    Halt(0);
    finally
    FreeAndNil(Data_Module);
    FreeAndNil(MainForm); end;
    end;
    5.2.2用戶密碼修改的實現
    如圖 5.11 所示,用戶登錄客戶業務信息管理系統后可以修改當前用戶的系統 登錄密碼。在修改密碼窗口中,原密碼為最近設定的密碼,新密碼為以后要使用 的密碼,確認密碼的內容要與新密碼一致。如果原密碼輸入有錯或新密碼與確認
     
    用戶密碼修改實現的關鍵代碼如下:
    begin
    sUserName:=Trim(RzEditUserName.text);
    sGetPassWord:=Trim(RzEditOldPassword.Text);
    if sGetPassWord<>spPassword then begin sTemp:='“原密碼”輸入錯誤!'; Application.MessageBox(Pchar(sTemp),'信息提示',Mb _iconstop); Exit;
    end;
    sPassWord01:=Trim(RzEditNewPassword.text);
    sPassWord02:=Trim(RzEditComfirmPassword.text);
    if sPassWord01<>sPassWord02 then begin
    sTemp:='“新密碼”與“確認密碼”不一致!';
    Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop);
    Exit;
    end; bResult:=bAlterPassWordFieldSize(vpQueryExec,sUserName); sGetPassWord:=sDESEncryptStringCBHead(sPassWord01,True); //Showmessage(sGetPassWord);
    try
    vpQueryExec.Close;
    vpQueryExec.SQL.Clear;
    vpQueryExec.SQL.Add('Update 用戶設置表'); vpQueryExec.SQL.Add('Set 賬號密碼='+#39+sGetPassWord+#39); vpQueryExec.SQL.Add('Where 用戶賬號='+#39+sUserName+#39); vpQueryExec.ExecSQL;
    except
    on E:Exception do begin
    sTemp:='用戶密碼修改失敗! '+#13+E.Message; Application.MessageBox(Pchar(sTemp),'信息提示',Mb」constop); Exit;
    end;
    end;
    bpIsChangePassWord:=true;
    sTemp:='密碼修改成功,下次登錄系統時必須使用新密碼!'; Application.MessageBox(Pchar(sTemp),'恭喜',Mb」coninfbrmation); Self.Close;
    end;
    5.3 系統測試 任何系統在開發或運行階段都會或多或少地遇到各種問題與錯誤,為了保證 系統的正常運行和使用,有必要對系統進行全面的測試,以便能夠及時發現系統 的各種問題。通過測試和調試,將系統問題發生率降至最低。在系統測試階段, 對客戶業務信息管理系統的各個模塊進行調試,找出缺陷及其安全隱患,為系統 的開發質量提供保證[14]。
    隨著測試技術的發展,軟件測試的方法日益合理。一般來說,采用的測試方 法有黑盒測試、白盒測試和灰盒測試,本文通過功能測試用例,利用黑盒測試來 找出系統測試結果是否符合系統功能模塊。結合具體的功能操作,測試系統的功 能表現,以下是本客戶業務信息管理系統幾個主要的功能用例。
    (1)證書業務受理模塊的測試用例 證書業務受理模塊的主要測試功能為客戶信息的新增、修改、查詢和刪除, 測試申請記錄是否可以準確提交,其測試用例如表 5-1 所示。
    表 5-1 證書業務受理的測試用例
    標題 證書業務受理測試
    目的 客戶信息的新增、 修改、查詢和刪除
    對象 錄入員
    編號 場景 測試過程 實際情況
    1 添加基本客戶信
    錄入員登錄系統,選擇“日常工作”的“新開
    戶”,新增錄入信息存盤。 信息保存成功
    2 客戶基本信息的
    修改 錄入員登錄系統,選擇“日常工作”的“新開 戶”,選中“本次操作記錄列表”中的一條記 錄,點擊“修改”,修改信息內容后存盤; 選擇“日常工作”的“客戶信息變更”,選擇 “基本信息表數據查詢結果”中的一條記錄, 雙擊此記錄進入修改狀態,修改信息內容后存 盤。 信息修改成功
    3 客戶信息的查詢 錄入員登錄系統,選擇日常工作的客戶信息變 更,輸入查詢條件后,點擊“查詢”按鍵。 信息查詢成功
    4 客戶信息的刪除 錄入員登錄系統,選擇“日常工作”的“新開 戶”,選中“本次操作記錄列表”中的一條記 錄,點擊“刪除”按鍵;
    選擇“日常工作”的“客戶信息變更”,選擇 “歷史信息表證書業務操作明細記錄”中的一 條記錄,點擊“刪除”按鍵。 信息刪除成功
     
    (2)客戶信息審核模塊的測試用例
    客戶信息審核模塊的測試用例如表5-2所示,主要測試功能為查詢錄入員提交 的申請記錄,測試審核批復結果是否能與后臺數據庫同步等。
     
    表 5-2 客戶信息審核模塊的測試用例
    標題 客戶信息審核測試
    目的 客戶信息的查詢、 修改和刪除
    對象 錄入員、審核員
    編號 場景 測試過程 實際情況
    1 客戶審核信息的
    查詢 審核員登錄系統,選擇“日常工作”的“客 戶信息審核”,選擇辦證點和申請狀態為“未 審核”的查詢條件后,點擊“查詢”按鍵; 錄入員登錄系統,選擇辦證點和申請狀態為 “審核未通過”的查詢條件后,點擊“查 詢”按鍵。 信息查詢成功
    2 客戶審核信息的 修改 審核員和錄入員登錄系統,選擇“日常工作” 的“客戶信息審核”,選擇“客戶審核信息 表數據查詢結果”中的一條記錄,雙擊此記 錄進入修改狀態,修改信息內容后存盤。 信息修改成功
    3 客戶歷史信息的
    刪除 審核員登錄系統,選擇“日常工作”的“客 戶信息審核”,選擇“歷史信息表證書業務 操作明細記錄”中的一條記錄,點擊“刪 除”按鍵。 信息刪除成功
     
    (3)綜合業務查詢模塊的測試用例 綜合業務查詢模塊的主要測試功能為查詢已完結的業務記錄,選擇任一查詢 條件測試,其測試用例如表5-3所示。
    表 5-3 綜合業務查詢模塊的測試用例
    標題 綜合業務查詢測試
    目的 客戶歷史信息的查詢,自定義導出 Excel 表格
    對象 收費員、數據員
    編號 場景 測試過程 實際情況
    1 客戶歷史信息的
    查詢 數據員和收費員登錄系統,選擇“綜合業務 查詢”,任一選擇查詢條件后,點擊“查詢” 按鍵。 信息查詢成功
    2 自定義報表導出 數據員和收費員登錄系統,選擇“綜合業務 查詢”,選好需要導出的數據后,點擊“報 表導出”,可以隱藏字段、多字段排序等, 最后“另存為”。 報表導出成功
     
    (4)批量數據管理模塊的測試用例
    批量數據管理模塊的測試用例如表5-4所示,主要測試功能為批量申請新開 戶,測試能否生成批量XML文件批量制證。
     
    表 5-4 批量數據管理模塊的測試用例
    標題 批量數據管理測試
    目的 數據批量導入與修改
    對象 審核員
    編號 場景 測試過程 實際情況
    1 數據批量導入 審核員登錄系統,選擇“日常工作”的“新 開戶”,點擊“導入 Excel 數據”,勾選數 據表,選擇字段導入。 信息導入成功
    2 數據表內容修改 審核員登錄系統,審核“數據表內容瀏覽”, 雙擊選中其中需要修改的內容,修改信息。 信息修改成功
     
    (5)系統后臺維護模塊的測試用例 系統后臺維護模塊由數據庫維護管理、代碼維護管理和用戶權限管理組成, 選擇其中個別測試,其測試用例如表5-5 所示。
    表 5-5 系統后臺維護模塊的測試用例
    標題 系統后臺維護測試
    目的 新增用戶、修改操作類型和 SQL 命令查詢
    對象 系統管理員
    編號 場景 測試過程 實際情況
    1 新增用戶 系統管理員登錄系統,選擇“系統后臺維護” 的“權限管理”,點擊“新增”,顯示序號 自動生成,輸入用戶賬號、用戶名稱、登錄 密碼和備注,勾選權限后存盤。 信息保存成功
    2 修改操作類型 系統管理員登錄系統,選擇“系統后臺維護” 的“操作類型代碼維護”,選擇其中一條記 錄,點擊“修改”,修改信息后存盤。 信息修改成功
    3 SQL 命令查詢 系統管理員登錄系統,選擇“SQL命令查詢 窗口”,在“發查詢命令窗口”輸入SQL查 詢語句,點擊“執行”按鍵。 信息查詢成功
     
    5.4本章小結 測試結果表明,系統的功能得到了完整的開發和實現,達到了預定的目標, 性能穩定,系統的建設總體上是成功的,能夠滿足某數字證書公司現在客戶業務 信息管理的需求。
    6總結與展望
    6.1本文工作總結
    在歷經幾個月艱辛的努力,我的畢業論文基本完成了。回首這段經歷,我有 許多難以忘懷的回憶和自己的點滴成長,真是收益非淺。
    首先與導師的交流和討論,確定了論文的題目是:某數字證書公司客戶業務 信息管理系統的設計與實現。在此基礎之上,我全身心的投入到查找相關資料和 學習相關的知識,也把碰到的難題和疑惑告訴導師,在他的悉心的教導下,讓我 克服了這些困難,也使得我更加堅定了方向與信心。
    其次在學習過程中,我借助了互聯網技術、相關專業書籍查找與我課題相關 的資料,使我更加全面、準確進行資料整理,與導師的溝通也變得更加的順暢。
    最后在寫論文時,主動與導師進行了多次的溝通,與同學們也進行了積極的 聯系,克服了一個個碰到的問題,論文得到了完善。
    客戶業務信息管理系統是簡單方便、實用性強及安全可靠的應用系統,滿足 某數字證書公司業務需求,集數字證書信息收集、存儲、檢索、整理等功能,充 分調動人力資源,提高了處理業務的效率,加強對證書完整生命周期的保護。該 系統總體結構良好,模塊的功能齊全,數據庫設計嚴謹,可以較好的應付現代電 子認證行業的發展。此外,該系統具有良好的安全性和可維護性,適合數字證書 業務的可持續發展。本文主要研究工作如下:
    (1) 分析了論文研究的背景和意義,介紹了國內外發展情況的基礎上,確定 了論文的組織結構。
    (2) 詳細調查了某數字證書公司的業務需求,有計劃的完善了證書業務受理、 客戶信息審核、綜合業務查詢、批量數據管理和系統后臺維護等功能,每個模塊 都有完整的功能。
    (3) 分析了論文的總體設計,對數據庫設計進行優化,科學合理的存儲了大 量多樣的數據,有效地操作了數據。
    (4) 利用界面圖描述了各個功能模塊的行為,并且詳細介紹了系統功能的測
    試用例。
    6.2未來工作展望
    客戶業務信息管理系統的開發是根據某數字證書公司的具體情況,在設計與 實現的過程中還是有許多缺陷的地方,如不能與證書簽發系統無縫對接、只有簡 單的統計功能沒有完善的統計報表、通過數據記錄相關的操作情況沒有相關的業 務日志信息等。客戶業務信息管理系統還有待進一步改善,要在以后的迭代開發 
    持續提升。
    (1) 改善用戶體驗:系統界面可以變得更加友好,系統布局可以得到改善,系 統外觀可以得到優化,用戶可以更舒適地使用它,操作可以更加方便和簡單[23]。
    (2) 系統安全性:對于電子認證服務系統來說,安全性也是一個不可小覷的方 面,值得進一步的加強。
    (3) 系統優化:客戶業務信息管理系統面向 CA 公司的員工,在后續的設計和 開發中面向公眾,集成在線更新服務和自助終端服務。
    由于時間有限和研究人員自身的局限性,研究中不可避免地存在遺漏,請糾 正我。
    參考文獻
    [1]于高萍.安陽市中小企業客戶信息管理系統的設計[D].天津職業技術師范大學, 2018.
    [2]胡亮.基于C/S架構的電話銀行坐席系統設計與實現[D].東北大學,2016.
    [3]何志鋒.某電力企業財務系統的設計與實現[D].電子科技大學,2014.
    [4]石炳堂.集團企業財務報表系統的設計與實現[D].電子科技大學,2014.
    [5]趙鵬.物流配送管理系統設計與實現[D].吉林大學,2015.
    [6]楊姣姣.基于PLC的機器人搬運自動化系統研究與實現[D].2016.
    [7]陳宇.基于ASP.NET技術的中山圖書Web管理系統的設計與實現[D].江西財經 大學, 2017.
    [8]張震.通信公司客戶關系管理系統的設計與實現[D].天津大學,2017.
    [9]王波.基于C/S的房屋銷售管理系統設計與實現[D].吉林大學,2013.
    [10]苗鳳華,周巧姝.SQL Server 2008數據管理系統的優勢研究[J].長春師范大學 學報, 2014(6):76-77.
    [11]李鴻超,尹改霞,趙文廣.CA數字證書在公路工程招投標活動中的應用[J].科 技視界, 2014(9):293-294.
    [12]呂志剛,李辰.航電研制信息系統中PKI身份認證體系的構建[J].航空電子技 術,2016,47(1):47-51.
    [13]黃海.基于X.509標準的CA認證中心設計與實現[D].湖南大學,2007.
    [14]熊杰.基于Visual Basic 6.0的人力資源管理系統的設計與實現[D].江西財經大 學, 2018.
    [15]許詩軍,李之棠.面向電子政府應用的安全認證中心的研究與開發[J].計算機 工程與應用, 2003, 39(1):140-143.
    [16]滿楠.CA電子檔案管理系統的設計與實現[D].電子科技大學,2014.
    [17]余秦勇.證書管理系統研究及實現[D].電子科技大學,2003.
    [18]肖鋒.陜西煙草CA認證系統的分析與設計[D].北京郵電大學,2009.
    [19]付樹平.聯通CA電子認證系統應用研究[D].南京郵電大學,2013.
    [20]劉平.黨政內網呼叫系統安全性研究[D].西安電子科技大學,2007.
    [21]熊贏新,王萬霞.電子政務外網授權管理系統研究與設計[J].電子政務,2008 (10):74-81.
    [22]盧朝榮.基于Visual C++的人力資源管理系統的設計與實現[D].吉林大學, 2014.
    [23]黃雪敏.高校學生信息管理系統設計與實現[D].江西財經大學,2017.
    [24]Kampf R, Lizbetinova L, Tislerova K. Management of Customer Service in Terms
    of Logistics Information Systems[J]. Open Engineering, 2017, 7(1):26-30.
    [25]Bashashin M V, Kekelidze D V, Kostromin S A, et al. NICA project management information system[J]. Physics of Particles & Nuclei Letters, 2016, 13(5):618-620.
    [26]Wei Y, Jin Y, Zhou J. Design and Realization of RSA Digital Signature System Based on Digital Certificate[C]. 2015 international conference on mechanical, electronics and information technology engineering. 2015:698-701.
    [27]Garcia B, Gomez A, Conde R, et al. Breaking the Web Barriers of the eAdministration Using an Accessible Digital Certificate Based on a Cryptographic Token[J]. Advances in Software Engineering, 2015, 2015(3):1-11.
    [28]Marks A, Alali M, Rietsema K. Airport Management—Value of Customer Display Systems[J]. Intelligent Information Management, 2015, 07(5):260-267.
    [29]Perez-Mendez J A, Angel Machado-Cabezas. Relationship between management information systems and corporate performance[J]. Revista De Contabilidad, 2015, 18(1):32-43.
    [30]Zhang J, Hu N, Raja M K. Digital certificate management: Optimal pricing and CRL releasing strategies[J]. Decision Support Systems, 2014, 58(58):74-78.
    [31]Zhang X Y, Tang J, Li M. The Design of Mobile Terminal Security Management System Based on Digital Certificate[J]. Applied Mechanics & Materials, 2014, 651-653:1976-1979.
    [32]Tvrdikova M. Increasing the business potential of companies by ensuring continuity of the development of their information systems by current information technologies [J]. Journal ofBusiness Economics & Management, 2016, 17(3): 475-489.
    [33]Yao J M, Yang J J, Du X M. Transformer Region Customer Information Management System Design[J]. Applied Mechanics & Materials, 2014, 687- 691: 3145-3148.
    [34]Zhao H, Wu Q H. Custom Service Support Management Information System[J]. Applied Mechanics & Materials, 2014, 687-691:4840-4843.
    [35]Newby M, Nguyen T H, Waring T S. Understanding customer relationship management technology adoption in small and medium-sized enterprises [J]. European Journal of Marketing, 2014, 27(5):541 - 560.
    [36]Zhang C. The Design and Implementation of Corporate Human Resources Management Information System[J]. Advanced Materials Research, 2014, 998-999: 1670-1673.
    [37]Gronwald K D. CRM: Customer Relationship Management[M]. Integrated Bu siness Information Systems. Springer Berlin Heidelberg, 2017.
    [38]Jacob Z. Haislip,Vernon J. Richardson. The effect of Customer Relationship Management systems on firm performance[J]. International Journal of Accounting Information Systems,2017,27(27):16-29.
    [39]Al-Weshah G A, Al-Manasrah E, Al-Qatawneh M. Customer relationship management systems and organizational performance: Quantitative evidence from the Jordanian telecommunication industry[J]. Journal of Marketing Communications, 2018(10):1-21.
    [40]Talon-Ballestero, Pilar, Gonzalez-Serrano, Lydia, Soguero-Ruiz C , et al. Using big data from Customer Relationship Management information systems to determine the client profile in the hotel sector[J]. Tourism Management, 2018, 68:187-197.
    【本文地址:http://www.bzhlmm.com//guanlilei/gongshangguanli/xixinguanli/8926.html

    上一篇:鋼筋焊網生產設備控制與信息管理 系統研發

    下一篇:沒有了

    相關標簽: