饭卡管理系统软件工程课程设计

软件工程课程设计 任 务 书 1、课程设计题目 饭卡管理系统 2、设计任务和内容 一个饭卡管理系统是根据学校的饭卡管理工作专门设计的一个管理信息系统。该系统能够完成饭卡管理的工作过程。饭卡管理过程中主要涉及:持卡者信息、饭卡信息、饭卡历史信息等数据,并对数据进行相应的增、删、改、查询操作。使传统、手工的管理工作更加规范,更加科学,保证了饭卡信息查询更新及时到位。

本课题任务是开发一个饭卡管理系统,并撰写符合规范的课程设计说明书以体现设计过程和设计结果。

3、设计步骤和要求 设计步骤:
首先进行相关资料查阅和学习,了解基本的业务流程和系统数据功能要求。然后结合软件工程的理论和教材中数据库设计的六个阶段(重点是前三个阶段)完成设计任务,即系统结构设计(需求分析、概念结构设计、逻辑结构设计、物理结构设计)和系统功能设计,最后对系统进行调试和测试,完善功能。

设计要求:
1、撰写课程设计说明书。其要求如下:
(1)基本要求:
① 能反映完成了上述设计内容要求。

② 要求撰写不少于5000个文字(20页)的文档。

③ 文档中至少要包括:数据流图、数据字典、E-R图、数据库表的详细 说明、系统功能结构图、主要功能模块说明和软件测试过程。

(2)文档格式要求(遵循软件工程课程设计大纲上的要求)
其中,正文部分:
①分章、层次等,每一章从新一页开始。

②章节安排可如下安排 .可行性研究:包括项目背景、编写目的、软件定义、开发环境等。

   .需求分析:问题陈述、需完成的功能。以数据流图和数据字典表达。

.概要设计:程序系统的基本处理流程、程序系统的组织结构、模块划分、数据库结构设计和出错处理设计。

.详细设计:模块过程设计与界面设计以及代码设计 . 软件测试:单元测试和集成测试 2、一个可运行的饭卡管理系统原型。(根据学分制的实际情况该要求为部分专业学生的要求,其他专业学生为可选要求)
教师签名:
软件工程课程设计工作安排 姓名 设计部分 百分比 备注 软件代码的设计实现及系统的架构与分析 30% 组长 软件测试及需求分析的部分内容 25% 组员 可行性研究分析报告 15% 组员 详细设计 15% 组员 概要设计 15% 组员 目录 一、可行性研究 5 1分析系统目的 5 2分析当前系统的状况 5 3对当前系统的分析 5 3.1工作负荷 5 3.2费用开支 5 3.3人员配备 5 3.4系统局限性 5 4. 所建议的系统 6 4.1 对所建议系统的说明 6 4.2 业务处理流程图 6 4.3 系统改进之处 6 4.4 技术条件方面的可能性 7 5. 制定新系统的技术方案 7 5.1 可选择的系统方案1 7 5.2 可选择的系统方案2 7 6 投资及效益分析 7 7 社会因素方面可行性 7 7.1 法律方面的可行性 7 7.2使用方面的可行性 7 8 结论 7 二、需求分析 8 1. 引言 8 1.1 编写目的 8 1.2 背景 8 1.3 参考资料 8 2. 任务概述 8 2.1 目标 8 2.2 用户特点 8 2.3 假定和约束 8 3. 建立流程图 9 4. 建立数据流图 9 5. 建立数据字典 11 6. 建立E-R图 14 三、概要设计 15 1. 引言 15 1.1 编写目的 15 1.2 背景 15 1.3 定义 15 1.4 参考资料 15 2. 总体设计 15 2.1 需求规定 15 2.2 基本设计概念和处理流程 15 2.3 系统功能模块结构图 16 3. 系统数据库结构设计 16 3.1逻辑设计要点 16 3.2物理结构设计要点 17 4、触发器及存储过程设计 18 4.1触发器 18 4.2存储过程 18 5. 系统出错处理设计 19 5.1补救措施 19 5.2系统维护设计 19 四、详细设计 20 模块过程设计与界面设计 20 五、编码设计 36 5.1连接数据库 36 5.2登录界面 36 5.3注册界面 37 5.4用户界面 38 5.5管理员界面 39 5.6随机数 40 六、软件测试 41 6.1. 概述 41 6.1.1饭卡管理系统概述 41 6.1.2系统的测试计划 41 6.1.3测试人员安排 41 6.2. 测试方法和步骤 41 6.3. 测试过程 41 6.3.1单元测试(黑盒测试)
41 6.3.2集成测试(白盒测试)
45 6.4饭卡信息管理测试 46 6.5饭卡消费记录管理测试:
48 6.6系统测试与回归测试 49 七、小结 50 7.1. 课设内容总结 50 7.2. 心得体会 50 7.2.1 A 50 7.2.2.B 50 7.2.3 C 51 7.2.4 D 51 7.2.5 E 51 八、参考文献 52 一、可行性研究 1分析系统目的 随着我国大学扩招,大学生的人数呈逐渐上升趋势。学生人数的众多使得现今大学校园的管理难度越来越高,学校对一款能够实现科学有效的一体化管理的系统软件的需求越来越紧迫。校园卡管理系统采取银行卡的金融功能与校园卡的校务管理功能整合的方式,由银行与学校联合发行校园卡,师生可以用银行卡在学校的自主终端实现存取款、消费等金融支付。校园卡系统的建设,为学校实现财务统一管理提供科学的、现代化的手段,将提高学校的管理水平,极大提高效率。

2分析当前系统的状况 校园卡管理系统目前在我国各高校的应用还主要处于试点和探索的阶段。在部分已建立一卡通的高校中,由于出发点和着重点的不同,使得系统存在相当大的差异,并无统一、均衡的系统方案可供参考。有些大学以身份认证为出发点建立校园卡系统,强调对学生的身份信息认证、门禁等方面的功能比较强大,而电子消费方面则略显不足;
有些大学一的校园卡系统则以金融消费为重点,强调校园卡的电子货币功能,在需要身份认证的信息管理系统中校园卡的功能不够完善。

3对当前系统的分析 分析现有系统的目的是为了进一步阐明建议中的开发新系统或修改现有系统的必要性: 3.1工作负荷 人工操作频繁加减存款。工作繁琐,枯燥,容易出错,完成工作所需要的时间较长,工作效率比较低。

3.2费用开支 由于运行现有系统所引起的费用开支,如人力、设备、空间、支持性服务、材料等项开支以及开支总额。

3.3人员配备 由于现有系统的技术性含量比较低,操作不便,工作量大,因此需要较多的人才能完成工作。而新系统将具有较高的技术操作性,但它确使工作变得较为简便,因此只需要少量的高素质人才就可完成。

3.4系统局限性 人工处理的主要局限性表现在系统依赖于大量的人力和物质投入,工作效率较低和成本较高,现有系统主要存在如下的局限性:
1)
信息分散、共享性差 每个人的时间精力是有限的,大量的信息资源分散在不同的收集者手中,难于共享和发挥作用。

2)
信息的及时性、准确性差 数据的采集和处理部分靠人工,效率低、速度慢、滞后严重、反馈不及时,严重影响信息的反馈速度和质量,不能有效地、及时地提供基层决策需要的定量信息和领导决策需要的宏观定性信息。

3)
职工多,开支大 4. 所建议的系统 4.1 对所建议系统的说明 新的校园卡管理系统的设计遵循学校管理的理论和系统工程的方法,利用计算机技术、数据通讯技术、数据库技术,实现以计算机为主要工具的人机交互、信息存储系统。它存储学生的个人信息、图书借阅信息以及消费信息。具体原则如下:
1)
信息资源共享 2)
提高信息处理速度 3)
提高信息存储密度 4)
减轻管理人员的工作强度,提高管理水平 5)
疏通信息传输渠道,加强职能部门的横向联系 4.2 业务处理流程图 新校园卡系统业务的流程图如下图4.1所示:
图4-1 新校园卡业务流程图 4.3 系统改进之处 原系统采用分开管理各个功能,较麻烦,使用起来也不方便。用一卡通取代了以前的各种卡证,实现了身份识别一卡通;
以前所有卡证的信息管理系统,其身份识别部分都连通一卡通系统,实现校内所有地方,包括食堂、校门、图书馆、超市、机房的身份识别,提高学校的管理水平。

4.4 技术条件方面的可能性 在以上限制条件下,利用目前现有的技术条件和开发人员的投入,能够在规定时间内完成系统规定的开发设计任务。

同时,为了高质量完成本软件系统开发工作,还需要遵循如下准则:
(1)
好战略数据的规划,建立稳定的信息模型;

(2)
在功能模型的划分上,按组织机构来划分子系统或模块;

(3)
应用软件的开发设计,要充分考虑应用软件的适应性,建立友好的人机界面。

因此,从技术性方面来看是可行的。

5. 制定新系统的技术方案 5.1 可选择的系统方案1 卡片选择:接触性IC卡;

网络平台:采用校园网和银行网以及校园卡操作系统相结合;

数据库与前台操作:采用大型数据库管理系统Oracle、DB2等作为后台数据库,采用 VB或VC或者Delphi来开发前台的操作部分;

方案优势:接触性IC卡在性能方面安全性好,网络要求不高,操作方便,数据库和前台操作简单,便于管理;

5.2 可选择的系统方案2 卡片选择:
非接触性IC卡;

网络平台:采用校园网和银行网以及校园卡操作系统相结合;

数据库与前台操作:采用中小型数据库管理系统Access 或 SQL Server作为后台数据库,用C#等来开发前台的操作部分。

方案优势:高效性、集成性、智能性、读写成本低,前台操作与数据库分离,便于实现多种需求,操作界面统一;

6. 投资及效益分析 新系统开发完成后,只需要2~3名管理员,大大减少的人员方面的开支,同时由于数据冗余度也大大降低,在物质方面也降低了开销,因此会有较好的市场效益。

7. 社会因素方面可行性 7.1 法律方面的可行性 本方案在法律方面完全可行;

7.2使用方面的可行性 本方案的使用技术的要求完全在能力范围之内,并且该系统的维护运行容易便捷,故使用方面完全可行;

8. 结论 综上所述,本系统从技术、经济、社会法律、使用性等方面来看,都是切实可行的。

二、需求分析 1. 引言 1.1 编写目的 需求分析是软件系统生存期中定义阶段的最后一个步骤。这个阶段的任务不是具体解决问题,而是准确确定为解决问题系统必须具备哪些功能。这个阶段的一个重要任务是用正式的文档准确地记录目标系统的需求。该文档将最终交给软件具体的开发人员进行具体的开发。

1.2 背景 软件系统名称:
饭卡管理系统 项目任务提出者:软件工程课程设计 项目开发者:安徽工程大学计算机与信息学院“饭卡管理系统”开发小组 1.3 参考资料 《数据库系统概论》
萨师宣 王珊 高等教育出版社 《SQL Server 2000 教材》龚波 北京希望电子出版社 《软件工程导论》
张海藩 清华高校出版社 《软件工程实验指导书》安徽工程大学计算机与信息学院 2. 任务概述 2.1 目标 主要开发目标是能够对饭卡信息进行查询和更新管理,且反映敏捷准确。

2.2 用户特点 由于系统的界面清晰、美观,操作简单、方便,所以操作人员只需要具备一定的电脑操作技能即可。管理员(维护人员)不需要任何数据库专业技能知识。本系统可以极大的提高工作效率,预期使用频度较高。

2.3 假定和约束 系统的规模较小,适于Windows XP和SQL数据库系统。

3. 建立流程图 4. 建立数据流图 顶层:
一层:
二层:
持卡者信息管理:
饭卡信息管理:
饭卡消费记录管理:
5. 建立数据字典 Ø 名称:管理员 描述:对饭卡管理系统管理的人员 定义:管理员=用户名+密码+类别+工号 用户名=字符/20位 密码=字符/20位 类别=管理员 工号=字符/50位 位置:用户表 Ø 名称:持卡者 描述:对饭卡管理系统进行操作的人员 定义:持卡者=用户名+密码+类别+学号/工号 用户名=字符/20位 密码=字符/20位 类别=持卡者 学号/工号=字符/50位 位置:用户表 Ø 名称:刷卡服务员 描述:对饭卡管理系统操作的人员 定义:刷卡服务员=工号+姓名+性别+电话+地址 工号=数字/20位 姓名=字符/20位 性别=【男/女】 电话=数字/20位 地址=字符/500位 Ø 名称:饭卡 描述:饭卡管理系统被操作的对象 定义:饭卡=卡ID+余额+锁 卡ID=字符/50位 余额=浮点型(>=0) 锁=字符型 位置:饭卡信息表 Ø 名称:刷卡器与显示器 描述:消费付款,显示消费款额和余额 定义:刷卡器与显示器=余额+款额 余额=浮点型/ (>=0) 款额=浮点型/ (>=0) 位置:饭卡历史信息表 Ø 名称:用户信息 描述:对饭卡管理系统进行操作的人员 定义:用户信息=用户名+密码+类别+学号 用户名=字符/20位 密码=字符/20位 类别=持卡者/管理员 学号=字符/50位 位置:用户表 Ø 名称:持卡者信息 描述:记录持卡者相关信息 定义:持卡者信息=学号/工号+卡ID+姓名+性别+电话+地址 学号/工号=字符/50位 卡ID=字符/50位 姓名=字符/20位 性别=【男/女】 电话=数字/20位 地址=字符/50位 位置:持卡者信息表 Ø 名称:饭卡信息 描述:记录饭卡相关信息 定义:饭卡信息=卡ID+余额+锁 卡ID=字符/50位 余额=浮点型/ (>=0) 锁=字符/10位 位置:饭卡信息表 Ø 名称:饭卡历史信息 描述:记录饭卡历史使用的相关信息 定义:饭卡历史信息=卡ID+时间+款额+操作 卡ID=字符/50位 时间=年/月/日 款额=浮点型/ (>=0) 操作=【存款|消费|其他】 位置:饭卡历史信息表 Ø 名称:注销信息 描述:将不再使用的卡信息去除 定义:注销信息=卡ID+余额+ 卡ID=字符/50位 余额=浮点型/ (>=0) 位置:饭卡历史信息表 Ø 名称:挂失信息 描述:将丢失的卡加锁 定义:挂失信息=卡ID+余额 卡ID=字符/50位 余额=浮点型/ (>=0) 位置:饭卡历史信息表 Ø 名称:消费额 描述:描述消费款额 定义:消费额=款额 款额=浮点型/ (>=0) 位置:饭卡历史信息表 Ø 名称:余额 描述:显示卡上的现有金额数 定义:余额=款额 款额=浮点型/ (>=0) 位置:饭卡信息表 Ø 名称:存款额 描述:对存款数目的统计 定义:存款额=款额 款额=浮点型/ (>=0) 位置:饭卡历史信息表 Ø 名称:锁信息 描述:对卡挂失后信息的记录 定义:锁信息=卡ID+状态 卡ID=数字/50位 状态=【加锁/解锁】 位置:饭卡历史信息表 Ø 名称:学生照片表 描述:对学生身份的一种验证 定义:学生照片表=卡ID+照片 卡ID=数字/50位 照片=字符/50 6. 建立E-R图 三、概要设计 1. 引言 软件概要设计主要是一个把软件需求转化为软件表示的过程,这种表示只是描述出软件总的概貌。

1.1 编写目的 概要设计说明书编制的目的是:说明对程序系统系统的设计考虑,包括程序系统的基本处理流程、程序系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为详细设计提供基础。

本软件概要设计说明书的读者是系统开发人员或合同约定人员。

1.2 背景 软件系统名称:
饭卡管理系统 项目任务提出者:软件工程课程设计 项目开发者:安徽工程大学计算机与信息学院“饭卡管理系统”开发小组 1.3 定义 学生照片表:存放学生的照片 持卡者信息表:记录持卡者的相关信息 饭卡信息表:记录饭卡的相关信息 饭卡历史信息表:记录饭卡的相关历史信息 1.4 参考资料 《数据库系统概论》
萨师宣 王珊 高等教育出版社 《SQL Server 2000 教材》龚波 北京希望电子出版社 《软件工程导论》
张海藩 清华高校出版社 《软件工程实验指导书》安徽工程大学计算机与信息学院 2. 总体设计 2.1 需求规定 本系统可大致划分为四大模块:系统用户登录,持卡者信息管理,饭卡信息管理,饭卡消费记录管理。

Ø 系统用户登录 主要是对系统用户进行身份验证。

Ø 持卡者信息管理 主要是对持卡者信息进行管理,包括注册,修改和查询。

Ø 饭卡信息管理 主要是对饭卡信息进行管理,包括对饭卡的加锁与解锁,注销,充值和消费。

Ø 饭卡消费记录管理 主要是对饭卡的消费记录进行管理,包括消费记录的查询和修改。

2.2 基本设计概念和处理流程 本系统的基本设计概念和处理流程如下:
Ø 系统启动时,激活身份验证模块。

Ø 通过身份验证后,对系统进行初始化,判断用户身份,导入到不同的操作界面。

Ø 系统进入消息循环状态,通过事件驱动机制激活各功能模块,并执行指定模块。

Ø 各项功能执行完毕后,重新进入消息循环状态。

Ø 由退出系统事件激活关闭系统模块,退出系统。

2.3 系统功能模块结构图 饭卡管理系统 系统用户登录 持卡者信息管理 饭卡信息管理 饭卡消费记录管理 持卡者注册 修改持卡者信息 查询持卡者信息 加锁与解锁 注销 充值 消费 查询饭卡消费记录 修改饭卡消费记录 3. 系统数据库结构设计 3.1、 逻辑设计要点 用户(工号,用户名,密码,类别)
用户名 密码 类别 学号 持卡者信息表 学号|工号 卡ID 姓名 性别 电话 地址 饭卡历史表 卡ID 时间 款额 操作 饭卡信息表 卡ID 余额 锁 学生照片表 卡ID 照片 3.2、 物理结构设计要点 用户表 用户表 数据项 类型 主键 备注 用户名 varchar(20)
是 不为空 密码 varchar(20)
否 不为空 类型 char(20)
否 不为空 学号 nvarchar(20)
否 可为空 持卡者信息表 持卡者信息表 数据项 类型 主键 备注 学号|工号 nvarchar(50) 是 不为空 卡ID nvarchar(50) 否 不为空 姓名 char(20) 否 不为空 性别 char(10) 否 不为空 电话 char(20) 否 不为空 地址 char(50) 否 不为空 饭卡历史表 饭卡历史表 数据项 类型 主键 备注 卡ID nvarchar(50) 是 不为空 时间 datetime 是 不为空 款额 float 否 可为空 操作 char(20) 否 可为空 饭卡信息表 饭卡信息表 数据项 类型 主键 备注 卡ID nvarchar(50) 是 不为空 余额 float 否 可为空 锁 char(10) 否 可为空 学生照片表 学生照片表 数据项 类型 主键 备注 卡ID nchar(10) 是 不为空 照片 varchar(100) 否 可为空 4、触发器及存储过程设计 4.1、触发器 持卡者信息表:
create trigger chika on 持卡者信息表 for insert as declare @kaid nvarchar (50) declare @shijian datetime set @kaid=(select 卡ID from inserted) set @shijian=(select CONVERT(VARCHAR(19),GETDATE(),20) as CurrentDateTime) insert into 饭卡历史表 values(@kaid,@shijian,0.00,'新建') insert into 饭卡信息表 values(@kaid,0.00,'已解锁') 饭卡信息表:
create trigger fankaxinxibiao on 饭卡信息表 for update as declare @kaid nvarchar (50) declare @shijian datetime declare @monery float set @shijian=(SELECT CONVERT(VARCHAR(19),GETDATE(),20) AS CurrentDateTime ) set @kaid=(select 卡ID from inserted) set @monery=((select 余额 from inserted )-(select 余额 from deleted)) if(@monery>0) begin insert into 饭卡历史表 values(@kaid,@shijian,@monery,'充值') end else if(@monery<0) begin set @monery=-@monery insert into 饭卡历史表 values(@kaid,@shijian,@monery,'消费') end 4.2、存储过程 饭卡历史表:
create procedure lishi @kaid nvarchar(50), @shijian datetime, @caozuo char(20) AS insert into 饭卡历史表 values(@kaid,@shijian,0.00,@caozuo) 用户表:
ALTER PROCEDURE users @username varchar(20), @password varchar(20), @type char(10), @studentID nvarchar(50) AS insert into 用户表 values(@username,@password,@type,@studentID) RETURN 持卡者信息表:
create procedure xinjian @xuehao nvarchar(50), @kaID nvarchar(50), @name char(20), @male char(10), @phonenumber char(20), @address char(50) AS insert into持卡者信息表 values(@xuehao,@kaID,@name,@male,@phonenumber,@address) 5. 系统出错处理设计 5.1、 补救措施 本系统中当用户输入非空字段而进行数据提交时,系统提示数据不得为空,请重新输入再提交。此时,输入界面保留刚刚输入信息的界面,而不是清空全部输入界面上的所有数据;
要求重新输入。另外本系统定期备份数据库,以便在系统出现故障时,能够及时恢复。

5.2、 系统维护设计 本系统需严格按照软件产品设计规范的步骤进行开发,并重复考虑软件的可维护性,详细编写各阶段的文档资料,并在程序设计过程中做出大量详细的注释。

系统名称 饭卡管理系统 模块名称 用户登录 模块编号 1 作者 日期 2011/5/30 模块描述 用于系统对用户的登录进行身份验证 调用模块 数据库模块 被调用模块 无 输入 项目 用户名,密码,用户类型,验证码 格式 用户名:varchar(20)密码:varchar(20)类别:char(10)
验证码:char(4) 处理 1、用户输入用户名、密码,选择用户类型及输入验证码 2、模块获得用户名密码等信息 3、模块调用数据库表进行比较及程序进行验证码校验 4、模块返回登录信息 输出 用户登录成功或登录失败。

局部数据元素 数据库表 约束条件 验证码验证 注释 需要数据库用户表 四、详细设计 模块过程设计与界面设计 1) 验证用户登录功能模块 (1)
功能描述 对登录系统的用户进行身份验证。

(2)
模块IPO表 (3)
界面设计 (4)
主要算法 【登录】按钮:验证用户的合法性。

【取消】按钮:关闭用户登录窗口。

【注册】按钮:弹出用户注册功能窗口。

2) 用户注册功能管理模块 (1)
功能描述 用户注册一个登录帐号。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 用户注册 模块编号 2 作者 日期 2011/5/30 模块描述 学生用户注册登录帐号 调用模块 数据库模块 被调用模块 无 输入 项目 用户名,密码,确认密码,绑定学号,绑定饭卡号,验证码 格式 用户名:varchar(20)密码:varchar(20)
学号:nvarchar(50)饭卡号:nvarchar(50)
验证码:char(4)
处理 1、 用户点击登录页面的注册链接 2、 系统返回注册页面 3、 用户输入注册信息 4、 系统调用数据库模块进行数据信息比对 5、 信息确认无误系统弹出注册成功对话框 输出 注册成功或失败 局部数据元素 数据库表 约束条件 验证码验证 注释 需要数据库用户表及持卡者信息表 (3)
界面设计 (4)
主要算法 【注册】按钮:注册一个新用户。

【取消】按钮:关闭登录窗口。

【返回登录】按钮:返回上层界面。

3) 查询用户详细信息功能模块 (1)
功能描述 用于用户查询本人信息。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 查询用户详细信息 模块编号 3 作者 蔡蓬亮 日期 2011/5/3 模块描述 用于用户查询本人详细信息 调用模块 数据库模块 被调用模块 无 输入 项目 点击按钮 格式 无 处理 1、 用户登录成功进入用户界面 2、 用户点击查询用户详细信息 3、 系统根据用户登录的帐号从数据库中查询用户的信息 4、 系统显示查询出的信息 输出 用户的详细信息 局部数据元素 数据库中持卡者信息表及照片表 约束条件 无 注释 需要数据库中持卡者信息表及照片表 (3)
界面设计 (4)
主要算法 【查询用户详细信息】按钮:显示用户信息。

【查询消费历史】按钮:查询用户的消费历史。

【挂失】按钮:用户挂失饭卡。

【消费】按钮:进入用户消费界面。

【上传照片】按钮:上传用户照片。

【提交照片】按钮:确认上传照片。

4) 用户挂失功能模块 (1)
功能描述 用于用户挂失自己的饭卡。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 用户挂失 模块编号 4 作者 日期 2011/5/30 模块描述 用于用户挂失自己的卡 调用模块 数据库模块 被调用模块 无 输入 项目 点击按钮 格式 无 处理 1、 用户登录进入用户界面 2、 用户点击挂失按钮 3、 系统根据用户登录的帐号查询用户信息 4、 系统显示用户学号及饭卡好信息 5、 用户确认信息,点击挂失按钮 6、 系统弹出确认对话框 7、 用户点击确认,提交挂失 8、 系统更改用户信息并添加记录到系统中 输出 挂失成功 局部数据元素 数据库中饭卡信息表及饭卡历史表 约束条件 注释 需要数据库用户表 (3)
界面设计 (4)
主要算法 【挂失】按钮:挂失自己的帐号。

【确定】按钮:确认所挂失的帐号。

【取消】按钮:返回挂失界面。

5) 用户消费功能模块 (1)
功能描述 用于用户消费使用。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 用户消费 模块编号 5 作者 日期 2011/5/30 模块描述 用于用户消费使用 调用模块 数据库模块 被调用模块 无 输入 项目 点击按钮,消费金额 格式 消费金额:数字类型 处理 1、 用户登录系统进入用户界面 2、 用户点击消费按钮 3、 系统根据用户帐号返回用户饭卡号及余额 4、 用户输入消费金额 5、 用户点击消费 6、 系统查询消费金额是否小于余额当小于余额是系统弹出确认对话框 7、 用户确认消费 8、 系统返回消费成功对话款及修改数据库余额并添加历史记录 输出 确认用户消费 局部数据元素 数据库中饭卡信息表及饭卡历史表及用户表 约束条件 消费输入框中限定为数字输入,其他字符无法输入进去 注释 需要数据库中饭卡信息表及饭卡历史表及用户表 (3)
界面设计 (4)主要算法 【消费】按钮:消费金额。

【清空】按钮:清空消费金额。

【确定】按钮:确认消费金额。

【取消】按钮:返回消费界面。

6) 用户查询消费历史功能模块 (1)
功能描述 用于用户查询自己卡的历史记录 (2)
模块IPO表 系统名称 饭卡管理系统 模块名称 用户查询消费历史 模块编号 6 作者 蔡蓬亮 日期 2011/5/30 模块描述 用于用户查询自己卡的历史记录 调用模块 数据库模块 被调用模块 无 输入 项目 起始时间,终止时间,款额,操作 格式 起始时间:datetime 终止时间 :datetime 款额:float 操作:char(20)
处理 1、 用户登录系统进入用户界面 2、 用户点击查询消费历史 3、 系统根据用户登录的帐号返回用户所有历史记录 4、 用户输入查询条件 5、 系统根据查询条件查询数据库 6、 系统返回查询结果 输出 用户根据查询条件查询的结果 局部数据元素 用户表及饭卡历史表 约束条件 只能查询本卡,时间通过鼠标点入,操作类型由下拉框输入 注释 需要数据库用户表及饭卡历史表 (3)
界面设计 (4)主要算法 【查找】按钮:选择起始时间查询用户消费历史。

【清空】按钮:清空所输入的款额,操作。

7)新建持卡者功能模块 (1)
功能描述 用于管理员录入新建学生信息。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 新建持卡者 模块编号 7 作者 日期 2011/5/30 模块描述 用于管理员录入新建学生的信息 调用模块 数据库模块 被调用模块 无 输入 项目 学号|工号,饭卡号,姓名,电话,性别,地址,照片 格式 学号|工号:nvarchar(50)饭卡号:nvarchar(50) 姓名:char(20)电话:char(10) 性别:char(20)地址:char(50)照片:jpg,bmp,png 处理 1、 管理员登录系统进入管理员界面 2、 管理员打开新建持卡者信息 3、 管理员输入信息并选择照片 4、 管理员点击提交 5、 系统将信息写入数据库中 6、 系统弹出信息录入成功对话框 输出 信息录入成功对话框 局部数据元素 输入信息到持卡者信息表及饭卡历史表 约束条件 所有信息必须填写完整除照片信息外。

注释 需要数据库中持卡者信息表及饭卡历史表 (3)
界面设计 (4)
主要算法 【提交】按钮:提交用户信息。

【清空】按钮:清空所填用户信息。

【上传照片】按钮:上传用户照片。

【确定】按钮:建卡成功,返回操作。

8)存款功能模块 (1)
功能验证 用于管理员对用户的充值。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 存款 模块编号 8 作者 日期 2011/5/30 模块描述 用于管理员对用户的充值 调用模块 数据库模块 被调用模块 无 输入 项目 学号|工号,充值金额 格式 学号|工号:
nvarchar(50) 充值金额:float 处理 1、 管理员登录系统进入管理员界面 2、 管理员输入要充值的学生学号 3、 管理员点击充值按钮 4、 系统根据管理员输入的学生学号查询学生信息返回到充值页面 5、 管理员输入充值金额 6、 管理员点击提交按钮 7、 系统弹出确认对话框 8、 管理员确认 9、 系统弹出充值成功对话框 输出 充值成功对话框 局部数据元素 输出信息记录到饭卡信息表及饭卡历史表 约束条件 注释 需要数据库饭卡信息表、饭卡历史表 (3)界面设计 (4)主要算法 【充值】按钮:充值金额。

【确定】按钮:确定充值金额。

【取消】按钮:取消充值并返回。

9)注销用户功能模块 (1)
功能描述 用于管理元对毕业学生及过期用户的注销。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 注销 模块编号 9 作者 蔡蓬亮 日期 2011/5/30 模块描述 用于管理员对毕业学生及过期用户注销 调用模块 数据库模块 被调用模块 无 输入 项目 学号|工号 格式 学号|工号:nvarchar(50)
处理 1、 管理员登录系统进入管理员界面 2、 管理员输入要注销的学生学号 3、 管理员点击注销按钮 4、 系统根据管理员输入的学号进行查询 5、 系统显示查询结果在注销页面 6、 管理员核对信息并提交注销 7、 系统接收信息写入数据库并删除注销用户的饭卡历史信息 输出 是否注销对话框及注销成功对话框 局部数据元素 写入记录到饭卡历史表及饭卡信息表 约束条件 注释 需要数据库饭卡历史表及饭卡信息表 (3)
界面设计 (4)
主要算法 【注销此卡】按钮:注销次饭卡。

【确定】按钮:确认注销次卡。

【取消】按钮:返回注销界面。

10)更改学生信息功能模块 (1)
功能描述 用于管理员对需要更改的学生信息进行查询更改。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 更改学生信息 模块编号 10 作者 日期 2011/5/3 模块描述 用于管理员对需要更改的学生信息进行查询更改 调用模块 数据库模块 被调用模块 无 输入 项目 学号|工号,饭卡号,姓名,电话,性别,地址,照片 格式 学号|工号:nvarchar(50)饭卡号:nvarchar(50) 姓名:char(20)电话:char(10) 性别:char(20)地址:char(50)照片:jpg,bmp,png 处理 1、 管理员登录系统进入管理员界面 2、 管理员输入要更改信息的学生学号 3、 系统根据学生学号查询数据库 4、 系统返回学生信息到更改学生信息页面 5、 管理员修改要更改的学生信息 6、 管理员提交更改后的学生信息 7、 系统接收信息写入数据库中 8、 系统弹出更新成功对话框 输出 更新成功对话框 局部数据元素 写入记录到持卡者信息表及照片表 约束条件 学生学号无法更改 注释 需要数据库持卡者信息表及照片表 (3)
界面设计 (4)主要算法 【提交】按钮:确认提交所填的资料信息。

【删除】按钮:删除每一个信息。

【清空】按钮:清空所有信息。

【上传照片】按钮:上传更改用户照片信息。

11)挂失,解锁功能模块 (1)
功能描述 用于管理员对挂失用户进行解锁并对需要挂失用户进行挂失。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 挂失,解锁 模块编号 11 作者 日期 2011/5/3 模块描述 用于管理员对挂失用户进行解锁及对需要挂失用户进行挂失 调用模块 数据库模块 被调用模块 无 输入 项目 学号|工号 格式 学号|工号:nvarchar(50)
处理 1、 管理员登录进入管理员页面 2、 管理员输入要挂失或解锁的用户学号 3、 系统根据管理员输入的信息进行查询 4、 系统返回信息到页面 5、 管理员点击挂失或解锁按钮 6、 系统接收信息写入数据库 7、 系统弹出挂失成功或解锁成功对话框 输出 挂失成功或解锁成功对话框 局部数据元素 写入记录到饭卡历史表及更新饭卡信息表 约束条件 注销卡及已上锁的卡系统不予此操作 注释 需要数据库用户表 (3)
界面设计 (4)
主要算法 【挂失此卡】按钮:挂失需要挂失的饭卡。

【解锁此卡】按钮:解锁需要解锁的饭卡。

【确定】按钮:确认挂失,解锁的饭卡。

【取消】按钮:取消挂失,解锁,并返回上层界面。

12)查询更改消费历史功能模块 (1)
功能描述 用于管理员对用户消费历史进行查询更改 (2)
模块IPO表 系统名称 饭卡管理系统 模块名称 查询更改消费历史 模块编号 12 作者 蔡蓬亮 日期 2011/5/3 模块描述 用于管理员对用户消费历史进行查询更改 调用模块 数据库模块 被调用模块 无 输入 项目 学号|工号,起始时间,终止时间,款额,操作 格式 学号|工号:nvarchar(50)
起始时间:datetime 终止时间 :datetime 款额:float 操作:char(20)
处理 1、 管理员登录系统进入管理员页面 2、 管理员点击查询更改消费历史按钮 3、 系统根据管理员输入的学号信息进行查询并返回该学号的历史信息,如果管理员没有输入学号信息则返回所有学生的历史信息 4、 管理员在更改历史页面上重新选择查询条件 5、 系统根据查询条件返回结果 6、 管理员对结果进行更改 7、 系统接收更改信息写入数据库 输出 更改信息成功对话框 局部数据元素 更改饭卡历史表中的记录 约束条件 注释 需要数据库用户表 (3)
界面设计 (4)主要算法 【删除】按钮:删除选定的消费记录。

【清空】按钮:清空消费记录。

【查找】按钮:查找指定的消费记录。

13)数据库功能模块 (1)
功能描述 记录系统所有数据信息。

(2)
模块IPO表 系统名称 饭卡管理系统 模块名称 数据库模块 模块编号 13 作者 蔡蓬亮 日期 2011/5/30 模块描述 记录系统所有数据信息 调用模块 无 被调用模块 无 输入 项目 持卡者信息表,饭卡历史表,饭卡信息表,用户表,照片表 格式 无 处理 系统调用的各个处理 输出 持卡者信息表,饭卡历史表,饭卡信息表,用户表,照片表 局部数据元素 无 约束条件 无 注释 各表数据类型给定 五、编码设计 5.1、连接数据库 public string GernerateNumber() { string NUMS = “0123456789“; int length = 4; Random rnd = new Random(Environment.TickCount); char[] result = new char[length]; for (int i = 0; i < length; i++) result[i] = NUMS[rnd.Next(NUMS.Length)]; return new string(result); } 5.2、登录界面 private void button2_Click(object sender, EventArgs e) { if (textBox1.Text == ““ || textBox2.Text == ““) { MessageBox.Show(“用户名或密码不能为空!!!“); } else if (textBox3.Text == ““) { MessageBox.Show(“验证码不能为空!!!“); } else if (textBox1.Text != ““ && textBox2.Text != ““ && textBox3.Text != ““) { string username = textBox1.Text; string password = textBox2.Text; string yzm = textBox3.Text; string usertype = comboBox1.Text; string SqlString = “select * from 用户表 where 用户名='“ + username + “'“; 连接数据库 s = new 连接数据库(); SqlConnection sql = s.connect(); sql.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.Read()) { string s1 = dr[1].ToString().Trim(); string s2 = dr[2].ToString().Trim(); if (s1 == password && s2 == usertype) { if (usertype == “管理员“ && yzm == yanzhengma) { this.Hide(); 管理员界面 f = new 管理员界面(); f.Show(); } else if (usertype == “持卡者“ && yzm == yanzhengma) { this.Hide(); suo = textBox1.Text.ToString().Trim(); app.value = suo; new 用户界面().Show(); } else MessageBox.Show(“验证码不正确!“); } else MessageBox.Show(“用户类型不正确,请查证!“); } else { MessageBox.Show(“用户名密码不正确“); } sql.Close(); } } 5.3、注册界面 private void button2_Click(object sender, EventArgs e) { s1 = textBox1.Text; s2 = textBox2.Text; s3 = textBox3.Text; s4 = textBox4.Text; s5 = textBox5.Text; s7=textBox6.Text; if(s1!=““&&s2!=““&&s3!=““&&s4!=““&&s5!=““&&s6==s7) { if (s2.Trim().ToString() != s3.Trim().ToString()) { MessageBox.Show(“两次密码输入不争确,请重新输入“); textBox2.Text = ““; textBox3.Text = ““; } string SqlString1 = “select * from 用户表 where 用户名='“ + s1 + “'or 学号='“+s4+“'“; string SqlString2=“select * from 持卡者信息表 where [学号|工号] ='“+s4+“' and 卡ID ='“+s5+“'“; 连接数据库 s = new 连接数据库(); SqlConnection sql = s.connect(); SqlCommand cmd = new SqlCommand(SqlString1, sql); sql.Open(); SqlDataReader dr = cmd.ExecuteReader(); if (dr.HasRows) { MessageBox.Show(“用户名已存在或学号已被绑定,请查证后重新输入“, “提示信息“); textBox1.Text = ““; textBox4.Text = ““; } else { sql.Close(); sql.Open(); SqlCommand cmd1 = new SqlCommand(SqlString2, sql); SqlDataReader dr1 = cmd1.ExecuteReader(); if (!dr1.HasRows) { MessageBox.Show(“绑定学号|工号与绑定卡ID不匹配,请重新输入!“); textBox4.Text = ““; textBox5.Text = ““; } else this.insert(); sql.Close(); } sql.Close(); } else MessageBox.Show(“信息未填完整或验证码错误,请继续填写!“,“提示信息“); } 5.4、用户界面 private void 用户界面_Load(object sender, EventArgs e) { this.tabControl1.Visible = false; i = app.value; string sqlstring = “select 锁 from 饭卡信息表 where 卡ID =( select 卡ID from 持卡者信息表 where [学号|工号]=(select 学号 from 用户表 where 用户名='“ + i + “'))“; 连接数据库 s = new 连接数据库(); SqlConnection sql = s.connect(); SqlCommand cmd = new SqlCommand(sqlstring, sql); sql.Open(); SqlDataReader dr = cmd.ExecuteReader(); dr.Read(); string str = dr[0].ToString().Trim(); if (str == “已解锁“) { button2.Enabled = true; button3.Enabled = true; label2.Text = “您的卡运行正常!“; } else { label2.Text = “您的卡“ + str; button2.Enabled = false; button3.Enabled = false; } dr.Close();sql.Close(); 连接数据库 s1 = new 连接数据库(); SqlConnection sql1 = s1.connect(); string sqlstring1 = “select * from 持卡者信息表 where [学号|工号]=(select 学号 from 用户表 where 用户名='“ + i + “') SqlCommand cmd1 = new SqlCommand(sqlstring1, sql1); sql1.Open(); SqlDataReader dr1 = cmd1.ExecuteReader(); dr1.Read(); str0 = dr1[0].ToString().Trim(); str1 = dr1[1].ToString().Trim(); str2 = dr1[2].ToString().Trim(); str3 = dr1[3].ToString().Trim(); str4 = dr1[4].ToString().Trim(); str5 = dr1[5].ToString().Trim(); dr1.Close(); sql1.Close(); } 5.5管理员界面 private void 管理员界面_Load(object sender, EventArgs e) { this.tabControl1.Visible = false; comboBox1.Text = comboBox1.Items[0].ToString(); comboBox2.Text = comboBox2.Items[0].ToString(); textBox19.Enabled = false; textBox21.Enabled = false; } private void insert() { 连接数据库 s = new 连接数据库(); SqlConnection sqlcn = s.connect(); SqlCommand sqlcommand = new SqlCommand(“xinjian“, sqlcn); sqlcommand.CommandType = CommandType.StoredProcedure; SqlParameter xuehao = new SqlParameter(“@xuehao“, SqlDbType.NVarChar, 50); xuehao.Value = textBox2.Text; SqlParameter kaID = new SqlParameter(“@kaID“, SqlDbType.NVarChar, 50); kaID.Value = textBox5.Text; SqlParameter name = new SqlParameter(“@name“, SqlDbType.Char, 20); name.Value = textBox3.Text; SqlParameter male = new SqlParameter(“@male“, SqlDbType.Char, 10); male.Value = comboBox1.Text; SqlParameter phonenumber = new SqlParameter(“@phonenumber“, SqlDbType.Char, 20); phonenumber.Value = textBox6.Text; SqlParameter address = new SqlParameter(“@address“, SqlDbType.Char, 50); address.Value = textBox7.Text; sqlcommand.Parameters.Add(xuehao); sqlcommand.Parameters.Add(kaID); sqlcommand.Parameters.Add(name); sqlcommand.Parameters.Add(male); sqlcommand.Parameters.Add(phonenumber); sqlcommand.Parameters.Add(address); sqlcn.Open(); sqlcommand.ExecuteReader(); sqlcn.Close(); MessageBox.Show(“信息插入成功!“); } 5.6、随机数 class 随机数 { public string GernerateNumber() { string NUMS = “0123456789“; int length = 4; Random rnd = new Random(Environment.TickCount); char[] result = new char[length]; for (int i = 0; i < length; i++) result[i] = NUMS[rnd.Next(NUMS.Length)]; return new string(result); } } 六、软件测试 6.1. 概述 6.1.1饭卡管理系统概述 本系统从总体上分为系统用户登录、持卡者信息管理、饭卡信息管理和饭卡信息记录管理四个模块,因此需要对这四个模块分别继续测试。由于这四个模块所包含的低层次功能模块是重叠的,因此在设计测试用例的时候应该选择有代表性的测试用例,这样就可以用最小的工作量完成对整个系统的测试。

6.1.2系统的测试计划 系统的每一个模块都需要进行单元测试,只有在通过了单元测试后,才能进行系统的集成测试。在所有的集成测试(包括模块测试、系统测试)都完成以后,方可在用户参与下进行验收测试。只有通过了用户的验收测试后,系统才能交给最终的用户。

在系统项目及其所属的各个模块的编制与开发期间,要进行各种测试活动,准确记录、及时分析并妥善保存有关这些测试的记录,是确保系统运行的重要条件。在系统测试中,应有专人负责收集、汇总与保存有关系统测试的记录。具体如下:
Ø 需求分析阶段列出的系统的每个功能都要求是“可测试的”。

Ø 设计阶段每个具体功能的实现都要考虑到其测试用例的设计。

Ø 编码实现阶段对每个模块做单元测试,然后做集成测试。

Ø 最后和用户一起做验收测试。

系统测试是为了验证各阶段所完成的工作是否满足需求分析和详细设计要求,识别出期望的结果和真正结果之间的差别,以便修正系统设计和代码实现中的潜在错误,保证系统运行的正确性和功能完备性,提高系统运行的性能。

6.1.3测试人员安排 测试者:王金鑫 6.2. 测试方法和步骤 6.2.1系统测试方法 本系统采取以黑盒测试方案为主,白盒测试方案为辅的测试方法。

6.2.2系统测试步骤 先分别进行单元测试,再进行集成测试,遵循自底向上的策略。对于每一个测试用例都有考虑到合法和非法的测试情况。

6.3. 测试过程 6.3.1单元测试(黑盒测试)
用户登录模块测试:
表1 “用户登录模块”输入条件等价类表 输入等价类 有效等价类 无效等价类 登录信息 1.无空值且与数据库信息匹配 2.无效用户名 3.无效密码 4.用户名与密码不匹配 5.存在空值 表2 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 abc,123,管理员,4863 输入有效 1 表3 无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 aaaaaaaaaaaaaaaaaaaa、、管理员、4489 无效输入 2 abc,111111111111111111111、管理员,2365 无效输入 3 abc、12、管理员、2236 无效输入 4 32、123、管理员 无效输入 5 持卡者信息管理测试:
表4 “持卡者注册”输入条件等价类表 输入等价类 有效等价类 无效等价类 注册信息 1.无空值 2.用户名未注册 3.两次输入密码相同 4.学号和饭卡号匹配 5.存在空值 6.用户名已注册过 7.两次输入密码不相同 8.学号和饭卡号不匹配 表5 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 3、3、3、3、3、3389 输入有效 1、2、3、4 表6 无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 4、4、4、4、4 无效输入 5 1、1、1、1、1、5421 无效输入 6 4、1、2、2、2、2295 无效输入 7 4、1、1、3、2、4410 无效输入 8 表7 “修改持卡者信息测试”输入条件等价类表 输入等价类 有效等价类 无效等价类 修改的信息 1.存在待修改的持卡者 2.可修改除学号|工号以外的所有信息 3.修改值正确 4.不存在待修改的持卡者信息 5.修改学号|工号 6.修改值错误 表8 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 1、1、1、2、女、1 输入有效 1、2、3 表9无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 5、1、1、1、男、1 无效输入 4、5 1、1、111111111111111111111、1、女、2 无效输入 6 表10 “查询持卡者信息测试”输入条件等价类表 输入等价类 有效等价类 无效等价类 持卡者登录信息 1.显示持卡者信息 2.无效持卡者 表11 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 1、1、持卡者、1730 输入有效 1 表12无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 abc、123、持卡者、0604 无效输入 2 饭卡信息管理测试:
表13 “加锁与解锁”输入条件等价类表 输入等价类 有效等价类 无效等价类 持卡者登录信息 1.提示“是否挂失学号为2的饭卡” 2.您的卡已上锁 管理员登录信息 3.显示“是否解锁学号为2的饭卡” 4.提示“请输入学号|工号” 5.学号|工号不存在,出现异常 表14 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 2、2、持卡者、1730,点击“挂失” 输入有效 1 abc、123、管理员、4046、学号|工号2 输入有效 3 表15无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 1、1、持卡者、1730 无效输入 2 abc、123、管理员、2239 无效输入 4 abc、123、管理员、3103、学号|工号5 无效输入 5 表16 “注销”输入条件等价类表 输入等价类 有效等价类 无效等价类 管理员登录信息,点击“注销” 1.显示“是否注销此学号的饭卡” 2.提示“请输入学号|工号” 3.提示“没有找到此学生” 表17 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 abc、123、管理员、4046、学号|工号2 输入有效 1 表18无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 abc、123、管理员、2239 无效输入 2 abc、123、管理员、2239、学号|工号5 无效输入 3 表19 “充值”输入条件等价类表 输入等价类 有效等价类 无效等价类 管理员登录信息,点击“存款” 1.可填写充值金额 2.提示“请输入学号|工号” 3.提示“没有找到此学生” 4.充值金额为负 表20 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 abc、123、管理员、4046、学号|工号2、100 输入有效 1 表21无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 abc、123、管理员、2239 无效输入 2 abc、123、管理员、2239、学号|工号5 无效输入 3 abc、123、管理员、4046、学号|工号2、-100 无效输入 4 表22 “消费”输入条件等价类表 输入等价类 有效等价类 无效等价类 持卡者登录信息,点击“消费” 1.可用数字填写消费金额 2.消费金额为非数字 3.提示“请输入消费金额” 表23 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 2、2、持卡者、2251、2 输入有效 1 表24无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 2、2、持卡者、2251、-2 无效输入 2 2、2、持卡者、2251、 无效输入 3 饭卡消费记录管理测试:
表25 “查询饭卡消费记录”输入条件等价类表 输入等价类 有效等价类 无效等价类 持卡者登录信息,点击“查看消费历史”,选择“消费”操作 1.消费记录根据查询条件正确显示在控件中 2.消费记录未显示出来 3.显示出来的记录与查询条件不匹配 表26 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 2、2、持卡者、2251 输入有效 1 表27无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 2、2、持卡者、2251、2011-6-1 22:38:23至2011-9-4 无效输入 2、3 表28 “修改饭卡消费记录”输入条件等价类表 输入等价类 有效等价类 无效等价类 管理员登录信息,点击“查询更改消费历史” 1.显示所有卡的历史操作 2.消费历史未显示出来 3.显示出来的记录与操作条件不匹配 表29 有效等价类测试用例表 测试数据 期望结果 覆盖的有效等价类 abc、123、管理员、3777、学号|工号2 输入有效 1 表30无效等价类测试用例表 测试数据 期望结果 覆盖的无效等价类 abc、123、管理员、2239、学号|工号5 无效输入 2、3 6.3.2集成测试(白盒测试)
持卡者信息管理模块的测试:
①利用持卡者注册模块完成申请者的饭卡和学号绑定任务,然后调用查询持卡者信息模块看刚注册的持卡者信息能否查询到。若查到则进入下一步,否则查找错误。

②若在查询过程中发现此持卡者的某项记录有误,调用修改持卡者信息模块修改这个不正确的记录,以完善此持卡者的信息,如果可以进入下一步,否则查找错误。

③调用查询持卡者信息模块查询上面所说的持卡者,看看是否修改了该持卡者不正确的记录,如果是,并且该持卡者再无其余不正确的记录则此次测试成功,否则发现错误,立即回到第二步继续测试。

流程图 程序图 测试路径:
路径1:
1->2->3->5->1 路径2:
1->2->3->4->7 路径3:
1->2->3->4->6->4->7 测试用例:
路径1:输入 6.4饭卡信息管理测试:
①利用加锁与解锁模块完成对卡的锁定任务,然后调用消费模块看刚加锁的卡号能否进行消费,若不能则进入下一步,否则查找错误。

②利用加锁与解锁模块完成对卡的解锁任务,然后调用消费模块看刚加锁的卡号能否进 行消费,若能则进入下一步,否则查找错误。

③若在消费过程中发现余额不足,则调用充值功能模块增加可利用款额,以完成消费, 如果可以进入下一步,否则查找错误 ④调用充值模块增加可用款额,然后调用消费模块进行消费,看之前不足的余额是否增加,可以消费,如果可以进入下一步,否则查找错误或重复本次操作。

⑤利用注销功能模块完成消除卡信息的任务,然后调用加锁与解锁模块检测卡是否还存在,若存在则重复此过程,否则查找错误。

流程图 程序图 测试路径:
路径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 6.5饭卡消费记录管理测试:
①调用查询饭卡消费记录模块功能,若在查询过程中发现此卡的某项记录有误,则调用修改饭卡消费记录模块修改这个不正确的记录,以完善此卡的信息,如果可以进入下一步,否则查找错误。

②调用查询饭卡消费记录模块查询上面所说的卡,看看是否修改了该卡不正确的记录,如果是,并且该卡再无企业不正确的记录则此次测试成功,否则发现错误,立即回到第一步继续测试。

流程图 程序图 测试路径:
路径1: 1->2->4 路径2:1->2->3->5->2->4 路径3:1->2->3->5->3->5->2->4 6.6系统测试与回归测试 完成了各个模块的测试后,要进行系统测试。系统测试是针对整个产品系统进行的测试,目的是验证系统是否满足了需求规格的定义,找出与需求规格不相符合或与之矛盾的地方。在系统测试的任何一个阶段,只要发现了错误,就要尽可能及时更正。更正后还要检验已经发现的缺陷有没有被正确的修改和修改过程中有没有引发新的缺陷,即回归测试。另外,每当一个新的模块被当作集成测试的一部分加进来的时候,软件环境都很发生改变,即建立起新的数据流路径,还有可能激活了新的控制逻辑。这些改变可能会使原本工作得很正常的功能产生错误。因此在集成测试策略的环境中,要进行回归测试,就是对部分已通过测试的功能要再次进行测试,以保证系统在新环境下能正常工作。

七、小结 7.1. 课设内容总结 本次课设我们没有用老师给的题目而是选择了饭卡管理系统,因为在我们看来对于在校学生的我们,饭卡是我们在校园里每天的必需品,更加贴近我们,所以相对来说更加有意义。

随着我国高校扩招,大学生的人数呈逐渐上升趋势。传统的饭卡管理方式大多采用人工方式,这种方式具有明显的局限性,主要表现在信息分散和共享性差、信息的及时性和准确性差以及职工多开支大。学生人数的众多使得传统的饭卡管理难度越来越高,学校对一款能够实现科学有效的一体化管理的系统软件的需求越来越紧迫。本次课设的主题是设计一个饭卡管理系统,能够对饭卡信息进行查询和更新管理,且反映敏捷准确。系统可分为持卡者信息管理、饭卡信息管理和饭卡消费记录管理三个字模块,能实现对饭卡的注册、挂失与解锁、信息的查询和修改、充值与消费等功能。

7.2. 心得体会 7.2.1 A 在本次课程设计中每一位同学都付出了努力,刚开始由于没有小组开发经验各部分之间不能很好的协调。在我们的努力下,小组内成员能够很好的协调工作。最终很快的完成了本次课程设计。由于小组内各同学的水平不一,因此我们本着互助的原则对水平低一点的组员进行帮助。对软件设计中出现的问题小组成员集体讨论。并且当每一部分设计出来后小组内讨论并修改,因此每个人都参与了软件设计的全过程。对于编码工作由我设计与实现,在软件实现的过程中小组内其他成员都给予了很大的帮助提出很多宝贵意见,特别是王金鑫同学。本次课程设计是我明白了一个人是做不成软件的,以前以为做软件就是编码。现在经过本次课程设计才发现在软件进行编码之前要做很多的东西。例如,本来我想一个人把软件先实现了结果根本无从下手。最后和组员们一起讨论了程序的流程接数据流图、数据字典等一系列的问题。在本次课程设计中发现一个在一个团队中Team leader 是很重要的,要协调各方面的工作,同时自己也要做很多的工作。经过本次课程设计虽然很累但是自己学到了很多东西。同时非常感谢汪婧老师对我们小组的指导,在这里说一声辛苦了汪老师。

7.2.2.B 通过对饭卡管理系统的设计,使我认识到软件开发的过程就是描述世界的过程,而由现实世界向软件模型的转化过程是其中最核心的过程。在设计过程中我们遇到了不少问题,如在Visio软件的使用,数据流图和E-R图的设计方面以及功能实现方面,尽管问题很多,最后在小组成员的努力以及相关资料的辅助下,所以的问题都迎刃而解。本次课设对我们来说是一次非常难得的锻炼机会。一直在动手方面乏乏的我们,尽管经常一些理论知识掌握不错,但由于不勤于动手,每次的课设对我们来说还是比较有难度,这次课设不仅让我们加深了对理论知识的理解,更加熟悉Visio软件的使用,也丰富了实践经验,让我们从整体的程序开发到具体软件的设计都有了一个全面的掌握。在功能实现方面,我们不停调试与测试,不断改进,虽然还许多不尽人意的地方有待改进,比如用户界面的设计不够美观,有些功能应该更加完善,但这并不影响总体效果。本次课设提高了我们实际操作能力,真正将理论与实践相结合,做到学有所用。同时由于分工明确,大家在努力完成自己的任务的同时还不忘其他组成员,体现了高度的凝聚力。

7.2.3C 在本次课程设计的开发的过程中,我全面了解了一个面向数据库的饭卡应用系统的开发过程,从中学习了很多有关的知识。通过本次课程设计它能更直观地把理论知识用于实践当中,使理论能够更好的结合实际,真正做到理论知识为实践活动服务。旨在开拓我们的视野,增强专业意识,巩固和理解专业课程。

我们小组本次课程设计的课题是校园饭卡管理系统,拿到课题之后我们马上开了个小型会议分配任务,使小组的课程设计能够有效、高质量的进行。在每个人埋头开始自己的任务,我真正感受到我们是一个集体,是一个团队,大家在此次任务中都附有责任、义务,所以大家都不敢怠慢,各自开始自己的工作。在进行任务中,我们也遇到很多问题,很多知识都不懂,大家的见解也不同等等,但我们还是在团体成员的讨论中达成共识。

在本系统的设计过程和论文编写过程中,团队的其他同学和老师都给予了我许多无私的帮助,尤其是我的团队给我的论文提出了很多宝贵的修改意见,在这里,我向这些帮助我的人表示衷心的感谢。

7.2.4D 通过对饭卡管理系统的设计,使我认识到软件开发的过程就是描述世界的过程,而由现实世界向软件模型的转化过程是其中最核心的过程。在设计过程中我们遇到了不少问题,如在Visio软件的使用,数据流图和E-R图的设计方面以及功能实现方面,尽管问题很多,最后在小组成员的努力以及相关资料的辅助下,所以的问题都迎刃而解。本次课设对我们来说是一次非常难得的锻炼机会。一直在动手方面乏乏的我们,尽管经常一些理论知识掌握不错,但由于不勤于动手,每次的课设对我们来说还是比较有难度,这次课设不仅让我们加深了对理论知识的理解,更加熟悉Visio软件的使用,也丰富了实践经验,让我们从整体的程序开发到具体软件的设计都有了一个全面的掌握。在功能实现方面,我们不停调试与测试,不断改进,虽然还许多不尽人意的地方有待改进,比如用户界面的设计不够美观,有些功能应该更加完善,但这并不影响总体效果。本次课设提高了我们实际操作能力,真正将理论与实践相结合,做到学有所用。同时由于分工明确,大家在努力完成自己的任务的同时还不忘其他组成员,体现了高度的凝聚力。

7.2.5E 为期一周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础. 通过这次课程设计,本人在多方面都有所提高。培养和提高学生独立工作能力,巩固与扩充了软件工程等课程所学的内容,掌握课程的方法和步骤, 在这次设计过程中,体现出自己单独运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节,从而加以弥补。

在此感谢我们的汪婧老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;
老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;
这次课程设计的每个实验细节和每个数据,都离不开老师您的细心指导。

八、参考文献 1. 《数据库系统概论》
萨师宣 王珊 高等教育出版社 2. 《SQL Server 2000 教材》龚波 北京希望电子出版社 3. 《软件工程导论》
张海藩 清华高校出版社 4. 《软件工程实验指导书》安徽工程大学计算机与信息学院 5. 《实用软件工程》,郑人杰等著,清华大学出版社。

6. 《软件工程》第二版,李代平等著,清华大学出版社。

7. 《软件工程》第六版,Roger S.Pressman著,机械工业出版社。

仅供参考

推荐访问: