资源描述
校园停车场管理系统
设计说明书
课程名称: 软件工程课程设计
小组成员:-------------------------------------------------
指导教师: ---------
课程时间: 2013.08.27——09.06
第 31 页
目录
第一章 问题定义 1
1.1 引言 1
1.2 系统名称及概况 1
第二章 可行性研究 1
2.1 系统分析 1
2.2 系统组成 3
第三章 需求分析 3
3.1 功能需求分析 3
3.2 数据库需求分析 6
3.2.1 数据库概念模型 6
3.2.2 数据库逻辑模型 7
第四章 总体设计 11
4.1 总体设计 11
4.2 数据流图 11
4.3 业务流程分析 12
4.4 系统功能模块 13
4.5 系统模块设计 14
4.6 数据库实现脚本 15
4.6.1 定义SQL模式 15
4.6.2 创建基本表 15
4.6.3 创建SQL索引 19
4.6.4 SQL数据控制——授予权限 19
第五章 详细设计 20
5.1 软件结构功能模块 20
5.2 程序流程图 22
第六章 编码与测试 26
6.1 身份验证C++源程序代码 26
6.2 身份验证MFC窗口实现 27
6.3 身份验证模块软件测试 28
结语 28
附件1:伸缩门改造目标样式 29
附件2:校园停车场分布示意图 30
第一章 问题定义
1.1 引言
近年来,随着我国经济快速发展,人们生活水平不断提高,物质需求与生活方式也发生着深刻变化,以前属于奢侈品汽车己经逐步走入了人们日常生活。伴随汽车消费大众化,校园内车辆数迅速增加,迫切需要规范化校园停车场管理系统对校园停车进行高效管理。
停车是"速度为零交通”,停车场及附属相关设施是静态交通重要组成部分。目前多数停车场存在着以下几个问题,管理漏洞、系统可靠性、独立性强、收费过程比较繁琐、劳动强度高、停车场利用率低下、票款易流失等。针对这些问题,该停车场管理系统从以下几方面进行设计:针对管理进行了优化,采用划卡消费与现金支付相结合,系统计时收费;采用关系数据库标准语言SQL,借助VC++ 6.0软件进行窗口设计。优化后系统使用方便、服务高效、收费透明、可防止票款流失,提高可靠性同时也提高了操作者工作效率。
1.2 系统名称及概况
系统名称:校园停车场管理系统
建设性质:新建系统及校园出入口伸缩门改造(目标样式见附件1)
建设地点:吉林大学南岭校区
系统概况:
在校园东门与西门安装停车管理及实时监控系统,主要功能包括泊位引导、停车收费、实时监控跟踪等。将校园内停车泊位划分为几个停车场区(见附件2),车辆在入口可以清楚地知道各停车区泊位利用情况,经过信息登记,在道路标志引导下进入相应停车区空闲泊位。车辆在入口进行信息登记后,系统可以对车辆进行实时监控,直到车辆在出口进行信息核对并缴费后离开校园。
第二章 可行性研究
2.1 系统分析
系统采用感应卡实施管理,在停车场出入口各设置一套出入口管理设备,使停车场形成一个相对封闭场所,进出车辆只需将感应卡在读卡箱前轻晃一下,系统即能瞬时完成检验、记录、核算、收费等工作,挡车道闸自动启闭,实现方便快捷停车场管理。
停车卡可根据车主身份不同,分别发行月租卡、免费卡与临时卡三种类型卡。系统支持三种卡类不同收费方式,以满足按车主身份分别收费要求。电脑自动计时、计费,免费卡与月租卡自动识别,临时卡人工收取现金,服务快捷高效,电脑显示屏及收费显示屏同时显示停车时间及应收费用,卡上余额或有效期限,收费透明度高,票箱显示屏还提示指导住户使用停车场,并以文明语言问候致意。
软件管理实行分级权限制。对出口值班员来讲,其登录后可进入收费管理,期间该出口所有收费均自动记入该值班员名下并存入电脑数据库。由于值班员受权限限制,不能进入系统中更高软件菜单项,所以对电脑所记录数据无法干涉;上级管理者可以随时查询,核对或打印一个值班段或任何一段时间乃至整个停车场工作记录。这样就从根本上杜绝了停车费用流失与财务统计失误,同时系统自动运行,杜绝了人情车、霸王车造成经济损失。
系统还可在停车场出入口各安装1台高解像度彩色固定摄像机、固定支架、自动光圈手动对焦镜头,可24小时监视车辆出入情况,看清车牌号码。当有车辆驶入车场时,摄像机将信号通过视频电缆传输到停车场管理系统中,存入数据库中;当有车辆驶离车场时,车辆除应交纳必要管理费用外,驶离车辆所有资料(车牌、型号、颜色等)都必须及驶入车场时资料对比相同(为人工识别),闸杆才升起,让车辆通过。
综上分析,停车场管理系统车辆进出工作流程为:
进场时,驾驶员驱车到入口控制机处,如果是月租卡或免费卡(称为固定卡)用户,直接刷卡就能进入。读卡后,系统会判断卡是否在有效限期内,是否有余额,并且判断是否有在停车场内部未出记录。如果满足预设条件,则开闸放行,否则语音提示不放行。如果是临时卡,则驾驶员自己取卡,道闸开启,车辆通行。
出场时,固定卡,直接刷卡进出;临时卡,操作员收费后,开闸放行。
车辆不论是进或者出,在开启道闸瞬间,摄像系统拍照记录并保存。车辆通过道闸后,道闸自动落杆。
停车场管理系统分为入场停车与出场取车两部分。系统流程图如图2-1所示。
图 2-1 系统流程图
A.入场停车流程
(1)入场
根据车位实时统计显示系统给出停车场实时利用信息来控制车辆入场,停车场在有车位情况下方能停车。
(2)卡审核
刷卡或者发放临时卡,系统自动记卡编号、卡号、卡类型、余额、发卡时间、有效时间、卡状态(已发或挂失)等基本信息,刷卡时并判断卡有效性,若有效,图像系统自动摄录一幅车辆进场图像于电脑,播放欢迎词,并放行车辆。
(3)停车
系统为用户分配停车位,用户在道路泊位引导标志指引下,到指定停车位置停车。
B.出场取车流程
若用户需要查找停放位置,拨打卡面上提供帮助 ,操作员在系统中帮忙查找车辆停放位置信息。
(1)出场审核
车辆在出口处刷卡或交还临时卡,系统自动记录卡信息。同时系统自动显示该车进场图像,收费员确认无误后收费。
(2)收费
系统根据车辆信息、卡类型以及停车时间等,依据收费标准计算收费额度实施收费环节。(划卡或人工收取现金)
(3)出场
交费之后,操作员按确认键,图像系统自动摄录一幅车辆出场图像于电脑,语音系统提示“谢谢,祝您一路平安!”等声音,电动栏杆升起。车辆通过埋在车道下车辆检测线圈后,电动栏杆自动落下。
2.2 系统组成
系统分为软件部分与相应硬件设施。
软件部分:停车计费系统、车位实时统计显示系统。
硬件设施:感应卡(具备GPS定位功能)、泊位引导标志、校园泊车实时监控摄像系统、自动挡车道闸、车辆检测器(环型感应线圈检测器、超声波检测器、红外检测器、雷达检测器、视频检测器等)、刷卡机箱、控制主板、票据打印机、停车场嵌入式计算机、自动发卡机、自动收卡机。
第三章 需求分析
3.1 功能需求分析
根据停车场管理系统需求,确定了该系统用例图如下图所示。
图3-1 停车场管理系统用例图
图3-2 客户用例图
图3-3 系统管理员用例图
图3-4 操作员用例图
如图3-1所示,该系统主要有超级管理员、管理员与操作员三种角色,不同角色基本任务如下所述。
超级管理员具有最高权限,即对本系统所有权限操作权与授予权。超级管理员授权给管理员,并赋予管理员应有权限。
管理员可根据需要来维护角色信息,并授权给相应操作员,进行系统基本参数设置、权限设置、数据管理与操作员档案管理。
操作员行使管理员赋予权限,进行档案管理(车辆档案、卡档案管理、用户档案管理)、入场管理、收费管理与出场管理。
根据用例图得到部分类图,如图 3-5
图 3-5 类图
3.2 数据库需求分析
3.2.1 数据库概念模型
如图 3-6所示系统数据库ER图,制定一个收费标准,要根据卡类型以及收费标准(时收费或次收费)来确定。停车场每一个用户都有唯一一条卡信息及自己车信息绑定。停车场总车位数决定了车位表总车位,一个车位只能存放一辆车。根据入场时信息与出场时信息以及收费标准,综合得出收费金额。交班记录要记下该员工上、下班时间以及在这段时间内所有操作。
图 3-6 系统数据库ER图
根据系统需求,本系统需要设计13张表。
卡信息表:存放卡相关信息。
停车场参数表:存放停车场基本参数。
用户表:存放用户基本信息。
车信息表:存放车基本信息。
权限表:存放对应权限信息与对应行使该权限人员相关信息。
时收费表:存放按时收费时间段。
次收费表:存放按次收费时间段。
入场表:存放入场时候一些信息。
出场表:存放出场时相关信息。
交班表:存放操作员交接班相关信息。
收费表:存放停车一段时间收费信息。
车位表:用于存放每一个车位上停车状态。
收费标准表:存放收费统一标准。
3.2.2 数据库逻辑模型
针对ER模型中对表要求,下面给出各个表详细结构。
表3-1 卡信息表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
cardid
卡编号
var char
20
否
是
cardno
卡号
var char
20
是
否
cardtype
卡类型
var char
20
是
否
cardmoney
余额
money
8
是
否
sendtime
发卡时间
timestamp
8
是
否
activetime
有效时间
timestamp
8
是
否
sendflag
已发
boolean
1
是
否
loseflag
挂失
boolean
1
是
否
表3-2 停车场参数表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
parkname
停车场名字
var char
20
是
否
parktotal
总车位
int
4
是
否
entertotal
入口车道数
int
4
是
否
exittotal
出口车道数
int
4
是
否
parktel
停车场
var char
20
是
否
parkadd
停车场地址
var char
20
是
否
表3-3 用户表
字段名
描述
类型
长度
是否为空
是否主键
id
编号
var char
20
否
是
username
用户名
var char
20
是
否
usersex
性别
char
2
是
否
usertel
var char
20
是
否
cardno
卡号
var char
20
是
否
carno
车牌
var char
20
是
否
address
地址
var char
20
是
否
表3-4 车信息表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
carid
编号
var char
20
否
是
carno
车牌号
var char
20
是
否
cartype
车类型
var char
20
是
否
表3-5 权限表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
poperatorid
编号
var char
20
否
是
poperatorname
姓名
var char
20
是
否
poperatorsex
性别
char
10
是
否
poperatorpsw
密码
var char
20
是
否
poperatorright
权限
var char
20
是
否
表3-6时收费表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
timeno
时间号
int
4
否
是
starttime
开始时间
char
10
是
否
endtime
结束时间
char
10
是
否
表3-7 次收费表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
timesno
次号
int
4
否
是
starttime
开始时间
char
10
是
否
endtime
结束时间
char
10
是
否
表3-8 入场表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
encardid
入场编号
var char
20
否
否
encardno
卡号
var char
20
是
否
encarno
车牌
var char
20
是
否
enway
入场车道
var char
20
是
否
entime
入场时间
timestamp
8
是
否
enposition
占用车位
var char
20
是
否
表3-9 出场表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
exited
出场编号
var char
20
否
否
excardno
卡号
var char
20
是
否
excarno
车牌
var char
20
是
否
exway
出场车道
var char
20
是
否
extime
出场时间
timestamp
8
是
否
exposition
腾出车位
var char
20
是
否
表3-10 交班表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
tnoperator
操作员
var char
20
否
否
tnlogintime
登录时间
timestamp
8
是
否
tnturntime
交班时间
timestamp
8
是
否
entimes
进场次数
int
4
是
否
extimes
出场次数
int
4
是
否
totalmoney
金额总计
money
8
是
否
表3-11 收费表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
chargeid
收费编号
var char
20
否
否
chcardno
卡号
var char
20
是
否
chcarno
车牌
var char
20
是
否
chmoney
收费金额
money
8
是
否
表3-12 车位表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
cpcarno
车牌
var char
20
是
否
positionstate
车位状态
var char
20
是
否
表3-13 收费标准表
字段名
描述
类型
长度
是否为空
是否主键
id
自增
int
4
否
是
chargestid
标准编号
int
4
是
否
cardtype
卡类型
var char
20
是
否
cartype
车类型
var char
20
是
否
chargetype
收费类型
var char
20
是
否
timeno
时间编号
int
4
是
否
unittime
单位时间
int
4
是
否
unitsum
单位金额
int
4
是
否
maxsum
最大金额
int
4
是
否
第四章 总体设计
4.1 总体设计
首先判断登录身份,进入相应操作页面进行需要操作,最终完成目操作功能。本系统UML活动图如图4-1所示。
它们内在关系由数据库与程序来控制。
图4-1 UML活动图
4.2 数据流图
本软件顶层数据流图如图4-2所示:
图4-2 顶层数据流图
4.3 业务流程分析
本系统使用者是停车场工作人员,为了便于管理并借鉴现有停车场管理模式,划分成三个角色用户。工作人员首先登陆系统,经过一系列身份验证,登陆成功之后进入相应操作界面,实现各自管理功能。总体功能分析业务流程图。如图 4-3业务流程图
图4-3 业务流程图
其中各模块有对应添加、修改及删除功能。
4.4 系统功能模块
如图 3-3 系统功能模块划分
图 4-4 系统功能模块划分
4.5 系统模块设计
(1)授权管理模块 具有最高管理权限超级管理员对该模块进行操作,对管理员进行授权,添加、删除、修改管理员。
(2)系统设置 由超级管理员授权管理员行使该功能,主要是对停车场参数进行设置。
(3)操作员档案管理 由管理员行使修改功能,对停车场业务操作员进行管理,添加、删除、修改操作员信息。
(4)数据管理模块 该模块显示了停车场日常运行所产生数据,场内车辆,进出数据,收费金额以及交班记录相关信息。
(5)档案管理 该部分功能为操作员所使用,主要是对停车场发放卡进行管理、车档案管理以及停车场顾客信息档案管理。他们都有自己添加、删改、修改功能。
(6)入场管理 该模块是本系统一个重要功能模块,主要采集汽车入场时候一些必要参数,对参数进行处理与判断,这些获得参数提交到后台进行相关处理。
(7)出场管理 汽车离场之前对其进行离场验证与停车时间数据收集,为下一收费模块提供数据。
(8)收费管理 该模块是本系统最重要一个模块,根据出入场提供参数结合该模块收费标准设置计算出收费金额,完成收费并打印出收费清单。
4.6 数据库实现脚本
4.6.1 定义SQL模式
为停车场管理系统定义一个SQL模式,其拥有者为超级管理员。
CREATE SCHEMA PARK AUTHORIZATION administrator;
4.6.2 创建基本表
1 卡信息表
CREATE TABLE PARK.pcard
id int IDENTITY (1, 1) NOT NULL ,
cardid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
cardno var char (20) ,
cardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
cardmoney money NULL ,
sendtime timestamp NULL ,
activetime timestamp NULL ,
sendflag var char (10) COLLATE Chinese_PRC_CI_AS NULL ,
loseflag var char (10) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id,cardid));
2 停车场参数表
CREATE TABLE PARK. parkparameter
id int IDENTITY (1, 1) NOT NULL ,
parkname var char (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
parktotal int NULL ,
entertotal int NULL ,
exittotal int NULL ,
parkadd var char (50) COLLATE Chinese_PRC_CI_AS NULL ,
parktel var char (20) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id),);
3 用户表
CREATE TABLE PARK.users
Id int IDENTITY (1, 1) NOT NULL ,
userid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
username var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
usersex var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
usertel var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
usercarid var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
usercardid var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
useradd var char (50) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id)
FOREIGN KEY (usercarid) REFERENCES car(carid),
FOREIGN KEY (usercardid) REFERENCES pcard(cardid));
4 车信息表
CREATE TABLE PARK.car
id int IDENTITY (1, 1) NOT NULL ,
carid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
carno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
cartype var char (20) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id,carid));
5 权限表
CREATE TABLE PARK.rateright
Id int IDENTITY (1, 1) NOT NULL ,
poperatorid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
poperatorname var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
poperatorsex char (10) COLLATE Chinese_PRC_CI_AS NULL ,
poperatorpsw var char (20) COLLATE Chinese_PRC_CI_AS NULL,
poperatorright var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
PRIMARY KEY (id,poperatorid));
6 时收费表
CREATE TABLE PARK.ptime
Id int IDENTITY (1, 1) NOT NULL ,
timeno int NOT NULL ,
starttime var char (50) COLLATE Chinese_PRC_CI_AS NULL ,
endtime var char (50) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id,timeno));
7 次收费表
CREATE TABLE PARK.ptimes
id int IDENTITY (1, 1) NOT NULL ,
timesno int NOT NULL ,
starttimes char (8) COLLATE Chinese_PRC_CI_AS NULL ,
endtimes char (8) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id, timesno));
8 入场表
CREATE TABLE PARK.entrance
id int IDENTITY (1, 1) NOT NULL ,
encardno var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
encardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
encarno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
encartype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
enway var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
entime timestamp NULL ,
enposition var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
enchargetype var char (50) COLLATE Chinese_PRC_CI_AS NULL ,
enoperator var char (50) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id));
9 出场表
CREATE TABLE PARK.pexit
id int IDENTITY (1, 1) NOT NULL ,
excardno var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
excarno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
exway var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
extime timestamp NULL,
exposition var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
PRIMARY KEY (id));
10 交班表
CREATE TABLE PARK.turn
id int IDENTITY (1, 1) NOT NULL ,
tnoperator var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
tnlogintime timestamp NULL ,
tnturntime timestamp NULL ,
entimes int NULL ,
extimes int NULL ,
totalmoney money NULL,
PRIMARY KEY (id));
11 收费表
CREATE TABLE PARK.charge
id int IDENTITY (1, 1) NOT NULL ,
cardid var char (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
cardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
cartype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
carno var char (50) COLLATE Chinese_PRC_CI_AS NULL ,
money money NULL,
PRIMARY KEY (id));
12 车位表
CREATE TABLE PARK.carposition
Id int IDENTITY (1, 1) NOT NULL ,
cpcarno var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
positionstate var char (20) COLLATE Chinese_PRC_CI_AS NULL,
PRIMARY KEY (id));
13 收费标准表
CREATE TABLE PARK.standardcharge
id int IDENTITY (1, 1) NOT NULL ,
chargestid int NOT NULL ,
cardtype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
cartype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
chargetype var char (20) COLLATE Chinese_PRC_CI_AS NULL ,
timeno int NULL ,
unittime int NULL ,
unitsum int NULL ,
maxsum int NULL,
PRIMARY KEY (id));
4.6.3 创建SQL索引
为了方便用户 查询车辆停放位置信息,建立入场车辆车牌号索引。
CREATE CLUSTER INDEX encarno_index ON entrance(encarno);
4.6.4 SQL数据控制——授予权限
超级管理员将对数据库一部分控制权限授予给管理员角色,并把管理员角色授予给所有管理员。
GRANT ALL PRIVILEGES
ON TABLE pcard, parkparameter, users,car, rateright, ptime, ptimes, entrance, pexit, turn, carposition TO manager;
GRANT SELECT,INDEX ON TABLE charge , standardcharge TO manager;
GRANT manager TO PUBLIC;
第五章 详细设计
5.1 软件结构功能模块
图3-2所示,软件结构功能中操作员功能模块图如图5-1所示:
身份验证
初始化
重新验证
非正常退出出
消息循环
值班管理
车位管理
用户管理
退出
正常退出
软件介绍
信息
查询
入场停车
值班历史查询
值班管理
记事
删除用户
添加用户
取车并算取费用
关于,帮助
查询某个日期的情况
查询以前的入车情况
查询账本
图5-1 操作员功能模块图
管理员功能模块图如图5-2所示:
身份验证
初始化
重新验证
非正常退出出
消息循环
权限设置
停车场管理
数据管理
退出
正常退出
操作员档案管理
信息
查询
停车场使用权限管理
操作员权限授予
操作员权限更改
数据分类统计
打印数据报表
停车场基本参数设置
增加、删除、修改操作员档案
查询某个日期的情况
查询以前的入车情况
查询账本
图5-2 管理员功能模块图
5.2 程序流程图
5.2.1 用户登录模块程序流程图
图5-3 用户登录模块程序流程图
5.2.2 授权管理模块程序流程图
超级管理员对管理员授权与管理员对操作员授权,调用同一授权管理模块。
图5-4 授权管理模块程序流程图
5.2.3档案管理模块程序流程图
管理员对操作员档案进行管理与操作员对卡、车、顾客等档案进行管理,调用同一档案管理模块。
图5-5 档案管理模块程序流程图
5.2.4 收费管理模块程序流程图
图5-6 收费管理模块程序流程图
第六章 编码及测试
本章主要对用户登录模块实现及测试展开研究,其他模块方法相同。
6.1 身份验证C++源程序代码
#include "PasswordDlg.h"
BOOL CMyDialog2App::InitInstance()
int nCount=0,m=0;
while(nCount<3)
CPasswordDlg PassDlg;
if(PassDlg.DoModal()==IDOK)
if((strcmp(PassDlg.m_strUserName,"441004"))&&(strcmp(PassDlg.m_strPassword,"jluedu"))!=0)
if((strcmp(PassDlg.m_strUserName,"171004"))&&(strcmp(PassDlg.m_strPassword,"rjgcks"))!=0)
if((strcmp(PassDlg.m_strUserName,"353533"))&&(strcmp(PassDlg.m_strPassword,"class4"))!=0)
MessageBox(NULL,"用户名或密码错误,请重新输入!",
"错误信息",MB_OK|MB_ICONERROR);
nCount++;
else {m=3;break;}
else {m=2;break;}
else{ m=1;break; }
else
return FALSE;
if(nCount>=3)
MessageBox(NULL,"输入已经超过3次,请退出!",
"错误信息",MB_OK|MB_ICONERROR);
return FALSE;
6.2 身份验证MFC窗口实现
借助Visual C++ 6.0 编程软件,实现用户登录身份验证,如图6-1。
图6-1 用户登录界面
当用户名或密码输入有误时,会弹出相应提示信息,并重新输入,如图6-2。
图6-2 登录信息错误提示
为了确保安全,当用户名与密码输入三次都错误时,系统将自动退出登录,如图6-3所示。
图6-3 登录次数限制
6.3 身份验证模块软件测试
本模块在设计过程中建立三个用户,分别为超级管理员(441004,jluedu,m=1)、管理员(171004,rjgcks,m=2)与操作员(353533,class4,m=3)。只有用户名与密码同时正确且匹配时,才能打开相应界面。当用户名与密码输入错误时,给出提示信息并重新登录。错误登陆次数超过三次,系统将自动退出。为此设计软件测试方案设计,测试报告如表6-1所示。
测试编号
用户名
密码
m=?
结果
1
441004
jluedu
1
正常登录
2
171004
rjgcks
2
正常登录
3
353533
class4
3
正常登录
4
441004
rjgcks
展开阅读全文