1、 软件过程与管理 大作业 题 目 基于 .NET 模拟超市购物结算 功能 PSP 设计过程 院 系 信息工程学院 专 业 班 级 12软件工程本 1 班 学 生 姓 名 董琪 学 号 1242159103 设 计 地 点 教学 13( 602) 指 导 教 师 李恋 起止时间: 2015年 4 月 14日至 2015年 4 月 24日 目 录 第一章 项目概述 . 3 1.项目业务 . 3 1.1 业务流程 . 3 1.2 需求分析 . 3 2.项目结构 . 3 2.1 整体模块流程图 . 3 2.4 付款模块流程图 . 4 3.数据库的设计 . 5 3.1 用户表的设计 . 5 3.2 商品
2、表的设计 . 5 3.2 注册表的设计 . 5 第二章 项目 PSP 设计 . 5 1.项目模块 OST 设计 . 5 2.项目模块 FST 设计 . 6 3.项目模块 SST 设计 . 7 4.项目模块 LST 设计 . 8 第三章 项目 PSP 度量 . 9 1. 项目时间度量 . 9 2.项目缺陷度量 . 10 3.项目规模估算 . 10 4.项目计划总结 . 11 第四章 项目实现与评审 . 13 1. 项目实现 . 13 1.1 代码实现 . 13 2. 项目评审 . 18 2.1 代码评审 . 18 2.2 设计评审 . 19 第五章 项目展示 . 19 1.超市结算的首界面 .
3、19 2. 登录失败 . 20 2.1 失败情况一 . 20 2.2 失败情况二 . 20 3.注册模块 . 21 4.登录成功情况 . 22 5.付款页面情况 . 23 第六章 总结 . 25 第七章 参考文献 . 25 第一章 项目概述 1.项目业务 1.1 业务流程 网上超市购物系统的功能流程:顾客成功登录后就可以进入网上购物系统里进行查看商品信息和选购自己所需物品,若顾客没有账号,可以先到注册页面中注册一个账号后登录系统。顾客在添加商品时,需要添加商品的名称,价格以及数量。系统便对查看库房信息,当货物充足的时候提取货物给用户,然后进行结账交易。顾客也可以删除易购买商品,也可以查询自己易
4、购买的那些商品的详细信息,查询时要指明查询的商品的记录号是多少,还可以指定查询第一个或最后一个购买的商品信息。顾客还可以打印要购买的商品的清单,顾客在付款交易时首先生成一张临时的订单,然 后顾客可以选择支付方式,完成付款后,系统会提示顾客购成功。 1.2 需求分析 1)用户可以添加购买一种商品,添加的信息包括商品名称、数量和单价 2)用户可以删除已购买的一种商品 3)用户可以查询已购买的一种商品的详细信息,查询时要指明查询的商品的记录号是多少(商品记录号是按照商品购买次序编的),还可以指定查询第一个或最后一个购买的商品信息。 4)用户可以删除所有已添加到购物车的商品 5)用户可以打印要购买的商
5、品的清单 6)用户可以清空显示信息的窗口 7)用户可以要求结帐,系统会打印出用户购物清单,并给出总价。 2.项目结构 2.1 整体模块流程图 2.4 付款模块流程图 3.数据库的设计 3.1 用户表的设计 3.2 商品表的设计 3.2 注册表的设计 第二章 项目 PSP 设计 1.项目模块 OST 设计 表 1 付款模块的 OST 设计人员: 董琪 日期: 2015/4/21 教练: 李恋 语言: C# 场景编号 1 用户目的 场景目的 描述一次商品付款失败的过程 操作来源 步骤 动作 备注信息 用户 1 启动系统 系统 2 要求用户输入品名 检查是否超时 用户 3 输入品名 检查是否超时 系
6、统 4 检验是否品名是否存在 系统 5 要求用户输入数量 检查是否超时 用户 6 输入数量 系统 7 要求用户输入单价 用户 8 输入单价 检查是否超时 系统 9 检验单价是否正确 单价不正确 系统 10 付款失败 2.项目模块 FST 设计 表 2 付款模块的 FST 设计人员: 董琪 日期: 2015/4/21 教练: 李恋 语言: C# 类名 Shop 继承关系 属性 声明 描述 Max Time: Integer,Minutes 系统初始化 n:Integer 计算尝试次数 nMax:Integer 最大允许尝试次数 ValidIdSet 一个集合,包含所有合法品名,单价 方法 声明
7、描述 Void Shop.Start(n:Int) 系统初始化 Boolean Shop.Getnname(nname:String) 获取 String 类型的品名,如果是合法字符串,则返回 true,超时或者非法字符串则返回 false Boolean Shop.Checknname(nname:String) Nname 是否存在合法用户集中,如果属于则认为合法,反之,不合法 Int Shop.Getnum(num:Int) 获取商品数量,如果是合法字符串,则返回true,超时或者不是合法字符串则返回 false Int Shop.GetPrise(Prise:String) 获取商品的
8、价格,如果是合法字符串,则返回true,超时或者不是合法字符串则返回 false Int Shop. CheckPrise(Prise:String) Nname 是否存在合法用户集中,如果属于则认为合法,反之,不合法 Void Shop.Pay(nname:String,n:Int) 尝试次数超过最大次数时,拒绝用户进行下面操作,反之允许当前用户操作以及付款。 3.项目模块 SST 设计 表 3 付款模块的 SST 设计人员: 董琪 日期: 2015/4/21 教练: 李恋 语言: C# 状态名称 描述 Start 付款系统启动 方法 /参数 描述 Name 商品的名称 num 商品的数量
9、Prise 商品的价格 n 名称价格输入错误的次数 nMax 出错的最大上限,超出拒绝付款 Fail 付款结果:成功 Fail=0,失败 Fail=1 状态 /下一个状态 转换条件 动作 Start Start 不存在 Checknname 永真 Get name,n:=0;name and Prise!Valid CheckPrise 不存在 End 不存在 Checknname Start 不存在 Checknname 不存在 CheckPrise Valid name Get prise End 超时 File:=true CheckPrise Start 不存在 Checknname
10、不存在 CheckPrise 不存在 End Valid nameValid Prise Fail:=false,pay succsess End N=nMax Timeout Fail:=false,pay fail End End 不存在 4.项目模块 LST 设计 表 4 付款模块的 LST 设计人员: 董琪 日期: 2015/4/21 教练: 李恋 语言: C# 参考: n:the error counter,maximun value nMax name:Boolean indicator of name Valid and name !Valid num:int indicator
11、 of num Valid and num !Valid Prise: Boolean indicator of pirse Valid and prise !Valid Fial: Boolean indicator of failure condition,end session Pay onto the system Start by iniiallizing the n error counter,set name:=!Valid, num:=!Valid,Prise:=!Valid,and Fail:=false Get name Repeat the main loop until
12、 a valid name and num and Prise or Fail Check name for Validity. Checkname start If no name response in Maxtime,set Fail:=true Get num for check null or !null Get Prise and check for validity.checkPrise start If no Prise response in Maxtime,set Fail:=true If name !Valid or Prise !Valid,step the n co
13、unter If n exceeds nMax,set Fail:=true Until name and Prise Valid or Fail = true Otherwise ,repeat the main loop. If Fail = true cut off pay,otherwise pay success End start 第三章 项目 PSP 度量 1. 项目时间度量 表 5 时间记录日志 学生 董琪 日期 4/14/15 教员 李恋 课程 软件过程与管理 日 期 开始时间 结束时间 中断时间 净时间 活 动 备 注 C U 15/5/1 8:00 8:25 5 20 设
14、计 设计登录模块 15/5/1 8:30 9:00 10 20 设计 设计登陆模块异步处理情况 15/5/2 14:00 15:00 20 40 设计 设计注册模块 15/5/7 12:00 14:00 20 100 编码 实现登录模块 15/5/7 14:10 14:30 20 测试 测试登录模块的功能 15/5/8 13:00 13: 50 10 40 修复 修复登录模块的缺陷 15/5/12 17:00 20:00 30 30 编码 实现登录模块的异步处理 15/5/12 20:10 20:35 5 20 测试 测试登录模块异步处理的功能 15/5/13 8:00 8: 50 20 30
15、 修复 修复异步处理出现的缺陷 15/5/14 13:00 15:00 10 110 编码 实现注册模块 15/5/14 15:30 16:00 5 25 测试 测试注册模块的功能 15/5/14 16:00 17:20 30 50 修复 修复注册模块的缺陷 15/5/15 14:00 15:00 60 设计 设计付款模块 15/5/16 12:00 14:00 20 100 编码 实现付款模块的功能 15/5/16 14:20 14:55 5 30 测试 测试付款模块的功能 15/5/16 15:00 16:00 10 50 修复 修复付款模块的缺陷 15/5/17 13:00 15:00
16、30 90 测试 测试所有模块的整体功能 15/5/17 15:00 16:00 10 50 修复 修复完善整个项目的小缺陷 2.项目缺陷度量 表 6 缺陷记录日志 学生 董琪 日期 2015-5-7 教员 李恋 程序号 01 日 期 编号 类型 引入阶段 排除阶段 修复时间 相关缺陷 2015-5-8 1 数据 编码 修复 40 在数据库连接出现了问题,导致数据库无法连接 2015-5-13 2 函数 编码 测试 30 异步处理的功能函数没有实现 2015-5-14 3 函数 编码 测试 50 在注册模块中的异步处理没有实现,不能提醒用户已存在 2015-5-16 4 语法 编码 测试 10 在代码中总是少;导致语法出现错误 2015-5-16 5 函数 编码 测试 20 在付款模块中,添加商品信息的函数没有实现 2015-5-16 6 赋值 编码 测试 10 在定义变量时没有初始化变量 2015-5-17 7 接口 编码 修复 30 在登录模块和注册模块的跳转没有实现好 2015-5-17 8 环境 编码 测试 30 测试的时候出现了中断现象 3.项目规模估算 表 7: 董琪 的程序规模估计 学生 董琪 日期 15/5/15 教员 李恋 课程 软件过程与管理