《基于asp网上购物系统可行性报告.doc》由会员分享,可在线阅读,更多相关《基于asp网上购物系统可行性报告.doc(20页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章 可行性分析1.1技术可行性分析JSP(JavaServer Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准。JSP技术有点类似ASP技术,它是在传统的网页HTML文件 (*.htm,*.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件(*.jsp)。用JSP开发的Web应用是跨平台的,即能在Linux下运行,也能在其他操作系统上运行。JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。网页还能通过tags和 scriptlets访问存
2、在于服务端的资源的应用逻辑。JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。1.2经济可行性l 投资少,回收快。一项针对中国中小企业的情况调查显示,个人在网下启动销售公司的平均费用至少5万元,而网上开店建店成本非常小。一般说,筹办一家网上的商店投入很小,不用去办营业执照,不用去租门面,不用囤积货品,所需资金不过1500元左右;网
3、上商店比同等规模的地面商店“租金”要低得多,同时租金不会因为营业面积的增加而增加,投资者也不用为延长营业时间而增加额外的费用。 l 基本不需要占压资金。传统商店的进货资金少则几千元,多则数万元,而网上商店则不需要压资金。 l 24小时营业时间。网上商店延长了商店的营业时间,一天24小时、一年365天不停地运作,无须专人值班看店,都可照常营业。传统店铺的营业时间一般为8-12小时,遇上坏天气或者老板、店员有急事也不得不暂时休息。 l 不受店面空间的限制。哪怕只是街边小店,在网上却可以拥有百货大楼那么大的店面,只要投资者愿意,可以摆上成千上万种商品。目前国内最大的专业拍卖网站同时在线的商品要超过1
4、0万件,已超过一些大超市。 l 不受地理位置影响。不管客户离店有多远,也不管顾客是国内还是国外,在网上,客户一样可以很方便地找到并购买商品。这令消费群体突破了地域的限制,变得无限广阔了。1.3法律可行性该平台是是由我们鸿羽软件开发工作室自主开发设计,因此不会构成侵权,在法律上是可行的。通过以上的研究和分析,认为系统开发所产生的效益是巨大的,所以开发本项目是可行的、必要的。第二章 需求分析2.1项目要求2.1.1系统目标网上购物系统不仅要有漂亮的网页,更要有严谨的规划,注重每一个细小的环节,这样才能使得在电子交易时避免不必要错误发生。我们将使用HTML、JSP等技术来编辑网页,并运用JDBC技术
5、把数据库和动态网页相关联。传统的管理信息系统信息获取方法是由专业文字录入人员将信息输入到管理系统的数据库中,这种方法在数据量不大时有很多的应用场合。当数据量比较大,并且有较强的专业性时,录入的费用和出错的可能性都相应上升。本设计在实际应用中的解决方案是建立网站, 以及自己的数据库,使得所需商品信息可以及时的保存、更新,可以更好的及时了解商品买卖的情况。 2.1.2系统功能需求通过对淘宝网,当当网等网上购物的认识和分析,我们对网上购物有了基本的了解,我们觉得该系统至少应该具有以下的一些基本功能:l 注册管理:能够对用户名,密码的简单验证;能够对电子邮箱,Email进行有效性验证;能够防止利用页面
6、刷新重复注册,以及已经注册的用户不能重复注册。l 商品浏览:分类显示商品;显示商品详情,提供购买链接;可以对商品进行模糊查询。浏览商品时不要求用户登录,但下订单前用户必须登录,对于浏览过的商品有历史记录。l 购物车管理:欲购买商品可以增添到购物车;也可以从购物车退回商品,清空购物车;对于同一件商品的多次购买只能在原来的商品上增添数量,还可以修改购物车中某个商品的数量,统计商品总金额。l 订单管理:只有登录的用户可下订单;用户可以查看自己的订单。管理员可以修改订单的状态。 l 商品管理:管理员可以增添商品分类;修改商品基本信息;增添商品时候可以上传图片。2.2系统使用本系统主要由两类人员使用,一
7、类是网站的管理人员以及相关业务人员,一类是用户,即购买商品的客户。2.3系统总体流程为了便于系统的模块划分,我们将业务流程分为前台和后台两大块。2.3.1前台主要业务流程 登录2.3.2后台主要业务流程 销售员 采购员 仓库管理员 CEO添加员工管理员工(对员工的增删改查)权限设置对员工的权限设置对商品进行管理2.4技术要求 开发本系统需要用到的技术有:html、css、js、jsp/servlet等web编程基础以及一定的java基础和对Mysql数据库的了解与运用。2.5开发团队鸿羽软件开发工作室2.6项目时间项目周期为五天,时间紧任务重,因此在项目期间每个成员都必须全力以赴。第三章 概要
8、设计3.1.设计目标本系统在设计时应该满足以下几个目标:l 采用人机对话的操作方式,界面设计美观友好、信息查询灵活、方便、快捷、准确、数据存储安全可靠。l 全面展示商城内所有商品,并可分类展示商品。l 为顾客提供一个方便、快捷的商品信息查询功能。采用模糊查询查询数据。l 网站注册用户可以随时修改自己的会员资料。l 实现网上购物。l 用户随时都可以查看自己的订单。l 对用户输入的数据,系统进行严格的数据检验,尽可能排除人为的错误。l 系统最大限度地实现了易维护性和易操作性。l 系统运行稳定、安全可靠。3.2 项目规划网上购物系统是一个典型的JSP数据库开发应用程序,由前台商品展示及销售、后台管理
9、2部分组成。l 前台商品展示及销售:该部分主要包括热销产品、购物车、会员管理、订单查询、商品查询等。前台功能模块划分图如下:l 后台管理:该部分主要对商城内的一些基础数据进行有效管理,包括商品管理、会员管理、员工管理、入库出库的管理等。后台功能模块划分图如下:后台后台首页员工管理客户管理商品管理订单管理数据统计欢迎界面公司文化公司制度添加员工管理员工权限设置查看客户信息商品录入商品查询商品更改订单查询查询物品信息订单处理查看销量3.2数据库设计通过对业务的分析,进行数据库的构建,初步构建的核心表有客户信息表(client_message)、商品信息表(dog_message)、权限管理表(us
10、er_message)、入库表(instock)、库存表(repertory)、订单表(order)、出库表(outstock)等。3.2.1数据库的核心字段见每个表:商品信息(电脑的信息) goods字段名数据类型长度允许空说明idint11not null默认自动增长namevarchar20freepricevarchar2nowpricevarchar255introducevarchar20numvarchar2picint2brand_iddatemarkvarchar10客户信息表 user字段名数据类型长度允许空说明idint11not null默认自动增长namevarcha
11、r20用户账号passwordvarchar20用户名ageint11手机号addressvarchar20电子邮箱emailvarchar2not null用户登录状态professionvarchar20密码reallyNamevarchar50真实姓名questionvarchar50问题resultvarchar50答案订单表 cs_order字段名数据类型长度允许空说明iddatenot null下单日期numberint10not null客户idnamevarchar20客户名称reallyNamevarchar50not null客户邮寄地址addressint10总量teld
12、ouble10总额setMoneyvarchar10订单编号postvarchar6订单状态bzvarchar300sumdoublesendint订单物品表 ordergoods字段名数据类型长度允许空说明idint10主订单编号orderNumberint10not null狗的idgoodsIdint10狗的名字goodsNamevarchar10数量pricedouble10零售单价number员工管理表字段名数据类型长度允许空说明idint11not null客户idnamevarchar10订货单编号passwordvarchar20typevarchar20主发货单 main_d
13、eliver字段名数据类型长度允许空说明deliver_datedatenot null发货日期namevarchar20not null销售人员countint10总件数moneydouble10总金额departmentvarchar20not null承运单位feedouble10not null运输费用remarkvarchar255备注从发货单 follow_deliver字段名数据类型长度允许空说明order_numbervarchar10not null订单编号countint10数量remarkvarchar255备注3.3.代码的主要规范此项目由我们虚拟企业全员参与,为了便于
14、项目的整合,我们制定了以下几点代码规范。3.3.1命名规范,取每一个名字都有其特定的意义。在遵循基本的java命名规范的基础上,取名要有其特定的意义,比如login.jsp,大家都懂得这是登录界面,如果给你一个名字为a.jsp的登陆界面,相信除了编写代码的人能够知道之外,别人都不知道它是什么。3.3.2基于MVC的原则制定了基本的分层分包原则。具体原则如下:工程名称:Eshop分包(类包):连接数据库的包 com.hy.dao 操作数据库的包 com.hy.DButil 服务器端控制包com.hy.control Web服务端提供服务的包 com.hy.web.service 主要的类包 co
15、m.hy.domain 网页样式分包: css包:页面共享 各页面单独的样式包 js包以页面为基准分包(多的话) img包以页面为准进行分包 jsp包一个模块放到一个包里面3.3.3利用svn进行版本的控制。具体控制方式如下:以一台主机安装svn服务端,设置帐号为yuanmaomao,密码为123456,其他成员安装svn客户端,可以进行代码的提交,并获取别人的代码,以供自己使用。成员随时更新自己的代码,以便于给组内成员提供最新的最合适的代码。也便于代码的统一。3.4系统体系结构3.4.1软件体系MyEclipse 8.5、Tomcat 6.0、MySQL 5.03.4.2硬件体系Firefo
16、x20.0.1第四章 详细设计4.1前台功能模块前台由用户使用,主要包括登录注册,个人中心,浏览商品,检索商品,用户购物模块。4.1.1登录注册模块登录:1.在登录界面通过js实现对用户的操作提示,用户输入完成后,点击登录,取得用户在登录界面输入的请求参数。2.在服务端检查用户名与密码是否匹配:首先检查填写规范问题(如不可为空等),然后查询数据库,看否存在该用户,且密码匹配,如果存在且密码匹配,再看是否已登录,否,则进行登录,更改数据库中用户的登录状态,实现页面的跳转,并在商城的每个页面显示对用户的欢迎。3.若是上述检查过程中出现任何错误,那么页面将重新定向回登录页面,方便用户继续操作。注册:
17、1. 在注册界面通过js实现对用户的操作提示,用户输入完成后,点击注册,取得注册界面的请求参数。2.窗体验证,窗体上的值不符合规定,用list收集错误信息。3.list不为空,则验证失败呢,list设为errors属性,存进去错误信息(setAttribute),转发给注册界面,进行提示,也就是跳回注册界面,在注册界面取得返回的错误信息(getAttribute),进行逐一显示提示。4.验证成功,进入欢迎界面,并创建用户数据库,停留几秒钟,进入登录界面4.1.2个人信息主要体现用户在本站的信息,可以查看自己的基本资料,修改资料(与注册功能类似),以及自己在网站的积分等情况。4.1.3浏览商品根
18、据商品呈现分为三大主要页面:首页呈现、分类呈现、详细呈现。首页呈现:首页主要提供用户导航,提供商品种类的链接,呈现本店最新最热的商品。其中固定不变的是导航与链接,而最新最热产品是由本店实际动态生成,也就是指首页是动态生成的,随着时间而变动。分类呈现:分类呈现主要继承自首页,区别在于,在该类页面展现的是某一种商品信息的全部展现,选择其中某一个,会跳转到详细呈现页面。具体实现:(1).在首页点击链接时,获得参species(狗的种类), (2).连接数据库查询指定的species的狗,分别取得狗的id(编号),name(名字),price(售价),picture(图片路径),species(种类)
19、(3).生成列表(4).遍历列表,取得所有数据,生成狗的简介页面运用技术:添加超连接 详细呈现:详细呈现,展现的是单个商品的呈现,在此类页面可以进行的操作有:查看商品的详细信息、显示用户的最近浏览记录。具体实现:根据狗的id号动态的从数据库中取出狗的详细信息,并且将狗的详细信息在前台页面中显示出来。当客户在群狗界面点一个连接时候,会访问到buyServlet.同时会传该商品的id号,buyServlet1、先取的该商品的id号。 技术点:通过request.getParameter(id);方法得到。2、通过调用业务层对外提供的fingdog()方法,找到该狗的基本信息3、取得该该狗的sess
20、ion域, 技术点:通过reques.getSession();4、将该狗加入到session域中。 技术点:通过request.getSession().setAttribute()方法来实现;5、通过转发技术转发到showServlet 技术点:response.sendRedirect()在showServlet中使用重定向技术(forward技术)将该用户的请求一同转发到index.jsp页面(显示个狗的基本信息);在前台的jsp页面中 使用自定义标签来使用将数据显示在页面中。$显示最近浏览过的商品:1.当在群狗界面上点击某一个商品的时候,将该商品的id传给buyServlet.2.在
21、buyServlet中,通过id号拿到该商品的信息。3.在buyServlet中,使用cookies技术,将该商品放到cookies域中,4.将该cookies返回给浏览器。在jsp页面中从cookies中取得该狗的详细信息。显示在前台页面中。Servlet的设计buyServlet中主要有两方面的功能:1、根据ID号从数据库中取东西。将取到的东西放到session中2、创建cookies,发送cookies。 在创建cookies的时候:有以下几种方式: 1、带来的cookies中没有值,则返回该商品的id号。 2、带来的cookies中有值,(1)假设在该列表中只能显示3个商品。比如:原来
22、的cookies中有:2,4,5,现在浏览的是5(原来的内容中就含有)最后的结果5,2,4解决办法是:将原来的商品号id 删除。在将浏览过的商品放到最前面。 (2)比如:原来的cookies中有:2,4,8,现在浏览的是5,最后结果是5,2,8 解决办法是:将最后一个商品删除,将刚才浏览过的商品放到最前 (3)比如:原来的cookies中有:2,4,现在浏览的是5,最后的结果5,2,4 解决办法是:直接将刚刚浏览过的商品添加到第一个即可 2、设置该cookies的有效时间 3、设置cookies的有效路劲 4、对该cookies进行发送到浏览中。在另一个Servlet中,主要也是两方面:1、从
23、传过来的session中取得商品,将商品进行显示。2、从传过来的cookies中取得商品,将商品进行显示(最要是为了实现显示最近浏览过的商品。)思路:1、通过request.getCookies方法,取得所有的cookies,得到的是一个cookies数组, 2、遍历该数组,找到相应的cookies,取得cookies中的值,在设计的时候,cookies中的值是是商品的id号, 3、通过id号从数据库中找到相应的产品。将该产品的有关信息进行显示。在该功能的实现过程中涉及到两个难点, 1、如何限制商品的列表的长度(用户在显示浏览过的商品的时候应该放在也列表中)。 2、当用户浏览了一个商品的时候,
24、应该在最上面显示。 3、在处理列表的代码应该写在发送的地方。4.1.4检索商品检索主要是为了方便用户尽快找到自己想要的商品,因此在检索页面,我们为用户提供了详尽的搜索条件,便于用户筛选。 搜索条件主要有五个:性别、体型、性格、种类、价格区间。用户可以根据自己关心的条件进行搜索,可以选择不选择条件,此时将会显示所有信息,也可以选择一个或一个以上的条件,根据所选择的条件搜索出对应的商品。4.1.5用户购物用户购物由加入购物车、选择购买商品、下订单、查看订单(个人中心)四块组成。加入购物车时判断用户是否登录,只有登录用户才可以进行此操作以及后续操作。登录后,用户可以进入购物车去选择自己要最终购买的商
25、品,每次选定后,出示添加成功页面,提示用户去继续购物或者去购物车结账。进入购物车后,可以选择要购买的商品,选择后,显示商品总价,选定上屏总价,及会员的优惠价。选择完成后,提交,生成订单。在订单页面,客户再次查看订单,填写具体的收获信息,包括:默认的收获信息,结账帐号。可以使用新地址,下订单,后新地址以特殊方式写入数据库。交由商家处理,自己可以查看订单,也可以通过申请取消某项订单(申请为实现)。4.2后台功能模块后台主要由商城管理员及其业务人员使用,根据实际业务需要,我们的后台,划分了管理员,采购人员、仓库管理员、销售管理员四类权限,以下是详细的设计实现:4.2.1根据主业务流程设计模块1、 不
26、同权限用户的登陆和注销。2、 权限的设置以及个人资料的更改。3、 查询网站的客户信息4、 商品查询、信息更改和进货申请5、 订单查询、订单处理和出库申请6、 入库申请、出库申请的审批与库存盘点。4.2.2把握信息流,进行模块归类网络商城的后台,主要管理两大块的信息流:人员流和商品流。其中人员流由管理员去管理商品流依据“进销存”分配给采购人员、销售人员、仓库管理员去管理。由此分配以上六个模块如下:管理员-可以操作所有的功能模块,其主要功能是管理人员流,查看商品流,给予其其他模块的操作权限是为了预防突发情况下(例如:当一笔大单出现,而仓库人员或者出库人员有事不在,需要临时紧急处理的时候,就可以由老
27、板亲自操作或者在老板的授权下进入超级管理员权限,从而进行单据的处理。)的授权方便。采购人员-负责上文中的4模块销售人员-负责上文中的5模块仓库管理-员负责上文中的6模块。4.2.3具体技术实现1、 页面布局。使用div+css布局,运用js技术增加各种事件响应,从而达到对整个页面的控制,实现页面的良好展示。2、 具体功能:查询实现包括员工查询,商品查询、入库和出库申请的查询,以及订单的查询。通过servlet查询数据库,将查找到的每条明细放入一个List对象之中,将之放入session中,通过重定向发送给用户界面呈现。修改实现包括人员信息、商品信息的修改。通过request从地址中获取到页面上
28、写入的信息,在servlet中操作数据库,将数据库中的信息进行刷新。审批实现仓库管理员对于入库和出库信息的审批,通过页面按钮获取单个单据的独立信息,发送给独立处理单据的servlet。在servlet中,操作数据库,将单据的状态进行修改,同时操作商品表中的相应对象。库存盘点1、从数据库中取出商品的详细信息(库存量是不可少的),2、在旁边的单行文本框中输入一个数量,单击查询即可计算出损益数量使用到的技术主要有:Servlet技术和javascript技术,自定义标签的使用在servlet中主要是为了从数据库中取出数据,在后头的jsp页面中同过自定义标签将该数据显示在后台页面中。javascrip
29、t技术主要是为了为按钮注册一个onclick事件,计算损益数量。 第五章 功能实现5.1前台5.1.1登录注册登录界面:注册界面:个人中心界面:5.1.2商品浏览商城首页:分类呈现页面:详细信息页面5.1.3商品检索搜索页面:5.1.4购物车订单购物车页面:订单页面:5.2后台5.2.1登录登录页面:5.2.1权限管理员工管理页面:5.2.3商品管理商品管理页面:5.2.3客户管理客户管理页面:5.2.3库存管理库存管理页面:5.2.4订单管理订单管理页面:第六章 测试分析6.1业务流程测试6.1.1注册6.1.2登录6.1.3搜索6.1.4浏览6.1.5加入购物车6.1.6购物车选择商品6.
30、1.7下订单6.2特殊数据测试6.2.1数据输入时输入不符合逻辑的数值提示6.2.2数据输入时输入格式不正确的数据测试6.2.3数据输入时输入可疑数据的处理6.3意外情况测试6.3.1浏览器意外关闭测试6.3.2服务器意外事故测试第七章 详细代码规范一个好的程序员,在其编程时一定有良好的编程习惯,也就是遵循代码规范,在本项目中,我们遵循的具体代码规范如下:7.1.命名规范 1).所有的标示符只能用英文字母,数字,下划线 2).包名全小写 3).类名是一个名词,大小写混合,每个单词的首字母大写 4).接口的规则与类名相似 5).方法名第一个字母小写,中间单词的首字母大写,采用驼峰标识 6).变量
31、名的规则与方法名相似 7).常量的声明是全部大写,每个单词之间用_连接 7.2.注释规范 注释有:单行注释 /, 多行注释 /*.*/, 文档注释 /*.*/ 1).注释尽可能使用“/”,对于所有的javadoc的注释则使用“ /*.*/ ,而临时对代码快进行注释尽量使用”/*.*/“。 2).所有的源文件都应该在开头有一个注释,其中列出文件名,日期和类的功能概述,有时还有作者 3).每个方法必须添加文档注释(类的main()方法除外),这样可以使其他人了解这个方法的功能 4).每个属性必须添加注释,让人知道这个属性的含义 5).代码中至少包含15%的注释 6).注释中英文都可 7.3.缩进排
32、版规范 1).代码应避免一行长度超过60个字符 2).4个空格常被作为缩进排版的一个单位。缩进的确切解释并未详细指定(空格 vs. 制表符)。一个制表符等于8个空格(而非4个)。 3). 换行(Wrapping Lines)当一个表达式无法容纳在一行内时,可以依据如下一般规则断开之: a. 在一个逗号后面断开 b. 在一个操作符前面断开 c. 宁可选择较高级别(higher-level)的断开,而非较低级别(lower-level)的断开 d. 新的一行应该与上一行同一级别表达式的开头处对齐 e. 如果以上规则导致你的代码混乱或者使你的代码都堆挤在右边,那就代之以缩进8个空格 4).关键词和操
33、作符之间加适当的空格 5).相对独立的程序块与块之间加空行 6).划分出的新行要进行适应的缩进,使排版整齐,语句可读. 7).循环、判断等语句中若有较长的表达式或语句,则要进行适应的划分。 .函数或过程的开始、结构的定义及循环、判断等语句中的代码都要采用缩进风格 7.4.文件名规范 1).一个java源文件只能存储一个java类 2).文件名与java类名相同 3).一个类文件的代码行不超过200行 7.5.声明规范 1).一行声明一个变量 2).不要将不同类型变量的声明放在同一行 3).只在代码块的开始处声明变量 4).所以的变量必须在声明时初始化 5).避免声明的局部变量覆盖上一级声明的变
34、量 6).方法与方法之间以空行分隔 7.6.语句规范 1).每行至少包含一条简单语句。 2).在return语句中,返回值不使用小括号“()”括起来。 3).if语句总是用“”和“”括起来。 4).在for语句的初始化或更新子句中,避免因使用三个以上变量,而导致复杂度提高。 5).当switch的一个case顺着往下执行时(因为没有break语句),通常应在break语句的位置添加注释。 7.7.编程规范 1).提供对实例以及类变量的public或private访问控制,尽可能不使用默认值或protected访问控制。 2).避免用一个对象访问一个类的静态变量或方法。应该用类名代替。 3).避
35、免在一个语句中给多个变量赋相同的值。 4).用switch()语句实现多路分支。 5).如果使用JDBC,则考虑使用java.sql.PreparedStatement,而不是java.sql.Statement。 6).用于设置对象状态的方法前缀必须是set;用于检索一个布尔类型对象状态的方法前缀必须是is,而用于检索其他方法前缀必须是get。 7).程序中应尽可能少使用数字(或字符),尽可能定义静态变量来说明该数字(或字符)的含义。程序中需要赋值或比较时,使用前面定义的静态变量。在循环控制中例外。第八章 参考文献1. Java.Web.开发详解.XML.XSLT.Servlet.JSP.深入剖析实例应用.pdf2. JavaScript(网页特效的制作) .pdf3. JSP%26Servlet学习笔记-full.pdf4. WEB前台技术4JavaScript.pdf5. CSS权威指南(第3版,2006).(CSS.The.Definitive.Guide).Eric.A.Meyer.文字版.pdf6. 精通CSS:高级Web标准解决方案(第2版).(英)巴德等.陈剑瓯.扫描版.pdf7. HTML与CSS入门经典.pdf注:最主要的技术支持是第二阶段知识的良好掌握,以及老师传授的业务知识等。
限制150内