资源描述
本科毕业设计(论文)
摘 要
本系统主要采用微软的Visual C++ 工具,MFC技术,通过动态链接库技术实现代码的重用,后台采用SQLSERVERE2000数据库进行设计,采用基于ODBC的数据库访问技术对数据实现录入、查询。
本饭卡管理系统是在Visual C++ 6.0 的平台上运用MFC技术实现的。主要功能有对饭卡的操作,完成充值、刷卡等任务;对系统信息的管理,完成信息的查询和修改等操作;营业人员对食堂收入的结算等操作。
关键词:MFC技术,信息管理,IC卡
ABSTRACT
The system is mainly developed by Microsoft's Visual C++ tool, based on MFC technology, and Dynamic link library technology to make codes reused.And it also use SQLSERVERE2000 database for design and ODBC technology to achieve data input, research information.
The IC Card Dinning Card Management System is realized on the Visual C++ 6.0 platform using MFC Technology. Main functions is: operate on the dinning card ,complete the task of depositing money and Consumption; managing the information of the system,searching or modifying the information and the salesman’s operation on the income calculation.
Keywords:MFC technology,information management, IC card
目 录
摘 要 I
ABSTRACT II
第1章 引 言 1
1.1 背景 1
1.2 研究内容 1
第2章 IC卡的概述 3
2.1 IC卡概述 3
2.1.1 IC卡的定义 3
2.1.2 IC卡的应用领域 3
2.2 IC卡的分类 4
2.2.1 根据镶嵌的芯片分类 4
2.2.2 根据连接方式分类 4
2.2.3 根据数据交换方式分类 5
2.3 非接触式IC卡的性能和特点 5
2.4 本章小结 6
第3章 系统开发的技术基础 7
3.1 系统所涉及的相关技术 7
3.2 动态链接库技术介绍 7
3.3 ODBC数据库访问技术 8
3.4 本章小结 9
第4章 系统需求分析 10
4.1 系统设计原理 10
4.2 概念结构设计 10
4.3 逻辑结构设计 12
4.5 本章小结 15
第5章 主要功能模块实现 16
5.1 系统总体功能设计 16
5.1.1 系统功能分析 16
5.1.2 系统流程分析 16
5.2 系统登录界面和欢迎界面 17
5.2.1 登录界面 17
5.2.2 系统欢迎界面 18
5.3 系统主窗口的设计 19
5.4 通信模块的实现 20
5.5 饭卡操作模块 21
5.5.1 饭卡的发放 21
5.5.2 充值操作 24
5.5.3 刷卡消费 27
5.5.4 饭卡的回收 28
5.6 营业人员操作模块 29
5.6.1 日营业额结算 29
5.6.2 修改登录密码 31
5.7 信息管理模块 33
5.7.1 饭卡信息管理 33
5.7.2 就餐人员信息管理 35
5.7.3 饭卡使用记录信息管理 36
5.8 本章小结 38
第6章 结束语 39
致 谢 40
参考文献 41
- 41 -
第1章 引 言
1.1 背景
随着科技的发展,近年来智能卡应用技术发展十分迅速,特别是在工业、农业、商业、金融和政府等组织机构应用得十分广泛。在食堂售饭过程中以智能卡的电子现金作为支付手段已广泛得到应用,传统的现金、磁卡、光电卡等消费方式已不能满足客户的需求,这些早年技术存在着许多的缺点,系统正常运行的决定因素太多。正是在这种市场需求下,感应式智能卡以方便、快捷、易使用的特点,作为电子现金的支付手段的各个支付领域内迅速地得到应用。
目前国内的许多机关,厂矿企业,大专院校的食堂售饭仍旧延用多年饭菜票的结算方式,这种方式速度慢,易出差错,还得花费大量的人力和物力去印发,汇总饭菜票,而且饭菜票在反复流通过程中携带了大量的病菌,很不卫生,同时发生丢失的现象也时有发生,给本人造成经济上的损失。
相对于传统的饭票结算方式,采用非接触式智能卡作为食堂的电子现金收费具有很大的优势。对就餐人员来说,卡的使用方便简易,只需手持智能卡在收费机的感应区内轻轻一晃,就完成了交易过程;同时方便携带,可以代替拿现金或饭菜票时的麻烦。对管理者来说,使用智能卡可以实现安全防伪,避免因假卡、假钞或假票造成直接经济损失;同时它取消了食堂饭、菜票的订购、印刷、发行、保管、出售、查点、回笼、复核等环节,节省了大量资金和人力、物力。而对营业人员来说,采用智能卡设计的管理系统将大大简化和减轻食堂工作人员的工作量,提高工作效率,使员工有更多的精力投入到完善服务质量上。
1.2 研究内容
IC卡饭卡管理系统由PC机、读卡器和IC卡三部分组成[2]。本论文所阐述的非接触式IC卡饭卡管理系统,主要是在PC机上开发的对智能卡以及对相关信息处理的管理系统。
本系统主要包括前台界面操作模块和后台配置模块。前台的设计以实用性为主,采用微软的MFC作为开发工具,通过MFC技术可以快速的搭建软件的可视化界面。前台界面的主要操作包括:
1. 对系统通信线路的连接测试,在进行系统的其他操作之前需要测试保证,PC机到读卡器,以及PC机通过读卡器到IC卡的连接正常;
2. 对非接触式智能卡的充值和刷卡操作,通过这两项操作就实现了IC卡作为饭卡所应履行的职能;
3. 对食堂交易的日结算,通过对食堂当天交易信息的汇总,计算出食堂当天的营业额。
4. 后台配置模块主要是对与系统相关的数据的管理。这些数据包括饭卡的信息、营业人员和就餐人员的信息以及食堂交易的信息。通过数据库技术可以实现对这些信息的录入、查询、修改、删除等操作。
第2章 IC卡的概述
2.1 IC卡概述
IC卡的最初设想是由日本人提出来的,1969年12月,日本的有村国孝提出一种制造安全可靠的信用卡方法,那时叫ID卡。1974年,法国的Roland Moreno发明了带集成电路芯片的塑料卡片,并取得了专利权,这就是早期的IC卡。1976年法国布尔(Bull)公司研制出世界第一张IC卡。随后,国际标准化组织(ISO,International Standardization Organization)与国际电工委员会(IEC,International Electrotechnical Commission)的联合技术委员会为之制订了一系列的国际标准、规范,极大地推动了IC卡的研究和发展。
2.1.1 IC卡的定义
IC卡又称“集成电路卡”、智能卡、英文名称“Integrated Circuit Card”或“Smart card”,是一种将具有存储、加密及数据处理能力的集成电路芯片模块封装于和信用卡尺寸一样大小的塑料基中的卡片。IC卡具有防磁、防静电、抗破坏性和耐用性强、防伪性好、存储数据安全性高(可加密)、数据存储容量大等一些特点,因而得到广泛的重视和应用。
2.1.2 IC卡的应用领域
IC卡的应用领域广泛,只要有需要身份识别、信息存储的地方都有IC卡的用武之地。
在电信方面, 数字蜂窝电话使用CPU卡来存储信息和唯一识别用户身份,这种特定类型的智能卡往往被称为SIM卡,正是由于智能卡提供了大容量存储的能力,电话号码簿可以存在卡上而不是像模拟电话一样存在手机上。此外,电话储值卡也是极为广泛的智能卡应用。智能卡公用电话比磁卡设备具备诸多优势,如不需市电、故障率低等特点。
在公共事业方面,水、电、管道煤气、有线电视的费用收取一直是有关部门的难题,由于弊病较大,改革的动力也较大,目前已经有不少成功的应用智能卡技术实现预收费的例子。由于这方面的应用直接关系到广大群众的生活,成功的应用必然能够极大地促进智能卡技术普及和提高智能卡的形象。
在交通领域中,非接触式智能卡取得了广泛的应用。非接触式智能卡中包含了天线,用于在不接触的情况下和读写器交换信息,读写有效距离为10cm、交易时间小于0.1秒,因此,在交通行业的很多使用场合(例如公共汽车、地铁、轮渡、高速公路收费系统等)能显著节省时间,提高效率。
在医疗事业方面, 医疗领域的应用要求存储大量信息,如病历、身份、医疗保险号码、血型、过敏症、健康检查结果等,采用智能卡将全面提高医院诊断的效率、准确性及管理水平。目前较为复杂的应用都采用CPU卡、便于实现医疗功能(病症数据纪录和提取)和医疗保险功能(确认身份和费用结算)二合一。
2.2 IC卡的分类
现有的IC卡种类多,应用广泛,对它的分类方式也多种多样。一般来说,可以根据卡载芯片、连接方式和数据交换方式来分。
2.2.1 根据镶嵌的芯片分类
IC卡的芯片实际决定了IC卡具有怎样的性能,以及它是怎样进行数据的操作和管理的。按照芯片不同可以划分为,存储卡、逻辑加密卡和CPU卡。存储卡的卡内芯片为电可擦除可编程只读存储器EEPROM,为被动式卡,它不具备保密功能。逻辑加密卡的卡片除了具有存储卡的EEPROM外,还带有加密逻辑,每次读/写卡之前要先进行密码验证。适用于有一定保密要求的场合。CPU卡的芯片内部包含微处理器单元(CPU)、存储单元(RAM、ROM和EEPROM)、和输入/输出接口单元。其中,RAM用于存放运算过程中的中间数据,ROM中固化有片内操作系统COS(Card Operating System),而EEPROM用于存放持卡人的个人信息以及发行单位的有关信息。
2.2.2 根据连接方式分类
连接方式是指IC卡与外界进行数据交换时的物理接触方式。按照连接方式划分,IC卡可划分为接触式IC卡、非接触式IC卡和双界面卡。接触式IC卡是通过IC卡读写设备的触点与IC卡的触点接触后进行数据的读写。非接触式IC卡是IC卡与IC卡设备无电路接触,而是通过非接触式的读写技术进行读写(如光或无线技术)。其内嵌芯片除了CPU、逻辑单元、存储单元外,增加了射频收发电路。而双界面卡是将接触式IC卡与非接触式IC卡组合到一张卡片中,操作独立,可以共用CPU和存储空间。本论文所涉及的饭卡管理系统就是以非接触式IC卡作为食堂就餐人员的电子钱包。
2.2.3 根据数据交换方式分类
根据数据交换方式分类是一种更概括的分类。按照与外界交换时数据传输方式的不同,可将IC卡划分为串行IC卡和并行IC卡。串行IC卡与外界进行数据交换时,数据流按照串行方式输入输出,电极触点较少,一般为6个或者8个。由于串行IC卡接口简单、使用方便,目前使用量最大。并行IC卡在与外界进行数据交换时以并行方式进行,有较多的电极触点,一般在28到68之间。主要具有两方面的好处,一是数据交换速度提高,二是现有条件下存储容量可以显著增加。
2.3 非接触式IC卡的性能和特点
MIFARE 卡是目前世界上使用量最大、技术最成熟、性能最稳定、内存容量最大的一种感应式智能IC卡。其除了保留接触式IC卡的原有优点外,还具有以下优点:
1) 操作简单、快捷
由于采用射频无线通讯,使用时无须插拔卡及不受方向和正反面的限制,所以非常方便用户使用,完成一次读写操作仅需0.1秒,大大提高了每次使用的速度,既适用于一般场合,又适用于快速、高流量的场所。
2) 抗干扰能力强
MIFARE 卡中有快速防冲突机制,在多卡同时进入读写范围内时,能有效防止卡片之间出现数据干扰,读写设备可一一对卡进行处理,提高了应用的并行性及系统工作的速度。
3)可靠性高
MIFARE 卡与读写器之间没有机械接触,避免了由于接触读写而产生的各种故障;而且卡中的芯片和感应天线完全密封在标准的PVC中,进一步提高了应用的可靠性和卡的使用寿命。
4) 安全性好
MIFARE 卡的序列号是全球唯一的,不可以更改。读写时卡与读写器之间采用三次双向认证机制,互相验证使用的合法性,而且在通讯过程中所有的数据都加密传输;此外,卡片各个分区都有自己的读写密码和访问机制,卡内数据的安全得到了有效的保证。
5)适合于一卡多用
MIFARE 卡的存贮结构及特点(大容量--16分区、1024字节),能应用于不同的场合或系统,尤其适用于学校、企事业单位、智能小区的停车场管理、身份识别、门禁控制、考勤签到、食堂就餐、娱乐消费、图书管理等多方面的综合应用,有很强的系统应用扩展性,可以真正做到“一卡多用” 。
2.4 本章小结
通过本章的介绍,我们了解了IC卡的发展历史、IC卡的种类、IC卡的应用以及它的工作原理和性能。本论文所使用的IC卡为非接触式IC卡。作为食堂饭卡的取代品,非接触式智能卡表现出了优异的性能和良好的特性,通过智能卡和以它为中心的饭卡管理系统将大大提高食堂的管理。
第3章 系统开发的技术基础
3.1 系统所涉及的相关技术
此系统要求能对IC卡进行相关的操作,通过使用动态链接库技术调用IC卡生产商提供的开发包,可实现相应的操作。整个系统的界面通过Visual C++ MFC技术来搭建,同时使用MFC中的ODBC数据库访问技术实现对后台数据库的管理。
3.2 动态链接库技术介绍
动态链接库是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中,同时用户也可以用LIB程序创建自己的函数库。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的.OBJ文件中相比更有利于代码的重用。
但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己的函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装入内存,Dll函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLL函数的另一拷贝装入内存。
对于常规的函数库,链接器从中拷贝它需要的所有库函数,并把确切的函数地址传送给调用这些函数的程序。而对于DLLs,函数储存在一个独立的动态链接库文件中。在创建Windows程序时,链接过程并不把DLL文件链接到程序上。直到程序运行并调用一个DLL的函数时,该程序才要求这个函数的地址。此时Windows才在DLL中寻找被调用函数,并把它的地址传送给调用程序。采用这种方法,DLL达到了复用代码的极限。 动态链接库的另一个方便之处是对动态链接库中函数的修改可以自动传播到所有调用它的程序中,而不必对程序作任何改动或处理。只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。
动态链接库的调用可以分为两种:一种是隐式调用,一种是显示调用。
1、隐式的调用
此方式需要把产生动态连接库时产生的.LIB文件加入到应用程序的工程中,在使用DLL中的函数时,只须说明一下后就可以直接通过函数名调用DLL的输出函数,调用方法和程序内部其他的函数是一样的。隐式调用不需要调用Load Library()和Free Library()。程序员在建立一个DLL文件时,链接程序会自动生成一个与之对应的LIB导入文件。该文件包含了每一个DLL导出函数的符号名和可选的标识号,但是并不含有实际的代码。LIB文件作为DLL的替代文件被编译到应用程序项目中。
当程序员通过隐式调用方式编译生成应用程序时,应用程序中的调用函数与LIB文件中导出符号相匹配,这些符号或标识号被写入到生成的EXE文件中。LIB文件中也包含了对应的DLL文件名(但不是完全的路径名),链接程序也将其存储在EXE文件内部。当应用程序运行过程中需要加载DLL文件时,Windows根据这些信息发现并加载DLL,然后通过符号名或标识号实现对DLL函数的动态链接。所有被应用程序调用的DLL文件都会在应用程序EXE文件加载时被加载在到内存中。
2、显式调用
这种调用方式是指在应用程序中用Load Library或MFC提供的AfxLoadLibrary显式的将自己所做的动态连接库调进来,并指定DLL的路径作为参数。LoadLibary返回HINSTANCE参数,应用程序在调用GetProcAddress函数时使用这一参数。当完成对动态链接库的导入以后,再使用GetProcAddress()获取想要引入的函数,该函数将符号名或标识号转换为DLL内部的地址,之后就可以象使用本应用程序自定义的函数一样来调用此引入函数了。在应用程序退出之前,应该用Free Library或MFC提供的AfxFreeLibrary释放动态连接库。
3.3 ODBC数据库访问技术
ODBC (Open Database Connectivity)是由微软公司提出的一个用于访问数据库的统一界面标准,随着客户机/服务器体系结构在各行业领域广泛应用,多种数据库之间的互连访问成为一个突出的问题,而ODBC成为目前一个强有力的解决方案。ODBC之所以能够操作众多的数据库,是由于当前绝大部分数据库全部或部分地遵从关系数据库概念,ODBC看待这些数据库时正是着眼了这些共同点。虽然支持众多的数据库,但这并不意味ODBC会变得复杂,ODBC是基于结构化查询语言(SQL),使用SQL可大大简化其应用程序设计接口(API),由于ODBC思想上的先进性,而且没有同类标准或产品与之竞争,因而越来越受到众多厂家和用户的青睐。目前,ODBC已经成为客户机/服务器系统中的一个重要支持技术。在1994年时ODBC有了第一个版本,这种名为Open Data Base Connection(开放式数据库互连)的技术很快通过了标准化并且得到各个数据库厂商的支持。ODBC在当时解决了两个问题,一个是在Windows平台上的数据库开发,另一个是建立一个统一的标准,只要数据厂商提供的开发包支持这个标准,那么开发人员通过ODBC开发的程序可以在不同的数据库之间自由转换。
ODBC接口的优势之一为互操作性,程序设计员可以在不指定特定数据源情况下创建ODBC应用程序。从应用程序角度方面,为了使每个驱动程序和数据源都支持相同的ODBC函数调用和SQL语句集,ODBC接口定义了一致性级别,即ODBC API一致性和ODBC SQL语法一致性。SQL一致性规定了对SQL语句语法的要求,而API一致性规定了驱动程序需要实现的ODBC函数。一致性级别通过建立标准功能集来帮助应用程序和驱动程序的开发者,应用程序可以很容易地确定驱动程序是否提供了所需的功能,驱动程序可被开发以支持应用程序选项,而不用考虑每个应用程序的特定请求。
3.4 本章小结
本章通过对饭卡管理系统相关技术的介绍,主要介绍了动态链接库技术和ODBC数据库访问技术。通过动态链接库可以使程序方便地使用第三方的开发包,进行二次开发。而ODBC技术可以使程序操作各种不同的数据库。
第4章 系统需求分析
4.1 系统设计原理
随着计算机与电子技术的发展,传统的食堂管理方式也在悄然发生变化,结合计算机和IC卡设备的投入使用,现代食堂已经走上了与自动化管理和运作相一致的道路。而这其中的一环就是饭卡管理系统。
此系统将计算机、IC卡外围电子设备和后台数据库这三者整合在一起,食堂工作人员通过饭卡管理系统可以有效地处理IC卡,同时可以方便地管理系统的信息。其基本原理如图4-1所示:
饭卡管理系统
后台数据库
IC卡读卡器
饭卡1
饭卡2
图4-1 基于非接触式IC卡的饭卡管理系统
4.2 概念结构设计
这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。本饭卡管理系统涉及到食堂营业人员、就餐人员、饭卡和饭卡交易清单四个关系实体。
一个食堂是有多个营业人员,一个营业人员可以对应多个就餐人员,因此营业人员与就餐人员是一对多的关系(M:N)。如图 4-2所示:
营业人员
管理
就餐人员
M
N
图 4-2 分E-R图1
一个就餐人员只能有一张食堂的就餐饭卡,因此就餐人员与饭卡的关系是一对一的关系(1:1)。如图 4-3所示:
就餐人员
使用
饭卡
1
1
图 4-3 分E-R图2
同时,营业人员要对食堂发行的饭卡进行管理,相似的,营业人员与饭卡存在多对多的关系(M:N)。如图 4-4所示:
营业人员
管理
饭卡
M
N
图 4-4 分E-R图3
饭卡的操作记录将保存到交易清单中,因此饭卡与交易清单的关系也是一对多的(1:N)。如图 4-5所示:
饭卡
生成
饭卡使用记录
1
N
图 4-5 分E-R图4
由以上的分析,可以合并生成相应的E-R图,图 4-6即是总的E-R图。
营业人员
管理
就餐人员
使用
饭卡
交易清单
管理
密码
卡号
时间
卡号
操作类型
姓名
ID号
ID号
手机
姓名
M
N
M
N
1
1
N
图 4-6 总E-R图
4.3 逻辑结构设计
根据上面的需求分析和概念设计,系统所对应的基本表可以有以下四种(见表4-1至表 4-4):
就餐人员信息表:存放就餐人员的相关信息
营业人员信息表:存放营业人员的相关信息
饭卡信息表:存放饭卡的相关信息
交易清单表:存放饭卡刷卡和冲值的记录信息
表4-1 就餐人员信息表
列名
数据类型
主码
是否可为空
描述
PeopleID
char(18)
是
否
用户的身份证号
Name
char (12)
否
否
用户姓名
Age
char (3)
否
否
用户年龄
Sex
char (2)
否
否
用户性别
Work
char(20)
否
否
用户职位
Phone
char (11)
否
否
用户联系电话
在就餐人员信息表中,将PeopleID设置为表的主键,列名Age的数据类型设为长度为3的字符串,而不是一般情况下的int类型,主要是考虑到能方便地进行界面输入。
表4-2 营业人员信息表
列名
数据类型
主码
是否可为空
描述
admID
char(18)
是
否
营业人员的身份证号
admName
char (12)
否
否
营业人员的姓名
admSex
char (2)
否
否
营业人员的性别
admMiMa
char (6)
否
否
营业人员系统密码
admPhone
char(11)
否
否
营业人员的联系电话
营业人员信息表与就餐人员表的设计基本一致,不同的是增加了列名admMiMa,来保持系统登录的安全性。
表4-3 饭卡信息表
列名
数据类型
主码
是否可为空
描述
CardNumber
char(10)
是
否
饭卡卡号
PeopleID
char (18)
否
否
持卡人ID
Money
char (5)
否
否
饭卡金额
Code
char (12)
否
否
饭卡密码
在饭卡信息表中,列名CardNumber为主键,同时PeopleID为外键,通过外键的设置使饭卡信息与就餐人员的信息保持一致。
表4-4 饭卡使用记录信息表
列名
数据类型
主码
是否可为空
描述
CardNumber
char (10)
是
否
饭卡卡号
PeopleID
char (18)
否
否
持卡人的ID号
admID
char (18)
否
否
营业人员的ID号
UseType
char (4)
否
否
饭卡的操作类型
Time
datetime
是
否
记录生成的时间
Money
int
否
是
操作的数额
在饭卡使用记录表中,列名CardNumber和Time组成了此表的主键。其中列名UseType的值可有四种:发放、充值、刷卡、回收。而Money表示在充值或刷卡时,操作的金额。
4.5 本章小结
本章内容包括了对系统需求的调研,性能需求的分析和总结,从实际出发,根据用户的特点和要求,分析最切合用户实际利益的方案。在总结用户需求的基础上,为后面的系统设计打下一定的基础。
第5章 主要功能模块实现
5.1 系统总体功能设计
5.1.1 系统功能分析
本系统是一个管理以智能卡作为饭卡的食堂管理系统,可以实现食堂营业人员刷卡、充值、经营日结算等日常工作和就餐人员消费等功能。饭卡管理系统由前台操作和后台管理两部分组成。如图 5-1 所示。
前台作为与用户直接交互的界面,在考虑功能的同时也考虑了操作的简洁和方便性,目的是让不太懂电脑操作的人也能轻松地使用本系统。前台的操作主要包括通信线路链接、饭卡操作、营业人员操作等功能。
后台管理模块主要实现对各种信息的维护。在此模块中可以进行食堂各种信息的查询和修改等操作。除了这种直接的信息管理操作外,系统前台的各种操作也跟后台的管理息息相关,每一次的前台操作都将涉及到后台信息的管理。可以说后台数据管理是本系统的一个核心内容。
饭卡管理系统
饭卡操作
读卡器操作
信息管理操作
营业人员操作
前台模块
后台模块
图 5-1 系统总体功能图
5.1.2 系统流程分析
在启动饭卡管理系统后,将首先验证营业人员的身份。在身份验证通过后,就进入饭卡管理系统的主界面。在主界面中,首先需要测试系统通信线路的连接,然后才可以进行对饭卡的操作,和对数据库的管理。在营业人员操作模块中,营业人员可以对当天的食堂收入进行统计。此外,营业人员可以修改自身的系统登录密码,以维护系统的安全。系统流程如图 5-2 所示。
身份验证
营业人员
判定
进入系统主界面
饭卡管理
信息管理
营业人员操作
打开串口通信
饭卡充值
刷卡消费
日结算
修改密码
持卡人信息
饭卡信息
饭卡使用信息
关闭串口通信
退出系统
出错提示
Y
N
选择功能
图 5-2 系统流程图
5.2 系统登录界面和欢迎界面
5.2.1 登录界面
在开发应用程序的时候,为了提高系统的安全性,一般都要设置系统登录。在程序运行的时候,首先显示登录界面,要求用户输入操作员名称和密码,只有食堂工作人员输入的用户名称和密码都正确才能进入系统。系统登录界面如图 5-3:
图 5-3 系统登录界面
5.2.2 系统欢迎界面
在正确完成系统登录后,系统会显示一个欢迎界面。此界面是通过加载Splash screen组件实现的。通常在程序启动时,可以显示程序及用户名称、版权信息等,在本程序中,只是简单地显示出欢迎信息,界面以简洁、清晰为主,如图 5-4 所示。
图 5-4 欢迎界面
在加载Splash screen组件时,由于Visual C++ 6.0 默认情况下不允许在基于对话框窗口的程序加载此组件,因此需要对Splash screen组件进行移植。
首先将Splash screen组件加载到基于单文档窗口的程序中,再将其中的Splash.cpp和Splash.h文件加载到饭卡管理系统的工程中,并对工程做相应的修改:
1) 在 CSystemApp::InitInstance()函数中添加界面启动命令
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);
SplashWnd::EnableSplashScreen(cmdInfo.m_bShowSplash);
2) 重载CSystemApp::PreTranslateMessage(MSG* pMsg)函数
3) 在系统主窗口对话框的初始化函数OnInitDialog ()中添加CSplashWnd::ShowSplashScreen(this);以使欢迎界面启动。
5.3 系统主窗口的设计
系统主窗口是此程序功能操作的中心,系统的各个功能都通过菜单的形式来实现。其中每个菜单中包括多个菜单项,通过点击菜单项来完成相应的操作或启动相关的界面,完成更复杂的任务。各菜单和菜单项的介绍在表 5-1 中。
表 5-1 主窗口菜单
菜单
菜单项
IC卡读卡器操作
打开串口、蜂鸣、点名、取卡号、关闭串口
饭卡操作
饭卡发放、饭卡充值、刷卡消费、卡的回收
营业人员操作
食堂日结算、修改密码、退出系统
信息管理
持卡人信息管理、饭卡信息管理、饭卡使用记录信息管理
系统主窗口的运行界面如图 5-5 所示:
图 5-5 系统主窗口界面
5.4 通信模块的实现
在通信模块中,需要完成串口通信的打开和关闭,PC机与IC卡读卡器间的测试,以及PC机与IC卡之间的通信测试。这些功能的实现需要调用IC卡生产商的开发包里的函数,其对应的函数和其功能如下表 5-2:
表 5-2 开发包部分函数
开发包里面的函数
功能描述
SetCurrentPort ()
对串口进行相应的设置
OpenPort ()
打开串口设备
ClosePort ()
关闭串口设备
Beep ()
通过向读卡器发蜂鸣信号,测试连接
Call ()
读取读卡器的机型和版本号
GetCardNo ()
通过读取IC卡的卡号来测试连接
由于IC卡生产商提供的开发包是采用Delphi语言封装的Dll文件,因此在VC环境下调用时要使用动态链接库技术,同时在声明函数时要添加_stdcall以符合Delphi的调用约定。
串口的打开操作将设置串口的通信配置,此系统将在串口1上进行
操作,配置信息为:波特率57600,8位数据位,1位停止位,奇校验。只有对串口的设置操作完成,才能打开串口,进行IC卡的相关操作。
通过蜂鸣和读相关信息操作就可以测试PC机与读卡器之间的通信线路。其中读取读卡器信息的操作结果如图 5-6所示:
图 5-6 读卡器信息
在此之后,就可以尝试去测试PC机到IC卡之间的线路连接了。通过读取IC的卡号来进行测试。取IC卡的卡号操作结果如图 5-7 所示:
图 5-7 IC卡卡号
5.5 饭卡操作模块
在通信线路连接正常的情况下,就可以进行对饭卡的相关操作。饭卡操作模块将完成食堂日常的工作任务,包括饭卡的发放、充值、刷卡消费操作以及饭卡的回收。对饭卡的操作同时也包括对相关数据库信息的处理,这些操作都将涉及到数据库的增、删、该等操作。
5.5.1 饭卡的发放
当就餐人员办理新卡时,此操作将审查就餐人员的身份。当身份验证合格,就将饭卡的信息和就餐人员的信息录入数据库,并生成饭卡使用的记录。完成饭卡的发放工作。程序流程如图 5-8。
增加饭卡信息
添加发卡记录
增加持卡人信息
发出出错信息
发卡
判断
输入新持卡人信息
Y
N
图 5-8 发卡操作流程图
发卡界面的运行如图 5-9所示:
图 5-9 发卡操作的界面
饭卡操作的实现代码如下:
1) 增加就餐人员记录:
m_PeopleRecordset.Open (CRecordset::snapshot, NULL, CRecordset::none);
m_PeopleRecordset.AddNew ();//执行添加记录操作
//给记录集赋值
m_PeopleRecordset.m_PeopleID = m_strPeopleID;
m_PeopleRecordset.m_Name = m_strName;
m_PeopleRecordset.m_Age = m_strAge;
m_PeopleRecordset.m_Sex = m_strSex;
m_PeopleRecordset.m_Work = m_strWork;
m_PeopleRecordset.m_Phone = m_strPhone;
m_PeopleRecordset.Update (); //更新记录集
m_PeopleRecordset.Requery ();//重新建立记录集
2)增加饭卡记录:
m_CardRecordset.Open (CRecordset::snapshot, NULL, CRecordset::none);
m_CardRecordset.AddNew ();
m_CardRecordset.m_CardNumber = m_strCardNumber;
m_CardRecordset.m_Code = m_strCardCode;
m_CardRecordset.m_PeopleID = m_strPeopleID;
m_CardRecordset.m_Money = "0";
m_CardRecordset.Update ();
m_CardRecordset.Requery ();
3) 增加饭卡使用记录:
m_CardUseRecordRecordset.Open (CRecordset::snapshot, NULL, CRecordset::none);
m_CardUseRecordRecordset.AddNew ();
m_CardUseRecordRecordset.m_CardNumber = m_strCardNumber;
m_CardUseRecordRecordset.m_PeopleID = m_strPeopleID;
m_CardUseRecord.m_AdmID = m_strAdmID;
m_CardUseRecordRecordset.m_UseType = "发卡";
//---------------获得系统时间----------------
CTime time=CTime::GetCurrentTime();
m_CardUseRecordRecordset.m_Time = time;
m_CardUseRecordRecordset.Update ();
展开阅读全文