彩色電視機故障信息標準管理系統(tǒng)客戶端數(shù)據(jù)庫_第1頁
彩色電視機故障信息標準管理系統(tǒng)客戶端數(shù)據(jù)庫_第2頁
彩色電視機故障信息標準管理系統(tǒng)客戶端數(shù)據(jù)庫_第3頁
彩色電視機故障信息標準管理系統(tǒng)客戶端數(shù)據(jù)庫_第4頁
彩色電視機故障信息標準管理系統(tǒng)客戶端數(shù)據(jù)庫_第5頁
已閱讀5頁,還剩79頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

彩色電視機故障信息管理系統(tǒng)(客戶端)TheMISfoTVapplyinginfailureinformation學生:全俊林指引教師:龔迪琛摘要本文簡介了如何使用VisualC++6.0編程制作以彩色電視機故障信息管理系統(tǒng)(客戶端某些)為例,實現(xiàn)信息管理自動化。由此實現(xiàn)了信息增長、刪除、修改、查看等功能,并且進而實現(xiàn)信息安全管理,使信息管理更加人性化,規(guī)范化。集計算機技術(shù)、網(wǎng)絡通信技術(shù)為一體信息管理系統(tǒng)。采用先進有效管理體制,可以改進公司經(jīng)營環(huán)境、減少經(jīng)營生產(chǎn)成本,提高公司競爭力;使得公司運營數(shù)據(jù)更加精確、及時、全面、詳實,同步對各種信息進一步加工,使公司領(lǐng)導層決策根據(jù)充分,更具科學性,從而提高故障排除效率,提高信息運用率,有助于進一步提高了生產(chǎn)效率,使公司管理水平跨上新臺階,為公司持續(xù)、健康、穩(wěn)定發(fā)展打下基本。AbstractThemainworkofthispaperisintroducehowtouseVisualC++6.0programmingaColorTVMalfunction-InformationIn-CommonSystem,achievetheauto-manageoftheMalfunction-Information.Accordingthese,thissystemachievestheinformation’sfunctionofadd、delete、editandview.,italsogettheinformationmanagedsafety,sothemanagementoftheinformationwillbemorehumanity&normalize.Thereby,itcanimprovetheefficiencyofthemalfunction’selimination,enhancetheexploitationoftheinformation,andalsohelpimprovingtheefficiencyoftheproducebyalargestep.核心詞:數(shù)據(jù)庫信息管理模塊化管理MIS信息管理系統(tǒng)目錄摘要 1目錄 21.緒論 31.1前言 31.2課題背景目的研究辦法 41.3重要完畢工作及規(guī)定 52.MIS系統(tǒng)設(shè)計及功能分析簡介 52.1MIS系統(tǒng)簡介 52.2系統(tǒng)設(shè)計及功能分析 62.3功能模塊設(shè)計 73.數(shù)據(jù)庫設(shè)計及ADO訪問數(shù)據(jù)庫 73.1數(shù)據(jù)庫設(shè)計過程 73.2創(chuàng)立應用程序 93.3數(shù)據(jù)庫操作準備 113.4ADO訪問數(shù)據(jù)庫 134.功能模塊創(chuàng)立 194.1系統(tǒng)主體窗體創(chuàng)立 194.1.1主菜單創(chuàng)立 194.1.2右鍵菜單創(chuàng)立 204.1.3工具欄創(chuàng)立 214.1.4數(shù)據(jù)顯示與表格控件創(chuàng)立 224.2系統(tǒng)顧客權(quán)限管理模塊創(chuàng)立 234.2.1添加顧客對話框創(chuàng)立 244.2.2更改密碼對話框創(chuàng)立 264.2.3刪除顧客對話框創(chuàng)立 264.2.4顧客登錄對話框創(chuàng)立 264.3信息管理模塊創(chuàng)立 274.3.1添加記錄對話框創(chuàng)立 274.3.2查詢記錄對話框創(chuàng)立 294.3.3修改記錄對話框創(chuàng)立 304.3.4查看記錄對話框創(chuàng)立 324.4打印預覽模塊創(chuàng)立 325.WindowsSockets 335.1規(guī)范簡介 335.2Bekeley套接口 355.3MicrosoftWindows和針對Windows擴展 355.4接口網(wǎng)絡編程原理 365.5WindowsSockets編程原理 386.遠程數(shù)據(jù)管理和系統(tǒng)實現(xiàn) 406.1遠程數(shù)據(jù)管理 406.2程序編譯和系統(tǒng)實現(xiàn) 417.問題擴展 428.小結(jié) 44致謝 45參照文獻 461.緒論1.1前言信息化建設(shè)對公司來說無疑已經(jīng)成為公司在當代競爭社會中立足重要因素。而從中華人民共和國大陸公司現(xiàn)狀來看,大某些公司信息化建設(shè)都是依托專業(yè)化軟件公司。毋庸置疑,對于大規(guī)模管理系統(tǒng),例如CRM(ClientRelationManager),ERP(EnterpriseResourcePlan)等,使用專業(yè)軟件公司開發(fā)產(chǎn)品,功能相對齊全,安全級別也相對較高。但對于公司內(nèi)部小范疇內(nèi)所需某些小系統(tǒng)而言,如也依托此種方式,勢必會產(chǎn)生無謂成本流失。鑒于這種形式,借助這次畢業(yè)設(shè)計機會,在龔迪琛教師指引下,通過一段時間努力,開發(fā)出了這套彩色電視機故障信息管理系統(tǒng)(客戶端某些)。本系統(tǒng)重要用于對已有故障信息進行更高效管理,提高信息運用率,變化了以往啰嗦查找,大大提高了故障排除速度及對的率,對進一步提高生產(chǎn)及管理效率具備十分重要意義。1.2課題背景目的研究辦法(1)背景隨著中華人民共和國加入WTO,競爭也越來越慘烈,中華人民共和國制造業(yè)同樣面臨者巨大挑戰(zhàn)。科學技術(shù)飛速發(fā)展,產(chǎn)品功能規(guī)定日益增多,復雜性增長,壽命期縮短,更新?lián)Q代速度加快。然而,產(chǎn)品管理,特別是機械產(chǎn)品方案遠程管理手段,則顯得力不從心,跟不上時代發(fā)展需要。當前,機械產(chǎn)品遠程管理已得到了比較廣泛和進一步研究,并初見成效,公司中龐大激烈變化產(chǎn)品數(shù)據(jù)僅僅依托手工方式來管理是很難做到精確性、完整性、及時性和可追溯性規(guī)定。因而,將公司產(chǎn)品塊化管理創(chuàng)新成果與信息系統(tǒng)建設(shè)結(jié)合起來是較好解決方案。模塊化產(chǎn)品遠程管理可以在保持產(chǎn)品較高通用性同步提供產(chǎn)品多樣化配備和服務,因而,機械產(chǎn)品遠程管理方案應當?shù)玫竭M一步研究和開發(fā)。在這里以彩色電視機故障信息管理系統(tǒng)(客戶端某些)作為研究對象。(2)目的設(shè)計(重要研究內(nèi)容或創(chuàng)新點)本著提高效率減少成本為出發(fā)點,以彩色電視機故障信息管理為詳細范例,探討對公司產(chǎn)品信息管理MIS系統(tǒng)開發(fā),并增長遠程管理功能,使生產(chǎn)工程部故障解決工作系統(tǒng)化,規(guī)范化。(3)研究辦法與技術(shù)路線及預期成果本課題為應用型管理系統(tǒng)開發(fā),嘗試增長遠程管理功能,采用小型DBMS(數(shù)據(jù)庫管理系統(tǒng))ACESS,通過TCP/IP合同運用winsockect結(jié)合,DAO或者ADO與關(guān)系數(shù)據(jù)接口實現(xiàn)產(chǎn)品信息管理,查詢,整頓等工作。本某些為客戶端某些。1.3重要完畢工作及規(guī)定(1)盡量采用生產(chǎn)工程部既有軟硬件環(huán)境及齊全故障信息,從而達到充分運用既有資源,提高系統(tǒng)開發(fā)水平和應用效果目。(2)系統(tǒng)應符合生工部資料管理規(guī)范,符合普通員工操作規(guī)范,達到操作過程中直觀、以便、實用、安全等規(guī)定。(3)系統(tǒng)采用VisualC++6.0環(huán)境,用ADO(ActiveXDataObjects)數(shù)據(jù)訪問方式,采用MicrosoftAccess作為數(shù)據(jù)源,使整個系統(tǒng)易于使用及維護。(4)系統(tǒng)采用模塊化程序設(shè)計辦法,既便于系統(tǒng)功能各種組合和修改,又便于未參加開發(fā)技術(shù)維護人員補充、維護。(5)系統(tǒng)應具備數(shù)據(jù)維護功能,及時依照數(shù)據(jù)變化進行添加、刪除、修改、查詢等操作,并加入擁護權(quán)限功能,以及遠程管理功能,使系統(tǒng)更加安全合用。2.MIS系統(tǒng)設(shè)計及功能分析簡介2.1MIS系統(tǒng)簡介所謂MIS(管理信息系統(tǒng)--ManagementInformationSystem)系統(tǒng),是一種由人、計算機及其她外圍設(shè)備等構(gòu)成能進行信息收集、傳遞、存貯、加工、維護和使用系統(tǒng)。是一門新興科學,其重要任務是最大限度運用當代計算機及網(wǎng)絡通訊技術(shù)加強公司信息管理,通過對公司擁有人力、物力、財力、設(shè)備、技術(shù)等資源調(diào)查理解,建立對的數(shù)據(jù),加工解決并編制成各種信息資料及時提供應管理人員,以便進行對的決策,不斷提高公司管理水平和經(jīng)濟效益。當前,公司計算機網(wǎng)絡已成為公司進行技術(shù)改造及提高公司管理水平重要手段。隨著國內(nèi)與世界信息高速公路接軌,公司通過計算機網(wǎng)絡獲得信息必將為公司帶來巨大經(jīng)濟效益和社會效益,公司辦公及管理都將朝著高效、迅速、無紙化方向發(fā)展。MIS系統(tǒng)通慣用于系統(tǒng)決策,例如,可以運用MIS系統(tǒng)找出當前迫切需要解決問題,并將信息及時反饋給上層管理人員,使她們理解當前工作發(fā)展進展或局限性。換句話說,MIS系統(tǒng)最后目是使管理人員及時理解公司現(xiàn)狀,把握將來發(fā)展途徑。一種完整MIS應涉及:輔助決策系統(tǒng)(DSS)、工業(yè)控制系統(tǒng)(IPC)、辦公自動化系統(tǒng)(OA)以及數(shù)據(jù)庫、模型庫、辦法庫、知識庫和與上級機關(guān)及外界互換信息接口。其中,特別是辦公自動化系統(tǒng)(OA)、與上級機關(guān)及外界互換信息等都離不開Intranet應用??梢赃@樣說,當代公司MIS不能沒有Intranet,但Intranet建立又必要依賴于MIS體系構(gòu)造和軟硬件環(huán)境。老式MIS系統(tǒng)核心是CS(Client/Server——客戶端/服務器)架構(gòu),而基于InternetMIS系統(tǒng)核心是BS(Browser/Server——瀏覽器/服務器)架構(gòu)。BS架構(gòu)比起CS架構(gòu)有著很大優(yōu)越性,老式MIS系統(tǒng)依賴于專門操作環(huán)境,這意味著操作者活動空間受到極大限制;而BS架構(gòu)則不需要專門操作環(huán)境,在任何地方,只要能上網(wǎng),就可以操作MIS系統(tǒng),這其中優(yōu)劣差別是不言而喻?;贗nternet上MIS系統(tǒng)是對老式MIS系統(tǒng)概念上擴展,它不但可以用于高層決策,并且可以用于進行普通商務管理。通過顧客具名登錄(或匿名登錄),以及相應權(quán)限控制,可以實當前遠端對系統(tǒng)瀏覽、查詢、控制和審視。隨著Internet擴展,既有公司和學校不再局限于物理有形真實地區(qū),網(wǎng)絡自身成為事實上發(fā)展空間。基于Internet上MIS系統(tǒng),彌補了老式MIS系統(tǒng)局限性,充分體現(xiàn)了當代網(wǎng)絡時代特點。隨著Internet技術(shù)高速發(fā)展,因特網(wǎng)必將成為人類新社會技術(shù)基石?;贗nternetMIS系統(tǒng)必將成為網(wǎng)絡時代新一代管理信息系統(tǒng),前景極為樂觀。2.2系統(tǒng)設(shè)計及功能分析通過一種彩電故障信息管理系統(tǒng),使生產(chǎn)工程部客戶端某些故障解決工作模塊化,系統(tǒng)化,規(guī)范化,自動化,從而達到提高故障排除效率,提高信息運用率目。本系統(tǒng)功能分析是在系統(tǒng)開發(fā)總體任務基本上完畢,本系統(tǒng)需要完畢功能如下:故障信息輸入、查詢、修改、刪除故障信息打印系統(tǒng)顧客管理,權(quán)限管理2.3功能模塊設(shè)計在系統(tǒng)功能分析基本上,考慮VisualC++程序編制特點,得到圖1所示系統(tǒng)功能模塊圖。增長新信息信息數(shù)據(jù)彩電故障信息共享系統(tǒng)增長新信息信息數(shù)據(jù)彩電故障信息共享系統(tǒng)信息變動管理員信息管理修改新信息權(quán)限驗證打印管理系統(tǒng)管理信息變動管理員信息管理修改新信息權(quán)限驗證打印管理系統(tǒng)管理刪除新信息刪除新信息查詢信息查詢顧客權(quán)限增長刪除修改查詢信息查詢顧客權(quán)限增長刪除修改圖1系統(tǒng)功能模塊圖圖2數(shù)據(jù)流程3.數(shù)據(jù)庫設(shè)計及ADO訪問數(shù)據(jù)庫3.1數(shù)據(jù)庫設(shè)計過程數(shù)據(jù)庫技術(shù)是信息資源管理最有效手段。數(shù)據(jù)庫設(shè)計是指對于一種給定應用環(huán)境,構(gòu)造最優(yōu)數(shù)據(jù)庫模式,建立數(shù)據(jù)庫及其應用系統(tǒng),有效存儲數(shù)據(jù),滿足顧客信息規(guī)定和解決規(guī)定。數(shù)據(jù)庫設(shè)計中需求分析階段綜合各個顧客應用需求(現(xiàn)實世界需求),在概念設(shè)計階段形成獨立于機器特點、獨立于各個DBMS產(chǎn)品概念模式(信息世界模型),用E-R圖來描述。在邏輯設(shè)計階段將E-R圖轉(zhuǎn)換成詳細數(shù)據(jù)庫產(chǎn)品支持數(shù)據(jù)模型如關(guān)系模型,形成數(shù)據(jù)庫邏輯模式。然后依照顧客解決規(guī)定,安全性考慮,在基本表基本上再建立必要視圖(VIEW)形成數(shù)據(jù)外模式。在物理設(shè)計階段依照DBMS特點和解決需要,進行物理存儲安排,設(shè)計索引,形成數(shù)據(jù)庫內(nèi)模式。數(shù)據(jù)構(gòu)造好壞將直接影響到系統(tǒng)效率以及實現(xiàn)效果。好數(shù)據(jù)庫構(gòu)造會減少數(shù)據(jù)庫存儲量、冗余度,數(shù)據(jù)完整性和一致性比較高,系統(tǒng)具備較快響應速度,簡化基于數(shù)據(jù)庫應用程序?qū)崿F(xiàn)辦法等,普通可將數(shù)據(jù)庫構(gòu)造設(shè)計分為四個階段,即需求分析、概念構(gòu)造設(shè)計、邏輯構(gòu)造設(shè)計和物理設(shè)計。(1)數(shù)據(jù)庫需求分析需求分析任務是詳細理解應用環(huán)境,理解與分析顧客對數(shù)據(jù)和數(shù)據(jù)解決需求,相應用系統(tǒng)性能規(guī)定,提出新系統(tǒng)目的,為第二階段、第三階段設(shè)計奠定基本。在仔細研究資料管理過程基本上,歸納出系統(tǒng)數(shù)據(jù)流程圖如上圖2所示,所有數(shù)據(jù)均由管理員輸入管理。依照圖2數(shù)據(jù)流程圖,可得到所須設(shè)計數(shù)據(jù)項和數(shù)據(jù)構(gòu)造如下:故障信息,涉及數(shù)據(jù)項有顯象管、機芯、機殼、器件、技術(shù)員、時間、其她、信息名、詳細內(nèi)容等。權(quán)限驗證,涉及數(shù)據(jù)項有顧客名、密碼等。由上分析,為此需要有2個數(shù)據(jù)表分別用來存儲故障信息顧客信息。這兩個數(shù)據(jù)表均用Access實現(xiàn)。Access中設(shè)計視圖如圖3、圖4所示,其中數(shù)據(jù)類型依照詳細數(shù)據(jù)字段來設(shè)立。圖3info1視圖圖4login視圖(2)數(shù)據(jù)庫概念構(gòu)造設(shè)計概念模型用于信息世界建模。概念模型不依賴于某一種DBMS支持數(shù)據(jù)模型。概念模型可以轉(zhuǎn)換為計算機上某一DBMS支持特定數(shù)據(jù)模型。概念構(gòu)造設(shè)計是在需求分析基本上對所有數(shù)據(jù)規(guī)定按一定辦法進行抽象與綜合解決,設(shè)計出不依賴于某種詳細DBMS滿足顧客應用需求信息構(gòu)造。這種信息構(gòu)造咱們稱為概念模型。通過對顧客需求進行綜合、歸納與抽象,形成一種獨立于詳細DBMS概念模型,可以用E-R圖表達,概念模型特點:

(1)

具備較強語義表達能力,可以以便、直接地表達應用中各種語義知識。

(2)

應簡樸、清晰、易于顧客理解,是顧客與數(shù)據(jù)庫設(shè)計人員之間進行交流語言。

最慣用概念構(gòu)造設(shè)計辦法有實體分析法、面向?qū)ο笤O(shè)計辦法、屬性綜合法和規(guī)范化關(guān)系辦法。咱們此處重要討論實體分析法。這是一種自上而下抽象辦法。這種辦法規(guī)定依照前面數(shù)據(jù)需求分析,擬定系統(tǒng)范疇,擬定實體及其屬性,畫出系統(tǒng)實體聯(lián)系模型(E-R圖)。在分析需求基本上,咱們得到整個系統(tǒng)E-R圖。3.2創(chuàng)立應用程序本彩電故障信息共享系統(tǒng)采用VisualC++6.0ADO辦法開發(fā)。工程創(chuàng)立詳細環(huán)節(jié)如下:打開VisualC++后,選取菜單“File/New”中“Project”選項卡中“MFCAppWizard[exe]”,設(shè)立工程名字為“CaidianGuzhang”,選取存儲位置,單擊“OK”。創(chuàng)立一種單文檔應用程序,在Step1中,選取“SingleDocument”,然后單擊“Next”按扭,進入“Step2of6”。始終單擊“Next”按扭,直到進入“Step6of6”。由于為了能使數(shù)據(jù)更直觀,咱們采用列表形式,因此需要在本環(huán)節(jié)中,選取CCaidianGuzhangView類BaseClass(基類)為ClistView。然后單擊“Finish”,最后將浮現(xiàn)確認窗口,如圖6所示,檢查無誤后,單擊“擬定”,即可完畢工程創(chuàng)立。圖6確認為了使程序能支持ADO數(shù)據(jù)庫對象,以使程序能對的調(diào)用數(shù)據(jù)庫,應當在頭文獻stdafx.h中加入#import"c:\ProgramFiles\CommonFiles\System\ado\msado15.dll"\rename_namespace("AdoNS")\rename("EOF","adoEOF")usingnamespaceAdoNS;導入ADO庫并在主程序入口:BOOLCCaidianGuzhangApp::InitInstance()中加入AfxOleInit();初始化COM環(huán)境。ADO類定義是作為一種資源存儲在ADODLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫描述了自治接口,以及C++使用COMvtable接口。當使用#import指令時,在運營時VisualC++需要從ADODLL中讀取這個類型庫,并以此創(chuàng)立一組C++頭文獻。ADO庫包括三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。

_ConnectionPtr普通被用來創(chuàng)立一種數(shù)據(jù)連接或執(zhí)行一條不返回任何成果SQL語句,如一種存儲過程。

_CommandPtr返回一種記錄集。它提供了一種簡樸辦法來執(zhí)行返回記錄集存儲過程和SQL語句。在使用_CommandPtr接口時,可以運用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。

_RecordsetPtr是一種記錄集對象。與以上兩種對象相比,它對記錄集提供了更多控制功能,如記錄鎖定、游標控制等。3.3數(shù)據(jù)庫操作準備(1)初始化接口:initialDbConnect(CStringmdbname)在本系統(tǒng)中通過建立一種數(shù)據(jù)庫類classDatabaseOperate來實現(xiàn)整個信息系統(tǒng)對數(shù)據(jù)操作,下面是對其提供重要接口設(shè)計:該接口函數(shù)作用是初始化連接數(shù)據(jù)源。BOOLDatabaseOperate::InitialDbConnect(CStringmdbname){m_pConnection.CreateInstance(_uuidof(Connection)); //先連接數(shù)據(jù)庫 CStringstrConnect; BSTRbstrSQL; strConnect.Format(_T("Provider=Microsoft.JET.OLEDB.4.0;Dataource=%s"),mdbname); bstrSQL=strConnect.AllocSysString(); …………… AfxMessageBox(e.ErrorMessage()); returnfalse;} returntrue; }

該接口重要功能是連接咱們在Access中設(shè)計數(shù)據(jù)源,CStringmdbname變量作為數(shù)據(jù)庫文獻mdb名稱,由調(diào)用DatabaseOperate類主程序給出。在本設(shè)計中是“info1.mdb”(2)執(zhí)行查詢,修改,添加,刪除等功能接口函數(shù)設(shè)計BOOLDatabaseOperate::ExecuteSQLEx(CStringstrSQL){ _variant_tRecordsAffected;// _bstr_tbstrSql(strSQL); try {m_pConnection->Execute(bstrSql,&RecordsAffected,adCmdText); } catch(_com_errore) { AfxMessageBox(e.ErrorMessage()); returnFALSE;} returnTRUE; }通過執(zhí)行一條SQL語句來實現(xiàn)數(shù)據(jù)庫讀寫操作,其中m_pConnection是咱們在調(diào)用InitialDbConnect初始化接口時候創(chuàng)立連接型智能指針,咱們可以通過它來執(zhí)行SQL語句(3)獲取數(shù)據(jù)信息接口函數(shù)設(shè)計BOOLDatabaseOperate::GetCurrentRecordSet(Recordstruct&result,longShijiansuoyin,CStringtablename){ _RecordsetPtrtem_pRecordset; tem_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指針 CStringstrSql; strSql.Format(_T("select*from%swheresjsy=%d"),tablename,Shijiansuoyin); BSTRbstrSQL=strSql.AllocSysString(); try { tem_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,adCmdText); } catch(_com_errore)//異常解決 { AfxMessageBox(e.ErrorMessage()); if(tem_pRecordset->State){ tem_pRecordset->Close(); tem_pRecordset.Release(); } returnFALSE; } while(!tem_pRecordset->adoEOF)//遍歷所有記錄 {_variant_tv_xxg,v_jx,v_jk,v_qj v_xxg=tem_pRecordset->GetCollect(_T("顯象管")); v_jx=tem_pRecordset->GetCollect(_T("機芯")); v_jk=tem_pRecordset->GetCollect(_T("機殼")); v_qj=tem_pRecordset->GetCollect(_T("器件")); ………….. //獲取各個字段信息 //將各字段信息賦值給result構(gòu)造體,此處省略 tem_pRecordset->MoveNext();//轉(zhuǎn)到下一條紀錄 } if(tem_pRecordset->State){ tem_pRecordset->Close(); tem_pRecordset.Release(); } returnTRUE;}其中參數(shù)Recordstruct&result是對查詢成果定義構(gòu)造體,與前面咱們在數(shù)據(jù)庫中建立彩電信息構(gòu)造一致:typedefstruct_Recordstruct{CStringxxg;//顯象管 CStringjx; //機芯 CStringqj; //器件 CStringjsy; //技術(shù)員 CStringsj; //時間 CStringqita; //其她信息 CStringsj; //信息名 CStringqita; //詳細內(nèi)容 long sjsy; //時間索引}Recordstruct,*pRecordstruct;3.4ADO訪問數(shù)據(jù)庫(1)生成應用程序框架并初始化OLE/COM庫環(huán)境創(chuàng)立一種原則MFCAppWizard(exe)應用程序,然后在使用ADO數(shù)據(jù)庫InitInstance函數(shù)中初始化OLE/COM庫(由于ADO庫是一種COMDLL庫)。創(chuàng)立一種原則MFCAppWizard(exe)應用程序,然后在使用ADO數(shù)據(jù)庫InitInstance函數(shù)中初始化OLE/COM庫(由于ADO庫是一種COMDLL庫)。

本例為:BOOLCAdotestDlg::OnInitDialog(){::CoInitialize(NULL);//初始化OLE/COM庫環(huán)境}程序最后要調(diào)用::CoUninitialize();//釋放程序占用COM資源。

此外:m_pRecordset->Close();注意!??!不要多次關(guān)閉!?。。。。。。。。。?!m_pConnection->Close();m_pRecordset=NULL;m_pConnection=NULL;

(2)引入ADO庫文獻使用ADO前必要在工程stdafx.h文獻最后用直接引入符號#import引入ADO庫文獻,以使編譯器能對的編譯。ADO類定義是作為一種資源存儲在ADODLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫描述了自治接口,以及C++使用COMvtable接口。當使用#import指令時,在運營時VisualC++需要從ADODLL中讀取這個類型庫,并以此創(chuàng)立一組C++頭文獻。這些頭文獻具備.tli和.tlh擴展名,讀者可以在項目目錄下找到這兩個文獻。在C++程序代碼中調(diào)用ADO類要在這些文獻中定義。

程序第三行批示ADO對象不使用名稱空間。在有些應用程序中,由于應用程序中對象與ADO中對象之間也許會浮現(xiàn)命名沖突,因此有必要使用名稱空間。如果要使用名稱空間,則可把第三行程序修改為:rename_namespace("AdoNS")。第四行代碼將ADO中EOF(文獻結(jié)束)改名為adoEOF,以避免與定義了自己EOF其她庫沖突。(3)運用智能指針進行數(shù)據(jù)庫操作在CaboutDlg頭文獻中定義兩個ADO智能指針類實例,并在對話框中加入一種ListCtrl。classCAdotestDlg:publicCDialog{_ConnectionPtrm_pConnection;_RecordsetPtrm_pRecordset;ClistCtrlm_List;}ADO庫包括三個智能指針:_ConnectionPtr、_CommandPtr和_RecordsetPtr。

_ConnectionPtr普通被用來創(chuàng)立一種數(shù)據(jù)連接或執(zhí)行一條不返回任何成果SQL語句,如一種存儲過程。

_CommandPtr返回一種記錄集。它提供了一種簡樸辦法來執(zhí)行返回記錄集存儲過程和SQL語句。在使用_CommandPtr接口時,可以運用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。_RecordsetPtr是一種記錄集對象。與以上兩種對象相比,它對記錄集提供了更多控制功能,如記錄鎖定、游標控制等。在使用ADO程序事件響應中OnButton1加入如下代碼:voidCAdotestDlg::OnButton1(){m_List.ResetContent();m_pConnection.CreateInstance(_uuidof(Connection));//初始化Connection指針m_pRecordset.CreateInstance(_uuidof(Recordset));//初始化Recordset指針try{m_pConnection->Open("DSN=ADOTest","","",0);//連接叫作ADOTestODBC數(shù)據(jù)源//注意:這是連接不需要顧客ID或密碼open函數(shù)//否則形式為->Open("DSN=test;uid=sa;pwd=123;","","",0);//執(zhí)行SQL語句得到一種記錄集把其指針賦值給m_pRecordsetCStringstrSql="select*frommiddle";BSTRbstrSQL=strSql.AllocSysString();m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,

adCmdText);//adOpenDynamic:動態(tài)adLockOptimistic樂觀封鎖法adCmdText:文本查詢語句while(!m_pRecordset->adoEOF)//遍歷所有記錄{//取紀錄字段值方式之一_variant_tTheValue;//VARIANT數(shù)據(jù)類型TheValue=m_pRecordset->GetCollect("BIG_NAME");//得到字段BIG_NAME值if(TheValue.vt!=VT_NULL)m_List.AddString((char*)_bstr_t(TheValue));//將該值加入到列表控件中//取紀錄字段值方式之二//_bstr_tTheValue1=m_pRecordset->Fields->GetItem("BIG_NAME")->Value;//CStringtemp=TheValue1.copy();//m_List.AddString(temp);//數(shù)據(jù)類型轉(zhuǎn)換_variant_tvUsername,vBirthday,vID,vOld;TRACE("id:%d,姓名:%s,年齡:%d,生日:%s\r\n",vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);m_pRecordset->MoveNext();//轉(zhuǎn)到下一條紀錄}m_pRecordset->Close();m_pConnection->Close();}catch(_com_errore)//異常解決{AfxMessageBox(e.ErrorMessage());}m_pRecordset->Close();//注意?。。〔灰啻侮P(guān)閉?。。?!否則會出錯m_pConnection->Close();m_pRecordset=NULL;m_pConnection=NULL;}程序中通過_variant_t和_bstr_t轉(zhuǎn)換COM對象和C++類型數(shù)據(jù),_variant_t類封裝了OLE自治VARIANT數(shù)據(jù)類型。在C++中使用_variant_t類要比直接使用VARIANT數(shù)據(jù)類型容易得多。好,編譯后該程序就能運營了,但記住運營前要創(chuàng)立一種叫ADOTestODBC數(shù)據(jù)源。該程序?qū)驯韒iddle中BIG_NAME字段值顯示在列表控件中。(4)執(zhí)行SQL命令并獲得成果記錄集為了獲得成果記錄集,咱們定義一種指向Recordset對象指針:_RecordsetPtrm_pRecordset;并為其創(chuàng)立Recordset對象實例:m_pRecordset.CreateInstance("ADODB.Recordset");

SQL命令執(zhí)行可以采用各種形式,下面咱們一進行簡樸簡介。

1.運用Connection對象Execute辦法執(zhí)行SQL命令

Execute辦法原型如下所示:_RecordsetPtrConnection15::Execute(_bstr_tCommandText,VARIANT*RecordsAffected,longOptions)其中CommandText是命令字串,普通是SQL命令。參數(shù)RecordsAffected是操作完畢后所影響行數(shù),參數(shù)Options表達CommandText中內(nèi)容類型,Options可以取如下值之一:adCmdText:表白CommandText是文本命令adCmdTable:表白CommandText是一種表名adCmdProc:表白CommandText是一種存儲過程adCmdUnknown:未知Execute執(zhí)行完后返回一種指向記錄集指針。2.運用Command對象來執(zhí)行SQL命令_CommandPtrm_pCommand;m_pCommand.CreateInstance("ADODB.Command");_variant_tvNULL;vNULL.vt=VT_ERROR;vNULL.scode=DISP_E_PARAMNOTFOUND;///定義為無參數(shù)m_pCommand->ActiveConnection=m_pConnection;///非常核心一句,將建立連接賦值給它m_pCommand->CommandText="SELECT*FROMusers";///命令字串m_pRecordset=m_pCommand->Execute(&vNULL,&vNULL,adCmdText);///執(zhí)行命令,獲得記錄集。在這段代碼中咱們只是用Command對象來執(zhí)行了SELECT查詢語句,Command對象在進行存儲過程調(diào)用中能真正體現(xiàn)它作用。

3.直接用Recordset對象進行查詢獲得記錄集(5)記錄集遍歷、更新

依照咱們剛才通過執(zhí)行SQL命令建立好users表,它包括四個字段:ID,username,old,birthday

如下代碼實現(xiàn):打開記錄集,遍歷所有記錄,刪除第一條記錄,添加三條記錄,移動光標到第二條記錄,

更改其年齡,保存到數(shù)據(jù)庫。_variant_tvUsername,vBirthday,vID,vOld;_RecordsetPtrm_pRecordset;m_pRecordset.CreateInstance("ADODB.Recordset");m_pRecordset->Open("SELECT*FROMusers",_variant_t((IDispatch*)m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);while(!m_pRecordset->adoEOF){vID=m_pRecordset->GetCollect(_variant_t((long)0));///獲得第1列值,從0開始計數(shù),///你也可以直接給出列名稱,如下一行vUsername=m_pRecordset->GetCollect("username");///獲得username字段值vOld=m_pRecordset->GetCollect("old");vBirthday=m_pRecordset->GetCollect("birthday");///在DEBUG方式下OUTPUT窗口輸出記錄集中記錄if(vID.vt!=VT_NULL&&vUsername.vt!=VT_NULL&&vOld.vt!=VT_NULL&&vBirthday.vt

!=VT_NULL)TRACE("id:%d,姓名:%s,年齡:%d,生日:%s\r\n",vID.lVal,(LPCTSTR)(_bstr_t)vUsername,vOld.lVal,(LPCTSTR)(_bstr_t)vBirthday);m_pRecordset->MoveNext();///移到下一條記錄}m_pRecordset->MoveFirst();///移到首條記錄m_pRecordset->Delete(adAffectCurrent);///刪除當前記錄///添加三條新記錄并賦值for(inti=0;i<3;i++){m_pRecordset->AddNew();///添加新記錄m_pRecordset->PutCollect("ID",_variant_t((long)(i+10)));m_pRecordset->PutCollect("username",_variant_t("葉利欽"));m_pRecordset->PutCollect("old",_variant_t((long)71));m_pRecordset->PutCollect("birthday",_variant_t("1930-3-15"));}m_pRecordset->Move(1,_variant_t((long)adBookmarkFirst));///從第一條記錄往下移動一條記錄,即移動

到第二條記錄處m_pRecordset->PutCollect(_variant_t("old"),_variant_t((long)45));///修改其年齡m_pRecordset->Update();///保存到庫中備注:多次查詢可把查詢過程做成一種函數(shù)ExecuteSQL讓m_pRecordset獲得連接指針m_pConnection查詢成果voidExecuteSQL(_ConnectionPtrm_pConnection,_RecordsetPtrm_pRecordset,CStringstrSql){//執(zhí)行Select語句BSTRbstrSQL=strSql.AllocSysString();try{m_pRecordset->Open(bstrSQL,(IDispatch*)m_pConnection,adOpenDynamic,adLockOptimistic,

adCmdText);//adOpenDynamic:動態(tài)adLockOptimistic樂觀封鎖法adCmdText:文本查詢語句}catch(_com_errorerror){CStringerrorMessage;errorMessage.Format("%s",(LPTSTR)error.Description());AfxMessageBox(errorMessage);}}//出錯解決:3127——沒有找到目的表3092——目的表已經(jīng)存在例如:catch(const_com_errore){AfxMessageBox(e.Description());longerrorCode=e.WCode();if(3127==errorCode)AfxMessageBox("表不存在");if(3092==errorCode)AfxMessageBox("表已經(jīng)存在");returnFALSE;}4.功能模塊創(chuàng)立在建立了數(shù)據(jù)庫操作類后,接下來咱們就可以開始進行各功能模塊創(chuàng)立。4.1系統(tǒng)主體窗體創(chuàng)立在咱們按照VC++AppWizard創(chuàng)立竣工程后,為了使主窗口框架更適合整個系統(tǒng)操作,咱們有必要進行修改,重新創(chuàng)立。4.1.1主菜單創(chuàng)立在WorkSpase中選取ResourseView,然后雙擊Menu文獻夾,再雙擊IDR_MAINFRAME選項,單擊右邊窗口中“協(xié)助”旁邊虛線框,在雙擊或按回車鍵,就會浮現(xiàn)“MenuItemProperties”對話框,在這個對話框中輸入菜單項內(nèi)容,如圖8所示。圖8設(shè)立一級菜單二級菜單設(shè)立基本上都和圖8相似,只是必要設(shè)立ID。按照這種辦法,最后創(chuàng)立出如表2所示菜單構(gòu)造。菜單名稱ID文獻….打印ID_FILE_PRINT….打印預覽ID_FILE_PRINT_PREVIEW….打印設(shè)立ID_FILE_PRINT_SETUP….近來文獻ID_FILE_MRU_FILE1….退出ID_APP_EXIT查看….工具欄ID_VIEW_TOOLBAR….狀態(tài)欄ID_VIEW_STATUS_BAR信息管理….查詢記錄ID_RECORD_SEARCH….添加記錄ID_RECORD_ADD….查看記錄ID_RECORD_VIEW….刪除記錄ID_RECORD_DEL….更改記錄ID_RECORD_EDIT權(quán)限管理….添加顧客ID_USER_ADD….更改密碼ID_PASSWARD_EDIT….刪除顧客ID_USER_DEL協(xié)助表2菜單構(gòu)造4.1.2右鍵菜單創(chuàng)立為了實現(xiàn)操作以便、快捷,咱們在程序中加入了右鍵菜單。在VC主菜單中,按“Project”—>“AddtoProject”—>“ComponentsandControlsGallery”即可進入“ComponentsandControlsGallery”對話框,然后再打開VisualC++Components文獻,再選取“Pop-upMenu”,單擊“insert”,隨后在跳出對話框中選取“CCaidianGuzhangView”,最后單擊“OK”。完畢后,需要對其進行編輯。單擊WorkSpase中ResourseView,在Menu文獻夾中選取CG_IDR_POPUP_MAIN_FRAME,之后邊可在右邊窗口對其進行編輯。編輯辦法與主菜單相似,其中各項ID分別相應相應菜單項,相應關(guān)系如表3所示。菜單名稱ID查看記錄ID_RECORD_VIEW添加記錄ID_RECORD_ADD刪除記錄ID_RECORD_DEL更改記錄ID_RECORD_EDIT表3右鍵菜單相應菜單項ID4.1.3工具欄創(chuàng)立在WorkSpase中選取ResourseView,然后雙擊Toolbar文獻夾,再雙擊IDR_MAINFRAM選項,就可以運用工具條編輯器(ToolbarEditor)編輯右邊工具條。本系統(tǒng)創(chuàng)立工具條如圖9所示。其中各按鈕ID分別相應相應菜單項,按從做到右順序相應菜單項ID如表4所示。順序ID1ID_FILE_PRINT2ID_RECORD_ADD3ID_RECORD_DEL4ID_RECORD_SEARCH5ID_RECORD_ALL6ID_APP_ABOUT表4工具條相應菜單項ID(注:其中第5個是顯示所有數(shù)據(jù),實現(xiàn)刷新功能,在菜單中沒有)4.1.4數(shù)據(jù)顯示與表格控件創(chuàng)立由于CCaidianGuzhangView是從ClistView繼承,因此創(chuàng)立竣工程后,就已有表格控件存在。而咱們目就是使控件上顯示更符合系統(tǒng)使用,因此咱們有必要對初試界面也就是對CCaidianGuzhangView::OnInitialUpdate()函數(shù)進行修改,修改后函數(shù)如下:voidCCaidianGuzhangView::OnInitialUpdate(){ CListView::OnInitialUpdate(); //TODO:YoumaypopulateyourListViewwithitemsbydirectlyaccessing CListCtrl&ctl=GetListCtrl(); ctl.ModifyStyle(0,LVS_REPORT|LVS_SINGLESEL); ctl.SetExtendedStyle(LVS_EX_FLATSB|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);//設(shè)立窗體類型 //打開數(shù)據(jù)庫 m_dbopt.InitialDbConnect("caidianxinxi.mdb"); m_dbopt.GetAllInfo(m_Allinfo);//獲取已有數(shù)據(jù)信息GetDocument()->SetTitle("彩電故障信息共享系統(tǒng)");//設(shè)立標題 CStringstr; //如下是設(shè)立控件按鈕顯示字符 ctl.InsertColumn(0,"序號"); ctl.InsertColumn(1,"顯象管"); ctl.InsertColumn(2,"機芯"); ctl.InsertColumn(3,"機殼"); ctl.InsertColumn(4,"器件"); ctl.InsertColumn(5,"技術(shù)員"); ctl.InsertColumn(6,"時間"); ctl.InsertColumn(7,"其她"); ctl.InsertColumn(8,"信息名"); ctl.InsertColumn(9,"詳細內(nèi)容");ctl.SetColumnWidth(0,50); for(inti=1;i<8;i++) ctl.SetColumnWidth(i,80); ctl.SetColumnWidth(8,100); ctl.SetColumnWidth(9,100); ShowRecordList();//調(diào)用顯示數(shù)據(jù)函數(shù),顯示數(shù)據(jù)}接下來就是要編寫ShowRecordList()函數(shù)。程序如下:voidCXiahuaView::ShowTableData(){ CListCtrl&ctl=GetListCtrl(); ctl.DeleteAllItems(); intsize=m_Allinfo.size(); CStringstr; for(inti=0;i<size;i++) {cinfomemeber=m_Allinfo[i]; ctl.InsertItem(i,""); ctl.SetItemData(i,i); str.Format("%d",i); ctl.SetItemText(i,0,str); ctl.SetItemText(i,1,memeber.xxg); ctl.SetItemText(i,2,memeber.jx); ctl.SetItemText(i,3,memeber.jk); ctl.SetItemText(i,4,memeber.qj); ctl.SetItemText(i,5,memeber.jsy); CTimetm(memeber.sjsy); str.Format("%d-%d-%d%d:%d",tm.GetYear(),tm.GetMonth(),tm.GetDay(), tm.GetHour(),tm.GetMinute()); ctl.SetItemText(i,6,str); ctl.SetItemText(i,7,memeber.qt); ctl.SetItemText(i,8,memeber.xxm); ctl.SetItemText(i,9,memeber.jtnr); }}//設(shè)立各數(shù)據(jù)項顯示寬度到此,咱們完畢了主體框架制作,主窗口如圖9所示。圖9主窗口4.2系統(tǒng)顧客權(quán)限管理模塊創(chuàng)立為了數(shù)據(jù)庫使用安全,必要對數(shù)據(jù)庫各種操作實行權(quán)限管理。只有管理員容許人員才有權(quán)力使用。容許顧客和密碼都預先存在數(shù)據(jù)庫中,本系統(tǒng)中為login表。權(quán)限管理模塊重要實現(xiàn)如下功能:添加顧客更改密碼刪除顧客顧客登錄(權(quán)限驗證)4.2.1添加顧客對話框創(chuàng)立在ResourseView中,右擊Dialog,選取InsertDialog,便可在右邊窗口中編輯對話框。完畢對話框如圖10所示。對話框中各種非靜態(tài)文本控件屬性見表5。圖10添加顧客對話框圖11密碼修改對話框控件ID顧客名EditBoxIDC_USER密碼EditBoxIDC_PSWD確認密碼EditBoxIDC_COMPSWD表5添加顧客對話框中各控件屬性設(shè)立對話框編輯完畢后,雙擊該對話框,進入NewClass對話框,取此登記對話框類名為CAddUser。然后在MFCClassWizard中選取Classname為CXiahuaView,ObjectIDs為“ID_USER_ADD”,Messages為“COMMAND”,單擊AddFunction按鈕,取系統(tǒng)默認函數(shù)名,再單擊EditCode按鈕,即可進入代碼編輯器對函數(shù)CXiahuaView::OnUserAdd()進行編輯。此函數(shù)代碼如下:voidCCaidianGuzhangView::OnUserAdd(){//TODO:AddyourcommandhandlercodehereCLoginSet*m_daorecordset=newCLoginSet(&pDatabase);//初始化連接數(shù)據(jù)庫指針 CStringstrSQL; if(adiministrator()==0)//管理員權(quán)限驗證,失敗返回 return;else//成功進入增長顧客窗口 {CAddUseradduser;//進入增長顧客窗口 if(adduser.DoModal()==IDCANCEL) return; else { m_daorecordset->Close(); strSQL.Format("select*fromloginwhereuser='%s'",adduser.m_strUser);m_daorecordset->Open(AFX_DAO_USE_DEFAULT_TYPE,strSQL);if(m_daorecordset->GetRecordCount()!=0) { AfxMessageBox(_T("對不起!\n"+adduser.m_strUser+"已經(jīng)存在,請嘗試用其她名字!"),MB_ICONEXCLAMATION); } else { if(adduser.m_strPswd.Compare(adduser.m_strCompswd)!=0) { AfxMessageBox(_T("兩遍新密碼輸入不一致!\n請重輸!"),MB_ICONEXCLAMATION); } else {adduser.m_strUser.TrimLeft(""); adduser.m_strUser.TrimRight(""); m_daorecordset->AddNew(); m_daorecordset->m_user=adduser.m_strUser; m_daorecordset->m_passward=adduser.m_strPswd; CStringstr1,str2; str1.Format("%s",adduser.m_strUser); str2.Format("\n歡迎您加入!"); str1=str1+str2; AfxMessageBox(str1,MB_ICONEXCLAMATION); m_daorecordset->Update();//增長成功,刷新數(shù)據(jù)庫 }}}}}4.2.2更改密碼對話框創(chuàng)立更改密碼對話框創(chuàng)立與添加顧客對話框創(chuàng)立基本相似,完畢后對話框如圖11所示。對話框中各種非靜態(tài)文本控件屬性見表6??丶蘒D顧客名EditBoxIDC_USER原密碼EditBoxIDC_FORMERPS新密碼EditBoxIDC_NEWPS確認EditBoxIDC_CONFIRPS表6修改密碼對話框中各控件屬性設(shè)立同樣辦法,取此密碼對話框類名為CModPswd。執(zhí)行此對話框函數(shù)為CCaidianGuzhangView::OnPasswardEdit(),實現(xiàn)密碼修改功能程序代碼略。4.2.3刪除顧客對話框創(chuàng)立創(chuàng)立辦法同上,完畢后對話框如圖12所示。對話框中各種非靜態(tài)文本控件屬性見表7。取此刪除顧客對話框類名為CDelUser。控件IDEditBoxIDC_USER表7刪除顧客對話框中各控件屬性設(shè)立圖12刪除顧客對話框圖13顧客登錄對話框4.2.4顧客登錄對話框創(chuàng)立創(chuàng)立辦法同上,完畢后對話框如圖13所示。對話框中各種非靜態(tài)文本控件屬性見表8。取此刪除顧客對話框類名為CloginDlg??丶蘒D顧客名EditBoxIDC_USER密碼EditBoxIDC_PASS表8修改密碼對話框中各控件屬性設(shè)立4.3信息管理模塊創(chuàng)立故障信息在管理中需要進行各種不同操作,信息管理模塊重要實現(xiàn)如下功能:1.查看記錄2.查詢記錄3.添加記錄4.刪除記錄5.修改記錄4.3.1添加記錄對話框創(chuàng)立在ResourseView中,右擊Dialog,選取InsertDialog,便可在右邊窗口中編輯對話框。完畢對話框如圖14所示。對話框中各種非靜態(tài)文本控件屬性見表9??丶蘒D顯象管EditBoxIDC_CRT機芯EditBoxIDC_CLIPS機殼EditBoxIDC_CASE器件EditBoxIDC_DEVICE技術(shù)員EditBoxIDC_WORKOR時間DateTimePickerIDC_DATE其她EditBoxIDC_OTHER信息名EditBoxIDC_INFO詳細內(nèi)容EditBoxIDC_CONTENT表9信息登記對話框中各控件屬性設(shè)立圖14信息登記對話框?qū)υ捒蚓庉嬐戤吅螅p擊該對話框,進入NewClass對話框,取此登記對話框類名為CInfoDlg。然后在MFCClassWizard中選取Classname為CXiahuaView,ObjectIDs為“ID_RECORD_ADD”,Messages為“COMMAND”,單擊AddFunction按鈕,再單擊EditCode按鈕,即可編輯執(zhí)行添加信息功能函數(shù),程序如下:voidCCaidianGuzhangView::OnRecordAdd(){ //TODO:Addyourcommandhandlercodehere if(memberright()==0)//系統(tǒng)顧客驗證,失敗返回 return; else {CInfoDlgaddDlg;//成功進入增長窗口if(addDlg.DoModal()==IDOK){ CStringcrt; crt=addDlg.m_strCrt; if(addDlg.m_strInfo.IsEmpty()) {AfxMessageBox(_T("為保證數(shù)據(jù)有效性,\n請擬定您已輸入有效信息"),MB_ICONEXCLAMATION); OnRecordAdd(); addDlg.m_strCrt=crt;} else { addDlg.m_strCrt.TrimLeft("");//去除各選項左右無效空格字符 addDlg.m_strCrt.TrimRight(""); addDlg.m_strCase.TrimLeft(""); addDlg.m_strCase.TrimRight(""); addDlg.m_strInfo.TrimLeft(""); addDlg.m_strInfo.TrimRight(""); addDlg.m_strDate.TrimLeft(""); addDlg.m_strDate.TrimRight(""); addDlg.m_strDevice.TrimLeft(""); addDlg.m_strDevice.TrimRight(""); addDlg.m_strClips.TrimLeft(""); addDlg.m_strClips.TrimRight(""); addDlg.m_strContent.TrimLeft(""); addDlg.m_strContent.TrimRight(""); addDlg.m_strOther.TrimLeft(""); addDlg.m_strOther.TrimRight(""); addDlg.m_strWorkor.TrimLeft(""); addDlg.m_strWorkor.TrimRight(""); m_pSet->AddNew();//增長數(shù)據(jù) m_pSet->m_crt=addDlg.m_strCrt; m_pSet->m_info=addDlg.m_strInfo; m_pSet->m_case=addDlg.m_strCase; m_pSet->m_date=addDlg.m_strDate; m_pSet->m_device=addDlg.m_strDevice; m_pSet->m_clips=addDlg.m_strClips; m_pSet->m_content=addDlg.m_strContent; m_pSet->m_other=addDlg.m_strOther; m_pSet->m_workor=addDlg.m_strWorkor; m_pSet->Update(); Sort(m_bIsAsc); ShowTableData(); } } }}4.3.2查詢記錄對話框創(chuàng)立查詢記錄對話框與添加記錄對話框創(chuàng)立辦法相似,只是起省略了詳細內(nèi)容這一項。各控件屬性也與添加記錄對話框相似。該對話框類名為CrecordSearch,其所相應實現(xiàn)查詢記錄功能函數(shù)為CXiahuaView::OnRecordSearch()。該函數(shù)實當代碼如下:voidCCaidianGuzhangView::OnRecordSearch(){ //TODO:Addyourcommandhandlercodehere CRecordSearchsearch; CStringstr; if(search.DoModal()==IDCANCEL)return; else { ASSERT(m_pSet->CanRestart()); search.m_strCrt.MakeLower(); m_bIsShowAll=FALSE; CDaoFieldInfofieldInfo; if(!search.m_strCrt.IsEmpty()) {fieldInfo.m_strName="顯象管"; m_pSet->m_strFilter=fieldInfo.m_strName+"="+"'"+search.m_strCrt+"'"; m_pSet->Requery(); } elseif(!search.m_strClips.IsEmpty()) { fieldInfo.m_strName="機芯"; m_pSet->m_strFilter=fieldInfo.m_strName+"="+"'"+search.m_strClips+"'";m_pSet->Requery(); } elseif(!search.m_strCase.IsEmpty()) {fieldInfo.m_strName="機殼"; …………… } else { AfxMessageBox(_T("請輸入顯象管型號"),MB_ICONEXCLAMATION); OnRecordSearch(); } ShowTableData(); }}4.3.3修改記錄對話框創(chuàng)立修改記錄對話框創(chuàng)立與增長記錄對話框創(chuàng)立相似,其界面和各控件屬性與添加記錄對話框相似,只是其相應類名為CrecordEdit。實現(xiàn)修改記錄功能函數(shù)為CXiahuaView::OnRecordEdit(),如下是其完整代碼。voidCCaidianGuzhangView::OnRecordEdit(){ //TODO:Addyourcommandhandlercodehere if(memberright()==0) return; else {CListCtrl&ctl=GetListCtrl();POSITIONpos=ctl.GetFirstSelectedItemPosition();if(pos==NULL) { AfxMessageBox(_T("沒有選中記錄"),MB_ICONEXCLAMATION); } else {intnItem=ctl.GetNextSelectedItem(pos);m_pSet->Move(nItem);CRecordEditeditDlg;editDlg.m_strCrt=m_pSet->m_crt;editDlg.m_strCase=m_pSet->m_case;editDlg.m_strClips=m_pSet->m_clips;editDlg.m_strDevice=m_pSet->m_device;editDlg.m_strWorkor=m_pSet->m_workor;editDlg.m_strOther=m_pSet->m_other;editDlg.m_strDate=m_pSet->m_date; editDlg.m_strContent=m_pSet->m_content;editDlg.m_strInfo=m_pSet->m_info;if(editDlg.DoModal()==IDOK){ m_pSet->Edit(); m_pSet->m_crt=editDlg.m_strCrt;m_pSet->m_case=editDlg.m_strCase;m_pSet->m_clips=editDlg.m_strClips;m_pSet->m_device=editDlg.m_strDevice;m_pSet->m_workor=editDlg.m_strWorkor;m_pSet->m_other=editDlg.m_strOther;m_pSet->m_date=editDlg.m_strDate;m_pSet->m_info=editDlg.m_strInfo;m_pSet->m_content=editDlg.m_strContent; m_pSet->Update(); ShowTableData();}}}}4.3.4查看記錄對話框創(chuàng)立此對話框創(chuàng)立與上大同小異,這里略去。4.4打印預覽模塊創(chuàng)立在以上實現(xiàn)了各模塊后,基本上一完畢了對數(shù)據(jù)完整操作,為了能更好實現(xiàn)數(shù)據(jù)信息在現(xiàn)實中多方位使用,有必要對系統(tǒng)實現(xiàn)按照生產(chǎn)工程部資料管理規(guī)范打印功能。實現(xiàn)該打印功能,重要是編輯OnPrint函數(shù)。詳細代碼如下:voidCCaidianGuzhangView::OnPrint(CDC*pDC,CPrintInfo*pInfo){ //TODO:Addyourspecializedcodehereand/orcallthebaseclass pDC->SetMapMode(MM_LOENGLISH); CXiahuaDoc*pDoc=GetDocument(); ASSERT_VALID(pDoc); TEXTMETRICtextMetric; CRectrect(30,-30,783,-1081);……… CStringstr6="詳細內(nèi)容";CStringstr7; str7.Format("%s",m_pSet->m_content); str4[0].Format("%s",m_pSet->m_crt); str4[1].Format("%s",m_pSet->m_clips); str4[2].Format("%s",m_p

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論