1、 网络教育学院SQL数据库课程设计 题 目:网上书店系统的设计与实现学习中心: 专 业: 年 级: 年 春/秋 季 学 号: 学 生: 指导教师: 龙珠 1 项目概况2.1 SQL 数据库简介SQL Server 2008是一个重大的产品版本,它推出了许多新的特性和关键的改进,使得它成为至今为止的最强大和最全面的SQL Server版本。这篇文章详细介绍了Microsoft SQL Server 2008中的新的特性、优点和功能。 在现今数据的世界里,公司要获得成功和不断发展,他们需要定位主要的数据趋势的愿景。微软的这个数据平台愿景帮助公司满足这些数据爆炸和下一代数据驱动应用程序的需求。微软将
2、继续投入和发展以下的关键领域来支持他们的数据平台愿景:关键任务企业数据平台、动态开发、关系数据和商业智能。SQL Server 2008出现在微软数据平台愿景上是因为它使得公司可以运行他们最关键任务的应用程序,同时降低了管理数据基础设施和发送观察和信息给所有用户的成本。这个平台有以下特点:1.可信任的:使得公司可以以很高的安全性、可靠性和可扩展性来运行他们最关键任务的应用程序。2.高效的:使得公司可以降低开发和管理他们的数据基础设施的时间和成本。3.智能的:提供了一个全面的平台,可以在你的用户需要的时候给他发送观察和信息。2.2 JSP语言介绍Java Server Page简称为JSP是由S
3、un公司在Java语言上开发出来的一种动态网页制作技术,它提供了一种建立动态网页的简单方法,并为开发人员提供了一个服务器端框架2。基于这个框架,开发人员可以综合使用 HTML,XML,JAVA语言以及其他脚本语言,灵活,快速地创建和维护动态网页,特别是目前的商业系统。作为Java TM 技术的一部分,JSP能够快速的开发出基于所有Web服务器和应用服务器环境,独立于平台的应用程序,而且具有非常强的可伸缩性。同时,JSP把用户界面从系统内容中分离开来,使得设计人员能够在不改变底层动态内容的前提下改变网页布局。这样跨平台的特性己包含了目前大部份网站服务器配置环境,再加上它的语法和写作方式可媲美AS
4、P般的易学易懂,而且在网络安全技术方面甚至已超越ASP技术。目前,JSP已经成为一种比较流行的技术,尤其是电子商务类的网站多采用JSP。2.3 基于JSP的网上书店系统概述网上购书的优势在于通过网上购物,购买者足不出户,可节省很多时间,价格和便捷这两大优点的存在决定了网上书店发展的良好前景;与传统的书店经营模式相比,网上书店可以节省包括商场租金、书本上架、书本翻阅损耗、员工工资等很大一笔成本费用,在传统的书店里一般不打折的新书、畅销书、精品书,在网上图书超市可以以很低的价格购买到,这在竞争中起到极其重要的作用;传统的书店正常的日常开销很大,网络书店不需要水泥店面的建设、传统的店员已经消失、更多
5、的书目意味着对读者更大的满足率等等。选择网上书店系统作为毕业设计课题,是因为在对网上书店系统的设计与开发的过程中,可以使我更好的把握和运用在校期间所学的知识,对数据库的应用和电子商务系统的开发过程有了更充分的认识,扩展了自己的思维,为以后从事相关方面的工作打下了一个坚实的基础。本系统的设计目的,开发出一个具有开放体系结构的、易维护的、具有良好操作界面的、B2C模式的网上书店系统。改变传统商业交易,在互联网上进行交易,实现网上购买图书。为了实现上述目的,经过自己的调查实践以及指导老师的帮助,在对网上书店系统有了深一步的了解的情况下,开发了本基于JSP的网上书店系统。本论文课题较为普遍,但系统开发
6、过程中,涉及的软件全面,涵盖知识面广,可有效地提高学生综合运用所学知识分析解决问题的能力,增强学生对事物的理解与掌握能力,培养学生掌握科学的研究方法,正确的设计思想,独立思考,勇于进取,探索创新,为今后进一步学习与工作奠定了良好的基础。本系统的架构是基于JSP/JavaBean的模式,这种模式以其稳定性和优越的速度,被全球企业证明并且公认为是可以高效稳定的进行企业运算开发的平台。这种平台最大的优势在于可以跨系统,具有“一次编写、到处运行”的特点,以这种模式开发的产品,可以轻松移植到其他的平台,例如:Unix、Linux、Windows系统。这样在企业更换平台的时候可以节约成本,提高运算质量。
7、2 需求分析2.1 需求分析本系统是基于JSP的网上书店系统。购书者在注册成为本网站的用户后,就可以浏览网站信息并且购买图书。书店负责人对数据库等进行操作,及时更新网站信息。2.2 数据分析(一) 用户信息用户是指在本网站注册成功的购书者。成为本网站的用户后才可以对本网站进行更多的操作。包括,网上购书、填写订单、订单查询、留言等。(二) 管理员信息管理员负责对网站后台进行管理,包括数据库表的维护和对用户、订单、公告、留言等信息的管理。(三) 图书信息网上书店系统最重要的就是图书信息的维护。图书信息不仅包括,图书编号、书名、出版社、作者等基本信息,还包括新书标识。如果是新书,则图书信息要显示在新
8、书上架模块,方便用户查找。(四) 订单信息对于网上购书最终的目的是生成订单,订单信息中包括,购书者的真实姓名、地址、联系方式、邮购方式等。一个内容充实的订单会缩短邮递时间。以上是本网上书店系统的主要的数据需求。 2.3 功能分析根据现在社会上对网上书店的需求,为了开发出真正满足用户需求的网上书店系统。首先必须要知道用户的需求,对用户需求的深入理解是软件开发工作获得成功的前提条件,不论我们把设计和编码工作做得如何出色,不能满足用户需求的程序只会给用户带来失望,给开发者带来麻烦。根据调查以及参考其他网上书店系统,本网上书店系统具有如下功能:1、从用户的角度从用户的角度用户可以在网站首页了解本网上书
9、店的图书基本信息及公告信息。用户注册后可以购买图书,将自己喜欢的图书添加到购物车中,去收银台填写邮购及付款方式以便生成订单。同时还可以通过图书分类查找所需的图书。本系统除了实现网上购书的基本功能外还新增了网上调查功能,根据调查结果调整书店的图书类别及数量,保证受欢迎图书的供应。2、从管理员的角度从管理员的角度可以通过以管理员身份登陆系统,对系统进行管理,其中包括:用户管理,查看用户基本信息和对于经常失信的用户予以冻结或解冻;图书管理,分页显示图书信息、添加、修改、删除图书信息;订单管理,执行和查看订单;公告管理,查看、添加、删除公告信息;投票管理,浏览、添加、删除投票项目3 详细设计3.1 系
10、统结构图概念模型是对信息世界建模,其表示方法有很多,其中最为常用的是实体联系模型,即E-R模型,它是用E-R图来描述现实世界的概念模型4。E-R图中用矩形表示实体;用椭圆表示属性;用菱形表示联系。本系统表示实体及其联系的E-R图。如图3.1所示。图3.1 网上书店系统E-R图3.2 系统实现本系统包括七个表,图书信息表 tb_bookinfo,用户信息表 tb_manager,管理员信息表 tb_Member,订单信息表 tb_order,投票信息表 tb_Poll,折扣信息表 tb_rebate,公告信息表 tb_BBS。1. 图书信息表图书信息表(图书编号,书名,出版社,作者,类型,价格,
11、出版日期,新书标识)表3.1 图书信息表标识符数据类型长度允许空描述主键外键说明ISBNvarchar15N书编号YBookNamevarchar20N书名publishervarchar20N出版社Writervarchar10N作者Typevarchar20N类型Pricemoney8N价格pDatevarchar20Y出版日期newbookInteger自动N新书标识用0,1表示,0非新书,1新书。2. 用户信息表用户信息表(用户编号,用户名,真实姓名,密码,地址,邮编,证件类型,证件号,用户级别,消费总额,联系电话,E-mail,状态)表3.2 用户信息表标识符数据类型长度允许空描述主
12、键外键说明IDint4N用户编号Y自增usernamevarchar20N用户名TrueNamevarchar10N真实姓名PassWordvarchar20N密码addressvarchar100N地址postcodevarchar6N邮编CardTypevarchar20Y证件类型CardNOvarchar24Y证件号码gradeint4Y用户级别Amountmoney8Y消费总额Telvarchar50Y联系电话E-mailvarchar50YfreezeInteger自动N用户是否被注销用0,1表示,0正常使用,1注销。3. 管理员信息表管理员信息表 (管理员编号,用户名,密码,联系电
13、话)表3.3 管理员信息表标识符数据类型长度允许空描述主键外键说明IDint4N管理员编号Y自增managervarchar30N用户名PWDvarchar30N密码Telvarchar50Y联系电话4.订单信息表订单信息表 (订单编号,图书编号,用户编号,订单日期,订单数量,总价格)表3.4 订单信息表标识符数据类型长度允许空描述主键外键说明orderIDBigint8N订单编号Y自增ISBNVarchar20N图书编号名YnumberidInt4N用户编号YordernumberInt4N订单数量orderdatedatetime8Y订单日期priceMoney8N总价格5.投票信息表投票
14、信息表 (编号,投票项目,票数)表3.5 投票信息表标识符数据类型长度允许空描述主键外键说明IDInt4N编号Y自增optionNameVarchar50N投票项目PoolInt4N票数7.折扣信息表说明:每消费满500元升一级,最高级别为5级,级别不同折扣不同。折扣信息表 (用户级别,消费总额,折扣)表3.6 折扣信息表标识符数据类型长度允许空描述主键外键说明gradeInt4N用户级别Y默认为0AmountMoney8N消费总额默认为0rebateFloat8N折扣默认为007.公告信息表公告信息表 (编号,公告信息,信息更新时间)表3.7 公告信息表标识符数据类型长度允许空描述主键外键说
15、明IDint4N编号Y自增contentvarchar3000N公告信息INTimedatetime8Y信息更新时间3.3 数据库实现3.2.1 网上书店系统首页对于网上书店系统,网站首页极为重要,首页设计的好坏将直接影响到顾客的购买欲望。在本网上书店的首页中,用户不但可以在第一时间内掌握书店推出的优惠活动、网站公告等,还可以通过点击图书分类链接,搜索、购买有用的图书。网上书店系统首页展示,如下图所示:图3.3 网上书店系统首页展示因为只有登录的用户才可以购买图书,所以只有登录后的用户才可以看到购买按钮。未登录的用户只能查看图书,不能购书。管理员可以通过网站首页下方的“网上图书超市”进入到网站
16、后台管理。3.2.2 用户注册页面(一) 功能描述本网上书店系统要求用户名必须唯一,为了方便用户,在用户注册页面设置了“检测用户名”的超链接,用户可以先检测自己的用户名是否已经被注册。但由于是网络程序,难免会出现检测时用户名并没有被占用,但保存信息时,却被占用的情况,所以在保存用户信息时,系统会再次对注册的用户名进行检测。如果不存在,则保存该用户信息,否则提示该用户已经被占用,请重新注册。(二) 模块流程图3.4 用户注册流程图(三) 界面展示图3.5 用户注册界面展示(四) 实现注册功能的主要代码ResultSet rs=connDB.executeQuery(select * from t
17、b_Member where username=+username+);/在表中查找输入的用户名if (rs.next()/返回值为Boolean类型,判断表中是否存在输入的用户名outprintln(alert(该用户名已经存在,请重新注册!);window.location.href=register.jsp;);else/向用户表中插入用户注册信息String sql=Insert into tb_Member (username,truename,password,city,address,postcode,cardNO,CardType,tel,Email) values(+user
18、name+,+truename+,+PWD+,+city+,+address+,+postcode+,+cardNO+,+CardType+,+tel+,+Email+);3.2.3 图书查询(一) 功能描述为了方便用户查询所需图书信息,在系统中设置了图书分类显示模块。单击导航条中的“图书分类”链接即可进入到图书分类显示页面,在该页面左侧的“图书分类列表”中列出数据库中的全部图书类别,用户单击某类别即可在右侧显示该类别的图书信息列表,单击书名可以查看相应图书的详细信息。如果用户已经登陆,还可以直接将图书信息添加到购物车中。(二) 界面展示(三)图3.6 图书查询界面展示(四) 实现页面各功能主
19、要代码ResultSet rs_Type=connDB.executeQuery(select Type from tb_bookinfo group by Type); / 从表中查询页面左侧列表中内容rs_Type.first();do /此处必须用do. . .while,否则会少一条记录String Type=rs_Type.getString(Type);/产生列表while (rs_Type.next();3.2.4 生成订单(一) 功能描述生成订单是网上购书的最终目的。生成订单时,不仅要保存用户所购买的图书信息和和价格,同时还需要返回一个可供用户随时查询的订单号。用户单击查看购物
20、车页面中的“却收银台结账”链接即可进入到收银台页面填写订单信息,在该页面中系统会根据用户登陆的用户名自动填写用户基本信息,除用户名不可更改外,其他的均可修改。(二) 模块流程图3.7 生成订单流程图(三) 界面展示图3.8 收银台界面展示(四) 实现提交功能的主要代码ResultSet rs_rebate=connDB.executeQuery(select rebate from V_Member where username=+username+);/从出折扣表中取出该用户应打的折扣String ISBN=mybookelement.ISBN;price=mybookelement.pri
21、ce*rebate;number=mybookelement.numner;sum=price*number;String str=insert into tb_order (orderID,ISBN,price,number) values(+orderID+,+ISBN+,+price+,+number+);/向订单表中插入数据temp=connDB.executeUpdate(str);/更新订单表/更新用户信息String sql_up=update tb_Member set Amount=Amount+Totalsum+ where username=+username+;temp
22、=connDB.executeUpdate(sql_up);/更新用户购书总额String sql_upgrade=update tb_Member set grade=+grade+ where username=+username+;temp=connDB.executeUpdate(sql_upgrade);/更新用户等级3.2.5 网上投票(一) 功能描述网上书店作为一个虚拟的书店系统,缺乏与用户的沟通,为了进最大限度的满足用户的需求,本系统新增网上调查项目。管理人员通过查看网上调查结果可以了解到大部分用户的需求,根据用户的需求调整书店的图书类别及不同图书的数量。所有登陆网站首页的用户
23、都可以参与网上调查。(二) 模块流程图3.9 网上投票流程图(三) 界面展示图3.10 网上调查界面展示(四) 实现投票功能的主要代码if(session.getAttribute(poll)=null)/如果未投过票String opt=chSt.chStr(request.getParameter(optionname);int temp=connDB.executeUpdate(update tb_poll set poll=poll+1 where optionName=+opt+);if (temp=0) /没选投票项目out.println(alert(投票失败!);window.
24、locationhref=indexjsp;);elseout.println(alert(投票成功!);window.location.href=poll_result.jsp;);elseout.println(alert(您已经投过票了!);window.location.href=poll_result.jsp;);3.2.6 添加图书(一) 功能描述在图书管理页面中单击“添加图书信息”链接即可进入到添加图书信息页面。在添加图书信息时,为了保证图书信息在数据表中的惟一性,在保持图书信息前需要先根据管理员输入的图书ISBN号判断图书信息是否存在,如果存在则给予提示信息并返回,否则将图书信
25、息保存到数据表中。(二) 模块流程图3.11 添加图书流程图(三) 界面展示图3.12 添加图书界面展示(四) 实现添加功能的主要代码ResultSet rs=connDB.executeQuery(select * from tb_bookinfo where ISBN=+ISBN+);if(rs.next()/返回值为Boolean类型,判断表中是否存在输入的ISBN号out.println(alert(该图书信息已经添加!);history.back(-1););/刷新并后退一步else/向表中添加图书信息String sql=Insert into tb_bookinfo (ISBN,
26、BookName,Type,publisher,writer,Introduce,price,pDate,cover,newbook,commend) values(+ISBN+,+bookname+,+type+,+TPI+,+writer+,+introduce+,+price+,+pDate+,+cover+,+newbook+,+commend+);int ret=0;ret=connDBexecuteUpdate(sql);/检测是否成功添加到图书信息表中if (ret!=0)outprintln(alert(图书信息添加成功!);window.location.href=index
27、.jsp;);elseout.println(alert(图书信息添加失败!);window.location.href=book_add.jsp;);3.2.7 其他界面展示(一) 购物车图3.13 购物车界面展示(二) 订单查询图3.14 订单查询界面展示(三) 新书上架图3.15 新书上架界面展示(四) 用户管理图3.16 用户管理界面展示(一) 订单管理图3.17 订单管理界面展示3.4 数据库的维护当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在sqlserver中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。当然也可以利用其他各种方法进行数据维护。4 心得与体会通过此次课程设计,使我更加扎实的掌握了有关SQL数据库方面的知识,在设计过程中虽然遇到了一些问题,但经过老师的指导,我们一一克服了困难完成了设计,在此感谢大连理工的辅导老师的辛勤指导。