网上商城详细设计说明书

更新时间:2024-06-01 08:21:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

网上商城详细设计说明书

网上商城

详细设计说明书

1.引言.... 3

1.1编写目的... 3

1.2背景... 4

2.会员模块.... 4

2.1用户注册页面... 4

2.2忘记密码页面... 9

2.3用户资料修改页面... 14

2.4密码修改页面... 16

3.后台管理-商品管理模块.... 18

3.1.增加新商品一级分类... 18

3.2.编辑新商品一级分类... 19

3.3.编辑新商品二级分类... 20

3.4.增加新商品信息... 22

4.订单生成购物车及商品搜索和收藏.... 26

目录

4.1.搜索商品按钮页面... 26

4.2.我的购物车页面... 27

4.3.商品搜索页面... 28

4.4.我的购物车页面2. 29

4.5.收藏夹页面... 31

4.6.会员登录界面... 31

4.7.收货人信息提交页面... 33

4.8.送货方式选择页面... 35

4.9.付款方式选择页面... 36

4.10.非会员登陆页面... 37

4.11.定单信息确认页面... 39

5.商品显示模块.... 42

5.1主显示区默认页面... 42

5.2二级分类商品显示页面... 48

5.3商品信息显示页面... 51

6.后台管理-订单管理模块.... 54

6.1未处理的订单列表... 54

6.2获取订单中商品信息... 55

6.3统计购物车中的商品种类、件数和商品总价格... 56

6.4获取某条订单详细信息格... 57

6.5获取订单中的商品信息和库存数量... 58

7.后台管理-管理员模块.... 59

7.1连接数据库中管理员表的伪代码... 59

7.2管理员的记录日志的伪代码... 59

7.3管理员登录... 60

7.4显示日期... 61

7.5管理员个人资料管理页面... 61

7.6更新管理员表的伪代码... 62

7.7提取管理员资料的伪代码... 63

7.8管理员信息显示的伪代码... 63

7.9管理员个人信息修改的伪代码... 64

7.10鼠标点击添加按钮的伪代码... 65

7.11管理员资料编辑... 66

7.12得到管理员的信息的伪代码... 66

7.13管理员信息修改的伪代码... 68

7.14删除管理员的伪代码... 68

8.运行设计.... 69

8.1.运行模块的组合... 69

8.2.运行控制... 69

8.3.运行时间... 69

9.出错处理设计.... 69

9.1.出错输出信息... 69

9.2.出错处理对策... 70

9.3.运补救措施... 70

10.安全保密设计.... 70

11.维护设计.... 70

1.引言

1.1编写目的

该阶段开发以正式进入软件的实际开发阶段,本阶段完成系统的详细设计并明确系统的数据结构与软件结构。

在软件设计阶段主要是把一个软件需求转化为软件表示的过程,这种表示只是描绘出软件的总的概貌。本详细设计说明书的目的就是进一步细化软件设计阶段得出的软件总体概貌,把它加工成在程序细节上非常接近于源程序的软件表示。

1.2编写背景

随着Internet国际互联网的发展,越来越多的企业开始建造自己的网站。基于Internet的信息服务,商务服务已经成为现代企业一项不可缺少的内容。很多企业都已不满足于建立一个简单的仅仅能够发布信息的静态网站。现代企业需要的是一个功能强大的,能提供完善的电子商务服务的动态商务网站。

本网上商城系统就是根据电子商务和互联网的发展,针对网上顾客所开发的网络购物系统,本商城系统主要有:

1) 前台管理:处理商品显示等;

2) 后台管理:管理员管理和处理数据库商品更新等。

2.会员模块

2.1用户注册页面

用户注册 注册信息:用户名和密码可以使用(a-z,0-9,A-Z)其中密码提问和密码回答帮助你找回密码(带 * 为必填项)用户名 *密码 * 【UserName 】 【btn检测用户名】 【UserPwd 】 【UserPwd 】【PwdQuestion 】【PwdAnswer 】确定密码 *密码提问 *密码回答 *联系信息:请如实填写方便我们及时与您联系真实姓名性别 【UserRealName 】【UserSex 】【UserMobile 】【UserEmail 】【UserTelphone 】【UserPostCode 】 手机号码Email电话邮编 详细地址【UserAddress 】【btn注册 UserReg 】 【btn清空reset】 图2-2.1-用户注册

///

/// 用户名注册校验 ///

If(用户名==空)

{

提示“用户名不能为空”

返回

}

Else

{

UserNameChk 校验系统中是否存在指定用户并传给userID

if(userID>0)

{

提示“这个用户名还未注册,赶快注册吧!!”

返回

}}

///

/// 用户注册 ///

If(用户名==0)

{

提示“用户名不能为空”

regChkPass值为 0

返回

}

Else{

UserNameChk 校验系统中是否存在指定用户并传给userID

If(userID>0)

{

提示“用户名已经被注册,请换个名字再试试”

regChkPass值为 0

返回

}

}

If(UserPwd==0)

{

提示“密码不能为空!”

regChkPass值为 0

返回

}

If(确认密码==0)

{

提示“确认密码不能为空!”

regChkPass值为 0

返回

}

Else

{

If(确认密码!=密码)

{

提示“确认密码错误!”

regChkPass值为 0

返回

}}

If(密码提问为空)

{

提示“密码提问不能为空!”

regChkPass值为 0

返回

}

If(密码回答==0)

{

提示“密码回答不能为空!”

regChkPass值为 0

返回

}

If(真实姓名==0)

{

提示“真实姓名不能为空!”

regChkPass值为 0

返回

}

If(手机号码==0)

{

提示“手机号码不能为空!”

regChkPass值为 0

返回

}

Else

{

If(UserMobile长度不为十一位|| UserMobile前两位不为“13”)

提示“手机号码错误!”

regChkPass值为 0

返回

}

}

If(UserTelphone1==0|| UserTelphone2==0)

{

提示“电话号码不能为空”

regChkPass值为 0

返回

}

If(UserPostcode==0)

{

提示“电子邮件不能为空”

regChkPass值为 0

返回

}

If(UserAddress==0)

{

提示“详细地址不能为空”

regChkPass值为 0

返回

}

If(regChkPass 值为 1)

{

StringUtil.CheckStr对输入的用户名进行过滤传给字符串userName

StringUtil.CheckStr对输入的密码进行解密传给字符串userPwd

StringUtil.CheckStr方法对输入的PwdQuestion过滤传给字符串pwdQuestion

StringUtil.CheckStr方法对输入的PwdAnswer过滤传给字符串PwdAnswer

StringUtil.CheckStr方法对输入的UserRealName过滤传给字符串UserRealName

StringUtil.CheckStr方法对输入的UserSex过滤传给字符串UserSex

StringUtil.CheckStr方法对输入的UserTelphone1和UserTelphone2过滤传给字符串userTelphone

StringUtil.CheckStr方法对输入的UserEmail过滤传给字符串UserEmail

StringUtil.CheckStr方法对输入的UserMobile过滤传给字符串userMobile

StringUtil.CheckStr方法对输入的UserPostcode过滤传给字符串userPostcode

StringUtil.CheckStr方法对输入的UserAddress过滤传给字符串userAddress

Request对象获取客户端地址并传给userLastVisitIP

调用UserReg函数把(userName, userPwd, pwdQuestion, pwdAnswer, userRealName, userSex, userTelphone, userEmail, userMobile, userPostcode, userAddress, userLastVisitIP)添加到表中,并把返回值传给变量regOK

If(regOk > 0)

{

把userName传给Session对象中的UserName

UserChk检查userName和 userPwd传给Session对象中的UserID

}else

{

提示“注册失败,请稍后回来!!”

返回}

2.2忘记密码页面

忘记密码1)忘记密码(提交用户名)

提示:请输入用户名,我们将确认您的身份

用户名: 【UserName 】 【btn提交submit】 【btn清空reset】图2-2.2-1-忘记密码(提交用户名)

///

/// 提交用户名 ///

If(UserName==0)

{

提示“用户名不能为空”

返回

}

Else

{

CheckStr过滤UserName的特殊字符并传给字符串userName

创建一个DataTable数据表把userName插入到数据表中

If(myDtb.DefaultView.Count > 0)

{

把mydtb的密码提问赋值给PwdQuestion

把mydtb的密码回答赋值给PwdAnswer

把mydtb的用户ID赋值给userID

定义answerNum 的只为 0

调用SetShow函数并传入三个参数

}Else

{

提示“对不起,没有找到该用户名”

退出}

}

忘记密码(回答密码提问)2)忘记密码(回答密码提问)

提示:请输入用户名,我们将确认您的身份 密码提示: 【PwdQuestion】密码回答:【PwdAnswer】 【btn提交】 【btn清空】 图2-2.2-2-忘记密码(回答密码提问)

///

/// 回答密码提问 ///

If(用户输入的密码回答为空)

{

提示“密码回答不能为空!”

调用SetShow函数并传入三个参数

返回}

Else{

If(answerNum<3)

{

If(用户输入密码回答==密码回答)

{

answerNum的值为0

调用SetShow函数并传入三个参数

}

Else

{

answerNum的值加1

提示“密码回答错误,请重新输入!”

调用SetShow函数并传入三个参数

返回

}}

Else{

提示“密码回答错误超过3次,请以后再来!”

页面跳转到Default.aspx

}

密码修改}

}

3)忘记密码(密码修改)

提示:请输入您的新密码 新密码 用户名

【UserPwd】 确认密码 【UserPwd】 【提交】 【清空】 【UserName】

图2-2.2-3-忘记密码(密码修改)

///

If(输入的密码为空)

{

提示“密码不能为空!”

调用SetShow函数并传入三个参数

返回

}

If (输入的确认密码为空)

{

提示“确认密码不能为空”

调用SetShow函数并传入三个参数

返回

}

Else

{

If (输入确认密码不等于密码)

{

提示“确认密码错误”

调用SetShow函数并传入三个参数

返回

}

Else

{

调用 Md5.GetMD5_16X方法对密码字符串进行解密并传值给userPwd

调用Modifypwd修改用户名和密码,并把返回值传给modifok

If(modifok>0)

{

为Username设置session参数username

提示“密码修改成功!”

跳转到Default.aspx页面

}

Else

{

提示“新密码输入失败,请稍后再来!”

调用SetShow函数并传入三个参数

返回

}

}

}

}

2.3用户资料修改页面

我的资料 提示:您的信息如下,可随时修改(其中带 * 为必填项)

密码提问 * 密码回答 * 真实姓名 * 性别 年龄 工作职位 个人收入 最高学历 所在省份 所在城市 手机号码 Email 邮编 详细地址 用户名 * 【PwdQuestion 】 【PwdAnswer 】 【UserRealName 】 【UserSex 】 【UserAge 】 【UserName 】【UserOccupation 】【UserIncome 】 【UserProvince 】 【UserCity 】 【UserMobile 】 【UserEmail 】 【UserPostCode 】 【UserAddress 】 【UserEducation 】【btn提交】 【btn清空reset】

图2-2.3-用户资料修改页面

///

/// 修改用户资料 ///

if (输入的userName为空) {

提示(\您的登录失效!\ modifyChkPass值为0返回 }

if (PwdQuestion为空) {

提示(\密码提问不能为空!\ modifyChkPass 值为0 返回

}

if (PwdAnswer值为空) {

提示(\密码回答不能为空!\ modifyChkPass 值为0

返回 }

if (UserRealName值为空) {

提示(\真实姓名不能为空!\ modifyChkPass =值为0; 返回

}

if (UserMobile值为空) {

提示(\手机号码不能为空!\ modifyChkPass =值为0; 返回} else {

if ((UserMobile的值前两位不为11) || (UserMobile的值前两位不为13)) {

提示(\手机号码错误!\ modifyChkPass 值为 0; 返回 } }

if (UserTelphone为空) {

提示(\电话号码不能为空!\ modifyChkPass 值为0; 返回 }

if (UserEmail为空) {

提示(\电子邮件不能为空!\ modifyChkPass 值为 0; 返回 }

if (UserPostcode为空) {

提示(\邮政编码不能为空!\ modifyChkPass 值为 0; 返回 }

if (UserAddress为空) {

提示(\详细地址不能为空!\ modifyChkPass 值为0; 返回 }

if (modifyChkPass 值等于1) { 略

if (modifyOk > 0) {

提示(\修改成功,欢迎使用!\ 页面转到(\} else {

提示(\修改失败,请稍后再来!\ 返回 } } }

2.4密码修改页面

忘记密码 提示:由于密码已经采用MD5加密,因此请输入您的新密码 用户名: 【UserName 】 密 码:【UserPwd 】 确认密码:【UserPwd 】 【提交btn】 【清空btn】 ///

/// 密码修改 /// if (UserPwd为空) {

提示(\密码不能为空!\ 返回 }

if (UserPwdChk为空) {

提示(\确认密码不能为空!\ 返回 } else

2-2.4-密码修改页面

图 {

if (输入的UserPwdChk不等于UserPwd) {

提示(\确认密码错误!\ 返回 } else {

Md5.GetMD5_16X对UserPwd解密传给userPwd

int modifyOk = User.ModifyPwd(userName, userPwd); if (modifyOk 大于值0) {

提示(\修改成功,欢迎使用!\ 页面转到(\} else {

提示(\新密码输入失败,请稍后再来!\ 返回 } } } }

3.后台管理-商品管理模块

3.1.增加新商品一级分类

增加新一级分类分类名称:* Text:GoodsName分类描述:* Text:GoodsContent 显示级别:* GoodsOrder btn:Items 是否审核:* GoodsCheck btn:Items 提交 清空 btn:IsAdd btn:Reset

图3-3.1-增加新一级分类

If(商品分类名称==空)

{

则提示:“分类名称不能为空”;

退出;

}

Else

{

把所有过滤后的文本框中的值传给相应的字段:

把字段中的值都插入到insertOK中;

If(insertOK==1)

{

则提示:“增加成功,欢迎使用!”;

跳转到“GoodsTypeList.aspx页面”;

}

Else

{

则提示“增加失败,请稍候再来!”;

退出;

}

}

3.2.编辑新商品一级分类

编辑商品一级分类分类名称:*

Text:GoodsName分类描述:* Text:GoodsContent 显示级别:* GoodsOrder btn:Items 是否审核:* GoodsCheck btn:Items 提交 清空 删除: btn:IsModifyBtn:Reset Btn: IsDelete

图3-3.2-编辑商品一级分类

If(商品分类名称==空)

{

则提示:“分类名称不能为空”;

退出;

}

Else

{

把所有过滤后的文本框中的值传给相应的字段:

把字段中的值都插入到editOk中;

If(editOk==1)

{

则提示:“编辑成功,欢迎使用!”;

跳转到“GoodsTypeList.aspx页面”;

}

Else

{

则提示“编辑失败,请稍候再来!”;

退出;

}

}

3.3.编辑新商品二级分类

增加新商品二级分类一级分类:*

btn:ItemsTypeID 分类名称:* Text:GoodsName 分类描述:* Text:GoodsContent 显示级别:* GoodsOrder btn:Items 是否审核:* GoodsCheck btn:Items 提交 清空 btn:IsModify Btn:Reset

If(商品二级分类名称==空)

{

则提示:“二级分类名称不能为空”;

退出;

}

Else

{

把所有过滤后的文本框中的值传给相应的字段:

把字段中的值都插入到insertOK中;

If(insertOK==1)

{

则提示:“增加成功,欢迎使用!”;

跳转到“GoodsTypeList.aspx页面”;

}

Else

删除: Btn: IsDelete 图3-3.3-编辑商品二级分类

{

则提示“增加失败,请稍候再来!”;

退出;

}

}

3.4.增加新商品信息

增加新商品信息一级分类:*二级分类:*商品编号:*商品型号:

btn:Items TypeID BorderIDbtn:ItemsText:GoodsCode Text:GoodsTypeCodeText:GoodsNameText:GoodsKeysText:GoodsTextGoodsContent商品名称:*关 键 字:商品简介: 商品描述: 商品小图片: 路径 浏览

重新上传 路径 浏览 商品大图片: btn:Items重新上传商品品牌: Text:GoodsPT市 场 价:*优 惠 价:*VIP 价:*Text:GoodsPriceShopText:GoodsPriceUserText:GoodsPriceVIPGoodsPricePer 折扣数值:*上市时间:*是否新品:*是否推荐:*显示级别:*是否审查:*审 查 员:*提交 Text:GoodsOnTimeGoodsIsNew btn:Itemsbtn:Itemsbtn:Itemsbtn:ItemsGoodsIsVouchGoodsOrderGoodsCheckText:GoodsCheckAdmin 清空 btn:IsAdd btn:Reset

图3-3.4-编辑商品二级分类

If(如果没有选择商品一级分类的ID)

{

则提示:“请选择一级分类”;

定义addChkPass = 0;

退出;

}

If(如果没有选择商品二级分类的ID)

{

则提示:“请选择二级分类”;

定义addChkPass = 0;

退出;

}

If(如果商品编号==空)

{

则提示:“商品编号不能为空”;

定义addChkPass = 0;

退出;

}

If(如果商品名称==空)

{

则提示:“商品名称不能为空”;

定义addChkPass = 0;

退出;

}

If(如果商品市场价==空)

{

则提示:“商品市场价不能为空”;

定义addChkPass = 0;

退出;

}

Else

If (商品市场价的文本框的内容不是数字类型)

{

则提示:“商品市场价必须为数字!”;

定义addChkPass = 0;

退出;

}

.

.

.

If(如果商品Vip价==空)

{

则提示:“商品Vip价不能为空”;

定义addChkPass = 0;

退出;

}

Else

If (商品Vip价的文本框的内容不是数字类型)

{

则提示:“商品Vip价必须为数字!”;

定义addChkPass = 0;

退出;

}

If(addChkPass = =1)

{

把文本框中的值传给相应的字段;

把商品一级分类、二级分类、商品名称等值插入到addOK中;

If (addOK中不为空)

{

则提示:“新商品增加成功!”;

页面条转到“GoodsInfoList.aspx” 商品信息管理页面

}

Else

{

则提示:“新商品增加失败,请稍候再来!”;

退出;

}

}

}

4.订单生成购物车及商品搜索和收藏

4.1.搜索商品按钮页面

点击搜索商品按钮页面

标签 GoodsSearch_Click标签页 Label4文本框 RadioButtonList商品名称: RadioButtonList关键字: 图4-4.1-搜索商品按钮页面

点击搜索商品按钮

if (SearchKeys > 0)

{

返回父窗口(\打开GoodsSearch.aspx页面SearchKeys=\字符串+ \字符串)

Label4=“”

}

Else

{

Label4= \商品名或关键字不能为空!\

}

4.2.我的购物车页面

我的购物车页面

提取购物车中商品信息

定义int型num1=0

定义int型num2=0

我的购物车中 label2 共有商品 种 Label3 总数量 件 Label4 总计 元 图4-4.2-我的购物车页面

定义double型num3=0.00

建立DataTable对象

把userID, userCookID给GetGoodsShoppingCart再传给myDtb

if (DefaultView> 0)

{

for (定义int形 i = 0; i < myDtb.Rows.Count; i++)

{

num1 = num1 + 1;

调用myDtb对象中的Rows[i]子对象,并返回值把返回值转换成INT型+num2赋值给num2

调用myDtb对象中的Rows[i]子对象,并返回值把返回值转换成double型+num3赋值给num3

}

}

Label2文本框= num1的字符串

Label3文本框= num2的字符串

Label5文本框= num3的字符串

4.3.商品搜索页面

商品搜索页面商品图片 商品型号:帮定数据库 上市日期:帮定数据库 市场价:¥帮定数据库 商品名称:帮定数据库 商品简介:帮定数据库 会员价:帮定数据库 VIP价:帮定数据库 OrderGoods.aspx OrderGoods.aspx

图4-4.3-商品搜索页面

获取搜索的商品

if (searchKeysType == 0)

{

查询数据库,并把结果赋值给 cmd对象中CommandText文本框

}

Else

{

查询数据库,并把结果赋值给 cmd对象中CommandText文本框

}

建立SqlDataAdapter对象

建立DataSet对象

4.4.我的购物车页面2

我的购物车页面商品名称 总价 市场价 会员价 数量 删除 GoodsShoppingCartGoodsNameGoodsShoppingCartGoodsPriceShopGoodsShoppingCartGoodsPriceUserGoodsShoppingCartGoodsNumberGoodsShoppingCartGoodsPriceAllDelGoods 购物车里共有 label1 商品 种 Label2 总数: 件 Label3 共计: 元 ibtnModify_Click ibtnReturn_Click ibtnGo_Click ibtnDelete_Click

图4-4.4-我的购物车页面2

删除购物车中的商品

定义int形flag=0

if(userID > 0)

{

查询数据库,并把结果赋值给 cmd对象中CommandText文本框

}

Else

{

查询数据库,并把结果赋值给 cmd对象中CommandText文本框

}

清空购物车中的商品信息

定义int形flag=0

if(userID > 0)

{

查询数据库,并把结果赋值给 cmd对象中CommandText文本框

}

Else

{

查询数据库,并把结果赋值给 cmd对象中CommandText文本框

}

修改购物车中的商品数量

建立DataTable对象

把userID, userCookID给GetGoodsShoppingCart并传给myDtb

if (DefaultView > 0)

{

for (定义int型i = 0; i < myDtb.Rows.Count; i++)

{

定义字符串变量modifyName,调用myDtb对象中Rows[i]子对象,把返回值和\进行连接并赋值给变量modifyName

调用myDtb对象中的Rows[i]子对象,并返回值,把值给newGoodsNumber

定义modifyOk变量,调用ShoppingCart对象ModifyGoodsShoppingCart方法

把userID,userCookID,调用myDtb对象中子对象Rows,返回值转化成INT型,调用Request对象中ToString方法,newGoodsNumber 的5个参数传进去

}

}

4.5.收藏夹页面

收藏夹页面 商品名称 市场价 会员价 收藏时间 删除 GoodsShoppingCaGoodsShoppingCaGoodsShoppingCaGoodsShoppingCaDelGoodrt rt rt rt s GoodsName GoodsPriceShoGoodsPriceUser GoodsNumber p 图4-4.5-收藏夹页面

增加商品到我的收藏夹 定义int 型flag = 0;

定义string型 strSql1 = \定义string 型strSql2 = \

查询数据库,并把结果赋值给 cmd对象中CommandText文本框 查询数据库,并把结果赋值给 strSql1 查询数据库,并把结果赋值给 strSql2 建立SqlDataAdapter对象 建立DataSet对象 建立DataSet对象

4.6.会员登录界面

会员登录界面 用户名: Text:username Text:userpwd UserOrder UserOrder 密码: Reset 图4-4.6-会员登录界面

用户登录

If (username==0||userpwd==0) {

提示(“用户名或密码不能为空”) 返回 } Else {

过滤username字符串,把值赋给userName

过滤userpwd字符串, 把解密且过滤后的的密码字符串赋值给userPwd userName, userPwd给UserChk,并把结果给userID if (userID > 0) {

为USERNAME设置SESSION参数并赋值 为userID设置SESSION参数并赋值

调用SETSHOW方法并传入(false, true, false, false, false) 调用GetUsers方法并为UserName设置Session参数 把用户名和地址给WriteVisitLog并把结果给writeVisitLog 把用户名和地址给WriteVisitUsers并把结果给writeVisitUsers

把userID, userCookID传给GoodsShoppingCartToUser并把结果给bindUser 把userID, userCookID传给GoodsOrderToUser并把结果给bindOrder }

Else {

调用SETSHOW方法并传入(true, false, false, false, false) 提示(“用户名或密码错误”) 返回 } }

4.7.收货人信息提交页面

收货人信息提交页面 收获人姓名: Text:OrderUserRealName Text:OrderUserRealName 收获人详细地址 Text:OrderUserRealName 收获人邮政编码 Text: OrderUserPostcode 收获人联系电话 Text: OrderUserTelphone 收获人性别 收获人电子邮件 Text: OrderUserEmail UserOrder Reset 图4-4.7-收货人信息提交页面

收货人信息提交

定义userOrderChkPass = 1 If(OrderUserRealName==0) {

提示(收货人姓名不能为空) 并且userOrderChkPass = 0 返回 }

If(OrderUserTelphone==0) {

提示(联系电话不能为空) 并且userOrderChkPass = 0 返回 }

本文来源:https://www.bwwdw.com/article/ghk6.html

Top