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

下載本文檔

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

文檔簡(jiǎn)介

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

(1)

具備較強(qiáng)語義表達(dá)能力,可以以便、直接地表達(dá)應(yīng)用中各種語義知識(shí)。

(2)

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

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

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

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

_RecordsetPtr是一種記錄集對(duì)象。與以上兩種對(duì)象相比,它對(duì)記錄集提供了更多控制功能,如記錄鎖定、游標(biāo)控制等。3.3數(shù)據(jù)庫操作準(zhǔn)備(1)初始化接口:initialDbConnect(CStringmdbname)在本系統(tǒng)中通過建立一種數(shù)據(jù)庫類classDatabaseOperate來實(shí)現(xiàn)整個(gè)信息系統(tǒng)對(duì)數(shù)據(jù)操作,下面是對(duì)其提供重要接口設(shè)計(jì):該接口函數(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; }

該接口重要功能是連接咱們?cè)贏ccess中設(shè)計(jì)數(shù)據(jù)源,CStringmdbname變量作為數(shù)據(jù)庫文獻(xiàn)mdb名稱,由調(diào)用DatabaseOperate類主程序給出。在本設(shè)計(jì)中是“info1.mdb”(2)執(zhí)行查詢,修改,添加,刪除等功能接口函數(shù)設(shè)計(jì)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語句來實(shí)現(xiàn)數(shù)據(jù)庫讀寫操作,其中m_pConnection是咱們?cè)谡{(diào)用InitialDbConnect初始化接口時(shí)候創(chuàng)立連接型智能指針,咱們可以通過它來執(zhí)行SQL語句(3)獲取數(shù)據(jù)信息接口函數(shù)設(shè)計(jì)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("機(jī)芯")); v_jk=tem_pRecordset->GetCollect(_T("機(jī)殼")); v_qj=tem_pRecordset->GetCollect(_T("器件")); ………….. //獲取各個(gè)字段信息 //將各字段信息賦值給result構(gòu)造體,此處省略 tem_pRecordset->MoveNext();//轉(zhuǎn)到下一條紀(jì)錄 } if(tem_pRecordset->State){ tem_pRecordset->Close(); tem_pRecordset.Release(); } returnTRUE;}其中參數(shù)Recordstruct&result是對(duì)查詢成果定義構(gòu)造體,與前面咱們?cè)跀?shù)據(jù)庫中建立彩電信息構(gòu)造一致:typedefstruct_Recordstruct{CStringxxg;//顯象管 CStringjx; //機(jī)芯 CStringqj; //器件 CStringjsy; //技術(shù)員 CStringsj; //時(shí)間 CStringqita; //其她信息 CStringsj; //信息名 CStringqita; //詳細(xì)內(nèi)容 long sjsy; //時(shí)間索引}Recordstruct,*pRecordstruct;3.4ADO訪問數(shù)據(jù)庫(1)生成應(yīng)用程序框架并初始化OLE/COM庫環(huán)境創(chuàng)立一種原則MFCAppWizard(exe)應(yīng)用程序,然后在使用ADO數(shù)據(jù)庫InitInstance函數(shù)中初始化OLE/COM庫(由于ADO庫是一種COMDLL庫)。創(chuàng)立一種原則MFCAppWizard(exe)應(yīng)用程序,然后在使用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庫文獻(xiàn)使用ADO前必要在工程stdafx.h文獻(xiàn)最后用直接引入符號(hào)#import引入ADO庫文獻(xiàn),以使編譯器能對(duì)的編譯。ADO類定義是作為一種資源存儲(chǔ)在ADODLL(msado15.dll)中,在其內(nèi)部稱為類型庫。類型庫描述了自治接口,以及C++使用COMvtable接口。當(dāng)使用#import指令時(shí),在運(yùn)營(yíng)時(shí)VisualC++需要從ADODLL中讀取這個(gè)類型庫,并以此創(chuàng)立一組C++頭文獻(xiàn)。這些頭文獻(xiàn)具備.tli和.tlh擴(kuò)展名,讀者可以在項(xiàng)目目錄下找到這兩個(gè)文獻(xiàn)。在C++程序代碼中調(diào)用ADO類要在這些文獻(xiàn)中定義。

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

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

_CommandPtr返回一種記錄集。它提供了一種簡(jiǎn)樸辦法來執(zhí)行返回記錄集存儲(chǔ)過程和SQL語句。在使用_CommandPtr接口時(shí),可以運(yùn)用全局_ConnectionPtr接口,也可以在_CommandPtr接口里直接使用連接串。_RecordsetPtr是一種記錄集對(duì)象。與以上兩種對(duì)象相比,它對(duì)記錄集提供了更多控制功能,如記錄鎖定、游標(biāo)控制等。在使用ADO程序事件響應(yīng)中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:動(dòng)態(tài)adLockOptimistic樂觀封鎖法adCmdText:文本查詢語句while(!m_pRecordset->adoEOF)//遍歷所有記錄{//取紀(jì)錄字段值方式之一_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));//將該值加入到列表控件中//取紀(jì)錄字段值方式之二//_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)到下一條紀(jì)錄}m_pRecordset->Close();m_pConnection->Close();}catch(_com_errore)//異常解決{AfxMessageBox(e.ErrorMessage());}m_pRecordset->Close();//注意?。?!不要多次關(guān)閉!?。?!否則會(huì)出錯(cuò)m_pConnection->Close();m_pRecordset=NULL;m_pConnection=NULL;}程序中通過_variant_t和_bstr_t轉(zhuǎn)換COM對(duì)象和C++類型數(shù)據(jù),_variant_t類封裝了OLE自治VARIANT數(shù)據(jù)類型。在C++中使用_variant_t類要比直接使用VARIANT數(shù)據(jù)類型容易得多。好,編譯后該程序就能運(yùn)營(yíng)了,但記住運(yùn)營(yíng)前要?jiǎng)?chuàng)立一種叫ADOTestODBC數(shù)據(jù)源。該程序?qū)驯韒iddle中BIG_NAME字段值顯示在列表控件中。(4)執(zhí)行SQL命令并獲得成果記錄集為了獲得成果記錄集,咱們定義一種指向Recordset對(duì)象指針:_RecordsetPtrm_pRecordset;并為其創(chuàng)立Recordset對(duì)象實(shí)例:m_pRecordset.CreateInstance("ADODB.Recordset");

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

1.運(yùn)用Connection對(duì)象Execute辦法執(zhí)行SQL命令

Execute辦法原型如下所示:_RecordsetPtrConnection15::Execute(_bstr_tCommandText,VARIANT*RecordsAffected,longOptions)其中CommandText是命令字串,普通是SQL命令。參數(shù)RecordsAffected是操作完畢后所影響行數(shù),參數(shù)Options表達(dá)CommandText中內(nèi)容類型,Options可以取如下值之一:adCmdText:表白CommandText是文本命令adCmdTable:表白CommandText是一種表名adCmdProc:表白CommandText是一種存儲(chǔ)過程adCmdUnknown:未知Execute執(zhí)行完后返回一種指向記錄集指針。2.運(yùn)用Command對(duì)象來執(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對(duì)象來執(zhí)行了SELECT查詢語句,Command對(duì)象在進(jìn)行存儲(chǔ)過程調(diào)用中能真正體現(xiàn)它作用。

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

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

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

更改其年齡,保存到數(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開始計(jì)數(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);///刪除當(dāng)前記錄///添加三條新記錄并賦值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));///從第一條記錄往下移動(dòng)一條記錄,即移動(dòng)

到第二條記錄處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:動(dòng)態(tài)adLockOptimistic樂觀封鎖法adCmdText:文本查詢語句}catch(_com_errorerror){CStringerrorMessage;errorMessage.Format("%s",(LPTSTR)error.Description());AfxMessageBox(errorMessage);}}//出錯(cuò)解決: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ù)庫操作類后,接下來咱們就可以開始進(jìn)行各功能模塊創(chuàng)立。4.1系統(tǒng)主體窗體創(chuàng)立在咱們按照VC++AppWizard創(chuàng)立竣工程后,為了使主窗口框架更適合整個(gè)系統(tǒng)操作,咱們有必要進(jìn)行修改,重新創(chuàng)立。4.1.1主菜單創(chuàng)立在WorkSpase中選取ResourseView,然后雙擊Menu文獻(xiàn)夾,再雙擊IDR_MAINFRAME選項(xiàng),單擊右邊窗口中“協(xié)助”旁邊虛線框,在雙擊或按回車鍵,就會(huì)浮現(xiàn)“MenuItemProperties”對(duì)話框,在這個(gè)對(duì)話框中輸入菜單項(xiàng)內(nèi)容,如圖8所示。圖8設(shè)立一級(jí)菜單二級(jí)菜單設(shè)立基本上都和圖8相似,只是必要設(shè)立ID。按照這種辦法,最后創(chuàng)立出如表2所示菜單構(gòu)造。菜單名稱ID文獻(xiàn)….打印ID_FILE_PRINT….打印預(yù)覽ID_FILE_PRINT_PREVIEW….打印設(shè)立ID_FILE_PRINT_SETUP….近來文獻(xiàn)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)立為了實(shí)現(xiàn)操作以便、快捷,咱們?cè)诔绦蛑屑尤肓擞益I菜單。在VC主菜單中,按“Project”—>“AddtoProject”—>“ComponentsandControlsGallery”即可進(jìn)入“ComponentsandControlsGallery”對(duì)話框,然后再打開VisualC++Components文獻(xiàn),再選取“Pop-upMenu”,單擊“insert”,隨后在跳出對(duì)話框中選取“CCaidianGuzhangView”,最后單擊“OK”。完畢后,需要對(duì)其進(jìn)行編輯。單擊WorkSpase中ResourseView,在Menu文獻(xiàn)夾中選取CG_IDR_POPUP_MAIN_FRAME,之后邊可在右邊窗口對(duì)其進(jìn)行編輯。編輯辦法與主菜單相似,其中各項(xiàng)ID分別相應(yīng)相應(yīng)菜單項(xiàng),相應(yīng)關(guān)系如表3所示。菜單名稱ID查看記錄ID_RECORD_VIEW添加記錄ID_RECORD_ADD刪除記錄ID_RECORD_DEL更改記錄ID_RECORD_EDIT表3右鍵菜單相應(yīng)菜單項(xiàng)ID4.1.3工具欄創(chuàng)立在WorkSpase中選取ResourseView,然后雙擊Toolbar文獻(xiàn)夾,再雙擊IDR_MAINFRAM選項(xiàng),就可以運(yùn)用工具條編輯器(ToolbarEditor)編輯右邊工具條。本系統(tǒng)創(chuàng)立工具條如圖9所示。其中各按鈕ID分別相應(yīng)相應(yīng)菜單項(xiàng),按從做到右順序相應(yīng)菜單項(xiàng)ID如表4所示。順序ID1ID_FILE_PRINT2ID_RECORD_ADD3ID_RECORD_DEL4ID_RECORD_SEARCH5ID_RECORD_ALL6ID_APP_ABOUT表4工具條相應(yīng)菜單項(xiàng)ID(注:其中第5個(gè)是顯示所有數(shù)據(jù),實(shí)現(xiàn)刷新功能,在菜單中沒有)4.1.4數(shù)據(jù)顯示與表格控件創(chuàng)立由于CCaidianGuzhangView是從ClistView繼承,因此創(chuàng)立竣工程后,就已有表格控件存在。而咱們目就是使控件上顯示更符合系統(tǒng)使用,因此咱們有必要對(duì)初試界面也就是對(duì)CCaidianGuzhangView::OnInitialUpdate()函數(shù)進(jìn)行修改,修改后函數(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è)立標(biāo)題 CStringstr; //如下是設(shè)立控件按鈕顯示字符 ctl.InsertColumn(0,"序號(hào)"); ctl.InsertColumn(1,"顯象管"); ctl.InsertColumn(2,"機(jī)芯"); ctl.InsertColumn(3,"機(jī)殼"); ctl.InsertColumn(4,"器件"); ctl.InsertColumn(5,"技術(shù)員"); ctl.InsertColumn(6,"時(shí)間"); ctl.InsertColumn(7,"其她"); ctl.InsertColumn(8,"信息名"); ctl.InsertColumn(9,"詳細(xì)內(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ù)項(xiàng)顯示寬度到此,咱們完畢了主體框架制作,主窗口如圖9所示。圖9主窗口4.2系統(tǒng)顧客權(quán)限管理模塊創(chuàng)立為了數(shù)據(jù)庫使用安全,必要對(duì)數(shù)據(jù)庫各種操作實(shí)行權(quán)限管理。只有管理員容許人員才有權(quán)力使用。容許顧客和密碼都預(yù)先存在數(shù)據(jù)庫中,本系統(tǒng)中為login表。權(quán)限管理模塊重要實(shí)現(xiàn)如下功能:添加顧客更改密碼刪除顧客顧客登錄(權(quán)限驗(yàn)證)4.2.1添加顧客對(duì)話框創(chuàng)立在ResourseView中,右擊Dialog,選取InsertDialog,便可在右邊窗口中編輯對(duì)話框。完畢對(duì)話框如圖10所示。對(duì)話框中各種非靜態(tài)文本控件屬性見表5。圖10添加顧客對(duì)話框圖11密碼修改對(duì)話框控件ID顧客名EditBoxIDC_USER密碼EditBoxIDC_PSWD確認(rèn)密碼EditBoxIDC_COMPSWD表5添加顧客對(duì)話框中各控件屬性設(shè)立對(duì)話框編輯完畢后,雙擊該對(duì)話框,進(jìn)入NewClass對(duì)話框,取此登記對(duì)話框類名為CAddUser。然后在MFCClassWizard中選取Classname為CXiahuaView,ObjectIDs為“ID_USER_ADD”,Messages為“COMMAND”,單擊AddFunction按鈕,取系統(tǒng)默認(rèn)函數(shù)名,再單擊EditCode按鈕,即可進(jìn)入代碼編輯器對(duì)函數(shù)CXiahuaView::OnUserAdd()進(jìn)行編輯。此函數(shù)代碼如下:voidCCaidianGuzhangView::OnUserAdd(){//TODO:AddyourcommandhandlercodehereCLoginSet*m_daorecordset=newCLoginSet(&pDatabase);//初始化連接數(shù)據(jù)庫指針 CStringstrSQL; if(adiministrator()==0)//管理員權(quán)限驗(yàn)證,失敗返回 return;else//成功進(jìn)入增長(zhǎng)顧客窗口 {CAddUseradduser;//進(jìn)入增長(zhǎng)顧客窗口 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("對(duì)不起!\n"+adduser.m_strUser+"已經(jīng)存在,請(qǐng)嘗試用其她名字!"),MB_ICONEXCLAMATION); } else { if(adduser.m_strPswd.Compare(adduser.m_strCompswd)!=0) { AfxMessageBox(_T("兩遍新密碼輸入不一致!\n請(qǐng)重輸!"),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();//增長(zhǎng)成功,刷新數(shù)據(jù)庫 }}}}}4.2.2更改密碼對(duì)話框創(chuàng)立更改密碼對(duì)話框創(chuàng)立與添加顧客對(duì)話框創(chuàng)立基本相似,完畢后對(duì)話框如圖11所示。對(duì)話框中各種非靜態(tài)文本控件屬性見表6??丶蘒D顧客名EditBoxIDC_USER原密碼EditBoxIDC_FORMERPS新密碼EditBoxIDC_NEWPS確認(rèn)EditBoxIDC_CONFIRPS表6修改密碼對(duì)話框中各控件屬性設(shè)立同樣辦法,取此密碼對(duì)話框類名為CModPswd。執(zhí)行此對(duì)話框函數(shù)為CCaidianGuzhangView::OnPasswardEdit(),實(shí)現(xiàn)密碼修改功能程序代碼略。4.2.3刪除顧客對(duì)話框創(chuàng)立創(chuàng)立辦法同上,完畢后對(duì)話框如圖12所示。對(duì)話框中各種非靜態(tài)文本控件屬性見表7。取此刪除顧客對(duì)話框類名為CDelUser??丶蘒DEditBoxIDC_USER表7刪除顧客對(duì)話框中各控件屬性設(shè)立圖12刪除顧客對(duì)話框圖13顧客登錄對(duì)話框4.2.4顧客登錄對(duì)話框創(chuàng)立創(chuàng)立辦法同上,完畢后對(duì)話框如圖13所示。對(duì)話框中各種非靜態(tài)文本控件屬性見表8。取此刪除顧客對(duì)話框類名為CloginDlg??丶蘒D顧客名EditBoxIDC_USER密碼EditBoxIDC_PASS表8修改密碼對(duì)話框中各控件屬性設(shè)立4.3信息管理模塊創(chuàng)立故障信息在管理中需要進(jìn)行各種不同操作,信息管理模塊重要實(shí)現(xiàn)如下功能:1.查看記錄2.查詢記錄3.添加記錄4.刪除記錄5.修改記錄4.3.1添加記錄對(duì)話框創(chuàng)立在ResourseView中,右擊Dialog,選取InsertDialog,便可在右邊窗口中編輯對(duì)話框。完畢對(duì)話框如圖14所示。對(duì)話框中各種非靜態(tài)文本控件屬性見表9。控件ID顯象管EditBoxIDC_CRT機(jī)芯EditBoxIDC_CLIPS機(jī)殼EditBoxIDC_CASE器件EditBoxIDC_DEVICE技術(shù)員EditBoxIDC_WORKOR時(shí)間DateTimePickerIDC_DATE其她EditBoxIDC_OTHER信息名EditBoxIDC_INFO詳細(xì)內(nèi)容EditBoxIDC_CONTENT表9信息登記對(duì)話框中各控件屬性設(shè)立圖14信息登記對(duì)話框?qū)υ捒蚓庉嬐戤吅?,雙擊該對(duì)話框,進(jìn)入NewClass對(duì)話框,取此登記對(duì)話框類名為CInfoDlg。然后在MFCClassWizard中選取Classname為CXiahuaView,ObjectIDs為“ID_RECORD_ADD”,Messages為“COMMAND”,單擊AddFunction按鈕,再單擊EditCode按鈕,即可編輯執(zhí)行添加信息功能函數(shù),程序如下:voidCCaidianGuzhangView::OnRecordAdd(){ //TODO:Addyourcommandhandlercodehere if(memberright()==0)//系統(tǒng)顧客驗(yàn)證,失敗返回 return; else {CInfoDlgaddDlg;//成功進(jìn)入增長(zhǎng)窗口if(addDlg.DoModal()==IDOK){ CStringcrt; crt=addDlg.m_strCrt; if(addDlg.m_strInfo.IsEmpty()) {AfxMessageBox(_T("為保證數(shù)據(jù)有效性,\n請(qǐng)擬定您已輸入有效信息"),MB_ICONEXCLAMATION); OnRecordAdd(); addDlg.m_strCrt=crt;} else { addDlg.m_strCrt.TrimLeft("");//去除各選項(xiàng)左右無效空格字符 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();//增長(zhǎng)數(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查詢記錄對(duì)話框創(chuàng)立查詢記錄對(duì)話框與添加記錄對(duì)話框創(chuàng)立辦法相似,只是起省略了詳細(xì)內(nèi)容這一項(xiàng)。各控件屬性也與添加記錄對(duì)話框相似。該對(duì)話框類名為CrecordSearch,其所相應(yīng)實(shí)現(xiàn)查詢記錄功能函數(shù)為CXiahuaView::OnRecordSearch()。該函數(shù)實(shí)當(dāng)代碼如下: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="機(jī)芯"; m_pSet->m_strFilter=fieldInfo.m_strName+"="+"'"+search.m_strClips+"'";m_pSet->Requery(); } elseif(!search.m_strCase.IsEmpty()) {fieldInfo.m_strName="機(jī)殼"; …………… } else { AfxMessageBox(_T("請(qǐng)輸入顯象管型號(hào)"),MB_ICONEXCLAMATION); OnRecordSearch(); } ShowTableData(); }}4.3.3修改記錄對(duì)話框創(chuàng)立修改記錄對(duì)話框創(chuàng)立與增長(zhǎng)記錄對(duì)話框創(chuàng)立相似,其界面和各控件屬性與添加記錄對(duì)話框相似,只是其相應(yīng)類名為CrecordEdit。實(shí)現(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查看記錄對(duì)話框創(chuàng)立此對(duì)話框創(chuàng)立與上大同小異,這里略去。4.4打印預(yù)覽模塊創(chuàng)立在以上實(shí)現(xiàn)了各模塊后,基本上一完畢了對(duì)數(shù)據(jù)完整操作,為了能更好實(shí)現(xiàn)數(shù)據(jù)信息在現(xiàn)實(shí)中多方位使用,有必要對(duì)系統(tǒng)實(shí)現(xiàn)按照生產(chǎn)工程部資料管理規(guī)范打印功能。實(shí)現(xiàn)該打印功能,重要是編輯OnPrint函數(shù)。詳細(xì)代碼如下: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="詳細(xì)內(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論