基于.NET模拟超市购物结算功能-PSP设计过程_第1页
基于.NET模拟超市购物结算功能-PSP设计过程_第2页
基于.NET模拟超市购物结算功能-PSP设计过程_第3页
基于.NET模拟超市购物结算功能-PSP设计过程_第4页
基于.NET模拟超市购物结算功能-PSP设计过程_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

软件过程与管理大作业题目《基于.NET模拟超市购物结算功能》——PSP设计过程

目录TOC\o"1-3"\h\u第一章项目概述 31.项目业务 31.1业务流程 31.2需求分析 32.项目结构 32.1整体模块流程图 32.4付款模块流程图 33.数据库的设计 33.1用户表的设计 33.2商品表的设计 33.2注册表的设计 3第二章项目PSP设计 31.项目模块OST设计 32.项目模块FST设计 33.项目模块SST设计 34.项目模块LST设计 3第三章项目PSP度量 31.项目时间度量 32.项目缺陷度量 33.项目规模估算 34.项目计划总结 3第四章项目实现与评审 31.项目实现 31.1代码实现 32.项目评审 32.1代码评审 32.2设计评审 3第五章项目展示 31.超市结算的首界面 32.登录失败 32.1失败情况一 32.2失败情况二 33.注册模块 34.登录成功情况 35.付款页面情况 3第六章总结 3第七章参考文献 3第一章项目概述1.项目业务1.1业务流程网上超市购物系统的功能流程:顾客成功登录后就可以进入网上购物系统里进行查看商品信息和选购自己所需物品,若顾客没有账号,可以先到注册页面中注册一个账号后登录系统。顾客在添加商品时,需要添加商品的名称,价格以及数量。系统便对查看库房信息,当货物充足的时候提取货物给用户,然后进行结账交易。顾客也可以删除易购买商品,也可以查询自己易购买的那些商品的详细信息,查询时要指明查询的商品的记录号是多少,还可以指定查询第一个或最后一个购买的商品信息。顾客还可以打印要购买的商品的清单,顾客在付款交易时首先生成一张临时的订单,然后顾客可以选择支付方式,完成付款后,系统会提示顾客购成功。1.2需求分析1)用户可以添加购买一种商品,添加的信息包括商品名称、数量和单价2)用户可以删除已购买的一种商品3)用户可以查询已购买的一种商品的详细信息,查询时要指明查询的商品的记录号是多少(商品记录号是按照商品购买次序编的),还可以指定查询第一个或最后一个购买的商品信息。4)用户可以删除所有已添加到购物车的商品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输入品名检查是否超时系统4检验是否品名是否存在系统5要求用户输入数量检查是否超时用户6输入数量系统7要求用户输入单价用户8输入单价检查是否超时系统9检验单价是否正确单价不正确系统10付款失败2.项目模块FST设计表2付款模块的FST设计人员:董琪日期:2015/4/21教练:李恋语言:C#类名Shop继承关系属性声明描述MaxTime:Integer,Minutes系统初始化n:Integer计算尝试次数nMax:Integer最大允许尝试次数ValidIdSet一个集合,包含所有合法品名,单价方法声明描述VoidShop.Start(n:Int)系统初始化BooleanShop.Getnname(nname:String)获取String类型的品名,如果是合法字符串,则返回true,超时或者非法字符串则返回falseBooleanShop.Checknname(nname:String)Nname是否存在合法用户集中,如果属于则认为合法,反之,不合法IntShop.Getnum(num:Int)获取商品数量,如果是合法字符串,则返回true,超时或者不是合法字符串则返回falseIntShop.GetPrise(Prise:String)获取商品的价格,如果是合法字符串,则返回true,超时或者不是合法字符串则返回falseIntShop.CheckPrise(Prise:String)Nname是否存在合法用户集中,如果属于则认为合法,反之,不合法VoidShop.Pay(nname:String,n:Int)尝试次数超过最大次数时,拒绝用户进行下面操作,反之允许当前用户操作以及付款。3.项目模块SST设计表3付款模块的SST设计人员:董琪日期:2015/4/21教练:李恋语言:C#状态名称描述Start付款系统启动方法/参数描述Name商品的名称num商品的数量Prise商品的价格n名称价格输入错误的次数nMax出错的最大上限,超出拒绝付款Fail付款结果:成功Fail=0,失败Fail=1状态/下一个状态转换条件动作StartStart不存在Checknname永真Getname,n:=0;nameandPrise!ValidCheckPrise不存在End不存在ChecknnameStart不存在Checknname不存在CheckPriseValidnameGetpriseEnd超时File:=trueCheckPriseStart不存在Checknname不存在CheckPrise不存在EndValidname^ValidPriseFail:=false,paysuccsessEndN>=nMax^TimeoutFail:=false,payfailEndEnd不存在4.项目模块LST设计表4付款模块的LST设计人员:董琪日期:2015/4/21教练:李恋语言:C#参考:n:theerrorcounter,maximunvaluenMaxname:BooleanindicatorofnameValidandname!Validnum:intindicatorofnumValidandnum!ValidPrise:BooleanindicatorofpirseValidandprise!ValidFial:Booleanindicatoroffailurecondition,endsessionPayontothesystemStartbyiniiallizingthenerrorcounter,setname:=!Valid,num:=!Valid,Prise:=!Valid,andFail:=falseGetnameRepeatthemainloopuntilavalidnameandnumandPriseorFailChecknameforValidity.{Checknamestart}IfnonameresponseinMaxtime,setFail:=trueGetnumforchecknullor!nullGetPriseandcheckforvalidity.{checkPrisestart}IfnoPriseresponseinMaxtime,setFail:=trueIfname!ValidorPrise!Valid,stepthencounterIfnexceedsnMax,setFail:=trueUntilnameandPriseValidorFail=trueOtherwise,repeatthemainloop.IfFail=truecutoffpay,otherwisepaysuccess{Endstart}第三章项目PSP度量1.项目时间度量

表5时间记录日志学生董琪日期4/14/15教员李恋课程软件过程与管理日

期开始时间结束时间中断时间净时间活动备注CU15/5/18:008:25520设计设计登录模块15/5/18:309:001020设计设计登陆模块异步处理情况15/5/2

14:00

15:00

20

40

设计

设计注册模块

15/5/7

12:0014:00

20

100编码实现登录模块

15/5/714:1014:3020测试测试登录模块的功能

15/5/813:0013:501040修复修复登录模块的缺陷

15/5/1217:0020:003030编码实现登录模块的异步处理15/5/1220:1020:35520测试测试登录模块异步处理的功能15/5/138:008:502030修复修复异步处理出现的缺陷

15/5/1413:0015:0010110编码实现注册模块

15/5/1415:3016:00525测试测试注册模块的功能

15/5/1416:0017:203050修复修复注册模块的缺陷

15/5/1514:0015:0060设计设计付款模块

15/5/16

12:00

14:00

20

100

编码

实现付款模块的功能

15/5/1614:2014:55530测试测试付款模块的功能15/5/1615:0016:001050修复修复付款模块的缺陷15/5/1713:0015:003090测试测试所有模块的整体功能

15/5/17

15:00

16:00

10

50

修复

修复完善整个项目的小缺陷

2.项目缺陷度量表6缺陷记录日志学生董琪日期2015-5-7教员李恋程序号01日期编号类型引入阶段排除阶段修复时间相关缺陷2015-5-81数据编码修复40在数据库连接出现了问题,导致数据库无法连接2015-5-132函数编码测试30异步处理的功能函数没有实现2015-5-143函数编码测试50在注册模块中的异步处理没有实现,不能提醒用户已存在2015-5-164语法编码测试10在代码中总是少;导致语法出现错误2015-5-165函数编码测试20在付款模块中,添加商品信息的函数没有实现2015-5-166赋值编码测试10在定义变量时没有初始化变量2015-5-177接口编码修复30在登录模块和注册模块的跳转没有实现好2015-5-178环境编码测试30测试的时候出现了中断现象3.项目规模估算

表7:董琪的程序规模估计学生

董琪

日期

15/5/15

教员

李恋

课程

软件过程与管理

程序代码行以前的功能估计的功能最小平均最大Loops

410简单While-loop514中等repeat-untilRepeat-until71114

Case211小的Case语句Case5811314大的Case语句

Data618小的链表

Calc.120小的计算calculation101520

估计

2234454.项目计划总结表8:PSP项目计划总结表

学生

董琪

日期

2015/4/21程序

001

程序号#

001

教师

李恋

程序设计语言

C#

总结

计划

实际

累计

Minutes/LOC

6.30

4.93

5.92

LOC/Hour

10.47

12.90

10.95

Defects/KLOC

96.90

77.9

92.53

过程效益33.380.040.0A/FR

程序规模(LOC)

新开发与更改的

67

77

335

最大规模

85

最小规模

49

开发阶段时间/min

计划

实际

累计

累计百分比

计划

23

32

120

6.5

设计

39

44

195

10.6

编码

166

155

792

43.1

代码复查

29

34

145

7.9

编译

24

8

100

5.5

测试

62

39

279

15.2

后置处理

41

46

206

11.2

总计

384

358

1837

100.0

最大时间

487

最小时间

281

引入的缺陷

计划

实际

累计

累计百分比

Def/Hour

计划

设计

1

1

5

16.1

1.54

编码

5

4

25

80.7

1.89

代码复查

编译

1

1

3.2

测试

总计

6

6

31

100.0

排除的缺陷

计划

实际

累计

累计百分比

Def/Hour

计划

设计

编码

代码复查

2

4

12

38.7

4.97

编译

3

1

13

41.9

7.80

测试

1

1

6

19.4

1.29

总计

6

5

31

100.0

第四章项目实现与评审1.项目实现1.1代码实现登录模块的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceshop{publicpartialclassForm2:Form{publicForm2(){InitializeComponent();}privatevoidbutton1_Click(objectsender,EventArgse){Stringname=this.textBox1.Text;//(this.textBox1.Text为输入用户名的文本框的名字)Stringpass=this.textBox2.Text;//(这里是输入密码的)Stringconn=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1.mdf;IntegratedSecurity=True;UserInstance=True";//(使用本地数据库,我的数据库名为XKGL)SqlConnectionconnection=newSqlConnection(conn);Stringsql=String.Format("select*fromuserwherename='{dao}'andpass='{0000}'",name,pass);connection.Open();SqlCommandcommand=newSqlCommand(sql,connection);intnum=Convert.ToInt32(command.ExecuteScalar());if(num>0){MessageBox.Show("登录成功!");Form4form=newForm4();form.Show();this.Hide();}else{MessageBox.Show("用户或密码错误!请重新登陆!");}connection.Close();}privatevoidbutton2_Click(objectsender,EventArgse){this.Hide();Form1yourForm=newForm1();yourForm.Show();}}}付款模块的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Data.SqlClient;namespaceshop{publicpartialclassForm4:Form{stringconnStr,insertCmd;publicForm4(){InitializeComponent();}privatevoidShow(){StringstrConn=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1;IntegratedSecurity=True;UserInstance=True";SqlConnectionconn=newSqlConnection(strConn);stringselectCmd="select*fromshop";DataSetmyDataSet=newDataSet();SqlDataAdaptermyAdpt=newSqlDataAdapter(selectCmd,conn);myAdpt.Fill(myDataSet,"shop");textBox1.DataBindings.Add("Text",myDataSet,"shop.Sname");textBox2.DataBindings.Add("Text",myDataSet,"shop.count");textBox3.DataBindings.Add("Text",myDataSet,"shop.prise");dataGridView1.DataSource=myDataSet;dataGridView1.DataMember="shop";}privatevoidForm4_Load(objectsender,EventArgse){Show();}//添加privatevoidbutton1_Click(objectsender,EventArgse){connStr=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1;IntegratedSecurity=True;UserInstance=True";insertCmd="InsertIntoshop(Sname,count,prise)Values(@t1,@t2,@t3)";SqlConnectionconn;SqlCommandcmd;conn=newSqlConnection(connStr);conn.Open();cmd=newSqlCommand(insertCmd,conn);cmd.Parameters.Add(newSqlParameter("@t1",SqlDbType.VarChar));cmd.Parameters.Add(newSqlParameter("@t2",SqlDbType.Int));cmd.Parameters.Add(newSqlParameter("@t1",SqlDbType.NChar));cmd.Parameters["@t1"].Value=textBox1.Text;cmd.Parameters["@t1"].Value=textBox2.Text;cmd.Parameters["@t1"].Value=textBox3.Text;cmd.ExecuteNonQuery();conn.Close();}//删除privatevoidbutton2_Click(objectsender,EventArgse){stringconnStr,deleteCmd;connStr=@"DataSource=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\Database1;IntegratedSecurity=True;UserInstance=True";deleteCmd="DeleteFromshopWhereSname=@t1";SqlConnectionconn;SqlCommandcmd;conn=newSqlConnection(connStr);conn.Open()}}}2.项目评审2.1代码评审表9代码评审检查表示例姓名:董琪日期:2015-5-20教练:李恋语言:C#目的指导用户有效开展代码评审活动####累计累计%一般性说明在完成每个复查步骤之后,将发现的某个类型的缺陷的个数记录在右面的栏目中。如果该步骤没有发现缺陷,就在右面的栏目中打个表示检查无误的交叉符号(X)。在开始复查下一个程序单元之前,要按照检查表完成对程序、类、对象或方法的检查。建议每次评审只检查一项内容,而不要同时检查多项内容。每检查完一项,在该项所在行右侧表格中加以标注,如OK表示通过评审,NG表示发现缺陷。完整性验证设计的所有功能都已经编码初始化检查变量和参数的初始化:在程序的开始;在函数/过程的入口OKOK名字检查名字的拼写和使用:是否前后一致?结构和类中变量的引用是否使用了‘。’OKOK输出格式检查输出格式:换行是否合适?间隔是否合适?OKNG{}对保证检查{}是适当的并且是成对的OK逻辑操作符验证==,=,||等逻辑操作符的使用是合适的。检查每个逻辑函数()是合适的OK逐行检查检查每一行代码:指令的语法是否正确?表点是否正确、符号是否正确?OKOK标准保证所有代码符合编程标准OK文件的打开与关闭验证所有的文件:是合适地声明的;是合适地打开的;是合适地关闭的;OKOKOK全面检查全面检查以发现系统问题和非期望OK总计2.2设计评审表10设计评审检查表示例姓名:董琪日期:2015-5-20教练:李恋语言:C#目的指导用户有效开展设计评审活动####累计累计%概述建议每次评审只检查一项内容,而不要同时检查多项内容。每检查完一项,在该项所在行右侧表格中加以标注,如OK表示通过评审,NG表示发现缺陷。完整性验证设计覆盖所有的需求内容:包含所有需要的输入。OK方法调用验证方法、过程等:验证所有的方法被正确调用;验证所有的外部引用被正确定义。OKOK系统环境的考虑系统安全和保密性检查:;安全性。OK命名验证命名:命名清晰、定义清楚;变量、参数的范围有清晰定义。OKNG标准设计符合标准。OK总计项目展示1.超市结算的首界面如图1所示图1超市结算系统首页图登录失败2.1失败情况一登录界面,使用不正确的账号的登录结果如图2所示:图2登录失败图2.2失败情况二登录界面,使用正确的账号和不正确的密码登录结果如图3所示:图3登录失败图3.注册模块如果没有账号可以选择注册功能如图4所示:图4注册选项图跳转注册页面如图5所示:图5注册页面图4.登录成功情况登录界面,使用正确的账号和正确的密码登录结果如图6所示:图6登录成功图就会跳转到超时结算界面如图7所示图7付款界面图5.付款页面情况添加一个商品,如图8所示:图8添加商品图第一件商品显示如图9所示:图9显示第一件商品图清屏的效果图如图10所示:图10清屏效果图第六章总结在这次的大作业中,根据老师给的大作业题目,我首先对拿到的项目进行了规模估计。自己先完成了项目计划总结表,刚开始没有弄清楚自己想要怎么完成这个项目,所以在填写计划总结表有点没有头绪,后来经过了自己的反复琢磨,还是比较好的完成了。在紧跟着的PSP设计,自己对付款模块这一个模块进行了OST,FST,SST,LST的设计。在这个过程中,有些问题没有弄清楚,导致我的设计不是很合理,后来经过请

温馨提示

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

评论

0/150

提交评论