网上手机销售系统的设计与实现

本文所讲述的是网上手机销售系统的设计与实现。

本系统实现了会员注册、登录、资料修改,浏览和检索商品、发布留言、看公告,管理员具有修改个人密码、添加手机品牌、增加手机信息、管理会员信息、管理订单信息、修改库存信息、查询财务信息、管理留言信息、添加删除公告。

无论是互联网的飞速发展,还是手机制造业的日新月异,各式各样的只能手机越来越成为人们生活中不可或缺的一部分,而越来越相近的设计,越来越接近的价位也给人们带来了一丝困惑,该如何选择适合自己的产品?这也是本网上手机销售系统所要解决的.

通过建立网上手机销售系统,不但减少了经营实体店所要考虑的选址、装修施工等问题,还可以节约很大一部分相关成本,与此同时,商家只需雇佣几名训练有素的客服,即可实现不分地域、不分时间段完成客户订单,如此不仅可以很好地巩固和扩大自己的客户群体,还能很好的增加自己在相关行业的核心竞争力。

网上销售系统;互联网;手机销售;客户订单

目录

摘要............................................................ I

Abstract....................................................... II

第1章  绪论.................................................... 1

1.1      课题背景.............................................. 1

1.2      目的和意义............................................ 1

1.3      系统设计思想.......................................... 3

1.4      本文的结构............................................ 3

第2章  可行性分析.............................................. 4

2.1      业务流程图............................................ 4

2.2      经济可行性............................................ 6

2.3      技术可行性............................................ 6

2.4      运行可行性............................................ 6

2.5      本章小结.............................................. 7

第3章  需求分析................................................ 8

3.1      关于电商的前世今生和目前发展状况...................... 8

3.2      商品网上购物系统的需求分析............................ 9

3.3      数据流图............................................. 10

3.4      本章小结............................................. 16

第4章  总体设计............................................... 17

4.1      系统模块总体设计..................................... 17

4.2      数据库设计........................................... 18

4.2.1      数据分析......................................... 19

4.2.2      数据库的详细设计................................. 19

4.3      本章小结............................................. 23

第5章  详细设计与实现......................................... 24

5.1      系统运行平台设置..................................... 24

5.2      运行环境............................................. 24

5.3      开发工具及技术简介................................... 24

5.3.1      开发工具简介..................................... 24

5.3.2      技术简介......................................... 25

5.4      系统首页设计......................................... 25

5.5      系统前台基本功能设计与实现........................... 26

5.5.1      用户维护模块设计与实现........................... 26

5.5.2      生活用品展示模块设计与实现....................... 30

5.5.3      购物车模块的设计与实现........................... 31

5.5.4      收银台模块的设计与实现........................... 32

5.5.5      查看订单模块的设计与实现......................... 33

5.5.6      公告浏览模块的设计与实现......................... 33

5.5.7      客户留言模块的设计与实现......................... 34

5.6      系统后台管理功能设计与实现........................... 34

5.6.1      基本信息管理设计与实现........................... 34

5.6.2      订单信息管理设计与实现........................... 35

5.6.3      生活用品信息管理设计与实现....................... 35

5.6.4      公告信息管理设计与实现........................... 36

5.6.5      留言信息管理设计与实现........................... 36

5.7      本章小结............................................. 36

第6章  系统测试与性能分析..................................... 38

6.1      软件测试............................................. 38

6.2      本系统测试........................................... 38

6.2.1      前台首页的测试................................... 38

6.2.2      购物车模块的测试................................. 38

6.2.3      用户注册模块的测试............................... 39

6.2.4      商品管理模块的测试............................... 39

6.3      本章小结............................................. 40

致  谢......................................................... 42

参考文献....................................................... 43

附录1.......................................................... 44

外文文献..................................................... 44

附录2.......................................................... 50

中文翻译..................................................... 50

附录3.......................................................... 54

第1章  绪论

  1. 课题背景

当1973年历史上第一部手机出自Martin Lawrence Cooper和他的团队,人们无法预料到当今的盛况,如果没有一部手机甚至会影响到我们正常的生活,从当初的摩托罗拉“大砖头”到GSM手机、诺基亚的兴起、彩屏手机的出现、滑盖翻盖手机的热销以及iPhone带来的触摸屏手机浪潮使手机越来越成为人们生活的一部分。

到今天,手机除了原本的移动电话功能,还兼具讯息、游戏、网络、支付系统、个性化应用等功能,极大地方便了人们的生活,也使得如何购买一部性价比高并且适合自己的手机成为人们非常关心的方面。

我国的互联网产业在沉寂了一段时间后强势兴起,其百花齐放的发展趋势使得人们对于互联网的运用不仅仅局限于网页上各种信息资源的查询浏览下载,各式各样的购物网站也为人们提供着方便,而人们也对网上的一些消费模式提出了自己的新要求,而最为热门的还以淘宝、京东、亚马逊等综合性网络平台为主,通过网络购物平台将相距万里的商家和客户联系在一起,阳澄湖的大闸蟹只需在网上订购,两天之内便可跨越万水千山到达家门口,同时还能保证其鲜活。

根据中国互联网协会网络营销工作委员会的调查可看出,随着我国国内的产业环境和消费市场的日趋完善,网络购物尤其是以生活用品为代表的网购将在今年实现更大发展。

根据中国报告网的数据,我国的消费者网络购物的交易规模会随着人均可支配收入的提高而逐年增加, 2011-2016 年的交易额分别为 0.8 万亿、1.2 万亿、1.9 万亿、2.8 万亿、3.8 万亿和 5 万亿,而与其对应的增长率依次为 70.2%、51.30%、59.40%、46.90%、36.20%和 30.70%。

分析其中的原因我们可得知,首先是信息时代的人们对于新兴的与互联网相关的购物模式的接受程度比较高,而且商业运作模式变得更加可靠、产业链条也变得更加完备以及强劲的发展势头和源源不断的后劲,都会为网上购物的发展提供坚实可靠的保障,这使得网络购物及产品在与其他行业竞争中脱颖而出。

作为全新的消费模式,网络购物给人们带来的改变不仅仅是购物场所,更多的在于改变了人们的消费习惯和观念,而我所要做的是让网络购物更加趋于定向话和专业化。
  1. 目的和意义

随着互联网及相关行业的兴起,Internet已经成为人们收集或提供信息的最主要的也是最佳的方式,而电子商务也随即强势兴起,越来越多的商家选择在网上建立自己或大或小的在线店铺,向消费者宣扬着另一种新颖而充满活力和前景的新型购物理念。

网上销售系统是一种具有很强交互功能的商业信息系统,它向客户提供着丰富的信息资源,不仅有与公司相关的简介、业务理念以及管理的相关规章制度,还有随时变化的产品内容、价格以及活动信息等。对于消费者而言,通过网络上

显示的关于企业以及产品的信息,可以进行比较筛选,最终购买更合适自己的产品。再加上互联网上为网友提供的海量而及时的相关信息,对于其基数庞大到无法计算并且依旧在以一个高速增长的势态的信息量而言,是其他信息类产品所无法达到的,这一特性使用户对于商品信息的需求得到了极大满足。对于其页面转换的便捷性可以从信息页面一步到达商品选购页面,方便了顾客的同时也使商家的销量有了一定的提升。

随着近年来各家网上销售平台与多种类型媒体所进行的多种形式的合作宣传,而媒体宣传形式也日新月异,越来越吸引眼球,消费者直接或间接的能接收到各种类型的商品信息的宣传,从而或多或少提高了人们的购物频率,而其背后巨大的收益使各家企业更加重视此类销售模式。

但是在我的看法中,所谓百艺通不如一艺精,人们在产品纷繁复杂的购物平台上,难免会产生眼花缭乱的感觉,而我的系统所要做到的就是专攻手机销售方面,因此可以做的更深入、更专业,通过销量、价格、品牌的多元化比较展示给客户一目了然的推荐,节约客户在不同性能中徘徊的时间,从而人们可以轻松选择更加适合自己的手机。

对比网上销售模式和传统的销售模式可知其(网上销售模式)优势:

  1. 快速搜索定位:

网上销售系统不仅本身具有丰富的信息,其对于信息的检索定位也是十分准确便捷的,想要搜索一件商品不仅局限于其产品名,还有货号、类别、是否特价产品等

  1. 拥有海量信息:

其得天独厚的优势就是无法估计的容量可以存储海量产品信息,而且可实现及时更新。

  1. 更低的成本、更长久的营业时间以及突破地域限制:

网上销售系统的实现令商家只需在网站建立维护上进行一定的花费,省去了大笔的店铺租用、员工雇佣以及店铺装修维护等方面的花费,将多余的资金用作系统维护、界面优化可以使客户有更好的体验,吸引顾客更愿意在自家网站上购物,起到了事半功倍的效果。

对于营业时间而言,雇佣不同时段的客服即可完成全天的营业保障,如此的全天候保障不仅给客户以可靠的印象,更能增加自己的销售额,达到巩固客户与提高销售额的一箭双雕。

“身在东北的他刚刚收到了昨天在网上订购的大闸蟹,一个个活蹦乱跳”这个例子就是说明了网购平台不受地域限制的情况之一,随着我国物流业的快速进步,无论你身在哪里,我们都能将你在网上订购的东西送到你手上成为了各大平台的宗旨。而无论你在哪里,只要身边有网络,你也可以选购任何网站上的产品而不必在意它的产地和商家在哪里。这使得购物更加方便、广泛,也为各地的厂商提供了更加广泛的客源,也大大的提高了其经济效益。

  1. 系统设计思想

对于本系统,以网页销售模式为主,通过网络平台来达到手机产品的销售,为各大手机商提供了一个综合平台进行产品销售。浏览器作为客户端、手机购买者作为用户、后台管理员有独立的后台管理系统。因为相关手机信息较为综合,所以要处理的数据很多,本网站上的数据流量也将特别大,不仅要做到界面简单易操作,还要保证系统的安全稳定,所以具体要符合以下几点:

  1. 首先也是最要的是整个系统的稳定性和安全性;
  2. 对于用户而言,友好的界面将变得非常重要,一个网站如果简单美       观,并且在信息查询方面非常便捷,如此一般能抓住用户的心可以使网站访问量大大增加;
  3. 首页能将不同品牌手机分类,也便于有某具体手机品牌要求的用户快速检索出自己所需要的手机类型;
  4. 首页设置关于排序功能的模块,是本网站可以从销量、售价等方面进行排行使客户一目了然,方便客户选购;
  5. 可以实现网上的交易功能,添加/删除购物车内的信息,选择自己意愿的的付款方式以及配送地址;
  6. 已注册的会员可以随时从注册界面修改自己的个人信息;
  7. 顾客可以随时查看自己的订单,并进行相应操作;
  8. 后台管理员可以发布或者删除公告,以用于向到达网页的客户发布商品优惠信息或关于网站停服维护等信息;
  9. 已注册的用户可以使用留言板功能,为客户间提供信息沟通平台,不仅可以互相之间提问解答,也可以对已购产品作出评价为后来到的用户选购做一个参考;
  10. 对于顾客输入的各种类型数据进行检验,尽可能地排除因为个人疏忽而造成的错误;
  11. 在制作该系统是,秉承着尽最大努力实现其易操作性,对于后台工作人员则需让其更易维护。
  1. 本文的结构

本文的大致模块有:

  1. 可行性分析
  2. 需求分析
  3. 系统总体设计
  4. 系统详细设计与实现
  5. 系统的测试。

本篇文章意在描述网上手机销售系统的前台与后台的基本组成与结构,大致介绍了该系统的设计的方案,简述了其实现方法以及开发此系统所需要的编程工具和用到的主要技术,并且着重分析了一些环节的编码过程。

该系统在IE浏览器下分别进行了个别模块的测试以及整体测试,验证了该系统的基本可用性也证实了其可靠性。

第2章  可行性分析

随着淘宝、京东、亚马逊等电商巨头的兴起、网上销售系统已经成为各大企业在销售方面不可错过的巨大机遇,如果能上线一个界面友好的、操作简单的、功能全面的并且后台功能强大,数据库完善而稳定的网上销售平台可以为企业带来不可估量回报。通过现今流行的电商相关网上手机销售平台,不仅为手机制造商们开启了全新的一个销售途径,也通过网上销售系统这个平台对各个手机品牌进行了一定的宣传,不但增加了该手机制造商的知名度也就是将品牌宣传出去,也直接增加了企业效益。总而言之,构建自己的网上销售系统将成为各家企业接下来的必不可少的转型目标。

  1. 业务流程图

分析大多数的同类网上销售平台的运营模式,通过对其业务流程的详细分析,发现了其流程会与信息流动的方向大致相同,简述其具体内容为信息的来源、相应的计算方法、对于信息的处理方法、对于各项业务的处理以及控制信息的流经去向以及这些信息所被提供的时间和形态其具体呈现形式为报告或者是订单等等。

对于该系统的业务流程图,可以做以下描述:

(1)对于游客而言,只需通过浏览器即可对网站前台进行各品牌手机的浏览、查询,通过后台数据生成的手机品牌、销售排行榜、特价区域、新品上市等模块的推荐,来选择自己的需要的产品。同时,游客也可以使用关键字查询找到自己心仪的手机型号,并查看其详细信息。除此之外,游客可以查看公告,对本网站当前活动和维护信息有一定得了解。

(2)当游客有了心仪的手机产品并打算购买时,则需要注册本网上手机销售系统的会员,在输入了基本的用户名、密码、再次确认密码、真实姓名、住址、性别、联系方式、E-mail、QQ等基本信息后注册成为本网上手机销售系统的会员,即可进行购物功能和留言板功能,不仅可以将自己的建议意见发送出去,给大家提供借鉴,也可以通过浏览其他用户的留言来解决自己心中的疑惑。

(3)注册成为会员并登陆后,找到自己要购买的手机选择数量并点击购买,即可启用本网上手机销售系统的购物车相关功能,可选择清空购物车、继续购物,当继续购物选择了前期曾选购过的手机并且还未付款,则数量直接在原来的基础上增加,也可在购物车界面直接修改某一产品的数量。其中在登陆状态下可查看该顾客的购物车信息。

(4)在购物车信息完全确认后可点击确认订单按钮,并对送货地址加以填写,选择合适的付款方式,如有任何疑惑均可点击上一步查询订单,点击提交订单即可将所下订单上交至后台管理员,而系统也将自动产生本次购物订单的订单号,等待其受理该订单。即使回到商城首页,只要还保持登陆状态即可随时查询自己的订单状态。

(5)当管理员登陆后台系统后,其可进行的操作首先是修改管理员本身的个人密码,以保证其安全性。其次管理员可进行手机品牌管理,为其增加或删除相应手机品牌,但删除的前提是该品牌下的手机型号都已清空,对于手机品牌的管理,不仅可以删除或者增加手机信息,还可以设置特价商品,对于库存信息管理可以增加入库数量,对于财务信息统计就是记录所选时间段内的销售总额。对于

管理员后台处理 系统管理员登录后可以查看到已受理和未受理的订单及详细信息。另外,管理员能够对系统的各项信息进行维护处理。此外,系统管理员还具备留言板和公告的审核,公告的发布可直接将优惠信息展示在首页。

该网上手机销售系统流程图如图2-1所示。

图2-1  系统业务流图

将网上手机销售系统的概要目标确定以后,就要从三个方面进行分析:

  1. 经济可行性;
  2. 技术可行性;
  3. 运行可行性;

通过对这三个方面进行分析有助于确定该系统是否能实现原本的目标。

  1. 经济可行性

经济可行性对于网上手机销售系统而言,更多的是该系统在运行后所带来的经济效益和当初开发时公司所投入的资金相比,是否合适,与此同时,该网上手机销售系统能否能给用户带来一定的经济效益,换句话来说就是开发过程中仅需支付很少的开发经费即可满足系统功能的开发所需资金、架设服务器所需的费用以及投入使用后定期维护所花费的资金。

和传统的实体销售模式相比较,网上手机销售系统节省了房屋租用的成本,而且大量的店员雇佣金也可以省下。

而且由于本系统简单有效,不需要大量的开发人员,节省了很大一部分开发方面的资金投入,也为经济可行性奠定了坚实的基础。不仅如此,独立设计还提高了个人的设计意识和编码能力,也是一种很有意义的锻炼。

  1. 技术可行性

对于网上手机销售系统的技术可行性而言,不仅需要考虑到本身软件硬件的性能要求和根据环境提出的条件,编码人员和操作人员的水平等方面也需要进行深入的分析和研究;

为了使网上手机销售系统有很好的技术可行性,首先对于开发模式选择了较为热门而且运用比较广泛的B/S模式,得益于其在各个行业的良好使用,对于编程过程中使用到的HTML、JSP、CSS、SSH框架都为此次开发提供了非常重要的技术支持。

而开发网上手机销售系统必然离不开开发工具和数据库,软件方面我选择了较为稳定的eclipse neon.3和jdk8.0以及Tomcat8.0,数据库选择了SQL sever2008较为稳定。软件没有选择最新的版本是因为电脑本身原因更适合稳定一点儿的版本,而且介于功能并不是非常复杂,所以之前的版本即可实现。

综上所述,技术可行性软硬件均可实现。

  1. 运行可行性

随着互联网以及智能手机的普及,人们对于网上购物已经有了很久的适应,淘宝、京东、亚马逊的成功更是表示出了对于网上销售平台人们的认可以及极大热情,而越来越多的企业也注意到了这个商机,争先恐后选择尝试网上销售系统来推广自己的产品和企业名气,而网上销售系统也不负众望为各家企业带来了全新的销售模式、更高的销售额以及更广泛而稳定的客户群,这众多优点使得网上销售系统将会得到企业与客户的双重肯定。

本网上手机销售系统专门针对各种手机制作的综合销售系统,通过对各类手机信息的收集汇总比较展示,使得大家在选购手机时可以有所借鉴,选择最合适自己的手机,无论是前台浏览购物还是后台的信息维护数据改变操作都极其简单,客服人员经过简单的培训即可熟练操作,所以可以认为该系统在运行可行性方面可实现。

  1. 本章小结

网上手机销售系统的可行性分析,其主要任务是为了确定即将要开发的网上手机销售系统项目有没有开发的必要性以及有没有开发的可行性。本网上手机销售系统通过对整个系统深入而具体地分析,以一个普通用户的视角出发,来探究本系统是否可行,其中,能作为依据的主要是大量的数据以及软件运行环境是否可行。通过三个方面的可行性 :经济可行性、技术可行性以及运行可行性来说明本网上手机销售系统的简单、易操作、易掌握,同时也说明了本网上手机销售系统所采用的技术成熟、完善,其采用的测试手段也较为可靠,在市场中能很快地得到人们的认可并占领一番市场。因为至始至终它追求的都是简单、易学、容易使用,所以具有很好的开发前景和很大的开发价值

第3章  需求分析

  1. 关于电商的前世今生和目前发展状况

在结束了1997年召开的全国信息化工作会议,各省市地区的相关部门开始制订符合各自情况的信息化建设规划,而电子商务相关的也在其中,这便是电商第一次进入人们的视野。也同样是在这一年,CGOS也就是中国商品订货系统开始运行,其中值得一提的是,虚拟“广交会”等同类电商项目的推出也使中国的电商行业正式拉开序幕。继开局良好的1997年后,国内电商行业发展势头更猛,于1998年展开了全国范围内的“首都电子商务工程”,到1999年正式出现的8848网上超市也标志着中国电子商务正式开始进入了突飞猛进的发展时期,中国的电商大业也自此正式进军中国市场。

根据网上多方的报告显示,2016年全年我国网上零售市场的规模已达4.97万亿元,同比增长为29.6%。其中B2C市场交易达2.73万亿元,同比增速36%。值得一提的是,网上零售市场规模在社会消费品零售总额中的比重已达14.95%,已经成为我国国民经济不可或缺的重要组成部分。尤其是随着2014年各大电商平台百花齐放,比如:京东、淘宝、聚美优品等,对于上一年京东大动作收购比较知名的电商系统1号店并与实体超市沃尔玛达成战略合作、阿里并未落后,随即收购浙江省目前最大的连锁超市之一三江购物,通过电商巨头大举动的纷纷与一些零售实体加速融合,网上零售业开始成为主导此次涉及所有零售业的融合变革。

可以说,中国电子商务已经由表及里、从虚到实,从宣传、启蒙和推广、务实发展阶段进入到了现在的保持较高的增速,但由于几乎达到成熟所以增速已开始放缓。

  1. 政府推进 环境改善

我国政府在看到电商巨大潜力后,尤其是在看到巨大的发展之后依旧毫不犹豫地全面、积极、稳固地支持推进着中国电子商务的发展。从过去的将近二十年来看,政府对于电子商务相关的无论是协调还是支持力度一直只增不减。随着电子商务发展的成熟,国家也出台了一系列相关的包括整体的战略发展规划、发展所需的措施、相关的技术体制标准以及相关的法律法规。我国政府的这一系列作为可以让电子商务在发展的时候可以让其所处的环境更加规范而有序,保证其高速发展的硬性条件。部分地区尤其电子商务发展的比较迅速,当地政府也都把握住机会,为特色企业给予了更多的关注和支持,甚至把电子商务当作地方重要乃至支柱型企业进行扶持和导向。

  1. 制约瓶颈 开始突破

物流配送、买卖双方的信用体系、支付方式作为整个电子商务工程中的灵魂却一直以来被视为制约着中国电子商务飞速发展与良好应用的瓶颈。但是随着各方面齐头并进的发展,三个方面都有了长足的进步,随着运输工具的多样化、运输系统的巨大进步,并且多家快递公司的出现,分担了邮政的巨大压力,开始让配送到家的服务越来越普及;各家电子商务网站对于买卖双方启用信用评级评价既约束了买卖双方的商业底线,也为后来的卖家买家一个参考,能从前人的评论

中判断这个店铺是否可靠,其产品质量是否得到大多数顾客的好评,而卖家对顾

客的评价也可以让人们对于评论区的真假做出判断;经过较长时间的发展,网上银行、支付宝、微信钱包已经渐趋完善,可以达到日常稳定支付,所以也在一定程度上突破了限制,促进了电子商务的发展。

  1. 应用模式 日趋多元

源于制约网上各种交易模式的物流、支付模式以及买卖双方信用评级的渐渐解决,网上的各种销售模式例如书店和商场等开始增加一些更加丰富的项目让用户体验更加完善,同时也让网站运营更加稳定,网上销售的发展一路高歌;技术的趋于完善使不同种类的网站也如雨后春笋般萌发,网上拍卖的走俏让不少证券业看到了全新的经营模式,操作方便、信息及时让网上炒股成为新的炒股模式,并得到广大对电脑比较熟悉的网民的欢迎。

即使互联网已经发展迅速到超出人们的预计,并且仍将以日新月异的模式继续发展,但是如何运用好这个利弊兼具的工具,如何将其与我国当前的国情相结合,既能够使互联网在中国不仅得到高速的发展,而且对我国经济、科学都有一定程度的促进,对于我国特殊的经济模式,如果能将电子商务与现今的商务模式很好地合作创新,将会对新型经济发展有一个较为明显的促进。

  1. 内外融合 渐成大势

由于国外电子商务发展的快速和较提前,很多外国企业看中了地大物博的中国市场,但是并不只是外资企业选择我国的市场,还有的企业可以通过在海外上市来收获更广泛的资金。电子商务本就是先进经营模式,所以往往企业内的投资思想比较先进,他们会尝试将那些在国外有过电子商务相关经验的高级管理人员纳入麾下,通过他们的管理运营将自己的企业走上电子商务的正轨,但是国外的企业并没有静观其变,他们开始直接在中国市场上融入,尤其是中国加入到了世界贸易组织以后,通过INTERNET的世界经济一体化成为定局。

  1. 商品网上购物系统的需求分析

虽然我所做的网上手机销售体统并不类似于现在最大型的几款电子商务系统,但是通过对多家电子商务网站的实质分析,对于自己的系统我设计了以下几个功能:

  1. 首先也是最吸引人的地方,界面一定要简洁大方,至少能给人一目了然的感觉,让人们乐于使用本网站,统一友好的操作界面,保证系统的易用性,方便用户的操作;
  2. 具备手机信息的展示功能,方便浏览者对商品信息进行浏览与比较;
  3. 根据手机品牌将手机分类,方便顾客根据手机品牌分类查找;
  4. 完善的购物车功能与用户结账功能;
  5. 设置网站公告信息模块,使浏览者能够及时了解网站的各项动态变化,及销售的新品、特价活动等信息;
  6. 商品销售排行功能;
  7. 订单信息查询功能、手机的信息查询功能;全面的后台管理功能,不仅有修改管理员自身信息,还可以对手机信息进行相关修改,可添加手机品牌的信息,并在相应品牌下添加具体的手机型号;
  8. 可以查看和删除会员信息,为会员信息保存提供可靠保障;对于库存,管理员需要及时添加以保障手机的正常出售,财务统计可显示一段时间的销售额,方便了管理员的统计;
  9. 可查看、维护留言板,也可以发布、删除公告。
    1. 数据流图

1. 系统总数据流图如图3-1所示

图 3-1  系统总数据流图

2.数据字典

数据字典的作用是在软件分析和设计的过程中给人提供关于数据的描述信息。它主要是对数据流图中的数据流、处理逻辑、外部实体、数据存储和数据项等方面进行具体的定义。数据流程图配以数据字典,就可以从图形和文字两个方面对系统的逻辑模型进行完整的描述。

  1. 数据项定义

如表3-1所示。

表3-1  系统数据项定义

序号

名称

别名

类型

长度(字符)

I01-01

goods_id

商品号

Int

4

I01-02

goods_name

商品名

varchar

50

I01-03

goods_miaoshu

商品描述

varchar

5000

I01-04

goods_pic

存放商品图片

Varchar

50

I01-05

goods_yanse

商品颜色

Varchar

50

I01-06

goods_shichangjia

商品市场价

int

4

I01-07

goods_tejia

商品特价

int

4

I01-08

goods_isnottejia

普通商品

varchar

50

I01-09

goods_catelog_id

商品种类号

int

4

I01-10

catelog_id

种类编号

Int

4

I01-11

catelog_name

种类名称

Varchar

50

I01-12

catelog_miaoshu

种类描述

Varchar

5000

I01-13

order_id

订单ID

Int

4

I01-14

order_bianhao

订单编号

Varchar

50

I01-15

order_date

订单生成日期

varchar

50

I01-16

order_zhuangtai

订单状态

varchar

50

I01-17

order_jine

总的消费金额

Int

4

I01-18

order_songhuodizhi

送货地址

Varchar

50

I01-19

order_pay

付款方式

Varchar

50

I01-20

order_user_id

用户ID

Int

4

I01-21

orderItem_id

订单明细编号

Int

4

I01-22

order_id

订单编号

Int

4

续表3-1

I01-23

goods_id

商品编号

Int

4

I01-24

goods_quantity

购买数量

Int

4

I01-25

user_id

用户ID

Int

4

I01-26

user_name

用户名

Varchar

50

I01-27

user_pw

用户密码

Varchar

50

I01-28

user_realname

真实姓名

Varchar

50

I01-29

user_address

住址

Varchar

50

I01-30

user_sex

性别

Varchar

50

I01-31

user_tel

联系电话

Varchar

50

I01-32

user_email

用户邮箱

Varchar

50

I01-33

user_qq

用户QQ

Varchar

50

I01-34

userId

管理员ID

int

4

I01-35

userName

管理员名称

Varchar

50

I01-36

userPw

管理员密码

Varchar

50

I01-37

gonggao_id

公告编号

Int

4

I01-38

gonggao_title

公告标题

Varchar

50

I01-39

gonggao_content

公告内容

Varchar

5000

I01-40

gonggao_data

公告创建时间

Varchar

50

I01-41

gonggao_fabuzhe

发布人

Varchar

50

I01-42

liuyan_id

留言id

Int

4

I01-43

liuyan_title

留言标题

Varchar

50

I01-44

liuyan_content

留言内容

Varchar

5000

I01-45

liuyan_date

留言时间

Varchar

50

I01-46

liuyan_user

留言客户

Varchar

50

  1. 数据流定义

数据流编号:D1-01

数据流名称:商品基本信息维护

数据流来源:系统管理员

数据流去向:P1

数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

数据流编号:D1-02

数据流名称:管理商品信息操作

数据流来源:F1、P1

数据流去向:P1、F1

数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

数据流编号:D2-01

数据流名称:订单信息操作

数据流来源:系统管理员

数据流去向:P2

数据流组成:I01-13+I01-14+I01-15+I01-16+I01-17+I01-18+I01-19+I01-20+I01-21+I01-22+I01-23+I01-24

数据流编号:D2-02

数据流名称:订单信息

数据流来源:F2、P2

数据流去向:P2、F2

数据流组成:I01-13+I01-14+I01-15+I01-16+I01-17+I01-18+I01-19+I01-20+I01-21+I01-22+I01-23+I01-24

数据流编号:D3-01

数据流名称:公告信息维护

数据流来源:系统管理员

数据流去向:P3

数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41

数据流编号:D3-02

数据流名称:管理公告信息操作

数据流来源:F3、P3

数据流去向:P3、F3

数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41

数据流编号:D4-01

数据流名称:留言信息管理

数据流来源:系统管理员

数据流去向:P4

数据流组成:I01-42+I01-43+I01-44+I01-45+I01-46

数据流编号:D4-02

数据流名称:管理留言信息操作

数据流来源:F4、P4

数据流去向:P4、F4

数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41

数据流编号:D5-01

数据流名称:客户信息管理

数据流来源:系统管理员

数据流去向:P5

数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33

数据流编号:D5-02

数据流名称:管理客户信息操作

数据流来源:F5、P5

数据流去向:P5、F5

数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33

数据流编号:D6-01

数据流名称:用户信息

数据流来源:客户

数据流去向:P6

数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33

数据流编号:D6-02

数据流名称:管理客户信息操作

数据流来源:P6

数据流去向:F5

数据流组成:I01-25+I01-26+I01-27+I01-28+I01-29+I01-30+I01-31+I01-32+I01-33

数据流编号:D7-01

数据流名称:留言信息

数据流来源:客户

数据流去向:P7

数据流组成:I01-42+I01-43+I01-44+I01-45+I01-46

数据流编号:D7-02

数据流名称:客户留言信息

数据流来源:P7

数据流去向:F4

数据流组成:I01-42+I01-43+I01-44+I01-45+I01-46

数据流编号:D8-01

数据流名称:公告信息

数据流来源:P8

数据流去向:客户

数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41

数据流编号:D8-02

数据流名称:公告信息

数据流来源:F3

数据流去向:P8

数据流组成:I01-37+I01-38+I01-39+I01-40+I01-41

数据流编号:D9-01

数据流名称:商品信息

数据流来源:客户

数据流组成::

I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

数据流编号:D9-02

数据流名称:订单信息

数据流来源:P9

数据流去向:F2

数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

数据流编号:D10-01

数据流名称:商品信息

数据流来源:P10

数据流去向:客户

数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

数据流编号:D10-02

数据流名称:商品信息

数据流来源:F1

数据流去向:P10

数据流组成:I01-01+I01-02+I01-03+I01-04+I01-05+I01-06+I01-07+I01-08+I01-09

  1. 本章小结

需求分析报告是对系统需求的全面分析,是软件生存周期中最关键的一步,是建立软件开发的基础。经过需求分析要得到系统将要“做什么”,同时理解在做什么的基础上抽取出其“怎么做”的本质。本章首先介绍了电子商务近年来的发展状况,然后具体说明了需求分析的内容,详细描述了数据流图和数据字典的组成,为下一章的总体设计打下基础。

第4章  总体设计

  1. 系统模块总体设计

利用层次图来表示系统中各模块之间的关系。层次方框图是用树形结构的一系列多层次的矩形框描绘数据的层次结构。树形结构的顶层是一个单独的矩形框,它代表完整的数据结构,下面的各层矩形框代表各个数据的子集,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素)。随着这种结构的精细化,层次方框图对数据结构也描绘得越来越详细,这种模式非常适合于需求分析阶段的需要。从对顶层的信息的分类开始,沿着图中每条路径反复细化,直到确定了数据结构的全部细节为止。

本系统一共分为前台和后台两大模块,两个模块之间虽然在表面上是相互独立的,但是在对数据库的访问上是紧密相连的,各个模块访问的是同一个数据库,只是所访问的表不同而已。每个模块的功能都是按照在调研中搜集的资料进行编排制作的。依据上述功能分析,系统在两个模块的基础上每一个模块又分为几个模块。

  1. 前台系统功能模块分为:

(1)商品展台模块:通过新品上架,分页显示特价商品,商品销售排行展示网站的所有商品;

(2)商品查询模块:按商品的类别查询商品的相关信息;

(3)购物车模块:用户添加商品至购物车,查看购物车中的商品,从购物车中移除不满意的商品,清空购物车中的产品,修改所要购买的商品的数量;

(4)收银台模块:用户满意购物车中的产品后进行结账并填写订单信息;

(5)用户维护模块:为用户提供了用户注册、用户登录、用户资料修改以及找回密码的功能;

(6)订单查询模块:用户通过查看订单能够了解到自己的当前订单信息及历史订单记录;

(7)公告浏览模块:用户通过浏览公告信息,能够及时了解到网站最新的各种信息。

(8)留言模块:客户可以进行留言给我们提意见,我们在不断地改进中前进。

  1. 后台系统功能模块分为

(1)商品管理模块:按类别查看商品,对商品的信息进行维护;

(2)用户管理模块:为了保护用户的信息,此模块与前台用户维护的区别是管理员只能查看用户信息和删除操作;

(3)管理员维护模块:这是对管理员的信息进行维护,可以修改管理员的信息。

(4)订单管理模块:管理员查询订单,查看订单详细信息,删除订单信息,进行订单受理;

(5)公告管理模块:管理员公告浏览,公告信息维护;

(6)留言模块:管理员可以查看客户的留言,对留言进行维护。

系统功能结构图如图4-1所示

图4-1  系统功能结构图

  1. 数据库设计

对于一个电子商务网站而言,为了支持较大的访问量带来的数据访问需求,使用桌面型的数据库管理系统是不能满足需要的,而且安全性也没有充分保障。因此,需要使用大型商业化企业级服务用途的数据库管理系统,如SQL Server,Oracle等。本系统采用Microsoft SQL Server 2008 数据库管理系统。

  1. 数据分析

对于本系统的数据库的需求而言,由于其主要是用于信息的提供、保存、更新和查询等。因此,需要分析该系统功能所隐含的对数据应用的需求,从而确定数据库的结构。

  1. 用户注册、登录、验证等功能需要对用户信息建立数据表,其中的数据项可能包括用户E_mail、昵称、密码、住址等;
  2. 查看商品分类信息和商品详细信息等功能既需要对商品大小类别进行管理,也需要针对每一个商品进行管理,因此至少需要两张数据表;
  3. 用户购物后产生的订单需要进行管理,这里也包括订单的基本信息和详细信息等;
  4. 订单生成后,在订单处理的过程中,需要出货等,因此可能需要记录订单的发送情况;
  5. 需要系统管理员对该系统进行管理,因而需要建立管理员信息数据表,其中的数据项包括管理员ID、密码等。
  6. 客户要进行留言,所以必须建立留言表,其中包括留言标题、留言日期等。

这样,至少要创建如下的数据结构和数据项:

(1)用户信息,包括用户ID,用户名等数据项;

(2)管理员信息,包括管理员ID,密码等数据项;

(3)商品信息,包括商品ID,产品名称、单价、特价等数据项;

(4)商品类别信息,包括电子ID,类别名称等数据项;

(7)订单信息,包括订单ID,用户编号,订货地址等数据项;

(8)订单明细信息,包括订单ID,生活用品ID,订货时间等数据项;

(9)公告信息,包括公告ID,公告名称及内容等数据项;

(10)留言信息,包括留言标题,留言日期,留言内容等。

  1. 数据库的详细设计

在设计数据库时,应考虑以下事项:

  1. 数据库的用途及该用途将如何影响设计,应创建符合用途的数据库计划;
  2. 数据库规范化规则,防止数据库设计中出现错误;
  3. 对数据完整性的保护;
  4. 数据库和用户权限的安全要求;
  5. 应用程序的性能需求,设计数据库时必须利用 Microsoft SQL Server 2005 中能够提高性能的功能。对于性能而言,在数据库大小和硬件配置之间权衡也是很重要的;
  6. 数据库维护。

数据库E-R如图4-3所示。

图4-2  数据库E-R图

根据此生活用品网上购物系统的实际情况,本系统的数据库命名为db_wlgw, db_wlgw数据库中共分为8张数据表。

  1. 商品信息表

此表用于记录网站所有生活用品的基本信息,是与商品相关联的商品的类别表。如表4-1所示。

表4-1  t_goods(生活用品信息表)

序号

名称

别名

类型

长度(字符)

1

goods_id

编号

Int

4

2

goods_name

商品名

varchar

50

3

goods_miaoshu

商品描述

varchar

5000

4

goods_pic

存放商品图片

varchar

50

5

goods_yanse

商品颜色

varchar

50

6

goods_shichangjia

商品市场价

int

4

7

goods_tejia

商品特价

int

4

续表4-1

8

goods_isnottejia

普通商品

varchar

50

9

goods_catelog_id

商品种类号

int

4

2.生活用品类别信息表

此表用于记录生活用品类别的基本信息,为方便用户查询生活用品和管理员管理生活用品信息而设立。如表4-2所示。

表4-2  t_catelog(生活用品类别信息表)

序号

名称

别名

类型

长度(字符)

1

catelog_id

种类编号

Int

4

2

catelog_name

种类名称

Varchar

50

3

catelog_miaoshu

种类描述

Varchar

5000

3.订单信息表

此表用于记录用户的基本订单信息,使用户方便查看自己的订单信息同时也为管理员出货提供基本订单信息。如表4-3所示。

表4-3  t_order(订单信息表)

序号

名称

别名

类型

长度(字符)

1

order_id

订单ID

Int

4

2

order_bianhao

订单编号

Varchar

50

3

order_date

订单生成日期

varchar

50

4

order_zhuangtai

订单状态

varchar

50

5

order_jine

总的消费金额

Int

4

6

order_songhuodizhi

送货地址

Varchar

50

7

order_fukuangfangshi

付款方式

Varchar

50

8

order_user_id

用户ID

Int

4

4.订单明细信息表

此表用于记录用户订单的详细信息,为用户提供详细的商品订单信息,同时也为管理员出货提供用户所订的商品的具体信息。如表4-4所示。

表4-4  t_orderItem(订单明细信息表)

序号

名称

别名

类型

长度(字符)

1

orderItem_id

订单明细编号

Int

4

2

order_id

订单编号

Int

4

3

goods_id

商品编号

Int

4

4

goods_quantity

购买数量

Int

4

  1. 用户信息表

此表用于记录用户的基本信息,是用户购买生活用品的权限基础,为用户维护和管理员管理用户提供信息。如表4-5所示。

表4-5  t_user(用户信息表)

序号

名称

别名

类型

长度(字符)

1

user_id

用户ID

Int

4

2

user_name

用户名

Varchar

50

3

user_pw

用户密码

Varchar

50

4

user_realname

真实姓名

Varchar

50

5

user_address

住址

Varchar

50

6

user_sex

性别

Varchar

50

7

user_tel

联系电话

Varchar

50

8

user_email

用户邮箱

Varchar

50

9

user_qq

用户QQ

Varchar

50

  1. 管理员信息表

此表用于记录不同权限管理员的基本信息,可以管理系统的所有信息。如表4-6所示。

表4-6  t_admin(管理员信息表)

序号

名称

别名

类型

长度(字符)

1

userId

管理员ID

int

4

2

userName

管理员名称

Varchar

50

3

userPw

管理员密码

Varchar

50

  1. 公告信息表

此表用于记录公告的基本信息,为用户提供系统网站的最新信息。如表4-7所示。

表4-7  t_gonggao(公告信息表)

序号

名称

别名

类型

长度(字符)

1

gonggao_id

公告编号

Int

4

2

gonggao_title

公告标题

Varchar

50

3

gonggao_content

公告内容

Varchar

5000

4

gonggao_data

公告创建时间

Varchar

50

5

gonggao_fabuzhe

发布人

Varchar

50

  1. 留言信息表

此表用于记录客户的留言信息,以及对商品的建议等。如表4-8所示。

表4-8  t_liuyan(留言信息表)

序号

名称

别名

类型

长度(字符)

1

liuyan_id

留言id

Int

4

2

liuyan_title

留言标题

Varchar

50

3

liuyan_content

留言内容

Varchar

5000

4

liuyan_date

留言时间

Varchar

50

5

liuyan_user

留言客户

Varchar

50

  1. 本章小结

本章介绍了对本系统的总体设计,给出了网上手机销售系统的功能结构图、E-R图等,说明了各子系统的之间的联系。本章完成了系统数据库的数据需求分析的过程,说明了数据库由概念结构设计转换成逻辑结构设计的过程,并把各个物理数据模型结合起来形成了一个整体的关系数据库模型,为系统详细设计作好了充足的准备工作。

第5章  详细设计与实现

  1. 系统运行平台设置

本系统的运行平台设置分为硬件环境和软件环境。

  1. 运行环境

软件环境

系统的软件环境配置为Windows XP操作系统,SQL Server 2008数据库,JDK1.8、Eclipse neon开发工具包和Tomcat8.5服务器。

  1. 开发工具及技术简介

以下内容是对本系统所采用的开发工具和技术进行的简单介绍。

  1. 开发工具简介

Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是目前亦有人通过插件使其作为C++、Python、PHP等其他语言的开发工具。

Eclipse的本身只是一个框架平台,但是众多插件的支持,使得Eclipse拥有较佳的灵活性。许多软件开发商以Eclipse为框架开发自己的IDE。

Eclipse的历史:

Eclipse最初是由IBM公司开发的替代商业软件Visual Age for Java的下一代IDE开发环境,2001年11月贡献给开源社区,现在它由非营利软件供应商联盟Eclipse基金会(Eclipse Foundation)管理。 2003年,Eclipse 3.0选择OSGi服务平台规范为运行时架构。 2007年6月,稳定版3.3发布;2008年6月发布代号为Ganymede的3.4版;2009年6月发布代号为Galileo的3.5版;2010年6月发布代号为Helios的3.6版

Eclipse的架构:

Eclipse的基础是富客户机平台(Rich Client Platform,即RCP)。RCP包括下列组件:

核心平台(启动Eclipse,运行插件)

OSGi(标准集束框架)

SWT(可移植构件工具包)

JFace(文件缓冲,文本处理,文本编辑器)

Eclipse工作台(即Workbench ,包含视图(views)、编辑器(editors)、视

角(perspectives)、和向导(wizards))

Eclipse采用的技术是IBM公司开发的(SWT),这是一种基于Java的窗口组件,类似Java本身提供的AWT和Swing窗口组件;不过IBM声称SWT比其他Java窗口组件更有效率。Eclipse的用户界面还使用了GUI中间层JFace,从而简化了基于SWT的应用程序的构建。

Eclipse的插件机制是轻型软件组件化架构。在富客户机平台上,Eclipse使用插件来提供所有的附加功能,例如支持Java以外的其他语言。 已有的分离的插件已经能够支持C/C++(CDT)、PHP、Perl、Ruby,Python、telnet和数据库开发。插件架构能够支持将任意的扩展加入到现有环境中,例如配置管理,而决不仅仅限于支持各种编程语言。

Eclipse的设计思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本内核包括:图形API (SWT/Jface), Java开发环境插件(JDT),插件开发环境(PDE)等。SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2008中的新的特性、优点和功能…… 微软的这个数据平台满足这些数据爆炸和下一代数据驱动应用程序的需求,支持数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。许多因素致使产生了信息存储爆炸。有了新的信息类型,例如图片和视频的数字化,和从RFID标签获得的传感器信息,公司的数字信息的数量在急剧增长。遵守规范和全球化的发展要求信息存储的安全性和在任何时候都可用。

  1. 技术简介

本系统采用MVC框架,MVC(Model-View-Controller)是一种设计 模式,它强制性地把应用程序的输入、处理和输出分开。MVC把应用程序分成3个核心:模型层、视图层和控制层,它们分别担负不同的任务。其中视图层向用户显示相关的数据,并能接受用户的输入数据,但是它并不进行任何实际的业务处理。模型层表示业务数据和业务逻辑。控制层接收用户输入并调用模型和视图去完成用户的需求。

本系统需要用到的Java相关技术有jsp技术、servlet技术、jdbc技术、SSH框架。其中,关键的技术难点在于Struts技术的运用。Struts技术是基于MVC的Web应用框架。在Struts框架中,模型层由实现业务逻辑的JavaBean组件构成,控制层由ActionServlet和Action来实现,视图层由一组JSP文件构成。

  1. 系统首页设计

本系统网站的主界面设计结构采用了三层布局结构,第一层部分为本网上手机销售系统的导航栏部分,其用途为展示本网上手机销售系统的前台基本功能,第二层从左到右依次是用户登录界面,还可通过注册按钮达到新用户注册功能,中间是一个轮播界面,用来展示近期系统内部的一些优惠活动,右边是排行榜,通过客户购物情况进行统计反馈,展示出近期热卖的商品。最下一层用于以手机品牌分类的模式展示手机信息,网站公告用于简介最近活动及相关维护消息,中间是特价商品及其价格的展示,右侧为刚刚上线的商品。

右侧为界面设计如图5-1所示。

图5-1  系统首页

  1. 系统前台基本功能设计与实现

本节对系统前台主要功能设计进行详细的说明。

  1. 用户维护模块设计与实现

由于网上购物必须保证用户的正确性、购物的安全性,需要对用户资料进行有效的管理,因此用户管理是电子商务网站的重要内容。它主要包括用户注册、登录和验证、用户注册资料的修改更新和用户注销等功能。

1.注册

(1)实现目标

用户单击注册后需要输入密码和确认密码、用户真实姓名、住址、性别、E_mail、QQ。用户只须填写一个Web表单。这里需要用户通过E_mail注册是考虑到两点:第一,用户的E_mail是惟一的;第二,通过用户的E_mail可以很方便快捷的与用户取得联系。用户在提交注册信息后,系统会对注册页面填写的正确性进行检查。对于不符合要求的填写会给出必要的提示,并返回修改;对于符合要求的注册表单,用户提交信息后也要返回相应的欢迎信息,用户提交的正确注册信息将被存入系统的数据库中。

界面的设计如图5-2所示。

图5-2  用户注册模块

(2)实现过程

所属页面名:userReg.jsp

表单属性:name="form1" action="<%=path%>/userReg.action" method="post"

页面设计如表5-2所示。

表5-2  用户注册主要控件信息列表

名称

类型

含义

userName

Text

输入用户名称

password

Password

输入密码

passwordOne

Password

输入确认密码

userRealname

Text

输入真实姓名

userAddress

Text

输入住址

userSex

radio

选择性别

userTel

Text

输入联系方式

E-mail

Text

输入E-mail地址

确定

Button

提交用户信息

取消

Button

取消注册

2.登录和验证

  1. 用户登录程序流程描述

当用户输入用户名和密码后首先要进行身份验证,如果用户存在,则成功登录,反之,如果用户不存在,提示错误信息“输入的用户名或密码不存在,请注册”,返回登录界面重新输入用户名和密码。

用户登录的程序流程图如图5-3所示。

开 始

输入用户名、密码

登 录

是否通过验证?

登录成功

图5-3 用户登录程序流程图

(2)实现目标

对于本系统的购物过程而言,在用户浏览商品时,可以不进行登录,只有在使用购物车时,才需要登录,以完成整个购物过程。用户登录用于验证用户的用户名和密码,然后决定顾客进入系统进行操作,如进行用户修改的操作,购物车和结帐的操作等。

界面的设计如图5-4所示。

图5-4  用户登录模块

(3)实现过程

所属页面名:index.jsp

页面设计如表5-3所示。

表5-3  用户登录主要控件信息列表

名称

类型

含义

userName

Text

输入用户名

password

Password

输入密码

注册

button

注册新用户

登录

button

登录网站

3.用户修改和注销

(1)实现目标

已注册的用户只要登录本系统后便可以通过单击用户修改按钮进行用户修改操作,在此页面中用户可以更改自己的帐户和详细信息,如可以修改密码、修改Email地址等个人信息。通过点击提交按钮完成修改操作。

界面的设计如图5-5所示。

图5-5  用户修改模块

为了保证用户购物的安全性,系统提供了不关闭浏览器而退出商品网上购物系统的功能,注销功能是清除用户在使用或登录系统期间的所有Session信息。

(2)实现过程

所属页面名:userXinxi.jsp

表单属性:action="<%=path%>/userEdit.action" name="form1" method="post"

页面设计如表5-4所示。

表5-4  用户修改主要控件信息列表

名称

类型

含义

userName

Text

输入用户名称

续表5-4

password

Password

输入密码

passwordOne

Password

输入确认密码

userRealname

Text

输入真实姓名

userAddress

Text

输入住址

userSex

radio

选择性别

名称

类型

含义

userTel

Text

输入联系方式

E-mail

Text

输入E-mail地址

确定

Button

提交用户信息

取消

Button

取消注册

  1. 生活用品展示模块设计与实现

1.实现目标

为了方便顾客选购商品,本系统采用了两种展示产品的方式。一种是以类别查询为基础查看商品,另外一种是新品上架、特价产品和销售排行的展台。以销售排行查看生活用品为例,顾客在首页的的销售排行即可查看销售排行,方便顾客查看畅销的生活用品相关信息及详细信息。界面的设计如图5-6所示。

图5-6 销售排行模块

2.实现过程

所属页面名:index.jsp

通过查询t_orderItem表中按销售额字段goods_quantity降序排列实现。

  1. 购物车模块的设计与实现

1.购物车程序流程描述

用户选购商品后添加到购物车中,在购物车中进行查看,同时对不满意的产品可以进行移除,对要购买的产品可以调整数量,移除产品和清空产品。用户决定购买产品后可以去收银台进行结账。

购物车流程图如图5-7所示。

开 始

购 物 车

查看手机

是否决定购买?

收银台结账

图5-7  购物车程序流程图

2.实现目标

用户购买产品的核心功能是购物车和订单提交。购物车模块的设计包括:顾客添加商品到购物车和顾客对购物车的管理,如更新购买的商品数量、清空购物车和将购物车中商品从购物车中移除等。购物车要具有持续性,而且不限制用户购买商品的数量,也就是购物车可以显示很多商品。界面的设计如图5-8所示。

3.实现过程

所属页面名:myCart.jsp核心代码参见附录3

页面设计如表5-8所示。

图5-8  购物车模块

  1. 收银台模块的设计与实现

1.实现目标

用户选择完商品后,需要确认购物车中内容,即结帐,点击下一步,此时页面跳转到结账页面。在结帐页面,需要用户填写联系地址、联系电话、付款方式和送货方式和备注信息,以便生成订单。当完成一次交易所需要的用户方面的信息都已齐全,只须生成订单即可进入配送过程。如果用户所填写的订单信息正确,系统会返回给用户此次交易所产生的订单号码。

界面的设计如图5-9所示。

图5-9  结账模块

2.实现过程

所属页面名:orderQuren.jsp

表单属性:action="<%=path%>/orderSubmit.action" name="f" method="post"

页面设计如表5-5所示。

具体代码参照附录3。

表5-5  收银台主要控件信息列表

名称

类型

含义

userName

Text

收货人账号

续表5-5

userRealname

Text

收货人姓名

userTel

Text

收货人联系电话

userAddress

Text

收货人地址

odderSonghuodizhi

Text

送货住址

  1. 查看订单模块的设计与实现

1.实现目标

用户填写完订单并提交成功后可以通过查看订单按钮看到自己的订单及详细信息。

界面的设计如图5-10所示。

图5-10  查看订单模块

2.实现过程

所属页面名:myOrder.jsp

具体代码参见附录3。

  1. 公告浏览模块的设计与实现

1.实现

吸引顾客有很多种宣传措施,本系统采用公告的方式进行宣传。利用类似流动看板的方式显示公告信息。在顾客点击某一条公告信息时,系统可以自动弹出一个页面显示具体的公告信息。界面的设计如图5-11所示。

图5-11  公告浏览模块

2.实现过程

所属页面名:gonggaoDetailQian.jsp

首先使用gonggaoDAO中的save方法,将公告信息添加到数据库中,在用户点击页面中的公告后,通过gonggaoDAO下的findAll方法,将其调出,显示到页面中。

  1. 客户留言模块的设计与实现

1.实现目标

为了能够了解客户对我们的商品的满意程度,我们设计了留言模块,让用户能够在第一时间将问题反映给我们,以便我们及时改进。

界面的设计如图5-12所示。

图5-12  留言板浏览模块

2.实现过程

所属页面名:liuyanAll.jsp

首先通过判断session中的userName是否为空,如果为空,则只能先登录才能进行留言。如果不为空,则留言人中显示userName,使用获取系统时将来给留言时间赋值。客户在输入标题和内容后,将其存储到数据库中,在客户查看时再将其调出。

  1. 系统后台管理功能设计与实现

本节对系统后台功能设计进行详细的说明。

  1. 基本信息管理设计与实现

1.实现目标

该功能主要分布在管理员信息、用户信息、商品类别信息,订单信息,公告信息和留言信息的处理。对这些信息操作的主要功能详细设计包括对它们的添加、删除、更新和查询等操作,需要分别在基本信息中的每一个页面中设计这些功能。当对这些基本信息进行添加、删除和更新操作时,需要将这些操作所执行的结果返回到本系统的数据库中,并能够在相应的页面中刷新显示新的结果集。需要用SQL语句将这些信息添加到数据库中。模块的输出是操作信息成功的提示信息。对于在某一页面中的查询功能,此页面要能够刷新显示出此查询结果信息。以客户信息管理理为例。界面的设计如图5-13所示。

图5-13  客户信息管理模块

2.实现过程

所属页面名:userMana.jsp

客户管理主要是使用userDAO中下的findById和findAll方法来删除和获取数据库中的数据。进入客户管理界面时通过findAll方法来显示所有用户的信息,点击删除时,通过findById方法获取指定的用户ID,使用sql语句进行操作。

  1. 订单信息管理设计与实现

1.实现目标

该模块是针对用户订单信息和订单明细信息的管理功能进行的详细设计,主要是对用户订单信息和订单明细信息的查看、删除和受理订单的操作。管理员应该可以查看系统中已处理的订单和未经处理的订单信息,用户订单信息和订单明细信息在不同的页面显示。界面的设计如图5-14所示。

图5-14  订单管理模块

2.实现过程

所属页面名:orderMana.jsp

订单管理模块使用了buyAction中的方法,当用户提交订单时,订单状态默认为未受理。管理员查看订单时调用了orderMana()方法将订单显示到页面中,点击删除时调用orderDelByAd()方法将通过订单的ID对指定的订单进行那个删除操作,点击受理订单时调用orderShouli()方法将订单状态改为已受理。管理员查看订单明细时通过 orderDetail()方法通过订单ID将指定的订单明细显示到页面中。

具体代码参照附录3。

  1. 生活用品信息管理设计与实现

1.实现目标

在商品管理模块中除了基本的信息管理功能外,为了方便顾客浏览到商品的真实外貌,在添加商品模块中增加上传商品图片的功能。

管理员在商品添加页面中输入添加的商品基本信息,点击提交后进入上传图片页面。在商品信息管理中,我将商品分为特价和非特价商品来管理。此页面中能够显示出已输入的特价商品基本信息,在上传图片位置上添加文件后点击提交,提交成功后有提示信息弹出。在管理员查看商品信息时,将鼠标放到查看图片上就可以查看图片。

界面的设计如图5-15所示。

图5-15  商品信息管理模块

2.实现过程

所属页面名:goodsManaYesTejia.jsp

本模块主要是对商品表进行管理,所以就是一些查询和删除操作,我在做的时候,主要讲商品分为特价和非特价商品,在管理时也是分开管理,主要通过判断goodsIsnottejia来区分是否为特价商品。

  1. 公告信息管理设计与实现

1.实现目标

在各大热门网站上都有公共的出现,该模块的建立也是为了通过实现发布公告,给顾客提供方便的操作,让客户能够及时的了解商城的活动情况。界面的设计如图5-16所示。

图5-16 公告管理模块

2.实现过程

所属页面名:gonggaoMana.jsp

在gonggaoAction中,调用gonggaoAdd方法进行添加操作,使管理员能添加一个新公告,管理员查看时则调用了gonggaoMana()方法,来显示所有的公告信息,要进行删除操作就会调用gonggaoDel()方法进行删除。

  1. 留言信息管理设计与实现

1.实现目标

客户对商城的商品有任何意见,都可以在留言模块中进行留言,方便管理员查看,商城会及时处理问题。

界面的设计如图5-17所示。

图5-17  留言信息管理模块

2.实现过程

所属页面名:liuyanMana.jsp

留言功能,主要先依靠liuyanDAO.findAll方法来获取所有留言,然后调用liuyanMana来显示,管理员的添加操作是调用liuyanAdd方法实现的,留言的时间定义是用获取系统时间的方法来定义的。删除留言时则调用liuyanDel方法来实现。

  1. 本章小结

本章进行了此系统的详细设计的介绍,我们可以对本系统的设计有了一个细致全面的了解。前台模块详细介绍了用户维护、销售排行、购物车、结账、查看订单、留言模块和公告浏览模块的设计和实现的过程,同时后台模块介绍了客户信息管理、订单管理、商品信息管理、公告管理和留言管理的设计和实现的过程。本系统详细设计的原则是采用结构化的设计方法,改善控制结构,降低程序的复杂程度,从而提高程序的可读性、可测试性和可维护性

第6章  系统测试与性能分析

  1. 软件测试

经过需求分析、设计和编码等阶段的开发后,得到了源程序,开始进入到软件测试阶段。然而,在测试之前的各阶段中都可能在软件产品中遗留下许多错误和缺陷,如果不及时找出这些错误和缺陷,并将其改正,这个软件产品就不能正常使用,甚至会导致巨大的损失。目前,程序的正确性证明尚未得到根本的解决,因此软件测试仍是发现软件中错误和缺陷的主要手段。

系统整体测试步骤:

1.单元测试

单元测试是整体测试中的第一步,通常在编码阶段进行。在源程序代码经过编译、评审、确认没有语法错误之后,便可开始进行单元测试。

2.集成测试

集成测试在单元测试完成之后,将所有的模块概要设计要求组装成系统时进行的测试,主要目标是发现与接口有关的问题。

3.确认测试

经过集成测试之后,接口错误已经发现被发现并改正了,接下便要进行确认测试。所谓确认测试就是验证所开发软件的功能性及其他特性是否符合软件需求规格说明书的要求。所以,确认测试又被称为有效性测试。

4.系统测试

系统测试是更大范围内进行测试,它将经过确认测试的软件作为整个基于计算机的系统的一个元素,在实际运行环境下,对系统进行的一系列集成和确认测试。

  1. 本系统测试

为了测试系统的正确性和完整性,本节将对系统中重点模块的测试进行介绍。

  1. 前台首页的测试

1.查询模块的测试

首先在主页中的查询产品中的文本框中输入要查询的商品关键字,在中间显示菜单中查询到商品,则说明查找成功。通过对系统的反复大量的测试,该模块测试成功。

2.商品分类浏览模块的测试

测试过程是单击页面左边的商品类别,选中某一类别后,就可以在页面右边显示该类别下的所有商品。通过对该功能的重复大量测试,该模块能够准确地实现此项功能。

  1. 购物车模块的测试

在本模块中首先对修改数量单元进行了测试,所修改的数量如果是有效数字,则修改所购生活用品数量成功,否则修改失败,系统自动将商品数量重置为“1”。通过随机测试了几组数据,其修改的数量和累计的金额均正确。如果客户购买了同一个商品,则就会进行该商品购买数量的累加,不会重复出现。

针对购物车应该不限制顾客购买手机的数量这一原则进行测试,通过大量向购物车中添加生活用品来进行测试,测试结果为购物车中可以显示所添加的所有手机信息,测试结果取得了预期的效果。

  1. 用户注册模块的测试

在用户注册模块中涉及到了三项数据,项目分别为密码和确认密码、用户真实姓名、住址、性别、E_mail、QQ。测试这个模块准备的数据有:

1.  、123、123、Jamie、山西省太原市、女、1234567、sang@qq.com、12345

2.sa、123、12、张三、哈尔滨道外区、男、1234567、sang @123.com、12345

3.be、123、123、李四、哈尔滨香坊区、男、1234567、sang @123.com、12345

图6-1 测试例图

首先进入注册页面,输入第一组数据,单击注册按钮系统会提示表单信息不能为空,因为表单信息要全部填写,而用户名没有写值。然后测试第二组数据,可以明显看出所输入的密码与确认密码是不一致的。然后测试第四组数据,其中九项均是系统正确的数据,因此测试通过。在填写用户名时,用户可以查看自己的用户名是否可以使用。

    1. 商品管理模块的测试
  1. 添加功能的测试

对手机添加模块准备的手机品牌、手机名称、手机描述、手机图片、市场价格、库存,分别准备的测试数据为:锤子手机、T1、骁龙801四核处理器
存储方面采用了2GB RAM+16GB ROM的解决方案,此外还将提供32GB版本摄像头方面采用了有效像素为1278万索尼堆栈式镜头,运行Smartisan OS 1.0系统、2000、100。其中品牌的选择是通过下拉列表框来选择,图片单击上传图片后,找到图片的地址点击确定就可以上传,单击添加按钮,执行添加操作,数据提交后,就完成了手机的添加。之后,进行了几项测试,如漏填了几项数据、
上传图片格式不正确,这些数据的操作结果都是失败。

图6-2 测试例图

  1. 删除功能的测试

以编号为4的这条记录为例,通过单击该条记录上的“删除”链接按钮,对生活用品信息进行删除的操作,数据提交后,系统提示“删除商品信息成功”,通过对该模块的浏览,该信息的确已被删除,查无此条记录,说明此模块运行无误,信息删除成功。如果是删除商品类别,假如该类别下还有商品,则会提示不能删除,如果类别下没有商品,则可以进行删除。

图6-3测试例图

  1. 查询功能的测试

本系统中的查询功能都是通过点击链接实现的。将生活用品管理的编码进行了测试,输入管理员的密码登录后台后点击生活用品设置就可以直接看到查询出的生活用品信息。点击查看产品图片后查询出了手机信息是否上传了图片,系统没有出现错误,查询成功。

图6-3测试例图

  1. 本章小结

软件测试是软件开发中的重中之重,在项目管理过程中,强调的是每个过程的每一个环节都要进行测试,保证系统在每个阶段可以控制。本章着重对前台首页、购物车模块、用户注册模块和商品管理模块进行了详细的测试说明。通过反复大量的测试,每个模块均测试成功。

参考文献

1  汪建文.我国零售企业的商务电子化应用商场现代化.2008.(04):56-60

2  胡燕.软件工程与标准化.信息技术与标准化.2004.(12):17-21

3  盛仲飙.JSP中数据库访问的性能优化研究.微型电脑应用.2008,(9):16-17

4  董纪阳.软件设计中的需求分析.电脑知识与技术.2008.(28):56-57

5  林华灵.基于Strut框架技术的Web应用.中国新技术新产品.2008,(14):9-11

6  何玉洁.数据库原理与应用教程.机械工业出版社.2003:23-78

7  杨文红,赵德平,刘柯剑.基于MVC模式Struts框架研究与应用.硅谷.2008.(20):45-46

8  赵蕾,程明定,刘琳.J2EE模型中Struts框架技术的研究和应用.中国博览.2004.(12):25-26

9  桃子.生活用品市场前瞻.微型计算机.2007.(13):89-90

10 周建儒.JSP中自定义标签的实现与部署.科技信息(科学教研).2008.(23):51-53

11 Mcleod.Management Information system management in practice.Prentice Hall.1998:43-55

12 Raghu Ramakrishnan.Johannes Gehrke.Database Management System.McGraw-Hill Professional. 2007:180-213

13  Cassidy A.Information systems strategic planning.Bocaraton.Flrida.St.

Luicepress.1998:12-31

14  Dionysios Tsichritzis C.Data Base Management Systems.1977:150-53

15  hristopher P.Ben light.A critical success factors model for eprimplement.

IEEE software.1999:16-30

中文翻译

JSP的技术发展历史

作者: Kathy Sierra and Bert Bates

来源: Servlet&JSP

Java Server Pages(JSP)是一种基于web的脚本编程技术,类似于网景公司的服务器端Java脚本语言—— server-side JavaScript(SSJS)和微软的Active Server Pages(ASP)。与SSJS和ASP相比,JSP具有更好的可扩展性,并且它不专属于任何一家厂商或某一特定的Web服务器。尽管JSP规范是由Sun公司制定的,但任何厂商都可以在自己的系统上实现JSP。   在Sun正式发布JSP(Java Server Pages)之后,这种新的Web应用开发技术很快引起了人们的关注。JSP为创建高度动态的Web应用提供了一个独特的开发环境。按照Sun的说法,JSP能够适应市场上包括Apache WebServer、IIS4.0在内的85%的服务器产品。  本文将介绍JSP相关的知识,以及JavaBean的相关内容,当然都是比较粗略的介绍其中的基本内容,仅仅起到抛砖引玉的作用,如果读者需要更详细的信息,请参考相应的JSP的书籍。

JSP(Java Server Pages)是由Sun Microsystems公司倡导、许多公司参与一起建立的一种动态网页技术标准,其在动态网页的建设中有其强大而特别的功能。JSP与Microsoft的ASP技术非常相似。两者都提供在HTML代码中混合某种程序代码、由语言引擎解释执行程序代码的能力。下面我们简单的对它进行介绍。  JSP页面最终会转换成servlet。因而,从根本上,JSP页面能够执行的任何任务都可以用servlet来完成。然而,这种底层的等同性并不意味着servlet和JSP页面对于所有的情况都等同适用。问题不在于技术的能力,而是二者在便利性、生产率和可维护性上的不同。毕竟,在特定平台上能够用Java编程语言完成的事情,同样可以用汇编语言来完成,但是选择哪种语言依旧十分重要。 和单独使用servlet相比,JSP提供下述好处:  1)JSP中HTML的编写与维护更为简单。JSP中可以使用常规的HTML:没有额外的反斜杠,没有额外的双引号,也没有暗含的Java语法。  2)能够使用标准的网站开发工具。即使是那些对JSP一无所知的HTML工具,我们也可以使用,因为它们会忽略JSP标签(JSP tags)。  3)可以对开发团队进行划分。Java程序员可以致力于动态代码。Web开发人员可以将经理集中在表示层(presentation layer)上。对于大型的项目,这种划分极为重要。依据开发团队的大小,及项目的复杂程度,可以对静态HTML和动态内容进行弱分离(weaker separation)和强分离(stronger separation)。  此处的讨论并不是说人们应该放弃使用servlet而仅仅使用JSP。事实上,几乎所有的项目都会同时用到这两种技术。在某些项目中,更适宜选用servlet,而针对项目中的某些请求,我们可能会在MVC构架下组合使用这两项技术。我们总是希望用适当的工具完成相对应的工作,仅仅是servlet并不一定能够胜任所有工作。

Sun公司的JSP技术,使Web页面开发人员可以使用HTML或者XML标识来设计和格式化最终页面。使用JSP标识或者小脚本来生成页面上的动态内容(内容是根据请求来变化的)。  Java Servlet是JSP技术的基础,而且大型的Web应用程序的开发需要Java Servlet和JSP配合才能完成,Servlet这个名称源于Applet,现在国内的翻译方式很多,本书为了避免误会,决定直接采用Servlet而不做任何翻译,读者如果愿意,可以称之为“小服务程序”。Servlet其实和传统的CGI、ISAPI、NSAPI等Web程序开发工具的作用是相似的,在使用Java Servlet以后,用户不必再使用效率低下的CGI方式,也不必使用只能在某个固定Web服务器平台运行的API方式来动态生成Web页面。许多Web服务器都支持Servlet,即使不直接支持Servlet的Web服务器也可以通过附加的应用服务器和模块来支持Servlet。得益于Java的跨平台的特性,Servlet也是平台无关的,实际上,只要符合Java Servlet规范,Servlet是完全与平台无关且是与Web服务器无关的。由于Java Servlet内部是以线程方式提供服务,不必对于每个请求都启动一个进程,并且利用多线程机制可以同时为多个请求服务,因此Java Servlet效率非常高。  但Java Servlet也不是没有缺点,和传统的CGI、ISAPI、NSAPI方式相同,Java Servlet是利用输出HTML语句来实现动态网页的,如果用Java Servlet来开发整个网站,动态部分和静态页面的整合过程会非常难以实现。为了解决Java Servlet的这种缺点,SUN推出了JSP。  许多年前,Marty受到邀请,参加一个有关软件技术的小型研讨会.坐在Marty旁边的人是James Gosling--- Java编程语言的发明者。隔几个位置,是来自华盛顿一家大型软件公司的高级经理。在讨论过程中,研讨会的主席提出了Jini的议题,这在当时是一项新的Java技术。主席向该经理询问他的想法.他回答说,虽然现在言之过早,但这看起来会是非常有前途的一项技术。他们会持续关注这项技术,如果这项技术变得流行起来,他们会遵循公司的“接受并扩充(embrace and extend)”的策略.此时, Gosling随意地插话说“你的意思其实就是不接受且不扩充(disgrace and distend)。”  在此, Gosling的抱怨显示出,他感到这个公司会从其他公司那里拿走技术,用于他们自己的目的.出人意料的是,形势已经完全不同。Java团队并没有发明这一思想----将页面设计成由静态HTML和用特殊标签标记的动态代码混合组成.。ColdFusion多年前就已经这样做了。甚至ASP(来自于前述经理所在公司的一项产品)都在JSP出现之前推广了这种方式。实际上,JSP不只采用了这种通用概念,它甚至使用许多和ASP相同的特殊标签。  JSP是建立在Java servlets模型之上的表达层技术,它使编写HTML变得更简单。像SSJS一样,它也允许你将静态HTML内容与服务器端脚本混合起来生成动态输出。JSP把Java作为默认的脚本语言,然而,就像ASP可以使用其他语言(如JavaScript和VBScript)一样,JSP规范也允许使用其他语言。

按照脚本语言是服务于某一个子系统的语言这种论述,JSP应当被看作是一种脚本语言。然而,作为一种脚本语言,JSP又显得过于强大了,在JSP中几乎可以使用全部的Java类。  作为一种基于文本的、以显示为中心的开发技术,JSP提供了Java Servlet的所有好处,并且,当与一个JavaBeans类结合在一起时,JSP提供了一种使内容和显示逻辑分开的简单方式。分开内容和显示逻辑的好处是,更新页面外观的人员不必懂得Java代码,而更新JavaBeans类的人员也不必是设计网页的行家里手,就可以用带JavaBeans类的JSP页面来定义Web模板,以建立一个由具有相似的外观的页面组成的网站。JavaBeans类完成数据提供,这样在模板中就没有Java代码,这意味着这些模板可以由一个HTML编写人员来维护。当然,也可以利用Java Servlet来控制网站的逻辑,通过Java Servlet调用JSP文件的方式来将网站的逻辑和内容分离。  一般来说,在实际的JSP引擎中,JSP页面在执行时是编译式,而不是解释式的。解释式的动态网页开发工具如ASP、PHP3等由于速度等原因已经满足不了当前大型电子商务应用的需要了,传统的开发技术都在向编译执行的方式改变,如ASP→ASP+;PHP3→PHP4。  在JSP规范书中,并没有明确要求JSP中的程序代码部分(称为Scriptlet)一定要用Java来写。实际上,有一些JSP引擎就是采用的其他脚本语言,如EMAC-Script、WebL等,但实际上这几种脚本语言也是构建在Java上面,编译为Servlet来实现的。按照JSP规范书写,和Java没有任何关系的Scriptlet也是可以的,不过,由于JSP的强大功能主要在于能和JavaBeans、Enterprise JavaBeans共同运转,所以即使是Scriptlet部分不使用Java,编译成的执行代码也应该是与Java相关的。

关于对象的介绍:

为什么面向对象语言有如此广泛的影响力之于软件开发社区?

面向对象程序设计吸引着多个层面。对于经理人(managers),它提供了更快速、更廉价的开发和维护(maintenance)费用。对于分析员和设计人员,建模过程(the modeling process)变得更简单而且可以创建一个有序而可控的设计。对于程序员而言,简洁而优雅的对象,强有力的面向对象工具和开发库将为他们创造一个愉快的开发环境,并且体验到生产效率的提高。它将会使每个人都受益。如果说有不好的一面,那就是昂贵的学习曲线(learning curve)。用对象的方式来思考问题相比于过程化的思考问题方式有着很大的差别,而且设计一个对象比起设计一个过程来说是一个很大的挑战,特别是当你要设计一个可复用的对象(reusable objects)的时候。在过去,一个从事面向对象程序设计的初级从业人员面对着两大难题:

1、 选择一个像是Smalltalk一样的语言,如果你想要用它来进行生产你就必须要学习一个很大型的库。

2、 选择一个像是C++语言一样的语言,几乎没有任何的库。你必须去设法了解深涩的语言本身以便于去编写你自己的对象库。

附录3

购物车核心代码

在userAction中:

public String userLogin()

{

String sql="from TUser where userName=? and userPw=?";

Object[] con={userName,userPw};

List userList=userDAO.getHibernateTemplate().find(sql,con);

if(userList.size()==0)

{

this.setMessage("用户名或密码错误");

this.setPath("qiantai/index.html");

}

else

{

Map session= ServletActionContext.getContext().getSession();

TUser user=(TUser)userList.get(0);

session.put("user", user);

Cart cart=new Cart();          //用户登陆成功后生成购物车,并将其放入到session中。

session.put("cart", cart);

this.setMessage("成功登录");

this.setPath("qiantai/index.html");

}

return "succeed";

}

在buyAction中:

public String addToCart()

{

TGoods goods=goodsDAO.findById(goodsId);

TOrderItem orderItem=new TOrderItem();

orderItem.setGoods(goods);

orderItem.setGoodsQuantity(quantity);

Map session= ServletActionContext.getContext().getSession();

Cart cart = (Cart)session.get("cart");     //将session中的cart取出,也就是上边存储在session中的cart

cart.addGoods(goodsId, orderItem);

session.put("cart",cart);              //再把cart放入session

//this.setMessage("");

this.setPath("myCart.action");

return "succeed";

}

public String myCart()             //获取我的购物车

{

return ActionSupport.SUCCESS;

}

public String orderQueren()                 //确认提交订单

{

Map request=(Map)ServletActionContext.getContext().get("request");

return ActionSupport.SUCCESS;

}

public String orderSubmit()     //订单提交

{

Map session= ServletActionContext.getContext().getSession();

Cart cart = (Cart)session.get("cart");                //将cart取出

TUser user=(TUser)session.get("user");           //将用户取出

TOrder order=new TOrder();

order.setOrderBianhao(new SimpleDateFormat("yyyyMMddhhmmss").format(new Date()));        //设定订单编号

order.setOrderDate(new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(new Date()));      //确认订单的日期

order.setOrderZhuangtai("no");                       //订单状态默认为未受理

order.setOrderUserId(user.getUserId());                 //设定订单的用户ID

order.setOrderJine(cart.getTotalPrice());               //商品的价格

orderDAO.save(order);                              //保存订单

for (Iterator it = cart.getItems().values().iterator(); it.hasNext();)

//把订单里的商品存入数据库

{

TOrderItem orderItem = (TOrderItem) it.next();

orderItem.setOrderId(order.getOrderId());

orderItem.setGoodsId(orderItem.getGoods().getGoodsId());

orderItemDAO.save(orderItem);

}

cart.getItems().clear();                         //清空购物车

session.put("cart", cart);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("order", order);

return ActionSupport.SUCCESS;

}

Public String myOrder()                 //根据用户查询订单

{

Map session= ServletActionContext.getContext().getSession();

TUser user=(TUser)session.get("user");        //获取用户

String sql="from TOrder where orderUserId="+user.getUserId();

List orderList=orderDAO.getHibernateTemplate().find(sql);          //调用orderDAO中的find方法,执行sql语句

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("orderList", orderList);

return ActionSupport.SUCCESS;

}

public String orderMana()              //订单管理

{

String sql="from TOrder order by orderUserId";

List orderList=orderDAO.getHibernateTemplate().find(sql);

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("orderList", orderList);

return ActionSupport.SUCCESS;

}

Public String orderDel()                                                            //用户自己删除订单

{

TOrder order=orderDAO.findById(orderId);

orderDAO.delete(order);

Map session= ServletActionContext.getContext().getSession();

TUser user=(TUser)session.get("user");

this.setMessage("删除成功");

this.setPath("myOrder.action?userId="+user.getUserId());     //跳转到 myOrder.action

return "succeed";

}

public String orderDelByAd()                                                       //管理员删除订单

{

TOrder order=orderDAO.findById(orderId);

orderDAO.delete(order);

String sql="delete from TOrderItem where orderId="+orderId;

orderItemDAO.getHibernateTemplate().bulkUpdate(sql);

this.setMessage("删除成功");

this.setPath("orderMana.action");

return "succeed";

}

public String orderShouli()                      //对订单进行受理

{

TOrder order=orderDAO.findById(orderId);

order.setOrderZhuangtai("yes");//已经受理订单

orderDAO.attachDirty(order);

this.setMessage("受理订单成功");

this.setPath("orderMana.action");

return "succeed";

}

public String orderDetail()                 //订单明细

{

String sql="from TOrderItem where orderId="+orderId;

List orderItemList=orderItemDAO.getHibernateTemplate().find(sql);

for(int i=0;i<orderItemList.size();i++)

{

TOrderItem orderItem=(TOrderItem)orderItemList.get(i);

orderItem.setGoods(goodsDAO.findById(orderItem.getGoodsId()));

}       //取出订单里的商品

Map request=(Map)ServletActionContext.getContext().get("request");

request.put("orderItemList", orderItemList);

return ActionSupport.SUCCESS;

}

在cart.java中

package com.util;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import com.model.TGoods;

import com.model.TOrderItem;

public class Cart            //定义购物车类

{

protected Map<Integer, TOrderItem> items;

public Cart()                                                  //定义构造方法

{

if (items == null)

{

items = new HashMap<Integer, TOrderItem>();

}

}

public void addGoods(Integer goodsId, TOrderItem orderItem)    //添加购物车

{

if (items.containsKey(goodsId))

{

TOrderItem _orderitem = items.get(goodsId);

_orderitem.setGoodsQuantity(_orderitem.getGoodsQuantity()+ orderItem.getGoodsQuantity());             //如果购买商品重复,则加上数量

items.put(goodsId, _orderitem);

} else

{

items.put(goodsId, orderItem);

}

}

Public void   delGoods(Integer  goodsId)                                  //删除购物车

{

items.remove(goodsId);

}

public void updateCart(Integer goodsId, int quantity)           //更新购物车的数量

{

TOrderItem orderItem = items.get(goodsId);

orderItem.setGoodsQuantity(quantity);

items.put(goodsId, orderItem);

}

public int getTotalPrice()    //计算总的价格

{

int totalPrice = 0;

for (Iterator it = items.values().iterator(); it.hasNext();)

{

TOrderItem orderItem = (TOrderItem) it.next();

TGoods goods = orderItem.getGoods();

int quantity = orderItem.getGoodsQuantity();

totalPrice += goods.getGoodsTejia() * quantity;          //单价乘以数量

}

return totalPrice;

}

}

基于jsp的网上手机销售系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)相关推荐

  1. 基于jsp的高校固定资产管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    摘本文基于Java语言,设计与实现了一个高校固定资产管理系统.该系统提供了资产信息管理.资产入库.资产领用.资产报废等功能,旨在帮助高校高效管理和维护固定资产.本文详细介绍了系统的需求分析与设计.数据 ...

  2. 基于jsp的农产品销售管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 基于WEB的农产品销售管理系统 本文论述了基于JAVA.Web的农产品销售管理系统开发的目的及意义,目的是为了农产品资源的合理利用和物资的充分交流,有些地方富余而卖不出去,有些地方却吃不上. ...

  3. 基于jsp的项目管理平台系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 基于Java EE平台项目管理系统的设计与实现 随着社会信息化的发展,很多的社会管理问题也一并出现了根本性变化,项目公司的报表及文件管理也发生了变化,以前的管理是一个分布式的信息,然后围绕中 ...

  4. 基于java的连连看游戏系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目说明报告 基于Java的连连看游戏设计与实现 连连看是一种消除类益智游戏,核心要求是在规定的时间内,消除游戏界面中选中的两张相同的图案,直至完全消除所有图案.这款游戏操作简单(只需单击鼠标左键操作 ...

  5. 基于jsp的高校网上订餐系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 基于jsp的网上订餐系统 随着社会不断的更替发展,科技日新月异,人们的饮食生活方式以及作息等等方面都发生了翻天覆地的变化.发展到现今社会,人们的饮食方式不再局限于传统的在饭店中就餐,越来越多 ...

  6. 基于java的新闻发布及管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目说明报告 题  目:新闻发布及管理系统的设计与实现 本课题来源及研究现状:  课题来源 21世纪是信息的时代,是网络的时代,进入信息社会高速发展的时代,数字化革命给所有领域带来新的改变.信息技术的 ...

  7. 基于java的出租车计价器系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    项目报告 出租车计价器设计与实现 在我国,出租车行业是八十年代初兴起的一项新兴行业,随着出租车的产生,计价器也就应运而生.但当时在全国没有一家企业能够生产,因而那个时期的计价器是由台湾引进.台湾是计价 ...

  8. 基于java的宠物管理系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    基于JAVA的宠物网站的设计与实现 本系统是采用Java技术来构建的一个基于Web技术的B/S结构的宠物网站,该网站建立在Spring和Struts2框架之上,前台使用JSP作为开发语言,后台使用My ...

  9. 基于jsp的网上招标系统设计与实现(项目报告+答辩PPT+源代码+数据库+截图+部署视频)

    说明书报告 从本世纪初,互联网开始加速发展,各种创新型应用和互联网新概念不断出现,例如搜索引擎.电子商务.博客.维基百科.RSS.3G.web2.0.长尾理论等.这些应用和概念与知识管理都有着或多或少 ...

最新文章

  1. System.OutOfMemoryException
  2. 《C++应用程序性能优化::第五章动态内存管理》学习和理解
  3. 配置中心框架IConfCenter
  4. 【深度学习】遗传算法优化GAN
  5. ES权威指南[官方文档学习笔记]-8
  6. (组合数学)AtCoder Grand Contest 019 F - Yes or No
  7. Java 并发:第三部分 - 同步锁
  8. SQL Server 2008 数据库快照
  9. MNIST数据集重生!测试图片增加到6万张,LeCun点赞
  10. 【逻辑漏洞】短信轰炸
  11. 2018.12.26 Jquery 使用 slideBox 实现滚动 效果
  12. python爬虫之使用urllib模块实现有道翻译功能
  13. 12面魔方公式图解法_三阶魔方公式符号图解V2.0(2017/12/15)_碧海风云
  14. C#习题之标准体重测试
  15. QT在状态栏添加label
  16. katacontainers启动分析
  17. 腾讯云数据库TDSQL-C(原CynosDB)的外网访问配置
  18. 18岁创业从哪入手?读透这5点则事半功倍!
  19. LVI-SAM imuPreintegration代码解析
  20. 天空盒里放风筝,OpenGL就这么任性:想怎么放,就怎么放!

热门文章

  1. 平衡树其一(AVL,Treap)
  2. msvcp110.dll丢失怎么修复(一键修复办法)
  3. 3D Xpoint技术与NAND Flash、3D NAND Flash及DRAM的比较
  4. Python ---(十九)Tkinter窗口组件:Toplevel
  5. Visual Studio 2005详细讲解!
  6. head/body内常用标签
  7. 14.1 NFS介绍 14.2 NFS服务端安装配置 14.3 NFS配置选项
  8. 2003年国赛数学建模B题碎纸片拼接复原问题参考
  9. 揭秘自恢复保险丝与电压之间“不能说的秘密”
  10. Failure to find com.oracle:ojdbc6:jar:11.2.0