基于JSP的网上书店系统的设计与应用.doc_第1页
基于JSP的网上书店系统的设计与应用.doc_第2页
基于JSP的网上书店系统的设计与应用.doc_第3页
基于JSP的网上书店系统的设计与应用.doc_第4页
基于JSP的网上书店系统的设计与应用.doc_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

吉林大学珠海学院毕业论文(设计)基于jsp的网上书店系统的设计与应用theonline bookstore system based on jsp完成日期 2013 年3月20日吉林大学珠海学院本科毕业论文(设计)开题报告基于jsp的网上书店系统的设计与应用摘要目前,随着internet的迅速发展,网络书店也正在蓬勃发展,国内的当当,国外的亚马逊,都是网络书店领域的巨头。还有很多出版社,图书企业也正在建立自己的网络书店,一些专注网络购物的大型电商也瞄准进入这个市场,如东京商城,淘宝等,发展速度也非常快,可见其市场前景非常广阔。这个网上书店设计主要采用的特色技术有javabean、css、javascript。css用来控制和设计页面,包括字体的大小和颜色,javascript用来做提示框,增加互动性。页面也非常简洁美观。本次设计根据目前流行网络书店形式,以友好的用户界面,方便快捷的操作,根据人们青睐的购书形式,模拟设计一个流行的网络书店系统,给人们带来更好的网络购书生活享受。关键词:网络书店;电子商务;mysql;jsp技术theonline bookstore system based on jspabstractat present,with the rapid development of internet, theonline bookstore also is developing rapidly. the dangdang of china and foreign amazon are both the industrys giants of theonline bookstore. many publishers andenterprises of book are building a online bookstore their own. some large e-commerce enterprises focus on onlineshopping aim at the market and enter it. for example, the jingdong mall and taobao, they are developing at a rapid pace. we can see the market prospects ofonline bookstore were very broad.this design for the online bookstore mainly adopts characteristic technology includes java-bean, css and javascript. css is for control and design the page, includes font size and color.javascript is for the prompt box, making it more interactive. the page is also very concise and artistic.the design based on popular development mode of online bookstore, with a friendly user interface(ui), convenient operation and buy books style the people like, using analog design method to make an online bookstore, it brings the better life of online buy books to people.key words: online bookstore;e-commerce;mysql; jsp technology目录1 绪论91.1 研究背景91.2 数据库简介91.3 开发环境简介91.4 myeclipse概述101.5 jsp概述101.6 mysql概述102 需求分析112.1 系统需求112.2 需求分析112.3 系统功能分析图123 总体设计133.1 总体功能设计133.1.1 系统设计目标133.2 数据流程图133.2 数据库设计143.2.1 数据库分析143.2.2 系统er图143.3 数据字典153.3.1 图书信息表153.3.2 用户信息表163.3.3 管理员信息表163.3.4 订单信息表173.3.5 订单详细表174 设计思想与实现184.1 用户登录模块184.2 用户注册模块194.3 书店主页模块214.4 搜索模块224.5 用户资料修改模块244.6 后台管理模块254.7 用户管理模块284.8 订单管理模块294.9 管理员退出模块304.10购物车模块304.11 订单查询模块344.12 系统部署环境375 结束语38参考文献39致谢401 绪论1.1 研究背景现在,随着internet发展不断快速,电子商务成为人们所喜爱的商业模式,电子商务技术的不断发展也让其功能越来越丰富和强大,人们可以直接在网上搜索想要购买的商品就可以足不出户,随时享受购物带来的的乐趣。依附着计算机网络迅猛的发展,电子的发展也越来越快,进入到各个领域。很多大企业也开始建立各种网络销售渠道,直接对消费者开展便捷服务和销售业务,全美国图书协会的统计显示,目前已有50%的经销商都建立自己的网络电子商务,销售规模也越来越大。网上书店在这网络技术不断发展中出现的一种图书销售模式,其方便、快捷等众多优点不断冲击着传统的书店行业,网上书店的兴起,带来了很多机遇,也带来了很多挑战。网上书店同传统的店面书店相比,网上书店以全新的销售模式,24小时服务,这是传统书店所不能比及的,由于不需要店面也不需要大量店员,成本低是网上书店的优势,而且由于成本低,图书的价格也降了下来,消费者足不出户就能买到想要的而便宜的书籍,节省了消费者的时间。传统书店因为企业成本高,规模比较小,品种往往不能齐全,有目的性的购书需要花费不少时间,为了顺应市场需要,网上书店出现了。它的出现改变了消费者的购书生活消费体验。1.2 数据库简介数据库根据数据的结构进行组织,管理和存储的仓库,在距离现在五十年前产生,随着科学技术水平信息的日益发展,如今的数据库不再只是存储和管理数据,其各种数据管理技术也被用户大量应用。发展到现在,有很多不同种类型的数据库,从各种最简单的数据存储应用发展到到能够存储海量数据的大型数据库应用系统都在各个领域各个方面有广泛的应用。1.3开发环境简介本网上书店系统是用基于myeclipse下的jsp动态网页技术结合mysql数据库进行开发。myeclipse是一个非常优秀的java开发工具,集合了各种各样的插件,功能强大。jsp全称java server pages,是一种动态网页技术标准。mysql是一个方便快捷的数据库管理系统,它是一种轻型,快速,体积小,成本低,源码开放的特点成为很多个人用户,中小企业开发作为数据库的首选。1.4 myeclipse概述全称myeclipse enterprise workbench ,简称myeclipse,是一个集合了各种插件,十分优秀的用于开发java, j2ee的工具,功能非常强大,支持也十分广泛,尤其是对各种开源产品的支持十分不错。myeclipse目前对html,struts,jsp,css,javascript,spring,sql,hibernate,数据库链接工具等多项功能都能完美支持完整支持。可以说myeclipse几乎囊括了目前所有主流开源产品的专属eclipse开发工具。1.5 jsp概述jsp全名为java server page,由sun microsystems公司引领、许多公司参与一起建立的一种动态技术标准6。在传统的网页html文件中加入java程序片段(scriptlet)和jsp标签。其相当一个简化的servlet,他实现了html语法中的java扩张。jsp与servlet一样,是在服务器端执行的,一般给客户端返回一个html文本,结合tomcat自建服务器,客户端要浏览只需有浏览器就行。web服务器在遇到访问jsp网页的请求时,从执行的程序中返回结果,并回复响应到客户端,把结果输出到相应的网页页面中。插入的java程序段就可以很方便操作数据库和对网页的重定向等,根据确切需要建立动态网页的全部功能。1.6 mysql概述mysql是由瑞典mysql ab公司开发,目前属于oracle公司。mysql是一种关联数据库管理系统,其提高速度和灵活性的关键在于mysql将各种数据存储在数据表里而不一起存放在一个大仓库中。数据库的访问所使用的最常见而又标准化的语言是mysql的sql语言。mysql软件采用了双授权政策,它分为社区版和商业版,而且由于其体积小、速度快、总体成本不高,尤其是开放源码这一特点,一般中小型企业网站的开发数据库时都选择mysql作为首选网站数据库。由于其社区版的性能非常好,各种各样的变成开发工具都可组成良好的开发环境。2 需求分析2.1 系统需求市面上主要的网上书店有当当网,卓越亚马逊等,通过对这些大型书店的分析和研究,以及应对人们的网上购书心理需求而开发。目前人们所喜爱的网上书店,要有优秀的网页美术设计,方便快捷的功能,人性化的搜索功能,品种齐全货源充足等。还有稳定性,流畅性,应对此需求,开发一个功能比较齐全,页面比较美观的网上书店系统。2.2 需求分析根据系统分析,网上书店系统的需求如下:1.系统需求分析:对用户:(1)美观的网页设计,安全稳定的系统;(2)能对图书进行搜索功能,查看图书的详细信息;(3)购物车结账功能;(4)个人信息和密码修改;对后台管理:(1)查看用户信息;(2)对图书进行添加删除等操作;(3)订单的查看和执行;2.系统性能要求:(1)安全、流畅、可靠;2.3 系统功能分析图下图是此网上书店系统功能结构图。网上书店系统前台用户后台管理网站首页会员管理图书管理热门书籍展示图书搜索图书查看图书购买会员注册会员登录会员信息修改会员密码修改订单查询购物车添加购买书籍退回书籍结账生成订单图书信息查看图书信息修改图书信息删除用户管理用户信息查看订单管理订单查看订单执行图2-1 系统结构功能分析图3 总体设计3.1 总体功能设计3.1.1 系统设计目标本系统设计是以javabean和jsp页面组合完成,系统总体设计是为了达到下面的目标:美观的网页页面设计,网上书店基本的功能实现,稳定方便的系统设计,让消费者体验更好的网上购书体验。3.2 数据流程图以下为数据流程图:用户网站首页搜索图书查看图书是否登录购买图书银行结账订单生产完成购买退回图书继续购书否是修改购买数量图3-1 系统功能流程图3.2 数据库设计3.2.1 数据库分析通过对网上书店系统的分析,有两类实体:图书,订单和用户(普通用户,后台管理员)。数据项有b_bookfifo;b_manager;b_member;b_order;b_order_detail。3.2.2 系统er图通过对系统实体数据分析,可以画出下面的er图:书名isbn号图书信息表类型出版社作者介绍价格出版日期封面文件管理员信息表id账号密码图3-2 图书信息表图3-3 管理员信息表邮箱id用户信息表电话身份证邮编地址密码真实姓名用户名图3-4 用户信息表orderid订单信息表订单日期邮箱电话邮编地址真实姓名用户名图3-5 订单信息表orderid订单详细表数量价格出版社书名isbn号id图3-6 订单详细表3.3 数据字典3.3.1 图书信息表描述:对图书基本信息的详细记录,图书信息表b_bookinfo的属性项包括: isbn、 bookname、type、publisher、writer、introduce、price、pdate、cover等2。图3-7 图书信息表3.3.2 用户信息表描述:对用户基本信息的详细记录,用户信息表b_member的属性项包括: id、 username、truename、password、address、postcode、idnumber、tel、email。图3-8 用户信息表3.3.3 管理员信息表描述:对管理员基本信息的详细记录,管理员信息表b_manager的属性项包括: id、 manager、pwd。图3-9 管理员信息表3.3.4 订单信息表描述:对订单信息的详细记录,订单信息表b_order的属性项包括: orderid、 username、truename、address、postcode、tel、email、orderdate、enforce。图3-10 订单信息表3.3.5 订单详细表描述:对订单详细信息的详细记录,订单详细表b_order_detail的属性项包括: id、 orderid、isbn、bookname、publisher、price、number。图3-11 订单详细表4 设计思想与实现4.1 用户登录模块登录界面如图4-1:图4-1 登陆界面登录模块是对用户的身份进行验证,但是本系统不用登录也能进行图书搜索和基本的图书信息查看,人性化的功能方便了暂时不打算注册的游客进行浏览,节省注册时间。用户想进行购买需要登录,输入用户名和密码后点击登录,用action方法1,把输入的值传递到指定的jsp页面,之后进行数据库的查询用next()判断下一个元素判断进行对数据表了里的是否存在的username进行判断,之后在判断密码是否正确,用户名和密码都正确后登录成功跳转。关键代码如下:用户名 密码 inputname=pwd type=password class=txt_grey id=pwd size=20resultset rs = conndb.executequery(select * from b_member where username=+ username + );if (rs.next() /数据库检索检查判断下一个元素是否存在string passw = request.getparameter(passw );if (passw.equals(rs.getstring(password) session.setattribute(username, username); /保存用户名数据4.2 用户注册模块登录界面如图4-2:图4-2 注册模块页面注册模块提供用户进行注册,通过输入各种需要输入的信息,其中有星号是的必须输入的,否则会有提示而无法注册。此功能是利用javascript3文件实现,当输入的值为空时,返回一个提示框。这个注册模块还有一个检查用户名是否被注册的功能,用javascript语句来实现,当输入的用户名不为空时,把输入的值传递到制定的页面,通过数据库查询判断,此用户名username是否存在在b_member表里,如果不存在提示可以注册,反之提示已存在。注册成功后,输入的信息存入b_member表里,就可以用此用户名登陆。关键代码如下:function openwin(id) /提示框,如果有没有输入或者数据库里存在此用户名,弹出提示框if (id = ) alert(请输入用户名!);myform.username.focus(); /光标焦点设置在页面元素中return;var str = checkusername.jsp?username=+ id; /转移到相应页面处理window.showmodaldialo(str, dialogwidth=200px;dialogheight=120px;status=no;help=no;scrollbars=no);用户名: 检测用户名string username=chstr.chstr(request.getparameter(username);/字符串处理resultset rs=conndb.executequery(select * fromb_member where username=+username+); /数据库查询语句if(rs.next()%out.println(很报歉 +username+用户名已经被注册);%else4.3 书店主页模块主页界面如图4-3:图4-3 主页页面首页提供热门图书预览,没登陆的用户可以查看信息,但购买图标需要登录后才出现,此功能使用session获取已登录的username4。可以对图书进行搜索,也可以查看书店的全部书籍。图书的热门推荐是通过对表b_bookinfo进行检索,用recordcount获取表中属性commend值为1的推荐的书的数据记录条数,然后把表中的数据依次输出。这里我用了分栏方法 (i%2!=0)偶数项放上排,奇数放下排,从而提高了页面的观赏美观性。关键代码如下:resultset rs_book = conndb.executequery(select * from b_bookinfo where commend=1);/数据库查询语句int recordcount = rs_book.getrow(); /获取记录总数if (i % 2) != 0) else;/分栏if (session.getattribute(username) != null) /判断用户名是否获取为为空,就可以判断是否登录% inputname=submit5 type=submit class=btn_greyvalue=购买onclick=window.location.href=cart_add.jsp?isbn=input name=submit62 type=submitclass=btn_grey value=查看onclick=window.location.href=book_detail.jsp?isbn=4.4 搜索模块搜索结果如图4-4:图4-4 搜索结果搜索模块是按钮的action方法转移到处理页面,通过输入的关键字对数据库使用查找语句对bookname进行查找,把匹配的数据从数据库取出,用输出在搜索结果页面上。关键代码如下:if (request.getparameter(bookkey) != null) sql = select * from b_bookinfo where bookname like % + key+ %; /判断输入获取的关键字否为空,从而进行关键字查询 else if (request.getparameter(key) = null) key = 空;sql = select * from b_bookinfo; else key = chstr.chstr(request.getparameter(key);sql = select * from b_bookinfo where bookname like %+ key + %;resultset rs_search = conndb.executequery(sql); /来创建存放从数据库里得到的结果的对象4.5 用户资料修改模块资料修改界面如图4-5:图4-5 用户资料修改页面用户资料修改提供对图中的信息进行更新,也可以修改用户的密码。功能的实现是数据库通过session方法获取已登录的username进行查询,获取出本用户的资料并输出到文本框中,用户可以对资料进行修改,输入内容的检测同过javascript文件进行检查,打星号的文本框没输入会弹出提示,无法保存。当规范输入,确认保存后通过action进行跳转,执行数据库更新语句update进行数据表b_member的更新,注册成功后返回首页。关键代码如下: 0) /获取传递过来的值,长度要不为空和大于0int ret = 0; /定义条数变量string sql = update b_member set truename= + truename+ ,password= + pwd + ,idnumber= + idnumber+ ,tel= + tel + ,address= + address+ ,postcode= + postcode + ,email= + email+ where username= + username + ;ret = conndb.executeupdate(sql); /查询数据库的条数response.sendredirect(index.jsp); /返回首页用户退出模块用户退出模块是通过跳转的按钮,跳转进到退出处理页面,通过session.invalidate()方法清除定义的session,最后直接返回首页4。关键代码如下:session.invalidate(); /方法清除定义的sessionresponse.sendredirect(index.jsp);/网页重定向,直接返回首页4.6 后台管理模块后台管理模块如图4-6:图4-6 后台登陆界面管理员登录模块和用户登录模块使用的方法一样,通过对数据表b_manager的数据进行查询,输入正确的账号密码,和数据表里的数据相符合可以登录3。关键代码如下:resultset rs = conndb.executequery(select * from b_manager where manager=+ manager + );/查询managerif (rs.next() string password = request.getparameter(pwd );if (password.equals(rs.getstring(pwd ) /判断密码是否对应session.setattribute(manager,manager); /session获取managerresponse.sendredirect(index.jsp);后台管理主页面如图4-7:图4-7 后台登陆页面为了区别管理员与普通用户,后台管理全部页面用绿色框。通过获取数据表b_bookinfo的所有数据,依次排列输出。点击书名可以查看图书的详细信息,实现的方法是通过传递图书的isbn值,通过图书处理页面进行处理,选出传递过来的isbn对应的图书数据,从而输出到jsp页面5。每一项后面都有相应的修改和删除功能,这两个功能都是通过传递isbn的方式,结合javascript文件,使用action方法跳转到对应的处理页面,然后实现数据库操作。关键代码如下:resultset rs_manager = conndb.executequery(select * from b_bookinfo);/查询b_bookinfo所有数据int recordcount = rs_manager.getrow(); /获取记录总数for (int i = 1; i recordcount + 1; i+) /进行for循环依次输出string isbn = rs_manager.getstring(isbn);string bookname = rs_manager.getstring(bookname);string publisher = rs_manager.getstring(publisher);if (request.getparameter(isbn)!=null) /修改模块获取isbnstring isbn=request.getparameter(isbn);resultset rs=conndb.executequery(select * from b_bookinfo where isbn=+isbn+);if(request.getparameter(isbn)!=) /更新对应isbn的数据表的数据string sql=update b_bookinfo set bookname=+bookname+,type=+type+,publisher=+publisher+,writer=+writer+,introduce=+introduce+,price=+price+,pdate=+pdate+,cover=+cover+ where isbn=+isbn+;if (request.getparameter(isbn)!=null) /删除模块获取isbnstring isbn=request.getparameter(isbn);resultset rs=conndb.executequery(select * from b_bookinfo where isbn=+isbn+);if(request.getparameter(isbn)!=) /删除对应isbn的数据表的数据string isbn= request.getparameter(isbn); /获取传递的isbnstring sql=delete from b_bookinfo where isbn=+isbn+; /4.7 用户管理模块用户管理模块如图4-8:图4-8 用户管理页面通过获取b_member的数据依次输出,在输出的页面的页面上可点击username进入查看用户的详细信息,是通过传递过去的username,对数据库进行检索,输出对应的数据。关键代码如下:resultset rs_member = conndb.executequery(select * from b_member);/ 获取数据表全部数据rs_member.last();int recordcount = rs_member.getrow(); /获取记录总数rs_member.first();for (int i = 1; i = recordcount; i+) /依次输出用户信息if (request.getparameter(id)!=null) /判断传递过去的id是否为空intid=integer.parseint(request.getparameter(id);resultset rs=conndb.executequery(select * from b_member where id=+id);/然后输出对应id的数据4.8 订单管理模块订单管理模块如图4-9:图4-9 订单管理页面通过获取b_order的数据依次输出,在输出的页面的页面上可点击订单号id进入查看订单的详细信息,通过传递过去的id,对数据库进行检索,输出对应的数据,订单执行的意思是检查订单无误后,开始为客户发货。关键代码如下:resultset rs_order = conndb.executequery(select * from b_order); / 获取数据表全部数据rs_order.last();int recordcount = rs_order.getrow(); /获取记录总数rs_order.first();for (int i = 1; i = recordcount; i+) /依次输出数据if (request.getparameter(id) != null) /判断传递的id值是否为空int id = integer.parseint(request.getparameter(id); /获取id值resultset rs_main = conndb.executequery(select * from b_order where orderid=+ id);/检索对应id的数据if (request.getparameter(id) != ) /根据id订单执行功能intid = integer.parseint(request.getparameter(id);string sql = update b_order set enforce=1 where orderid= + id;/执行后数据表中的enforce的值为14.9 管理员退出模块管理退出模块是通过跳转的按钮,跳转进到退出处理页面,通过session.invalidate()方法清除定义的session,最后用response直接返回后台登陆框图4-6。关键代码如下:session.invalidate();response.sendredirect(/onlinebook/manage/login_m.jsp); /用绝对路径返回4.10购物车模块购物车模块如图4-10、图4-11:图4-10 购物车页面购物车模块是本网上书店系统的最关键模块,主要利用javabean和jsp页面1,来完成。用户登录后用session方法获取username主页展示的每本书,搜索到的书,以及查看全部图书,都会多出购买按钮,点击后可放入购物车,购物车的时间是用了vector类型,vector是一个能存放任何类型的动态数组,既能增加数据也能压缩数据。此模块用了一个变量gwc来存储购买数据,在session中保存。当gwc为空,每点击一次购买,gwc都会增加一个并保存一个图书信息。当没放入购物车时候,gwc为空时3,直接用response跳转到处理购物车为空的页面。当gwc不为空时,添加页面根据传递过去的isbn向数据库里获取数据输出出来。关键代码如下:if (gwc = null | gwc.size() = 0) /如果没有获取到gwc,返回购物车为空页面response.sendredirect(cart_null.jsp);图4-11 购物车有图书当点击购买时,变量gwc增加一个,对应的gwc就有个id,并存储到javabean文件里已经定义的相应的图书isbn,价格数量,从数据库中获取信息后,用for循环输出到页面。购物车里的数量可以直接改,用javascript实现提示。继续购书可以返回首页,清空购物车用removeattribute实现,退回书籍是用传递对应的gwc的id,用setattribute清除。关键代码如下:boolean flag = true;vector gwc = (vector) session.getattribute(gwc ); /定义gwc变量,并开始获取if (gwc = null) gwc = new vector(); else for (int i = 0; i gwc.size(); i+) bookelement bookitem = (bookelement) gwc.elementat(i); /对应javabean定义的变量if (bookitem.isbn.equals(mybookelement.isbn) /此处不能用=,用equals方法bookitem.number+; /图书数量增加gwc.setelementat(bookitem, i); /将对应的javabean变量,存入gwcflag = false;for (int i = 0; i gwc.size(); i+) /输出对应数据库的数据bookelement bookitem = (bookelement) gwc.elementat(i);isbn = (string) bookitem.isbn;if (isbn != ) resultset rs_book = conndb.executequery(select * from b_bookinfo where isbn=+ isbn + );if (rs_book.next() /如果获取到数据库数据bookname = rs_book.getstring(bookname);vector gwc = (vector) session.getattribute(gwc); /清除对应gwc值string id = request.getparameter(id);session.setattribute(gwc , gwc); /重新获取gwc图4-12 订单提交页面支付时先提取当前用户数据库资料,输出到文本框中,确认订单信息正确后,此信息将存入b_order表中,同时生成订单号,此orderid由数据库自动生成。用gettime方法获取系统时间,之后再向b_oreder_detail表中存入isbn,time,bookname,publisher等数据。最后用javascript提示订单成功,并清空购物车可以在订单查询中查看。关键代码如下:date time= new java.sql.date(new java.util.date().gettime(); /获取系统时间string sql = insert into b_order /更新订单信息表string sql = insert into b_order_detail /更新订单详细表4.11 订单查询模块订单查询模块如图4-13、图4-14、图4-15:图4-13 订单为空页面此模块的方法和之前的购物车类似,用getattribute获取username,如果没登录就提示没登陆,如果没订单将跳转到提示没有订单页面5。如果有订单将从b_order中获取订单信息,并输出。关键代码如下:resultset rs = conndb.e

温馨提示

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

评论

0/150

提交评论