




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、模块开发卷宗v1.0december 32010网上书城1 目录目录一、登陆注册模块开发卷宗一、登陆注册模块开发卷宗.31 标题.32 模块开发情况表.33 功能说明.34 设计说明.45 原代码清单.66 测试说明.237 复审的结论.25二、订单查询模块开发卷宗二、订单查询模块开发卷宗.251 标题.252 模块开发情况表.253 功能说明.254 设计说明.265 原代码清.266 测试说明.297 复审的结论.30三、购物车模块开发卷宗三、购物车模块开发卷宗.301 标题.302 模块开发情况表.303 功能说明.304 设计说明.315 原代码清单.315.1 购物车确认模块代码:.
2、316 测试说明.407 复审的结论.41四、图书分类模块开发卷宗四、图书分类模块开发卷宗.411 标题.412 模块开发情况表.413 功能说明.414 设计说明.415 原代码清单.426 测试说明.457 复审的结论.45五、图书推荐模块开发卷宗五、图书推荐模块开发卷宗.451 标题.4522 模块开发情况.453 功能说明.454 设计说明.465 原代码清单.466 测试说明.487 复审的结论.48六、图书管理模块开发卷宗六、图书管理模块开发卷宗.481 标题.482 模块开发情况表.493 功能说明.494 设计说明.495 原代码清单.496 测试说明.517 复审的结论.51
3、七、搜索模块开发卷宗七、搜索模块开发卷宗.511 标题.512 模块开发情况表.523 功能说明.524 设计说明.525 原代码清单.526 测试说明.537 复审的结论.55八、会员管理模块开发卷宗八、会员管理模块开发卷宗.561 标题.562 模块开发情况表.563 功能说明.564 设计说明.565 原代码清单.566 测试说明.587 复审的结论.59九、订单管理模块开发卷宗九、订单管理模块开发卷宗.591 标题.592 模块开发情况表.593 功能说明.594 设计说明.605 原代码清单.606 测试说明.627 复审的结论.623一、登陆注册模块开发卷宗一、登陆注册模块开发卷宗
4、1 标题标题软件系统名称和标识符:网上书城模块名称和标识符:登录注册模块程序编制员签名:*卷宗的修改文本序号修改完成日期 :2010-11-29卷宗序号:1编排日期:2010-11-252 模块开发情况表模块开发情况表由于是课程设计项目,暂不考虑。3 功能说明功能说明扼要说明本模块(或本组模块)的功能,主要是输入、要求的处理、输出。可以从系统设计说明书中摘录。同时列出在软件需求说明书中对这些功能的说明的章、条、款。(1)用户注册功能:用户输入姓名,用户名,密码,性别,邮箱, 真实姓名,邮编,详细住址。姓名栏以及用户名栏添加了空验证控件,如果用户未填入任何信息则给出提示提示用户填入信息。邮箱栏设
5、置了格式验证要求用户输入的信息必须符合%.com 的格式。网页整体设置了错误信息收集控件能够显示所有用户输入信息的错误提示给出提示。当用户输入的信息全部符合规则后才可进行注册操作。把用户输入的信息全部装到一个实体类中,然后调用业务逻辑层的插入操作执行注册,注册会先判断是否已经存在该用户,如果存在则插入失败,如果不存在该用户才会注册成功。输入项:邮箱,用户名,密码 输出项:成功则更新数据库,跳转主页面;失败则输出错误提示的信息。(2)会员登录功能:会员登录时,需要填写会员名,密码,和随机动态生成的验证码,其是为了防止恶意攻击而设置。会员登录后才可以实现购物车,以及查看订单等功能。 管理员登录功能
6、:管理员登录时,需要填写会员名,密码,和随机动态生成的验证码,其是为了防止恶意攻击而设置。登陆后的管理员对网站进行管理。输入项:姓名,密码,验证码 输出项:成功则管理员跳转到管理中心页面,普通会员跳转到主页面;失败则输出错误提示的信息。44 设计说明设计说明说明本模块(或本组模块)的设计考虑,包括:a 在系统设计说明书中有关对本模块(或本组模块)设计考虑的叙述,包括本模块在软件系统中所处的层次,它同其他模块的接口;b 在程序设计说明书中有关对本模块(或本组模块)的设计考虑,包括本模块的算法、处理流程、牵涉到的数据文卷设计限制、驱动方式和出错信息等;c 在编制目前已通过全部测试的源代码时实际使用
7、设的计考虑。 a. 本模块属于系统模块层次中第一层,订单模块、购物车模块等模块调用。b. 本模的注册时处理流程如下:先接收用户输入的注册数据,成功则更新数据库中的 users 表,同时跳转到网站主页,否则出错则输出出错信息。登录时的处理流程如下:接受用户输入的用户名、密码、随机验证码,与数据库中users 表取出数据进行比较,出错则输出出错信息提示,若成功则判断 users 表中isadmin 字段的值,如果值为 0,则为普通会员,跳转到系统主页,如果值为 1,则为管理员,跳转到管理中心页面。 55 原代码清单原代码清单要给出所产生的本模块(或本组模块)的第一份无语法错的源代码清单以及已通过全
8、部测试的当前有效的源代码清单。(1)主页 default.aspx 部分中的 html 源码如下(登录的窗体设计代码): 会员: 6 验证码: 密码: 新用户注册 (2)主页 default.aspx.cs 中的源码如下(登录的窗体实现代码):using system;using system.data;using syst
9、em.configuration;7using system.collections;using system.web;using system.web.security;using system.web.ui;using system.web.ui.webcontrols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrols;using system.data.sqlclient;using system.text;public partial class _default : system.web
10、.ui.page /private static string svalidator = ; /private brush brushlist = new brush32; /private readonly string imagepath = ; private static string svalidator = ; private stringbuilder letterlist = new stringbuilder(); private readonly string svalidatorimageurl = validateimage.aspx?validator=; prote
11、cted void page_load(object sender, eventargs e) if (!ispostback) svalidator = createvalidatestring(6); validateimage.imageurl = svalidatorimageurl + svalidator; tbx_user.text = ; tbx_pwd.text = ; /读取数据库连接字符串 string settings = convert.tostring(configurationmanager.connectionstringssqlservices); /创建数据
12、库连接 sqlconnection myconn = new sqlconnection(settings); /打开数据库连接 myconn.open(); sqlcommand mycmd = new sqlcommand(mostsoldbooks, myconn); sqldatareader result = mycmd.executereader(); dl_mostsold.datasource = result; dl_mostsold.databind(); lbl_msg1.visible = false;8 lbl_msg2.visible = false; if (se
13、ssionusername = null | sessionusername.tostring() = ) p_login.visible = true; p_successlogin.visible = false; else p_login.visible = false; p_successlogin.visible = true; lbl_user.text = sessionusername.tostring(); lbl_rank.text = sessionlevel.tostring(); protected void btn_login_click(object sender
14、, eventargs e) string username = tbx_user.text; string password = tbx_pwd.text; if (username = ) lbl_msg1.visible = true; lbl_msg1.text = 请输入用户名; else if (password = ) lbl_msg2.visible = true; lbl_msg2.text = 请输入密码; else if (validator.text != svalidator) /message.text = 验证码输入错误,请重新输入验证码!; svalidator
15、 = createvalidatestring(6); validateimage.imageurl = svalidatorimageurl + svalidator; return; else /读取数据库连接字符串 string settings = convert.tostring(configurationmanager.connectionstringssqlservices);9 /创建数据库连接对象 sqlconnection myconn = new sqlconnection(settings); /打开数据库连接 myconn.open(); /读取用户信息 string
16、 mysql = select * from users where username= + + username + + and password= + + password + +and isadmin=0; string mysql1 = select * from users where username= + + username + + and password= + + password + + and isadmin=1; /response.write(mysql); /response.end(); /创建命令对象 sqlcommand mycmd = new sqlcom
17、mand(mysql, myconn); sqlcommand mycmd1 = new sqlcommand(mysql1, myconn); /创建适配器并执行命令 sqldatareader mydr = mycmd.executereader(); try if (mydr.read() /把用户名写入session对象 sessionusername = mydr1; /把权限编号写入session对象 sessionlevel = mydrlevel.tostring(); /隐藏登录信息 p_login.visible = false; /显示用户信息 p_successlogi
18、n.visible = true; lbl_user.text = sessionusername.tostring(); lbl_rank.text = sessionlevel.tostring(); string userid = mydruserid.tostring(); sessionuserid = userid; /把用户名称添加到身份认证凭据中 /formsauthentication.redirectfromloginpage(userid, true); /formsauthentication. bookstore logindb = new bookstore();
19、string tempcartid = logindb.getshoppingcartid(); logindb.transplantshoppingcart(tempcartid, userid); else /显示错误信息10 lbl_msg2.visible = true; lbl_msg2.text = 用户名或密码错误; finally /关闭操作 mydr.close(); sqldatareader mydr1 = mycmd1.executereader(); try if (mydr1.read() /把用户名写入session对象 sessionusername = myd
20、r11; /把权限编号写入session对象 sessionlevel = mydr1level.tostring(); /隐藏登录信息 p_login.visible = false; /显示用户信息 p_successlogin.visible = true; lbl_user.text = sessionusername.tostring(); lbl_rank.text = sessionlevel.tostring(); string userid = mydr1userid.tostring(); sessionuserid = userid; /把用户名称添加到身份认证凭据中 /
21、formsauthentication.redirectfromloginpage(userid, true); /formsauthentication. bookstore logindb = new bookstore(); string tempcartid = logindb.getshoppingcartid(); logindb.transplantshoppingcart(tempcartid, userid); response.redirect(/default.aspx); else /显示错误信息 lbl_msg2.visible = true; lbl_msg2.te
22、xt = 用户名或密码错误; 11 finally /关闭操作 mydr1.close(); myconn.close(); protected void cancelbtn_click(object sender, eventargs e) /清空用户名称和密码输入框以及验证码输入框 tbx_user.text = tbx_pwd.text = validator.text =; /创建验证字符串 svalidator = createvalidatestring(6); validateimage.imageurl = svalidatorimageurl + svalidator; pr
23、ivate int getrandomint(int min, int max) random random = new random(); return (random.next(min, max); / / 创建验证字符串 / / / private string createvalidatestring(int nlen) /初始化 initletterlist(); /创建一个stringbuilder对象 stringbuilder sb = new stringbuilder(nlen); for (int i = 0; i nlen; i+) int index = getran
24、domint(0, letterlist.length - 1); sb.append(letterlistindex.tostring(); letterlist.remove(index, 1); return (sb.tostring();12 / / 创建所有字符,为创建验证字符串做准备 / private void initletterlist() for (int i = 0; i 10; i+) letterlist.append(i.tostring(); for (int i = 0; i 26; i+) letterlist.append(char)(int)a + i).
25、tostring(); for (int i = 0; i 26; i+) letterlist.append(char)(int)a + i).tostring(); (3)页面 validateimage.aspx 用来创建显示验证字符串的图片,并在该图片上添加验证码字符串。该页面的 html 源码如下: untitled page (4)页面 validateimage.aspx.cs 中的源码如下:using system;using system.data;using system.configuration;using system.collections;using system
26、.web;13using system.web.security;using system.web.ui;using system.web.ui.webcontrols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrols;using system.drawing.drawing2d;using system.drawing.imaging;using system.drawing.text;using system.drawing;using system.text;public partial c
27、lass validateimage : system.web.ui.page private readonly string imagepath = images/validator.jpg; private string svalidator = ;private brush brushlist = new brush32; private void page_load(object sender, system.eventargs e) /初始化initbrushlist();if(request.paramsvalidator != null)/获取验证字符串svalidator =
28、request.paramsvalidator.tostring(); /创建bmp位图 bitmap bitmapimage = new system.drawing.bitmap(server.mappath(imagepath); graphics graphicimage = graphics.fromimage(bitmapimage); /设置画笔的输出模式 graphicimage.smoothingmode = smoothingmode.antialias; /添加文本字符串for(int i = 0; i svalidator.length; i+)graphicimage
29、.drawstring(svalidatori.tostring(),new font(arial,20,(fontstyle)createrandomfontstyle(getrandomint(0,1000),brushlistgetrandomint(0,brushlist.length - 1),new pointf(i * 15,getrandomint(-5,5);14/graphicimage.drawstring(svalidator, new font(arial, 20, (fontstyle)getrandomint(0,4),systembrushes.windowte
30、xt, new point(0, 0); /设置图像输出的格式 response.contenttype = image/jpeg; /保存数据流 bitmapimage.save(response.outputstream, imageformat.jpeg); /释放占用的资源 graphicimage.dispose(); bitmapimage.dispose();response.end(); / / 创建一个随机数/ / / / private int getrandomint(int min,int max)random random = new random();return
31、(random.next(min,max);private int createrandomfontstyle(int random)if(random 200)return 0;if(random 400)return 1;if(random 600)return 2;if(random 800)return 3;15if(random 1000)return 4;return 4;/ / 初始化brush列表/ private void initbrushlist()brushlist0 = systembrushes.activeborder;brushlist1 = systembru
32、shes.activecaption;brushlist2 = systembrushes.activecaptiontext;brushlist3 = systembrushes.appworkspace;brushlist4 = systembrushes.buttonface;brushlist5 = systembrushes.buttonhighlight;brushlist6 = systembrushes.buttonshadow;brushlist7 = systembrushes.control;brushlist8 = systembrushes.controldark;b
33、rushlist9 = systembrushes.controldarkdark;brushlist10 = systembrushes.controllight;brushlist11 = systembrushes.controltext;brushlist12 = systembrushes.desktop;brushlist13 = systembrushes.gradientactivecaption;brushlist14 = systembrushes.gradientinactivecaption;brushlist15 = systembrushes.graytext;br
34、ushlist16 = systembrushes.highlight;brushlist17 = systembrushes.highlighttext;brushlist18 = systembrushes.hottrack;brushlist19 = systembrushes.inactiveborder;brushlist20 = systembrushes.inactivecaption;brushlist21 = systembrushes.inactivecaptiontext;brushlist22 = systembrushes.info;brushlist23 = sys
35、tembrushes.infotext;brushlist24 = systembrushes.menu;brushlist25 = systembrushes.menubar;brushlist26 = systembrushes.menuhighlight;brushlist27 = systembrushes.menutext;brushlist28 = systembrushes.scrollbar;brushlist29 = systembrushes.window;brushlist30 = systembrushes.windowframe;16brushlist31 = sys
36、tembrushes.windowtext;(5)注册页面 reg.aspx 中的 html 源码如下: 无标题页 购物车 | 订单查询 | 17 gzu605网上书城会员注册 电子邮件: 请填写正确常用的email以确保充分享受全面的服务 用户名: 请使用英文字母数字和下划线,长度为4-16。 密码: 密码可以使用4-12位的任意的非空白字符18 确认密码: 请重复密码 *网上书城v2010.0正式版 版权所有 gzu605小组* (6)注册页面 reg.aspx.cs 中的源码如下:using system;using system.data;usi
37、ng system.configuration;using system.collections;using system.web;19using system.web.security;using system.web.ui;using system.web.ui.webcontrols;using system.web.ui.webcontrols.webparts;using system.web.ui.htmlcontrols;using system.data.sqlclient;public partial class reg : system.web.ui.page protec
38、ted void page_load(object sender, eventargs e) protected void btn_reg_click(object sender, eventargs e) if (page.isvalid) if (isused() & usernamelength() & pwdlength() /读取数据库连接字符串 string settings = convert.tostring(configurationmanager.connectionstringssqlservices); /创建数据库连接对象 sqlconnection myconn =
39、 new sqlconnection(settings); /打开数据库连接 myconn.open(); /创建数据库命令 sqlcommand mycmd = new sqlcommand(adduser, myconn); /设置数据库命令类型为存储过程 mycmd.commandtype = commandtype.storedprocedure; sqlparameter accountparameter = mycmd.parameters.add(useraccount, sqldbtype.nvarchar, 50); accountparameter.value = tbx_
40、user.text; sqlparameter emailparameter = mycmd.parameters.add(email, sqldbtype.nvarchar, 50); emailparameter.value = tbx_email.text; sqlparameter userpwd = mycmd.parameters.add(userpwd, sqldbtype.nvarchar, 50); userpwd.value = tbx_pwd.text;20 sqlparameter userid = mycmd.parameters.add(userid, sqldbt
41、ype.int); userid.direction = parameterdirection.output; mycmd.executenonquery(); myconn.close(); sessionlevel = 1; sessionuserid = userid.value; /定向用户页面 response.redirect(/default.aspx); /检查用户名是否可用 public bool isused() /读取数据库连接字符串 string settings = convert.tostring(configurationmanager.connectionstr
42、ingssqlservices); /创建数据库连接对象 sqlconnection myconn = new sqlconnection(settings); /打开数据库连接 myconn.open(); /创建数据库命令 sqlcommand mycmd = new sqlcommand(checkuser, myconn); /设置数据库命令类型为存储过程 mycmd.commandtype = commandtype.storedprocedure; /命令参数 sqlparameter accountparameter = mycmd.parameters.add(useracco
43、unt, sqldbtype.nvarchar, 50); accountparameter.value = tbx_user.text.trim(); sqldatareader mydr = mycmd.executereader(); try if (mydr.read() lbl_msg.text = 该用户名已经被使用; lbl_msg.visible = true; return false; else21 return true; finally /关闭操作 mydr.close(); myconn.close(); public bool usernamelength() /获
44、取用户名长度 int length = tbx_user.text.length; if (length 16) lbl_msg.text = 用户名长度太长; lbl_msg.visible = true; return false; else return true; public bool pwdlength() /获取用户名长度 int length = tbx_pwd.text.length; if (length 12) lbl_msg.text = 密码太长; lbl_msg.visible = true; return false; else return true; prot
45、ected void btn_clear_click(object sender, eventargs e) tbx_user.text = ; tbx_email.text = ; 6 测试说明测试说明(1)注册功能的测试如下:测试项目名称: 网上书城系统测试用例编号:testcase-01测试项目标题:正常注册流程的功能测试测试人员:吴毅测试时间:2010-11-29测试内容:- 输入邮箱-输入用户名-输入密码-重复输入密码-点击确认测试环境与系统配置:软件环境:micrsoft windowxp2 + micrsoft ie80硬件环境:inter 双核 2.0g + 2g 内存网络环境
46、:2 人共享 1m 带宽测试输入数据1.全为空,不输入立即点击确认按钮2.填写不符合格式要求的数据3.填写正确的是的数据测试次数:每个测试过程做 3 次。23预期结果:1.全为空,则输出不能为空的出错提示2.输出请正确填写该数据的错误的提示。3.跳转到主页方便用户登录测试过程:打开注册页面,在注册文本框中分别输入 email 地址、用户名和密码、以及重复输入一次密码点击“确定”测试结果:1.全为空,则输出不能为空的出错提示2.输出请正确填写该数据的错误的提示。3.跳转到主页方便用户登录测试结论:测试的预期结果和测试的最终结果相符,注册功能得以实现。实现限制:备注:(2)登录功能的测试如下:测试
47、项目名称: 网上书城系统测试用例编号:testcase-02测试项目标题:正常登录流程的功能测试测试人员:吴毅测试时间:2010-11-29测试内容:-输入用户名-输入密码-输入随机验证码-点击登录测试环境与系统配置:软件环境:micrsoft windowxp2 + micrsoft ie80硬件环境:inter 双核 2.0g + 2g 内存网络环境:2 人共享 1m 带宽测试输入数据1.全为空,不输入立即点击登录按钮2.填写错误的用户名、密码或验证码3.填写正确的是普通会员4.填写正确的是管理员测试次数:每个测试过程做 3 次。预期结果:1.全为空,则输出不能为空的出错提示。2.输出用户
48、名、密码或验证码错误的提示。3.跳转到主页,显示欢迎该用户登录。4.跳转到管理中心页面。24测试过程:打开主页,在登录文本框中分别输入用户名和密码以及随机验证码,点击“登录”测试结果:1.全为空,则输出不能为空的出错提示。2.输出用户名、密码或验证码错误的提示。3.跳转到主页,显示欢迎该用户登录。4.跳转到管理中心页面。测试结论:测试的预期结果和测试的最终结果相符,登录功能得以实现。实现限制:备注:7 复审的结论复审的结论经过实际测试,得到的结果同软件需求说明书、详细设计说明书、程序设计说明书中规定的要求相符合,故登陆注册模块的代码编写正确,可以实现系统所要求的注册和功能。二、订单查询模块开发
49、卷宗二、订单查询模块开发卷宗1 标题标题软件系统名称:网上书城模块名称:订单管理模块程序编制员签名:王继卷宗序号:2修改完成日期 :2010 年 11 月 25 日2 模块开发情况表模块开发情况表暂不考虑。3 功能说明功能说明该模块用于对用户所有购物订单进行统计并汇总,对订单的详细信息进行加工,给用户反馈一个总账单。并且对用户提供订单查询义务。list.aspx,orderdetails.aspx。主要输入数据有,会员信息(名字,等级) ,订单信息(订单编号,订单日期,订单总金额,订单详细信25息) 。主要的输出数据有:会员信息,和订单信息。详细数据和输入数据相同。4 设计说明设计说明本模块主
50、要提供义务给用户使用,所以在登录模块之前,首先应该检查用户是否登录,用户是登录状态时,将之前在购物车模块中的数据回馈给用户,用户检查无误后,提交给数据库。用户查询订单时,从数据库中提出属于该用户的订单编号,通过订单编号可以查询到每一张订单的详细信息。5 原代码清原代码清 5.1订单回馈代码: 请核对和递交您的订单 /显示订单的详细信息 26 总额: 5.2订单提交的关键代码:/提交订单protected void submitbtn_click(object sender, eventargs e) bookstore checkoutdb = new bookstore(); / 获取最终用
51、户的购物车id string cartid = checkoutdb.getshoppingcartid(); / 获取最终用户的userid string customerid = user.identity.name; if (cartid != null) & (customerid != null) / 下订单 int orderid = checkoutdb.placeorder(customerid, cartid); header.text = 结算完成; ordermsglabel.text = 您的订单编号是: + orderid; submitbtn.visible = f
52、alse; 275.3 订单查询页面代码: 5.4订单查询关键代码:/加载本登录用户的订单信息protected void page_load(object sender, eventargs e) if (sessionusername = null | sessionusername.tostring() = ) response.redirect(login.aspx?url=orderlist.aspx); else string userid = sessionuserid.tostring(); bookstore orderhistory = new bookstore(); m
53、ylist.datasource = orderhistory.getuserorders(userid); mylist.databind();28 if (mylist.items.count = 0) myerror.text = 您目前没有订单可以显示。; mylist.visible = false; 6 测试说明测试说明 6.1 在用户没登陆的情况下,在正确的情况下转到用户登录界面(login.aspx) 。如图:6.2 在用户登录的情况下,应该输出用户名(username),用户等级(level).如图:6.3 当用户在登录状态下,点击“订单查询”时,会显示所有该用户的全部订单编
54、号(orderid) ,订单日期(orderdate),订单总金额(总金额=图书 1*数量+图书 2*数量+图书 n*数量) 。如图:296.4 当用户点击订单详细信息时,会将订单编号(orderid) ,订单日期(orderdate),订单中图书名称(bookname),市场价格(bookmarketprice),图书数量(bookquantity),会员价格(bookprice),订单总金额。如图:7 复审的结论复审的结论通过上面的测试,发现在订单查询模块得到的结果和预期的结果是完全相同的。但是,在订单提交时不会检查库存是否能够满足这张订单,所以就会造成销售部门与采购部门的不协调。30三、
55、购物车模块开发卷宗三、购物车模块开发卷宗1 标题标题软件系统名称:网上书城模块名称:购物继车模块程序编制员签名:王继卷宗序号:3修改完成日期 :2010 年 11 月 30 日2 模块开发情况表模块开发情况表暂不考虑。3 功能说明功能说明窗体名称:shoppingcart.aspx窗体描述:控件名称功能响应事件label. ordermsglabel用于显示订单的提示信息dataview. mydatagrid用于显示该次购物的图书名称,市场价格,数量,会员价格和总金额。button.updatebtn用于更新选定图书后购物车中的数据button .checkoutbtn用于用户结算本次购物的
56、总金额 窗体名称:checkout.aspx窗体描述:控件名称功能响应事件label. ordermsglabel用于显示订单的提示信息dataview. mydatagrid用于显示该次购物的图书名称,市场价格,数量,会员价格和总金额。label. totallbl用于显示本次购物金额button. submitbtn把本次购物信息转换成订单submitbtn_click 。314 设计说明设计说明本模块主要提供义务给用户使用,让用户能够对自己所买的书进行一个统计,了解这些书的一些基本情况,如价格,数量等,还能对自己所消费的金额进行一个计算。 5 原代码清单原代码清单5.1 购物车确认模块代
57、码: 网上书城 32 33 请核对和递交您的订单 34 总额: 35 5.2购物车模块代码: 网上书城 36 37 asp:label id=bookid runat=server text= 38 asp:textbox id=bookquantity runat=server columns=4 maxlength=3 text= width=40px 总额: 6 测试说明测试说明输入项名称标识数据类型输入方式输入媒介处理数据提交button. submitbtn无点击按钮鼠标修改数据库搜索窗体search
58、.ascx无点击按钮鼠标查询数据库图书名称booknamenvarchar(50)键盘输入键盘查询数据库市场价格bookmarketpricemoney点击按钮鼠标查询数据库数量bookamountint键盘输入键盘修改数据库40价格bookpricemoney点击按钮鼠标查询数据库金额小计unitcostint系统计算数据库修改数据库订单编号orderidint系统自动生成数据库查询数据库订单日期orderdatedate系统自动生成数据库查询数据库输出项名称标识数据类型输出方式输出媒介图书名称booknamenvarchar(50)写入数据库数据库市场价格bookmarketpricemo
59、ney写入数据库数据库数量bookamountint写入数据库数据库价格bookpricemoney写入数据库数据库金额小计unitcostint写入数据库数据库订单日期orderdatedatetime写入数据库数据库订单编号orderidint写入数据库数据库7 复审的结论复审的结论通过上面的测试,发现购物车的功能基本达到而来预期的要求,能够对用户提供一些有效的帮助,该模块的制作相当成功。四、图书分类模块开发卷宗四、图书分类模块开发卷宗1 标题标题软件系统名称和标识符:网上书城(bookshop)模块名称和标识符:图书分类程序编制员签名:肖枝兵卷宗的修改文本序号修改完成日期 2010-11
60、-25卷宗序号 4编排日期:2010-11-25412 模块开发情况表模块开发情况表暂不考虑。3 功能说明功能说明图书分类模块主要实现两个功能,分类编号和分类名称。网上书城最大的优点就是要方便买书的顾客的同时节约顾客的时间,本模块正是考虑到这一点而做,目的就是让顾客登录本网站后能尽快地找到他们喜欢的书籍及相关信息。考虑到客户端硬件的差异,本模块对主存的占有采用非常驻内存方式,可以从某种方式上降低对资源的损耗。4 设计说明设计说明本模块图书分类精度的要求对用户是透明的,由系统管理员进行操作,用户只需根据界面分类信息点击感兴趣的相应图书分类就会得到所有库存的相关书籍信息。由于所有书籍信息分类有系统
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 急诊科信息化建设规划计划
- 2024年辽宁省文化和旅游厅下属事业单位真题
- 2024年西安浐灞绿地小学招聘笔试真题
- 秋季传统文化教育实施计划
- 2024年海南省公安厅下属事业单位真题
- 改进检验科报告及时性的工作汇报计划
- 2024年临沂市各级机关录用公务员笔试真题
- 2024年呼和浩特市曙光学校教师招聘笔试真题
- 2024年河池市罗城法院招聘笔试真题
- 2024年甘肃省直机关选调公务员笔试真题
- 2025年江苏省盐城市亭湖区中考一模化学试题(原卷版+解析版)
- 美容师职业形象与礼仪考察试题及答案
- 困难气道管理指南2024
- 2025年新音乐节明星艺人歌手演出场费报价单
- (一模)青岛市2025年高三年级第一次适应性检测英语试卷(含标准答案)+听力材料
- 70岁老年人三力测试能力考试题库附答案
- 交通中国知到智慧树章节测试课后答案2024年秋上海工程技术大学
- GB/T 28185-2025城镇供热用换热机组
- 川教版(2019)小学信息技术四年级下册 第二单元第3节《图文并茂》教学设计及反思
- 烹饪原料知识试题库(附参考答案)
- 主动刹车防撞系统说课
评论
0/150
提交评论