




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、基于RFID技術(shù)的校園一卡通工程實(shí)現(xiàn)方案姓名學(xué)號班級工程分工何印20061578軟件0602飯卡充值、掛失、辦卡模塊張印20061569軟件0602學(xué)生消費(fèi)、管理員管理模塊胡成學(xué)20061558軟件0602工程需求分析、程序糾錯模塊 指導(dǎo)教師:曾立勝二OO八年十一月八日目錄TOC o 1-3 h u HYPERLINK l _Toc214099006 第一章 校園一卡通 PAGEREF _Toc214099006 h 2 HYPERLINK l _Toc214099007 、概述 PAGEREF _Toc214099007 h 2 HYPERLINK l _Toc214099008 、根本功能
2、 PAGEREF _Toc214099008 h 2 HYPERLINK l _Toc214099009 、RFID卡的管理 PAGEREF _Toc214099009 h 3 HYPERLINK l _Toc214099010 、功能劃分 PAGEREF _Toc214099010 h 3 HYPERLINK l _Toc214099011 、食堂收費(fèi)系統(tǒng)功能 PAGEREF _Toc214099011 h 3 HYPERLINK l _Toc214099012 第二章 食堂收費(fèi)管理系統(tǒng)設(shè)計(jì)方案 PAGEREF _Toc214099012 h 5 HYPERLINK l _Toc214099
3、013 、子模塊劃分 PAGEREF _Toc214099013 h 5 HYPERLINK l _Toc214099014 、一般管理員模塊 PAGEREF _Toc214099014 h 5 HYPERLINK l _Toc214099015 、高級管理員模塊 PAGEREF _Toc214099015 h 5 HYPERLINK l _Toc214099016 、刷卡點(diǎn)管理員模塊 PAGEREF _Toc214099016 h 5 HYPERLINK l _Toc214099017 、系統(tǒng)流程 PAGEREF _Toc214099017 h 6 HYPERLINK l _Toc21409
4、9018 、消費(fèi)系統(tǒng)結(jié)構(gòu)圖 PAGEREF _Toc214099018 h 6 HYPERLINK l _Toc214099019 、系統(tǒng)流程圖 PAGEREF _Toc214099019 h 6 HYPERLINK l _Toc214099020 、E-R圖 PAGEREF _Toc214099020 h 7 HYPERLINK l _Toc214099021 、開發(fā)工具的選擇 PAGEREF _Toc214099021 h 7 HYPERLINK l _Toc214099022 、開發(fā)工具 PAGEREF _Toc214099022 h 7 HYPERLINK l _Toc21409902
5、3 、數(shù)據(jù)庫 PAGEREF _Toc214099023 h 8 HYPERLINK l _Toc214099024 第三章 食堂收費(fèi)管理系統(tǒng)實(shí)現(xiàn) PAGEREF _Toc214099024 h 10 HYPERLINK l _Toc214099025 、運(yùn)行環(huán)境 PAGEREF _Toc214099025 h 10 HYPERLINK l _Toc214099026 、RFID設(shè)備接口 PAGEREF _Toc214099026 h 10 HYPERLINK l _Toc214099027 、數(shù)據(jù)庫的建立 PAGEREF _Toc214099027 h 11 HYPERLINK l _Toc
6、214099028 、數(shù)據(jù)庫表的建立 PAGEREF _Toc214099028 h 11 HYPERLINK l _Toc214099029 、系統(tǒng)數(shù)據(jù)庫連接設(shè)計(jì) PAGEREF _Toc214099029 h 12 HYPERLINK l _Toc214099030 、代碼實(shí)現(xiàn) PAGEREF _Toc214099030 h 13 HYPERLINK l _Toc214099031 、高級管理員登陸的設(shè)計(jì)和實(shí)現(xiàn) PAGEREF _Toc214099031 h 13 HYPERLINK l _Toc214099032 、一般管理員的登陸的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc214099032
7、 h 25 HYPERLINK l _Toc214099033 、學(xué)生辦卡、充值以及RFID卡的掛失和激活的設(shè)計(jì)與實(shí)現(xiàn) PAGEREF _Toc214099033 h 31 HYPERLINK l _Toc214099034 、學(xué)生消費(fèi)的代碼實(shí)現(xiàn) PAGEREF _Toc214099034 h 36 HYPERLINK l _Toc214099035 總結(jié) PAGEREF _Toc214099035 h 42 HYPERLINK l _Toc214099036 參考文獻(xiàn) PAGEREF _Toc214099036 h 43第一章 校園一卡通1.1、概述 一卡通系統(tǒng)是高校信息化、數(shù)字化的重要組成
8、局部,是感應(yīng)智能卡在高校中使用的開展趨勢,感應(yīng)智能卡具有保密性強(qiáng)、容量大、操作便捷、可擴(kuò)展性強(qiáng)等特性,學(xué)生、教職工可以在各自的銀行網(wǎng)點(diǎn)或自助終端實(shí)現(xiàn)存取款、消費(fèi)、轉(zhuǎn)賬等金融支付;可以代替學(xué)生在學(xué)校內(nèi)的所有個人證件如工作證、圖書證、醫(yī)療證等,應(yīng)用于需要身份識別的各種MIS系統(tǒng);可以通過設(shè)在感應(yīng)智能卡內(nèi)的電子錢包實(shí)現(xiàn)餐飲、購物、上機(jī)上網(wǎng)、醫(yī)療等內(nèi)部消費(fèi)。 一卡通系統(tǒng)涵蓋了就餐管理、消費(fèi)管理、考勤管理、澡堂管理、電教室管理、圖書管理、宿舍集中用電、用水、出入門禁管理等。 非接觸式RFID卡的主要特點(diǎn):非接觸感應(yīng)技術(shù)基于電磁感應(yīng)原理,無需物理接觸即可完成信息讀寫,讀寫所需瞬間能量由讀寫器提供,相對以前
9、各種讀寫技術(shù)有如下特點(diǎn): 1.1 讀寫無需物理接觸,防止了物理接觸所帶來的各種障礙如卡片、讀寫頭擦劃受損等。食堂油污和高溫對信息讀寫無影響。 1.2 卡片外表無裸露芯片,防止了芯片脫落、靜電擊穿、彎曲損壞等現(xiàn)象。 1.3 使用時無需固定方向,方便快捷。 1.4 每張卡片均有不同序號,無法復(fù)制,保密性極高。 1.5 存儲空間可分為多個存儲區(qū),每個存儲區(qū)均有各自密鑰,能滿足現(xiàn)代企事業(yè)單位或智能樓宇管理的各種功能,實(shí)現(xiàn)食堂售飯、門禁、考勤、電子消費(fèi)、停車場管理等多項(xiàng)功能的一卡通管理。 1.6 每次信息讀寫過程符合ISO/IEC DIS9789-2標(biāo)準(zhǔn)的三次DES加密要求,平安可靠。1.2、根本功能校
10、園一卡通具有電子身份識別和電子錢包的功能,可以替代校園傳統(tǒng)的教師工作證、學(xué)生證、借書證、食堂就餐券等證件和現(xiàn)金交易。、RFID卡的管理RFID卡的管理主要提供了RFID卡的發(fā)卡、充值、掛失、退卡、換卡、回收卡等RFID卡本身流動的管理功能,以及對RFID卡終端設(shè)備進(jìn)行管理和不同系統(tǒng)模塊管理員用戶的權(quán)限限制,同時對這些行為做必要的記錄和備檔以方便掛失和查詢。、功能劃分、學(xué)校食堂、消費(fèi)管理、門禁管理、考勤管理、圖書館管理公寓水控管理等 圖1.1 校園一卡通系統(tǒng)體系結(jié)構(gòu)圖 、食堂收費(fèi)系統(tǒng)功能 我們主要設(shè)計(jì)的是食堂收費(fèi)系統(tǒng),主要實(shí)現(xiàn)以下功能:時間段日消費(fèi)統(tǒng)計(jì):時間段日消費(fèi)統(tǒng)計(jì)報表指的是選定時間內(nèi)各天的
11、消費(fèi)統(tǒng)計(jì)情況。 消費(fèi)明細(xì) :日消費(fèi)明細(xì)報表指的是選定時間內(nèi)每天每筆的消費(fèi)情況。 3.限額功能:對卡片進(jìn)行限額設(shè)置,控制用戶在一定時間段內(nèi)的消費(fèi)活動。 4.卡片開戶 功能:對新用戶進(jìn)行卡片開戶。 5.卡片充值 功能:對用戶卡片進(jìn)行充值操作。6.部門結(jié)算 功能:統(tǒng)計(jì)該設(shè)備管理部門在上個月的營業(yè)情況。 7.個人消費(fèi)匯總 功能:提供個人消費(fèi)記錄匯總,即在某時間段內(nèi)個人的消費(fèi)匯總情況。 8.余額查詢 功能:查詢到目前為止用戶的余額情況。 9.各刷卡點(diǎn)消費(fèi)匯總 功能:提供某時間段內(nèi)各刷卡點(diǎn)的消費(fèi)匯總情況。10飯卡掛失、激活處理。11.提供用戶點(diǎn)菜菜單。 第二章 食堂收費(fèi)管理系統(tǒng)設(shè)計(jì)方案2.1、子模塊劃分
12、在食堂消費(fèi)系統(tǒng)中,將該系統(tǒng)劃分為3個子模塊一般管理員模塊、高級管理員模塊和刷卡點(diǎn)管理員,分別實(shí)現(xiàn)不同的功能。2.1.1、一般管理員模塊 這里的一般管理員是指在充值點(diǎn)的工作人員,他們的主要功能是: 登陸:輸入職工號和密碼 充值:充值前,顯示當(dāng)前金額;充值后,顯示充值后的金額。此項(xiàng)不需要輸入卡號。 查詢:可查詢用戶的根本信息,如:學(xué)號、姓名、性別、卡號、專業(yè)班級、卡上金額。在學(xué)校里一般賬號就是學(xué)號,而卡號是RFID卡本身的序列號。此外,用戶還可以查詢一周內(nèi)的消費(fèi)金額及清單。 掛失、激活:將RFID卡上的金額和失主信息都凍結(jié),鎖定卡號,直至失主重新辦理卡,將失主的所有信息轉(zhuǎn)移到新卡上。同時可以實(shí)現(xiàn)飯
13、卡掛失后的激活功能,為用戶提供方便。 辦卡:登記學(xué)生的根本信息以及充值。2.1.2、高級管理員模塊 高級管理員指的是系統(tǒng)管理員, 查詢:當(dāng)日的充值金額和次數(shù)以及學(xué)生的總的消費(fèi)金額,各個商家的總?cè)胭~金額,以及各個刷卡點(diǎn)的刷卡金額和次數(shù)。 限制:限制學(xué)生每天在某一時間段刷卡的額度,在這里我們設(shè)置了刷卡時間段是早上6:00晚上10點(diǎn),每次刷卡額度最高為20元。 根本管理:管理一般管理員的根本信息,如職工號、姓名、身份證號等。、刷卡點(diǎn)管理員模塊在各個刷卡點(diǎn),都有刷卡的工作人員,他們的功能很簡單,就是是刷卡即扣除卡上的金額,并且可以設(shè)定自動刷卡金額,同時還能設(shè)定當(dāng)天的菜名以及才的價格等信息。2.2、系統(tǒng)
14、流程、消費(fèi)系統(tǒng)結(jié)構(gòu)圖圖2.1 IC卡消費(fèi)系統(tǒng)結(jié)構(gòu)圖2.2.2、系統(tǒng)流程圖圖2.2 食堂售飯系統(tǒng)流程圖、E-R圖 根據(jù)需求分析,一共提取出來了5個實(shí)體:高級管理員、一般管理員、刷卡人員、學(xué)生和磁卡。他們之間的實(shí)體聯(lián)系圖如下列圖2.3: 圖2.3 實(shí)體聯(lián)系圖2.3、開發(fā)工具的選擇、開發(fā)工具對于此系統(tǒng)來講,目前有很多種開發(fā)工具可供選擇,包括VB、PB、C#、C、C+等。我們采用的是VC+6.0編譯環(huán)境,采用MFC類庫。Visual C+不僅僅是一個編譯器,更是一個全面的應(yīng)用程序開發(fā)環(huán)境。Visual C+作為一種程序設(shè)計(jì)語言,它同時也是一個集成開發(fā)工具,提供了軟件代碼自動生成和可視化的資源編輯功能。
15、在使用Visual C+開發(fā)應(yīng)用程序的過程中,系統(tǒng)為我們生成了大量的各種類型的文件。Visual C+采用的框架是MFC。MFC不僅僅是人們通常理解的一個類庫。MFC是一個很大的、擴(kuò)展了的C+類層次結(jié)構(gòu),它能使開發(fā)Windows應(yīng)用程序變得更加容易。MFC的類庫可以讓我們擁有很多工具方便的進(jìn)行程序設(shè)計(jì),同時還提供許多常用的框架,減少程序員的工作量。MFC 還可以可以實(shí)現(xiàn)不同操作系統(tǒng)之間的移植以及不同處理器之間的移植。每當(dāng)新的Windows版本出現(xiàn)時,MFC也會得到修改以便使舊的編譯器和代碼能在新的系統(tǒng)中工作。MFC也回得到擴(kuò)展,添加新的特性、變得更加容易建立應(yīng)用程序。 使用MFC的最大優(yōu)點(diǎn)是它
16、為我們做了所有最難做的事。MFC中包含了上成千上萬行正確、優(yōu)化和功能強(qiáng)大的Windows代碼。我們所調(diào)用的很多成員函數(shù)完成了我們自己可能很難完成的工作。從這點(diǎn)上講,MFC極大地加快了我們的程序開發(fā)速度。由于MFC編程方法充分利用了面向?qū)ο蠹夹g(shù)的優(yōu)點(diǎn),它使得我們編程時極少需要關(guān)心對象方法的實(shí)現(xiàn)細(xì)節(jié),同時類庫中的各種對象的強(qiáng)大功能足以完成我們程序中的絕大局部所需功能,這使得應(yīng)用程序中程序員所需要編寫的代碼大為減少,有力地保證了程序的良好的可調(diào)試性。最后要指出的是MFC類庫在提供的對象的各種屬性和方法都是經(jīng)過謹(jǐn)慎的編寫和嚴(yán)格的測試,可靠性很高,保證了使用MFC類庫不會影響程序的可靠性和正確性。、數(shù)據(jù)
17、庫 數(shù)據(jù)庫的選擇,有2種選擇,一個是SQL 另外一種是Access,而SQL是適合比擬大一點(diǎn)的系統(tǒng)數(shù)據(jù)庫,對于我們的這個食堂收費(fèi)系統(tǒng),Access完全夠了。而且比起SQL,Access具有如下優(yōu)點(diǎn):(1存儲方式單一 Access管理的對象有表、查詢、窗體、報表、頁、宏和模塊,以上對象都存放在后綴為.mdb的數(shù)據(jù)庫文件種,便于用戶的操作和管理。 (2)面向?qū)ο?Access是一個面向?qū)ο蟮拈_發(fā)工具,利用面向?qū)ο蟮姆绞綄?shù)據(jù)庫系統(tǒng)中的各種功能對象化,將數(shù)據(jù)庫管理的各種功能封裝在各類對象中。它將一個應(yīng)用系統(tǒng)當(dāng)作是由一系列對象組成的,對每個對象它都定義一組方法和屬性,以定義該對象的行為和外國,用戶還可
18、以按需要給對象擴(kuò)展方法和屬性。通過對象的方法、屬性完成數(shù)據(jù)庫的操作和管理,極大地簡化了用戶的開發(fā)工作。同時,這種基于面向?qū)ο蟮拈_發(fā)方式,使得開發(fā)應(yīng)用程序更為簡便。 3界面友好、易操作 Access是一個可視化工具,是風(fēng)格與Windows完全一樣,用戶想要生成對象并應(yīng)用,只要使用鼠標(biāo)進(jìn)行拖放即可,非常直觀方便。系統(tǒng)還提供了表生成器、查詢生成器、報表設(shè)計(jì)器以及數(shù)據(jù)庫向?qū)А⒈硐驅(qū)?、查詢向?qū)?、窗體向?qū)?、報表向?qū)У裙ぞ?,使得操作簡便,容易使用和掌握?4集成環(huán)境、處理多種數(shù)據(jù)信息 Access基于Windows操作系統(tǒng)下的集成開發(fā)環(huán)境,該環(huán)境集成了各種向?qū)Ш蜕善鞴ぞ?,極大地提高了開發(fā)人員的工作效率,使
19、得建立數(shù)據(jù)庫、創(chuàng)立表、設(shè)計(jì)用戶界面、設(shè)計(jì)數(shù)據(jù)查詢、報表打印等可以方便有序地進(jìn)行。 5Access支持ODBC開發(fā)數(shù)據(jù)庫互連,Open Data Base Connectivity,利用Access強(qiáng)大的DDE動態(tài)數(shù)據(jù)交換和OLE對象的聯(lián)接和嵌入特性,可以在一個數(shù)據(jù)表中嵌入位圖、聲音、Excel表格、Word文檔,還可以建立動態(tài)的數(shù)據(jù)庫報表和窗體等。Access還可以將程序應(yīng)用于網(wǎng)絡(luò),并與網(wǎng)絡(luò)上的動態(tài)數(shù)據(jù)相聯(lián)接。利用數(shù)據(jù)庫訪問頁對象生成HTML文件,輕松構(gòu)建Internet/Intranet的應(yīng)用。第三章 食堂收費(fèi)管理系統(tǒng)實(shí)現(xiàn)3.1、運(yùn)行環(huán)境 windows xp x86 3.2、RFID設(shè)備接
20、口該工程采用的讀卡器是射頻設(shè)備D8。WINDOWS 32位動態(tài)庫“comRD800.dll所提供的接口來進(jìn)行連接的。在此庫函數(shù)中,提供了有如下主要的接口函數(shù)。1. int dc_init(int port,long baud);功 能:初始化通訊口參 數(shù):port:取值為0-19時,表示串口120;為100時,表示USB口通訊,此時波特率無效。 baud:為通訊波特率9600115200返 回:成功那么返回串口標(biāo)識符0,失敗返回負(fù)值2. int dc_exit(int icdev);功 能:關(guān)閉串口參 數(shù):icdev:通訊設(shè)備標(biāo)識符返 回:成功返回03. int dc_card(int icd
21、ev,unsigned char _Mode,unsigned long *_Snr);功 能:尋卡,能返回在工作區(qū)域內(nèi)某張卡的序列號參 數(shù):icdev:通訊設(shè)備標(biāo)識符;_Mode:尋卡模式;_Snr:返回的卡序列號4. int dc_beep(int icdev,unsigned int _Msec);功 能:蜂鳴參 數(shù):icdev:通訊設(shè)備標(biāo)識符;unsigned int _Msec:蜂鳴時間,單位是10毫秒返 回:成功那么返回 0。3.3、數(shù)據(jù)庫的建立、數(shù)據(jù)庫表的建立在系統(tǒng)中,我們采用的是Access數(shù)據(jù)庫,建立了高級管理員表、記錄一般管理員信息的Worker表、充值記錄表ChargeR
22、ecord、專門保存學(xué)生信息的表、當(dāng)天供給的菜單表、記錄學(xué)生消費(fèi)記錄的StuItem表。表3-1 高級管理員名單表:此表用來記錄高級管理員姓名、登陸名和密碼。表3-2 Worker表此表記錄了一般管理員即充值工作人員的信息,包括姓名、登陸密碼、家庭住址和性別等。表3-3 充值記錄表:此表用來記錄學(xué)生的充值記錄,包括學(xué)生名字、充值金額、卡號和充值時間。表3-4 菜單表:此表記錄了當(dāng)天食堂的菜單,包括菜名、價格和某種菜被點(diǎn)次數(shù)。表3-5 學(xué)生表:該表記錄了學(xué)生所持的卡的各種信息,包括卡的ID號、學(xué)生的學(xué)號、學(xué)生姓名、卡上的余額、卡的狀態(tài)激活或鎖定、卡激活或鎖定的時間。表3-6 StuItem表該表
23、記錄了學(xué)生當(dāng)天消費(fèi)的信息,包括IC卡號、學(xué)生學(xué)號、姓名、消費(fèi)時間和消費(fèi)的菜名。、系統(tǒng)數(shù)據(jù)庫連接設(shè)計(jì) 在系統(tǒng)的數(shù)據(jù)庫的連接設(shè)計(jì)上,我們利用了兩個對象:一個是Connection對象,一個是Recordset對象。我們通過Connection對象的Open方法來進(jìn)行連接數(shù)據(jù)庫的,并且用Recordset對象取得結(jié)果記錄集進(jìn)行查詢、處理。在頭文件中定義HRESULT hr。一、創(chuàng)立Connection對象并連接數(shù)據(jù)庫首先我們在頭文件中添加一個指向Connection對象的指針:_ConnectionPtr m_pConnection;函數(shù)實(shí)現(xiàn)如下:hr = m_pConnection.CreateI
24、nstance(ADODB.Connection); /創(chuàng)立Connection對象if(SUCCEEDED(hr)m_pConnection-Open(Provider=Microsoft.Jet.OLEDB.4.0;Data Source= Info.mdb, ,adModeUnknown); /連接數(shù)據(jù)庫二、執(zhí)行SQL命令并取得結(jié)果記錄集首先定義了一個指向Recordset對象的指針:_RecordsetPtr m_pRecordset;并為其創(chuàng)立Recordset對象:m_pRecordset.CreateInstance(ADODB.Recordset)函數(shù)實(shí)現(xiàn)如下:hr = pRe
25、cordset.CreateInstance(ADODB.Recordset); /創(chuàng)立Recordset對象pRecordset-Open(SELECT * FROM Student,_variant_t(IDispatch *)m_pConnection, true), adOpenStatic,adLockOptimistic,adCmdText); 3.4、代碼實(shí)現(xiàn)、高級管理員登陸的設(shè)計(jì)和實(shí)現(xiàn)程序使用VC6.0 + Xtreme ToolkitPro 2021 ()界面庫進(jìn)行開發(fā),程序分為 綜合信息管理、員工信息管理、學(xué)生信息管理、菜單管理四個模塊。這是通過Xtreme Toolkit
26、Pro 2021的一個類進(jìn)行建立的CXTPPropertySheet ps(_T(Custom Navigator Sample); CPropertyPageTaskPanelNavigator* pList = new CPropertyPageTaskPanelNavigator(); ps.SetNavigator(pList);/以下分別為Info數(shù)據(jù)庫表;Admin admin;Worker worker;MenuCtrl menu;Affairs affairs;CCtrlStudent stu;ps.AddPage(&admin);ps.AddPage(&worker);ps.
27、AddPage(&affairs);ps.AddPage(&menu);ps.AddPage(&stu);ps.DoModal(); 通過上面的代碼我們可以創(chuàng)立上面左邊的窗口,窗口右邊的信息那么是使用CXTListCtr進(jìn)行創(chuàng)立的,CXTPPropertySheet實(shí)際上是將4個窗口進(jìn)行繼承管理,而每個Dialog窗口那么改成了CXTPPropertyPage的類型,這個類也是從CDialog派生過來的,每個對話框創(chuàng)立的同時,我們對他進(jìn)行初始化,包括創(chuàng)立CListCtrl的頭部,設(shè)置他的風(fēng)格,設(shè)置他的大小,從數(shù)據(jù)庫中讀取數(shù)據(jù)等等,因?yàn)槌绦蛑写罅渴褂昧薈ListCtrl,因此,將它封裝成了一個類
28、進(jìn)行調(diào)用#include StdAfx.h#ifndef MYLISTCTRL#define MYLISTCTRLclass MyListCtrlpublic:MyListCtrl(int n):size(0)void CreateHead(CXTListCtrl& listctrl,CString p, int s )int i = 0;size = s ;for (i = 0; i GetSafeHwnd();header.SubclassWindow(hWndHeader);header.EnableAutoSize(TRUE);header.ResizeColumnsToFit();l
29、istctrl.ModifyExtendedStyle(LVS_EX_FULLROWSELECT, LVS_EX_FULLROWSELECT);void InsertMyText(CXTListCtrl& listctrl, int row, CString* context)listctrl.InsertItem(row, context0, 0);for (int i = 1; i size; i +)listctrl.SetItem(row, i, LVIF_TEXT, contexti, 0, NULL, NULL, NULL);void DeleteAll(CXTListCtrl&
30、listctrl)listctrl.DeleteAllItems();protected:int size;#endif共有3個函數(shù),分別是:void SetHeadStyle(CXTListCtrl& listctrl, CXTHeaderCtrl& header) void InsertMyText(CXTListCtrl& listctrl, int row, CString* context)void CreateHead(CXTListCtrl& listctrl,CString p, int s )而CreateHead()用于創(chuàng)立頭部: SetHeadStyle用于設(shè)置頭部的風(fēng)格
31、,比方上面的5個頭信息都是自動設(shè)置自己的大小的,他們會根據(jù)窗口分配的大小自動進(jìn)行調(diào)整。 InsertMyText()用于像里面添加數(shù)據(jù),數(shù)據(jù)項(xiàng)有一個CString str數(shù)組進(jìn)行存儲。 數(shù)據(jù)的添加涉及到數(shù)據(jù)庫的操作,我們這里是采用的ODBC編程方式,可能ODBC最大的缺點(diǎn)是需要設(shè)置數(shù)據(jù)源,但是我們可以在程序中進(jìn)行自動設(shè)置。代碼如下:CString sPath;GetModuleFileName(NULL,sPath.GetBufferSetLength(MAX_PATH+1),MAX_PATH);sPath.ReleaseBuffer();int nPos;erseFind ();sPath=
32、sPath.Left (nPos);nPos=sPath.ReverseFind(); sPath=sPath.Left (nPos);CString lpszFile = sPath + Info.mdb; char* szDesc;int mlen;szDesc=new char256;sprintf(szDesc,DSN=%s? DESCRIPTION=TOC support source? DBQ=%s? FIL=MicrosoftAccess? DEFAULTDIR=%s? ,Info,lpszFile,sPath);/得到路徑mlen = strlen(szDesc); for (
33、int i=0; i= nID )nID = mID + 1;worker.MoveNext(); /分配代碼 圖3.8 修改信息當(dāng)然我們每次進(jìn)行的操作即為數(shù)據(jù)庫操作,因此翻開關(guān)閉數(shù)據(jù)庫必不可少AddWinfo info ; WorkerInfo worker ;CString lineinfo5 ;CString strSQL = SELECT * FROM Worker;if(!worker.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)AfxMessageBox(Worker表翻開失敗!);int nID = 0;int mID = 0;while (!work
34、er.IsEOF()mID = atoi(worker.m_ID);if ( mID = nID )nID = mID + 1;worker.MoveNext();CString sID = ;sID.Format(%d, nID);info.m_id = sID ;info.m_sex = 女;info.DoModal();worker.Close();if(!worker.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL)AfxMessageBox(Worker表翻開失敗!);list.DeleteAll(m_ListCtrlWork);CString num = ;
35、int item = 0 ;worker.MoveFirst();while (!worker.IsEOF()num.Format(%d, item);lineinfo0 = num;lineinfo1 = worker.m_Name;lineinfo2 = worker.m_ID;lineinfo3 = worker.m_sex;lineinfo4 = worker.m_ComeFrom;list.InsertMyText(m_ListCtrlWork, item, lineinfo);worker.MoveNext();item + ;worker.Close(); 圖3.9 學(xué)生管理通過
36、點(diǎn)擊右鍵我們可以鎖定或激活該卡,也可以顯示學(xué)生的信息,包括學(xué)生進(jìn)行過哪些消費(fèi)。菜單信息: 菜單信息存儲了菜單的信息,它與我們的消費(fèi)系統(tǒng)相連接,可以根據(jù)這個添加一些菜單供學(xué)生們選擇,而右邊的銷售情況那么是各種菜品在銷售中所占的比例,它可以讓我們的管理者及時地得知受歡送以及不受歡送的菜,以便及時調(diào)整價格。、一般管理員的登陸的設(shè)計(jì)與實(shí)現(xiàn)一般管理員具有充值、注冊新用戶、管理飯卡狀態(tài)等功能,其中每一功能具體實(shí)現(xiàn)如下:登錄主界面: 有菜單欄和狀態(tài)欄,狀態(tài)欄,菜單欄用于管理員選擇進(jìn)入系統(tǒng),狀態(tài)欄用于顯示相關(guān)信息及系統(tǒng)當(dāng)前時間,方便管理員操作。管理員登陸后進(jìn)入下面登錄信息驗(yàn)證窗口: 列表框顯示了該充值系統(tǒng)所有
37、在職的管理員姓名,管理員通過雙擊其姓名,就可添加姓名至用戶名編輯框,同時輸入密碼,驗(yàn)證合格前方能進(jìn)入系統(tǒng),以實(shí)現(xiàn)充值、注冊、掛失操作,其中主要實(shí)現(xiàn)功能代碼如下:/該函數(shù)主要實(shí)現(xiàn)對話框相關(guān)控件背景色設(shè)置,該背景函數(shù)在整個系統(tǒng)中通用;HBRUSH CAdiminLogindlg:OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor) HBRUSH hbr = CDialog:OnCtlColor(pDC, pWnd, nCtlColor);if(nCtlColor=CTLCOLOR_LISTBOX)/改變列表框的背景色;/pDC-SetBkMode(TRA
38、NSPARENT);pDC-SetTextColor(RGB(0,0,0);pDC-SetBkColor(RGB(233,233,220);HBRUSH b=CreateSolidBrush(RGB(233,233,220);return b;else if(nCtlColor=CTLCOLOR_EDIT) /改變編輯框的背景色;/pDC-SetBkMode(TRANSPARENT);pDC-SetTextColor(RGB(0,0,0);pDC-SetBkColor(RGB(233,233,220);HBRUSH b=CreateSolidBrush(RGB(233,233,220);ret
39、urn b;else if(nCtlColor=CTLCOLOR_STATIC) /改變靜態(tài)文本的背景色;pDC-SetTextColor(RGB(0,0,0);pDC-SetBkColor(RGB(160,180,220);HBRUSH b=CreateSolidBrush(RGB(160,180,220);return b;else if(nCtlColor=CTLCOLOR_DLG) /改變對話框的背景色;pDC-SetTextColor(RGB(0,0,0);pDC-SetBkColor(RGB(160,180,220);HBRUSH b=CreateSolidBrush(RGB(16
40、0,180,220);return b;return hbr;/通過調(diào)用該函數(shù)彈出登錄信息驗(yàn)證對話框,同時關(guān)閉主對話框;void CAdminOpDlg:OnAdminOpMenu() CAdiminLogindlg logindlg;this-OnCancel();/關(guān)閉主對話框;logindlg.DoModal();登錄信息驗(yàn)證模塊:/該函數(shù)實(shí)現(xiàn)雙擊列表框顯示相關(guān)信息到編輯框功能;void CAdiminLogindlg:OnDblclkList1() CString sname;int curSel = m_list.GetCurSel();/獲得當(dāng)前指針位置;m_list.GetTex
41、t(curSel,sname); /獲得當(dāng)前位置管理員名字;m_name = sname;UpdateData(false);下面是具體信息驗(yàn)證過程:/獲得當(dāng)前所指位置的用戶名;int curSel = m_list.GetCurSel();if(curSel MoveFirst();pRecordset-Move(long(curSel); m_list.GetText(curSel,sname);m_name=sname;var = pRecordset-GetCollect(AdminPass);/依次從數(shù)據(jù)庫表里面去相應(yīng)管理員名的密碼,進(jìn)行比擬;if(var.vt != VT_NULL
42、)savepassword = (LPCSTR)_bstr_t(var);m_password.GetWindowText(spassword);if(spassword.IsEmpty()MessageBox(請輸入密碼:);m_password.SetFocus();elseif(savepassword=spassword)/如果輸入密碼與數(shù)據(jù)庫存儲的密碼相同,那么該管理員可以進(jìn)入系統(tǒng),同時彈出下一個對話框;CAddMoneyDlg addmdlg;var = pRecordset-GetCollect(ID);addmdlg.m_workerID = var.bstrVal; var
43、= pRecordset-GetCollect(name);addmdlg.m_workerName = var.bstrVal; if(pRecordset - State)/關(guān)閉數(shù)據(jù)庫連接;pRecordset-Close();if(m_pConnection - State)m_pConnection-Close();this-OnCancel();addmdlg.DoModal();如果密碼驗(yàn)證不通過,那么繼續(xù)輸入密碼,但是總共只有三次時機(jī),否那么將關(guān)閉信息驗(yàn)證對話框;else time+;if(time=3)MessageBox(對不起,你無權(quán)限登錄系統(tǒng),請與管理員聯(lián)系!);/關(guān)閉數(shù)
44、據(jù)庫表鏈接;if(pRecordset - State)pRecordset-Close();if(m_pConnection - State)m_pConnection-Close();this-OnCancel();return;elseMessageBox(您輸入的密碼不正確,請重新輸入:);m_password.SetWindowText();m_password.SetFocus();、學(xué)生辦卡、充值以及RFID卡的掛失和激活的設(shè)計(jì)與實(shí)現(xiàn)辦卡 用戶只需要填寫其姓名、學(xué)號等相關(guān)信息,便可以實(shí)現(xiàn)辦卡業(yè)務(wù)。如果信息未填完,會自動彈出提示消息;void CRegisterDlg:OnBank
45、aQuerenBt() UpdateData(true);if(m_bkname = | m_bknum = )AfxMessageBox(姓名和學(xué)號信息不能為空!);return;try/ 寫入各字段值進(jìn)數(shù)據(jù)庫,并刷新數(shù)據(jù)庫記錄;pRecordset-AddNew();pRecordset-PutCollect(StuName, _variant_t(m_bkname);/填寫姓名;pRecordset-PutCollect(StudentID,_variant_t(m_bknum); /填寫學(xué)號;pRecordset-PutCollect(CardID,_variant_t(m_bkcar
46、dID);pRecordset-Update();AfxMessageBox(注冊成功!);catch(_com_error *e)AfxMessageBox(e-ErrorMessage();二、充值刷卡后點(diǎn)充值按鈕可進(jìn)入充值界面充值,同時系統(tǒng)也會記錄充值時間到學(xué)生數(shù)據(jù)庫,并將充值信息放入管理員管理數(shù)據(jù)庫,以便出錯時有據(jù)可查,具體代碼實(shí)現(xiàn)如下:if(!CZpRecordset-adoEOF)/在數(shù)據(jù)庫中找到用戶卡號;if(m_addmoney=)AfxMessageBox(請輸入充值額:);tryCZpRecordset-PutCollect(Money,(atol(m_cmoney)+at
47、ol(m_addmoney);/將充值金額存入數(shù)據(jù)庫中;record.AddNew();/添加充值信息進(jìn)入管理員管理表;record.m_ID = m_workerID ;record.m_name = m_workerName ;record.m_object = m_ccardID ;record.m_amount = m_addmoney ;record.m_time = stime ;record.Update();record.Close();/CZpRecordset-PutCollect(Date, _variant_t(stime);/記錄充值時間;CZpRecordset-U
48、pdate();/刷新數(shù)據(jù)庫;catch(_com_error *e)AfxMessageBox(e-ErrorMessage();/ 顯示充值后的金額及充值時間到編輯框中,同時彈出充值成功消息;var = CZpRecordset-GetCollect(Money);m_cmoney=var.bstrVal;var = CZpRecordset-GetCollect(Date);m_cdate=var.bstrVal;UpdateData(FALSE);AfxMessageBox(充值成功!);三、飯卡狀態(tài)管理掛失/鎖定、激活主界面:通過輸入學(xué)號,可以顯示用戶的相關(guān)信息,這樣設(shè)計(jì)的主要原因是
49、因?yàn)閽焓У挠脩粢话愣际强ㄒ褑适?,而且卡號不一定都知道,所以通過學(xué)號可以查詢其相關(guān)信息,并對卡的狀態(tài)進(jìn)行管理,方便實(shí)現(xiàn),只需選擇單項(xiàng)選擇按鈕就可以實(shí)現(xiàn)飯卡的狀態(tài)轉(zhuǎn)換,實(shí)現(xiàn)如下:/該函數(shù)實(shí)現(xiàn)了飯卡掛失功能;void CCguashiDlg:OnQuerenguashiBt() UpdateData(true);pRecordset - MoveFirst();_variant_t var;CString strnum;if(m_gsnum= )/通過學(xué)號查找其他相關(guān)信息;AfxMessageBox(請輸入學(xué)號:);var = pRecordset-GetCollect(StudentID);/獲得
50、學(xué)號;strnum=var.bstrVal;while(!pRecordset-adoEOF & m_gsnum!=strnum)/尋找學(xué)號與編輯框相等的記錄;var = pRecordset-GetCollect(StudentID); strnum=var.bstrVal;pRecordset-MoveNext();if(!pRecordset-adoEOF)/找到與所輸學(xué)號相同的記錄,進(jìn)行下一步操作;pRecordset-MovePrevious();switch(m_radio)case 0:pRecordset-PutCollect(State,_variant_t(激活);AfxM
51、essageBox(卡已激活!);break;case 1:pRecordset-PutCollect(State,_variant_t(鎖定);AfxMessageBox(卡已鎖定!);break;pRecordset-Update();/更新數(shù)據(jù)庫記錄;/顯示相關(guān)信息在編輯框中;var = pRecordset-GetCollect(StuName);m_gsname=var.bstrVal;var = pRecordset-GetCollect(Money);m_gslamout=var.bstrVal;var = pRecordset-GetCollect(CardID);m_gsca
52、rdID=var.bstrVal;var = pRecordset-GetCollect(State);m_gsstate=var.bstrVal;UpdateData(FALSE);、學(xué)生消費(fèi)的代碼實(shí)現(xiàn)在這里,主要是學(xué)生按照食堂當(dāng)天提供的菜單來點(diǎn)菜,工作人員只需要選擇菜名,系統(tǒng)就會自動刷卡以及扣除相應(yīng)的金額,并將該樣菜的點(diǎn)擊次數(shù)保存起來。另外,系統(tǒng)還會記錄學(xué)生的消費(fèi)情況。 圖3.16 讀卡器未插入消費(fèi)模塊,功能,提供消費(fèi)效勞,自動尋卡,選擇菜品,以及自動計(jì)費(fèi)當(dāng)讀卡器未插入的時候,會提示查找讀卡器中.并且有滾動條來回顯示,當(dāng)我們插入讀卡器后,會提示初始化成功,進(jìn)度條為滿。 圖3.17 讀卡器已
53、插入 初始化代碼: /菜單列表/m_ListControl.InsertColumn(0, 編號, LVCFMT_CENTER, 90);m_ListControl.InsertColumn(1, 菜名, LVCFMT_CENTER, 120);m_ListControl.InsertColumn(2, 價格, LVCFMT_CENTER, 100);int iItem;database.SelectTable(Menu);CString data3;_variant_t name3 = MenuNo, Name, Price;int size = database.GetSize();for (iItem = 0; iIt
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 四川達(dá)州山體噴漿施工方案
- 變壓器現(xiàn)場吊芯施工方案
- 重慶地鐵5號線施工方案
- 《大數(shù)據(jù)技術(shù)導(dǎo)論》-教學(xué)大綱
- 高埗寫字樓殺蟲施工方案
- 鐵制容器防腐措施方案
- 八下南充數(shù)學(xué)試卷
- 太陽能發(fā)電安裝 施工方案
- 熔鹽爐拼接爐拱施工方案
- 黑龍江城鎮(zhèn)亮化施工方案
- 2025年全國國家版圖知識競賽題庫及答案(中小學(xué)組)
- 寺院管理框架結(jié)構(gòu)圖PPT課件
- 單考單招數(shù)學(xué)公式總結(jié)
- 三打白骨精英文話劇劇本(原創(chuàng))
- 2019第五版新版PFMEA 注塑實(shí)例
- 李雁鳴循環(huán)理論
- 釩電池項(xiàng)目財務(wù)數(shù)據(jù)分析(范文模板)
- 電暈水測試液配方
- 日處理300t鮮奶的脫脂奶粉生產(chǎn)車間
- 工業(yè)鍋爐水處理系統(tǒng)調(diào)試報告
- 秘書處職能手冊(完整版)74頁
評論
0/150
提交評論