软件工程导论-课程设计-饭卡管理系统开发文档_第1页
软件工程导论-课程设计-饭卡管理系统开发文档_第2页
软件工程导论-课程设计-饭卡管理系统开发文档_第3页
软件工程导论-课程设计-饭卡管理系统开发文档_第4页
软件工程导论-课程设计-饭卡管理系统开发文档_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

《软件工程》实验报告——饭卡管理系统开发文档

TOC\o"1-4"\h\u——饭卡管理系统开发文档 1前言 41可行性研究 41.1系统概述 41.2初步的系统分析设计 41.3技术可行性分析 71.4经济/效益可行性分析 71.4.1支出方面 71.4.2收益方面 81.5系统开发计划 82需求分析 82.1总体目标 82.2具体目标 92.3系统数据建模 92.4系统功能建模 92.5数据字典 123总体设计 153.1系统结构图 153.2数据库设计 173.2.1逻辑设计要点 183.2.2物理结构设计要点 193.2.3触发器设计 203.3系统模块IPO图 213.3.1验证用户登录功能模块 213.3.2用户注册功能管理模块 223.3.3查询用户详细信息功能模块 233.3.4用户挂失功能模块 243.3.5用户消费功能模块 253.3.6用户查询消费历史功能模块 273.3.7新建持卡者功能模块 283.3.8存款功能模块 293.3.9注销用户功能模块 303.3.10更改学生信息功能模块 313.3.11挂失,解锁功能模块 323.3.12查询更改消费历史功能模块 333.3.13数据库功能模块 344详细设计 354.1登录模块详细设计 354.2学生信息模块详细设计 364.3消费模块详细设计 385系统实现 405.1编码过程与特点 405.2部分功能模块实现 405.2.1对消费模块进行实现与测试 405.2.2对登陆模块进行实现与测试 435.2.3对查询模块的实现与测试 465.3测试 495.3.1本系统的测试计划 495.3.2测试方法和步骤 505.3.3测试过程 506维护 606.1系统维护工作内容 606.2系统维护策略 617总结与体会 617.1总结 617.2体会 61前言本文档根据软件工程的基本原理、开发方法以及开发过程进行了多次的讨论与实践,主要包括可行性研究、需求分析、总体设计、详细设计、编码、测试等章节,每一章节都图文并茂地阐述具体的设计过程。1可行性研究1.1系统概述随着高校扩招,大学生人数的逐年递增。关于学生生活切身利益的日常消费亟需解决,全国高校校园卡的升级,也是提高学生日常生活质量的一种方式。校园卡将安全、消费、学习集为一身,需要新的校园卡管理系统给予管理部门的技术支持。如校园卡管理系统采取银行卡的金融功能与校园卡的校务管理功能整合的方式,使师生操作更方便。校园卡系统的建设,为学校实现财务统一管理提供科学的、现代化的手段,将提高学校的管理水平,极大提高效率。1.2初步的系统分析设计根据校园卡管理所涉及的领域,将校园卡的业务分为学生与商户信息管理、消费记录收益记录管理、饭卡信息管理三大类,形成初步的业务流程图如下1.2.1、1.2.2、1.2.3图所示。图1.2.1学生消费业务流图图1.2.2学生信息查询业务流图图1.2.3商户信息查询业务流图根据以上业务流图可以画出数据流图,如图1.2.4、1.2.5。图1.2.4顶层数据流图图1.2.50层数据流图根据初步的分析,我们需要管理员表,学生表,和饭卡信息表等。初步的数据字典如下:名称:管理员描述:对饭卡管理系统管理的人员定义:管理员=工号+密码+姓名+性别+联系方式工号=字符/20位密码=字符/20位姓名=字符/20位 性别=【男/女】联系方式=字符/11位位置:管理员表名称:学生描述:在校的学生定义:学生=学号+姓名+性别+联系方式+宿舍学号=字符/12位姓名=字符/10位 性别=【男/女】 联系方式=字符/11位宿舍=字符/8位位置:学生表名称:饭卡描述:饭卡管理系统被操作的对象定义:饭卡=卡ID+余额+卡状态+消费限额+卡密码+学号卡ID=字符/8位余额=浮点型(>=0) 卡状态=字符/4位 卡上额=浮点型(>=0) 卡密码=字符/6位 学号=字符/12位位置:饭卡信息表1.3技术可行性分析对于高校人数数据量大约是万级左右,数据量并不大,对数据库的性能要求技术完全可行。对于每个学生消费并发性不高,消费补助数据库修改可以对接银行接口。同时,为了高质量完成本软件系统开发工作,还需要遵循如下准则:好战略数据的规划,建立稳定的信息模型;在功能模型的划分上,按组织机构来划分子系统或模块;应用软件的开发设计,要充分考虑应用软件的适应性,建立友好的人机界面。综上所述,系统的实现技术上完全可行。1.4经济/效益可行性分析1.4.1支出方面借助校园本身的数据进行管理,数据库本地存储。除编程人力支出并无其他经济消费。(1)工作负荷人工操作频繁加减存款。工作繁琐,枯燥,容易出错,完成工作所需要的时间较长,工作效率比较低。(2)费用开支由于运行现有系统所引起的费用开支,如人力、设备、空间、支持性服务、材料等项开支以及开支总额。(3)人员配备由于现有系统的技术性含量比较低,操作不便,工作量大,因此需要较多的人才能完成工作。而新系统将具有较高的技术操作性,但它确使工作变得较为简便,因此只需要少量的高素质人才就可完成。1.4.2收益方面项目投入使用后,将有效的提高高校校园卡管理工作中所涉及的信息管理,学生管理,商铺管理的效率,减少信息管理上的人力投入和出现错误的概率,对于校园卡的管理使用极为有利。1.5系统开发计划本项目初步计划在3周内完成需求分析、原型设计工作,随后在3天内完成代码编写和初步调试工作,再后在2周内完成内部测试、改进、修补和公开测试工作。2需求分析2.1总体目标本系统力求让饭卡管理变得傻瓜化,集成学生管理以及在学校运营商户营业状况地智能化管理。2.2具体目标前端:刷卡消费、确认身份(门禁)2)公共:查询使用记录、挂失、拾遗查询3)管理:新开、充值、挂失、解挂、注销、补办、消费保护、设置密码2.3系统数据建模初步的E-R图设计,如图2.3图2.3初步E-R图2.4系统功能建模如图2.4.1为顶层数据流图,分为四个实体,分别为学生,管理员,刷卡机、刷卡员图2.4.1顶层数据流图0层数据流图如图2.4.2将学生与商户信息管理、饭卡信息管理、消费记录等数据流进行第一步细化图2.4.20层数据流图如图2.4.3-2.4.5位1层数据流图,分别细化的是学生信息管理,饭卡信息管理,商户营业信息管理。如图2-4-3新增饭卡/入驻商户的数据流处理过程,学生基本表提供基本数据流后,数据经过处理流入饭卡基本表2.4.3学生信息管理数据流图如图2.4.4位饭卡消费/挂失过程:2.4.4饭卡信息管理如图2.4.5为消费收益数据处理过程:2.4.5商户信息管理数据流图2.5数据字典名称:管理员描述:对饭卡管理系统管理的人员定义:管理员=工号+密码+姓名+性别+联系方式工号=字符/20位密码=字符/20位姓名=字符/20位 性别=【男/女】联系方式=字符/11位位置:管理员表名称:学生描述:在校的学生定义:学生=学号+姓名+性别+联系方式+宿舍学号=字符/12位姓名=字符/10位 性别=【男/女】 联系方式=字符/11位宿舍=字符/8位位置:学生表名称:刷卡员描述:对饭卡进行刷卡操作的人员定义:刷卡员=工号+姓名工号=字符/8位姓名=字符/20位位置:刷卡员表名称:饭卡描述:饭卡管理系统被操作的对象定义:饭卡=卡ID+余额+卡状态+消费限额+卡密码+学号卡ID=字符/8位余额=浮点型(>=0) 卡状态=字符/4位 卡上额=浮点型(>=0) 卡密码=字符/6位 学号=字符/12位位置:饭卡信息表名称:刷卡机描述:消费付款定义:刷卡机=机号+位置+刷卡员工号机号=字符/4位 位置=字符/50位 刷卡员工号=字符/8位位置:刷卡机信息表名称:消费信息表描述:饭卡管理系统中记录消费的信息定义:饭卡=卡ID+刷卡机号+消费时间+消费金额卡ID=字符/8位 刷卡机号=字符/4位 消费时间=字符/14位 消费金额=浮点型(>=0)位置:消费信息表名称:饭卡管理描述:管理员对饭卡进行管理定义:饭卡管理=管理员工号+卡ID+操作时间+管理类别+管理内容+充值金额 管理员工号=字符/20位卡ID=字符/8位操作时间=字符/14位管理类别=字符/8位管理内容=字符/50位充值金额=浮点型/(>=0)位置:饭卡管理信息表名称:消费额描述:描述消费款额定义:消费额=浮点型(>=0)位置:消费信息表名称:余额描述:显示卡上的现有金额数定义:余额=浮点型(>=0)位置:饭卡信息表名称:充值金额描述:对管理员充值金额的统计定义:充值金额=浮点型(>=0)位置:饭卡管理信息表名称:消费限额描述:若消费超过限额则需要输入密码定义:消费限额=浮点型(>=0)位置:饭卡信息表3总体设计3.1系统结构图系统的0层数据流图,以及1层细化数据流图如图3.1.1-3.1.4所示。图3.1.10层数据流图图3.1.21层数据流图(消费记录细化)图3.1.31层数据流图(饭卡信息管理模块细化)图3.1.41层数据流图(学生与商户信息管理模块细化)功能结构图如图3.1.5所示。图3.1.5系统功能模块图3.2数据库设计3.2.1逻辑设计要点管理员表(工号,密码,姓名,性别,联系方式)工号密码姓名性别联系方式学生(学号,姓名,性别,联系方式,宿舍)学号姓名性别联系方式宿舍饭卡信息表(卡ID,余额,卡状态,消费限额,密码,学号)卡ID余额卡状态消费限额密码学号刷卡机表(机号,位置,刷卡员工号)机号位置刷卡员工号刷卡员表(刷卡员工号,姓名)刷卡员工号姓名消费信息表(机号,卡ID,消费时间,消费金额)机号卡ID消费时间消费金额饭卡管理表(管理员工号,卡ID,操作时间,操作类型,操作内容,充值金额)管理员工号卡ID操作时间操作类型操作内容充值金额3.2.2物理结构设计要点管理员表数据项类型主键备注工号char(20)是不为空密码char(20)否不为空姓名char(20)否不为空性别char(2)否可为空联系方式char(11)否可为空学生表数据项类型主键备注学号char(12)是不为空姓名char(10)否不为空性别char(2)否可为空联系方式char(11)否可为空宿舍char(8)否可为空饭卡信息表数据项类型主键备注卡IDchar(8)是不为空余额float否可为空卡状态char(4)否可为空消费限额float否可为空密码char(6)否可为空学号char(12)否外键刷卡机表数据项类型主键备注机号char(4)是不为空位置char(50)否可为空刷卡员工号char(8)否外键刷卡员表数据项类型主键备注刷卡员工号char(8)是不为空姓名char(20)否可为空消费信息表数据项类型主键备注机号char(4)是不为空卡IDchar(8)是外键消费时间char(14)是不为空消费金额float否可为空饭卡管理信息表数据项类型主键备注管理员工号char(20)是外键卡IDchar(8)是外键操作时间char(14)是不为空操作类型char(8)否不为空操作内容char(50)否可为空充值金额float否可为空3.2.3触发器设计由于在消费和充值时,需要对余额进行更新操作,因此需要添加对应的触发器如下:createtriggerUpdateCardRemain1onConsumeforupdate,insertas updateCard setCardRemain-= (selecttop1ConNumfromConsume whereConsume.CardNoIN (selectCardNofrominserted) orderbyContimedesc ) whereCard.CardNoin (selectCardNofrominserted)createtriggerUpdateCardRemain2onManCardforupdate,insertas updateCard setCardRemain+= (selecttop1ChargeNumfromManCard whereManCard.CardNoIN (selectCardNofrominserted) orderbyManTimedesc ) whereCard.CardNoin (selectCardNofrominserted)3.3系统模块IPO图3.3.1验证用户登录功能模块功能描述对登录系统的用户进行身份验证。模块IPO表系统名称饭卡管理系统模块名称用户登录模块编号1作者翟天亨日期2015/12/25模块描述用于系统对用户的登录进行身份验证调用模块数据库模块被调用模块无输入项目用户名,密码,用户类型,验证码格式用户名:varchar(20)密码:varchar(20)类别:char(10)验证码:char(4)处理1、用户输入用户名、密码,选择用户类型及输入验证码2、模块获得用户名密码等信息3、模块调用数据库表进行比较及程序进行验证码校验4、模块返回登录信息输出用户登录成功或登录失败。局部数据元素数据库表约束条件验证码验证注释需要数据库用户表主要算法【登录】按钮:验证用户的合法性。【取消】按钮:关闭用户登录窗口。【注册】按钮:弹出用户注册功能窗口。3.3.2用户注册功能管理模块功能描述用户注册一个登录帐号。模块IPO表系统名称饭卡管理系统模块名称用户注册模块编号2作者翟天亨日期2015/12/25模块描述学生用户注册登录帐号调用模块数据库模块被调用模块无输入项目用户名,密码,确认密码,绑定学号,绑定饭卡号,验证码格式用户名:varchar(20)密码:varchar(20)学号:nvarchar(50)饭卡号:nvarchar(50)验证码:char(4)处理用户点击登录页面的注册链接系统返回注册页面用户输入注册信息系统调用数据库模块进行数据信息比对信息确认无误系统弹出注册成功对话框输出注册成功或失败局部数据元素数据库表约束条件验证码验证注释需要数据库用户表及持卡者信息表主要算法【注册】按钮:注册一个新用户。【取消】按钮:关闭登录窗口。【返回登录】按钮:返回上层界面。3.3.3查询用户详细信息功能模块功能描述用于用户查询本人信息。模块IPO表系统名称饭卡管理系统模块名称查询用户详细信息模块编号3作者翟天亨日期2015/12/25模块描述用于用户查询本人详细信息调用模块数据库模块被调用模块无输入项目点击按钮格式无处理用户登录成功进入用户界面用户点击查询用户详细信息系统根据用户登录的帐号从数据库中查询用户的信息系统显示查询出的信息输出用户的详细信息局部数据元素数据库中持卡者信息表及照片表约束条件无注释需要数据库中持卡者信息表及照片表主要算法【查询用户详细信息】按钮:显示用户信息。【查询消费历史】按钮:查询用户的消费历史。【挂失】按钮:用户挂失饭卡。【消费】按钮:进入用户消费界面。【上传照片】按钮:上传用户照片。【提交照片】按钮:确认上传照片。3.3.4用户挂失功能模块功能描述用于用户挂失自己的饭卡。模块IPO表系统名称饭卡管理系统模块名称用户挂失模块编号4作者翟天亨日期2015/12/25模块描述用于用户挂失自己的卡调用模块数据库模块被调用模块无输入项目点击按钮格式无处理用户登录进入用户界面用户点击挂失按钮系统根据用户登录的帐号查询用户信息系统显示用户学号及饭卡好信息用户确认信息,点击挂失按钮系统弹出确认对话框用户点击确认,提交挂失系统更改用户信息并添加记录到系统中输出挂失成功局部数据元素数据库中饭卡信息表及饭卡历史表约束条件注释需要数据库用户表主要算法【挂失】按钮:挂失自己的帐号。【确定】按钮:确认所挂失的帐号。【取消】按钮:返回挂失界面。3.3.5用户消费功能模块功能描述用于用户消费使用。模块IPO表系统名称饭卡管理系统模块名称用户消费模块编号5作者翟天亨日期2015/12/25模块描述用于用户消费使用调用模块数据库模块被调用模块无输入项目点击按钮,消费金额格式消费金额:数字类型处理用户登录系统进入用户界面用户点击消费按钮系统根据用户帐号返回用户饭卡号及余额用户输入消费金额用户点击消费系统查询消费金额是否小于余额当小于余额是系统弹出确认对话框用户确认消费系统返回消费成功对话款及修改数据库余额并添加历史记录输出确认用户消费局部数据元素数据库中饭卡信息表及饭卡历史表及用户表约束条件消费输入框中限定为数字输入,其他字符无法输入进去注释需要数据库中饭卡信息表及饭卡历史表及用户表(4)主要算法【消费】按钮:消费金额。【清空】按钮:清空消费金额。【确定】按钮:确认消费金额。【取消】按钮:返回消费界面。3.3.6用户查询消费历史功能模块功能描述用于用户查询自己卡的历史记录模块IPO表系统名称饭卡管理系统模块名称用户查询消费历史模块编号6作者翟天亨日期2015/12/25模块描述用于用户查询自己卡的历史记录调用模块数据库模块被调用模块无输入项目起始时间,终止时间,款额,操作格式起始时间:datetime终止时间:datetime款额:float操作:char(20)处理用户登录系统进入用户界面用户点击查询消费历史系统根据用户登录的帐号返回用户所有历史记录用户输入查询条件系统根据查询条件查询数据库系统返回查询结果输出用户根据查询条件查询的结果局部数据元素用户表及饭卡历史表约束条件只能查询本卡,时间通过鼠标点入,操作类型由下拉框输入注释需要数据库用户表及饭卡历史表(4)主要算法【查找】按钮:选择起始时间查询用户消费历史。【清空】按钮:清空所输入的款额,操作。3.3.7新建持卡者功能模块功能描述用于管理员录入新建学生信息。模块IPO表系统名称饭卡管理系统模块名称新建持卡者模块编号7作者翟天亨日期2015/12/25模块描述用于管理员录入新建学生的信息调用模块数据库模块被调用模块无输入项目学号|工号,饭卡号,姓名,电话,性别,地址,照片格式学号|工号:nvarchar(50)饭卡号:nvarchar(50)姓名:char(20)电话:char(10)性别:char(20)地址:char(50)照片:jpg,bmp,png处理管理员登录系统进入管理员界面管理员打开新建持卡者信息管理员输入信息并选择照片管理员点击提交系统将信息写入数据库中系统弹出信息录入成功对话框输出信息录入成功对话框局部数据元素输入信息到持卡者信息表及饭卡历史表约束条件所有信息必须填写完整除照片信息外。注释需要数据库中持卡者信息表及饭卡历史表主要算法【提交】按钮:提交用户信息。【清空】按钮:清空所填用户信息。【上传照片】按钮:上传用户照片。【确定】按钮:建卡成功,返回操作。3.3.8存款功能模块功能验证用于管理员对用户的充值。模块IPO表系统名称饭卡管理系统模块名称存款模块编号8作者翟天亨日期2015/12/25模块描述用于管理员对用户的充值调用模块数据库模块被调用模块无输入项目学号|工号,充值金额格式学号|工号:nvarchar(50)充值金额:float处理管理员登录系统进入管理员界面管理员输入要充值的学生学号管理员点击充值按钮系统根据管理员输入的学生学号查询学生信息返回到充值页面管理员输入充值金额管理员点击提交按钮系统弹出确认对话框管理员确认系统弹出充值成功对话框输出充值成功对话框局部数据元素输出信息记录到饭卡信息表及饭卡历史表约束条件注释需要数据库饭卡信息表、饭卡历史表(4)主要算法【充值】按钮:充值金额。【确定】按钮:确定充值金额。【取消】按钮:取消充值并返回。3.3.9注销用户功能模块功能描述用于管理元对毕业学生及过期用户的注销。模块IPO表系统名称饭卡管理系统模块名称注销模块编号9作者翟天亨日期2015/12/25模块描述用于管理员对毕业学生及过期用户注销调用模块数据库模块被调用模块无输入项目学号|工号格式学号|工号:nvarchar(50)处理管理员登录系统进入管理员界面管理员输入要注销的学生学号管理员点击注销按钮系统根据管理员输入的学号进行查询系统显示查询结果在注销页面管理员核对信息并提交注销系统接收信息写入数据库并删除注销用户的饭卡历史信息输出是否注销对话框及注销成功对话框局部数据元素写入记录到饭卡历史表及饭卡信息表约束条件注释需要数据库饭卡历史表及饭卡信息表主要算法【注销此卡】按钮:注销次饭卡。【确定】按钮:确认注销次卡。【取消】按钮:返回注销界面。3.3.10更改学生信息功能模块功能描述用于管理员对需要更改的学生信息进行查询更改。模块IPO表系统名称饭卡管理系统模块名称更改学生信息模块编号10作者翟天亨日期2015/12/25模块描述用于管理员对需要更改的学生信息进行查询更改调用模块数据库模块被调用模块无输入项目学号|工号,饭卡号,姓名,电话,性别,地址,照片格式学号|工号:nvarchar(50)饭卡号:nvarchar(50)姓名:char(20)电话:char(10)性别:char(20)地址:char(50)照片:jpg,bmp,png处理管理员登录系统进入管理员界面管理员输入要更改信息的学生学号系统根据学生学号查询数据库系统返回学生信息到更改学生信息页面管理员修改要更改的学生信息管理员提交更改后的学生信息系统接收信息写入数据库中系统弹出更新成功对话框输出更新成功对话框局部数据元素写入记录到持卡者信息表及照片表约束条件学生学号无法更改注释需要数据库持卡者信息表及照片表(3)主要算法【提交】按钮:确认提交所填的资料信息。【删除】按钮:删除每一个信息。【清空】按钮:清空所有信息。【上传照片】按钮:上传更改用户照片信息。3.3.11挂失,解锁功能模块功能描述用于管理员对挂失用户进行解锁并对需要挂失用户进行挂失。模块IPO表系统名称饭卡管理系统模块名称挂失,解锁模块编号11作者翟天亨日期2015/12/25模块描述用于管理员对挂失用户进行解锁及对需要挂失用户进行挂失调用模块数据库模块被调用模块无输入项目学号|工号格式学号|工号:nvarchar(50)处理管理员登录进入管理员页面管理员输入要挂失或解锁的用户学号系统根据管理员输入的信息进行查询系统返回信息到页面管理员点击挂失或解锁按钮系统接收信息写入数据库系统弹出挂失成功或解锁成功对话框输出挂失成功或解锁成功对话框局部数据元素写入记录到饭卡历史表及更新饭卡信息表约束条件注销卡及已上锁的卡系统不予此操作注释需要数据库用户表主要算法【挂失此卡】按钮:挂失需要挂失的饭卡。【解锁此卡】按钮:解锁需要解锁的饭卡。【确定】按钮:确认挂失,解锁的饭卡。【取消】按钮:取消挂失,解锁,并返回上层界面。3.3.12查询更改消费历史功能模块功能描述用于管理员对用户消费历史进行查询更改模块IPO表系统名称饭卡管理系统模块名称查询更改消费历史模块编号12作者翟天亨日期2015/12/25模块描述用于管理员对用户消费历史进行查询更改调用模块数据库模块被调用模块无输入项目学号|工号,起始时间,终止时间,款额,操作格式学号|工号:nvarchar(50)起始时间:datetime终止时间:datetime款额:float操作:char(20)处理管理员登录系统进入管理员页面管理员点击查询更改消费历史按钮系统根据管理员输入的学号信息进行查询并返回该学号的历史信息,如果管理员没有输入学号信息则返回所有学生的历史信息管理员在更改历史页面上重新选择查询条件系统根据查询条件返回结果管理员对结果进行更改系统接收更改信息写入数据库输出更改信息成功对话框局部数据元素更改饭卡历史表中的记录约束条件注释需要数据库用户表(3)主要算法【删除】按钮:删除选定的消费记录。【清空】按钮:清空消费记录。【查找】按钮:查找指定的消费记录。3.3.13数据库功能模块功能描述记录系统所有数据信息。模块IPO表系统名称饭卡管理系统模块名称数据库模块模块编号13作者翟天亨日期2015/12/25模块描述记录系统所有数据信息调用模块无被调用模块无输入项目持卡者信息表,饭卡历史表,饭卡信息表,用户表,照片表格式无处理系统调用的各个处理输出学生信息表,商铺表,饭卡表,饭卡信息表,用户表局部数据元素无约束条件无注释各表数据类型给定4详细设计4.1登录模块详细设计登录模块的程序流程图图4.1登陆模块流程图伪代码设计Begin用户登录输入用户名,密码,验证码if(用户名/密码/验证码==””)则给出相应提示信息否则连接数据库If(Count<=0)则提示用户名或者密码错误否则调用frmMangerMainEnd4.2学生信息模块详细设计图4.2学生信息管理模块流程图伪代码设计注:在本系统中,查询操作涉及学生发卡信息查询和商户查询,查询的过程基本相同,但查询出后对结果的处理有些不同,这里只进行一种简单描述:Begin查询学生信息输入学号if(学号为空)则提示错误信息否则连接数据库if(学号&&密码错误)则提示学号/密码错误否则{进入查询区域UsesqlsentencetoSelect;Textbox.Text=result;End}4.3消费模块详细设计消费模块作为一个独立的模块单独建立了一个工程,在此模块用户是无法进行查询任何信息,只提供饭卡消费功能。流程图如图4.3图4.3消费模块流程图伪代码设计开始GetcardnumberPosnumberpriceThenif(price>limit){输入卡号密码if(密码正确)则continueelse提示密码错误,重新输入}if(余额>消费金额)余额=余额–消费金额否则提示余额不足结束5系统实现5.1编码过程与特点编译语言:C#编译环境:visualstudio2010框架:WPF数据库:对数据库进行查询,修改5.2部分功能模块实现5.2.1对消费模块进行实现与测试运行界面截图具体代码分析对数据库进行查询并将查询结果显示在界面相应位置上。具体代码如下:namespaceTheCardManagerSystem_Server{///<summary>///frmLogin.xaml的交互逻辑///</summary>publicpartialclassfrmLogin:Window{SQLconectsqlconnect;DataSetds;stringusr;stringpsw;stringcode;IdentifyingCodevalidCode;stringsql;publicfrmLogin(){InitializeComponent();sqlconnect=newSQLconect();}privatevoidconBtn_Click(objectsender,RoutedEventArgse){usr=usrTextBox.Text.Trim();psw=pswTextBox.Password.ToString().Trim();code=codeTextBox.Text.Trim();if(usrTextBox.Text=="")MessageBox.Show("请输入用户名!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);elseif(pswTextBox.Password.ToString()=="")MessageBox.Show("请输入密码!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);elseif(!String.Equals(validCode.CheckCode,code,StringComparison.CurrentCultureIgnoreCase)||codeTextBox.Text=="")MessageBox.Show("验证码错误!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);else{sql="selectManNo,ManPswfromManagerwhereManNo='"+usr+"'andManPsw='"+psw+"'";ds=sqlconnect.GetDs(sql);if(ds.Tables[0].Rows.Count>0){frmManagerMainMain=newfrmManagerMain(usr);Main.Show();this.Hide();}else{MessageBox.Show("有户名或密码错误,请重新输入","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);}}}privatevoidWindow_Loaded(objectsender,RoutedEventArgse){validCode=newIdentifyingCode (5,IdentifyingCode.CodeType.Alphas);codeImage.Source=BitmapFrame.Create(validCode.CreateCheckCodeImage());}privatevoidcodeImage_MouseDown(objectsender,MouseButtonEventArgse){validCode=newIdentifyingCode(5,IdentifyingCode.CodeType.Alphas);codeImage.Source=BitmapFrame.Create(validCode.CreateCheckCodeImage());}}}5.2.2对登陆模块进行实现与测试运行界面截图具体代码分析界面上有三个需要判断的数据,分别是用户名,密码以及验证码。如果为空或者经数据库查询后用户名与密码不匹配或者验证码输入错误则提示错误信息,不然则通过验证进入下一界面,具体代码如下:namespaceTheCardManagerSystem_Server{///<summary>///frmLogin.xaml的交互逻辑///</summary>publicpartialclassfrmLogin:Window{SQLconectsqlconnect;DataSetds;stringusr;stringpsw;stringcode;IdentifyingCodevalidCode;stringsql;publicfrmLogin(){InitializeComponent();sqlconnect=newSQLconect();}privatevoidconBtn_Click(objectsender,RoutedEventArgse){usr=usrTextBox.Text.Trim();psw=pswTextBox.Password.ToString().Trim();code=codeTextBox.Text.Trim();if(usrTextBox.Text=="")MessageBox.Show("请输入用户名!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);elseif(pswTextBox.Password.ToString()=="")MessageBox.Show("请输入密码!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);elseif(!String.Equals(validCode.CheckCode,code,StringComparison.CurrentCultureIgnoreCase)||codeTextBox.Text=="")MessageBox.Show("验证码错误!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);else{sql="selectManNo,ManPswfromManagerwhereManNo='"+usr+"'andManPsw='"+psw+"'";ds=sqlconnect.GetDs(sql);if(ds.Tables[0].Rows.Count>0){frmManagerMainMain=newfrmManagerMain(usr);Main.Show();this.Hide();}else{MessageBox.Show("有户名或密码错误,请重新输入","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);}}}privatevoidWindow_Loaded(objectsender,RoutedEventArgse){validCode=newIdentifyingCode(5,IdentifyingCode.CodeType.Alphas);codeImage.SourceBitmapFrame.Create(validCode.CreateCheckCodeImage());}privatevoidcodeImage_MouseDown(objectsender,MouseButtonEventArgse){ validCode=newIdentifyingCode(5,IdentifyingCode.CodeType.Alphas);codeImage.Source=BitmapFrame.Create(validCode.CreateCheckCodeImage());}}}5.2.3对查询模块的实现与测试运行界面截图具体代码分析通过输入卡号对数据库进行查询,如果查到需要的信息则显示在界面相应位置上,如果没有该卡号或者卡号输入错误则提示错误,具体代码如下:privatevoidbutton3_Click(objectsender,RoutedEventArgse){stringCardID=textBox9.Text.Trim();if(Validator.IsCardNo(CardID)){sql="select*fromStuInfo,CardwhereCardNo='"+CardID+"'andCard.StuNo=StuInfo.StuNo";sqlconnect=newSQLconect();ds=sqlconnect.GetDs(sql);if(ds.Tables[0].Rows.Count>0){textBox10.Text=ds.Tables[0].Rows[0][0].ToString();textBox11.Text=ds.Tables[0].Rows[0][1].ToString();textBox12.Text=ds.Tables[0].Rows[0][2].ToString();textBox13.Text=ds.Tables[0].Rows[0][3].ToString();textBox14.Text=ds.Tables[0].Rows[0][4].ToString();textBox15.Text=ds.Tables[0].Rows[0][6].ToString();textBox16.Text=ds.Tables[0].Rows[0][7].ToString();if(textBox16.Text.Trim()=="挂失")textBox16.Foreground=Brushes.Red;elsetextBox16.Foreground=Brushes.Black;textBox17.Text=ds.Tables[0].Rows[0][8].ToString();available=true;}else{available=false;MessageBox.Show("没有该饭卡,请确认后重新输入!","错误信息",MessageBoxButton.OK,MessageBoxImage.Error);textBox9.Clear();textBox10.Clear();textBox11.Clear();textBox12.Clear();textBox13.Clear();textBox14.Clear();textBox15.Clear();textBox16.Clear();textBox17.Clear();}}else{MessageBox.Show("卡号格式错误,请重新输入","卡号错误",MessageBoxButton.OK,MessageBoxImage.Error);textBox9.Clear();textBox10.Clear();textBox11.Clear();textBox12.Clear();textBox13.Clear();textBox14.Clear();textBox15.Clear();textBox16.Clear();textBox17.Clear();}}5.3测试5.3.1本系统的测试计划系统的每一个模块都需要进行单元测试,只有在通过了单元测试后,才能进行系统的集成测试。在所有的集成测试(包括模块测试、系统测试)都完成以后,方可在用户参与下进行验收测试。只有通过了用户的验收测试后,系统才能交给最终的用户。在系统项目及其所属的各个模块的编制与开发期间,要进行各种测试活动,准确记录、及时分析并妥善保存有关这些测试的记录,是确保系统运行的重要条件。在系统测试中,应有专人负责收集、汇总与保存有关系统测试的记录。具体如下:需求分析阶段列出的系统的每个功能都要求是“可测试的”。设计阶段每个具体功能的实现都要考虑到其测试用例的设计。编码实现阶段对每个模块做单元测试,然后做集成测试。最后和用户一起做验收测试。系统测试是为了验证各阶段所完成的工作是否满足需求分析和详细设计要求,识别出期望的结果和真正结果之间的差别,以便修正系统设计和代码实现中的潜在错误,保证系统运行的正确性和功能完备性,提高系统运行的性能。5.3.2测试方法和步骤本系统采取以黑盒测试方案为主,白盒测试方案为辅的测试方法。先分别进行单元测试,再进行集成测试,遵循自底向上的策略。对于每一个测试用例都有考虑到合法和非法的测试情况。5.3.3测试过程5.3.3.1单元测试(黑盒测试)用户登录模块测试:表1“用户登录模块”输入条件等价类表输入等价类有效等价类无效等价类登录信息无空值且与数据库信息匹配并且输入验证码2.无效用户名3.无效密码4.存在空值5.验证码错误表2有效等价类测试用例表测试数据期望结果覆盖的有效等价类1.用户名(admin)、密码(admin)、验证码(输入正确)输入有效1表3无效等价类测试用例表测试数据期望结果覆盖的无效等价类1.用户名(aaaaaa)、密码(admin)、验证码(输入正确)2.用户名(管理员)、密码(admin)、验证码(输入正确)无效输入2用户名(admin)、密码(aaaaa)、验证码(输入正确)2.用户名(admin)、密码(123456)、验证码(输入正确)无效输入3用户名(admin)、密码()、验证码(输入正确)用户名()、密码(admin)、验证码(输入正确)用户名(admin)、密码(admin)、验证码()无效输入41.用户名(admin)、密码(admin)、验证码(输入错误)无效输入5持卡者信息管理测试:表4“查询持卡者信息测试”输入条件等价类表输入等价类有效等价类无效等价类持卡者登录信息1.显示持卡者信息2.无效持卡者表5有效等价类测试用例表测试数据期望结果覆盖的有效等价类1.201301012.20130102输入有效1表6无效等价类测试用例表测试数据期望结果覆盖的无效等价类持卡者无效输入2饭卡信息管理测试:表7“加锁与解锁”输入条件等价类表输入等价类有效等价类无效等价类管理员登录信息1.提示“是否挂失学号为的饭卡”2.此卡已上锁管理员登录信息3.显示“是否解锁学号为的饭卡”4.请输入学号|工号5.学号|工号不存在,出现异常表8有效等价类测试用例表测试数据期望结果覆盖的有效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“挂失”输入有效1登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“解挂”输入有效3表9无效等价类测试用例表测试数据期望结果覆盖的无效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130102)点击“挂失”无效输入2登陆:用户名(admin)、密码(admin)、验证码(输入正确);点击“解挂”无效输入4登陆:用户名(admin)、密码(admin)、验证码(输入正确);点击“解挂”查询:学号(20130103)无效输入5表10“充值”输入条件等价类表输入等价类有效等价类无效等价类管理员登录信息,点击“充值”1.可填写充值金额2.提示“请输入学号|工号”3.提示“没有找到此学生”4.充值金额为负表11有效等价类测试用例表测试数据期望结果覆盖的有效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“充值”,金额100输入有效1表12无效等价类测试用例表测试数据期望结果覆盖的无效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);点击“充值”无效输入2登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130103)无效输入3登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“充值”,金额-100无效输入4表13“修改卡密码”输入条件等价类表输入等价类有效等价类无效等价类管理员登录信息,点击“修改卡密”1.可填写密码2.提示“请输入学号|工号”3.提示“没有找到此学生”4.密码为空表14有效等价类测试用例表测试数据期望结果覆盖的有效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“修改卡密”,密:123输入有效1表15无效等价类测试用例表测试数据期望结果覆盖的无效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);点击“修改卡密”无效输入2登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130103)无效输入3登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“充值”无效输入4饭卡消费记录管理测试:表16“查询饭卡消费记录”输入条件等价类表输入等价类有效等价类无效等价类持卡者登录信息,点击“查询消费记录”1.消费记录根据查询条件正确显示在控件中2.消费记录未显示出来3.显示出来的记录与查询条件不匹配表17有效等价类测试用例表测试数据期望结果覆盖的有效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“查询消费记录”输入有效1表18无效等价类测试用例表测试数据期望结果覆盖的无效等价类登陆:用户名(admin)、密码(admin)、验证码(输入正确);查询:学号(20130101)点击“查询消费记录”无效输入2、35.3.3.2集成测试(白盒测试)持卡者信息管理模块的测试:①利用申请饭卡模块完成申请者的饭卡和学号绑定任务,然后调用查询持卡者信息模块看刚注册的持卡者信息能否查询到。若查到则进入下一步,否则查找错误。②若在查询过程中发现此持卡者的某项记录有误,调用修改持卡者信息模块修改这个不正确的记录,以完善此持卡者的信息,如果可以进入下一步,否则查找错误。③调用查询持卡者信息模块查询上面所说的持卡者,看看是否修改了该持卡者不正确的记录,如果是,并且该持卡者再无其余不正确的记录则此次测试成功,否则发现错误,立即回到第二步继续测试。流程图程序图测试路径:路径1:1->2->3->5->1路径2:1->2->3->4->7路径3:1->2->3->4->6->4->7测试用例:路径1:输入饭卡信息管理测试:①利用加锁与解锁模块完成对卡的锁定任务,然后调用消费模块看刚加锁的卡号能否进行消费,若不能则进入下一步,否则查找错误。

②利用加锁与解锁模块完成对卡的解锁任务,然后调用消费模块看刚加锁的卡号能否进行消费,若能则进入下一步,否则查找错误。③若在消费过程中发现余额不足,则调用充值功能模块增加可利用款额,以完成消费,如果可以进入下一步,否则查找错误④调用充值模块增加可用款额,然后调用消费模块进行消费,看之前不足的余额是否增加,可以消费,如果可以进入下一步,否则查找错误或重复本次操作。⑤利用注销功能模块完成消除卡信息的任务,然后调用加锁与解锁模块检测卡是否还存在,若存在则重复此过程,否则查找错误。 流程图程序图测试路径:路径1:1->2路径2:1->3->4路径3:1->3->5->6路径4:1->3->5->7->8->10->15路径4:1->3->5->7->8->9->7->8->10->15饭卡消费记录管理测试:①调用查询饭卡消费记录模块功能,若在查询过程中发现此卡的某项记录有误,则调用修改饭卡消费记录模块修改这个不正确的记录,以完善此卡的信息,如果可以进入下一步,否则查找错误。②调用查询饭卡消费记录模块查询上面所说的卡,看看是否修改了该卡不正确的记录,如果是,并且该卡再无企业不正确的记录则此次测试成功,否则发现错误,立即回到第一步继续测试。流程图程序图测试路径:路径1:1->2->4路径2:1->2->3->5->2->4路径3:1->2->3->5->3->5->2->45.3.3.3系统测试与回归测试完成了各个模块的测试后,要进行系统测试。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。在系统测试的任何一个阶段,只要发现了错误,就要尽可能及时更正。更正后还要检验已经发现的缺陷有没有被正确的修改和修改过程中有没有引发新的缺陷,即回归测试。另外,每当一个新的模块被当作集成测试的一部分加进来的时候,软件环境都很发生改变,即建立起新的数据流路径,还有可能激活了新的控制逻辑。这些改变可能会使原本工作得很正常的功能产生错误。因此在集成测试策略的环境中,要进行回归测试,就是对部分已通过测试的功能要再次进行测试,以保证系统在新环境下能正常工作。6维护6.1系统维护工作内容没有文档的软件,不能称之为软件,更谈不到产品,所以我们在设计饭卡管理系统的时候主要从以下两个方面做好维护:注释说明文档每次在发布更新的时候,我们都要在说明文档中单独标记出更新的内容以方便使用者。6.2系统维护策略本饭卡管理系统依赖于数据库数据的实时更新,一旦数据库的数据没有及时更新到每个对应的表或者出现触发器失效的情况,应该立即启用应急的措施。具体如下:建立一个备用数据库,在主数据库失灵的时候可以使用备用数据来保证系统的正确运行。备份数据库使用云备份软件在运行的时候每个小时自动从数据库中调用学生饭卡余额并保存在一个临时的文档中,每个小时都替换更新一次。当无法使用本地数据库时也无法使用云端数据库的时候,软件自动生成一个文档来记录数据库失效的时候的消费数据,记录关键数据,在数据恢复的时候保证数据的时时更新,但是当数据库失效的时候,系统不能提供查询操作,但是可以依靠之前生成的余额文档来提供消费功能,保证学生饭卡的正常使用,此时,学生饭卡的信息是直接保存在文档中的,当数据库恢复连接的时候再将文档中的数据更新到数据库。7总结与体会7.1总结经过为期8周的软件工程实验课程,一个6人的团队反复经过讨论与实践,体验到用软件工程的思想来设计和编写软件的科学性以及必要性。8周过后,我们团队通过努力成功复现出想要的结果,即饭卡管理系统。该系统面向学生和商户,学生可以新办、查询、修改饭卡信息,商户可以入驻、查询盈利信息,遗憾的是没有能够实现在设计初期希望的门禁功能。本系统具有良好的用户体验和容错机制。系统采用WPF编码,在界面数据的处理上采用单独的验证类来验证信息是否合法;为了增加安全性,在登录窗口处增加验证码类,用于生成和检验验证码信息;而在数据库连接方面,也设计了单独的数据库连接类,类内包含丰富的方法可供用户调用。7.2体会石晓霞心得体会:为期八周的课程设计结束了,课程设计是我们专业课程知识综合应用的实践训练,这是我们迈向社会,从事职业工作前一个必不可少的过程.”千里之行始于足下”,可以很好的形容我们这次的软件工程设计。在软件设计之初,我们就系统具体功能曾经发生了很多争执,我们的小组曾经一度陷入了僵局,全组六个人为几个功能争执不下,比如学生的权限问题,可以查询自己饭卡的哪些信息,再比如挂失的时候,具体流程应该如何实现,学生的饭卡应不应该设置为唯一的卡号,挂失的时候是新生成一个全新的卡号还是延续使用老卡的卡号等等这些细节问题我们都一起讨论了许久,当一个个功能设计都确定下来后,组长进行了明确的分工,我根据组员设计的数据流图将每一个数据整理下来,整理出的数据字典经过几次确认,我立刻清晰了这次设计中的所有元素,在后面的软件运行维护策略的时候,我清楚的认识到,数据库,是这个软件的血液,没有了数据的软件就是一个空架子,数据的价值,远远大于数据的本身,在这个软件中,我体会到了软件和数据之间的联系是千丝万缕的,必须兼得并且处理得当,才能做出一个好软件。当我们完成了一些编码后,系统可以实现一些功能并且可以对数据进行一定的处理,我觉得该系统目前还是一个概念的样本,如果有大量的数据同时需要处理,那么我们目前的软件有“崩溃”的危险,这也是为什么软件需要不断的维护的原因。虽然这只是一个实验,但是他的意义远大于单纯的编码,我明白了一个软件从诞生到死亡这个过程究竟是什么在影响着他,也为我日后成为一个软件设计师做了一个很好的开始。高澍阳心得体会:一个我感觉不能再熟悉的饭卡管理系统在设计过程中我们遇到了不少问题,很多在我们作为消费者的时候根本不会考虑的一些问题在设计软件的时候都成为了不得不重视的问题。例如是用户使用系统的权限应该如何分配,卡号的限制金额应该输入多少需要要求输入密码。在使用Visio制作数据流图和E-R图的时候,从一开始不太会画到后

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论