课程设计报告(2015/2016学年第1学期)题目:网上商城的设计与实现-商品查询、订购、更改、支付模块1评分细则评分项成绩遵守机房规章制度(5分)上机时的表现(5分)学习态度(5分)程序准备情况(5分)程序设计能力(10分)团队合作精神(5分)课题功能实现情况(10分)算法设计合理性(10分)用户界面设计(10分)报告书写认真程度(5分)内容详实程度(10分)文字表达熟练程度(10分)回答问题准确度(10分)简短评语教师签名:年月日评分等级备注评分等级有五种:优秀、良好、中等、及格、不及格2网上商城的设计与实现——商品查询、订购、支付、更改模块一、课题内容和要求根据现有的网上购物系统的现状设计并实现一种基于web的网上商城,该商城能够实现用户注册,购物车管理,商品搜索,用户资料修改等功能,实现管理员的商品管理,用户信息管理等功能。要求实现的最基本的功能如下:网站公告模块;留言板模块;用户中心模块;商品查询模块;商品订购模块;在线支付模块;管理员模块(商品管理、用户管理、订单管理等,可以通过后台功能及时受理,修改,删除用户的定单等信息,还可以添加,修改,删除商品等信息)其它个性化功能扩展二、需求分析1.随着网络技术的发展,越来越多的人喜欢在网上宣传自己的产品,喜欢网上购物。图书产品从其外部特征来看,品种繁多,实体书店或其它图书发行者无法有足够大的店面来展示所有品种;单价不高,在网络信用还存在缺失的环境下能造成的损失较小,读者也乐于尝试在线购买。所以网上书店网站也在互联网上纷纷出现。本次课程设计我们小组做的课题就是网上书城,我负责部分是商品查询模块、商品订购模块、在线支付模块和用户模块中的图书管理部分。2.商品查询模块:进行书籍的查询,用户可以按图书类别、按书名、按作者、按出版社进行查询。每本书都显示了书名、作者、定价、特价等,如果想了解每本书的详细3信息可以点击书名,详细信息还包括了书籍描述、内容简介等。3.商品订购模块:用户在浏览书籍时,按下“放入购物车”按钮,就可以将书籍放入自己的购物车中,便于购买。用户还可以根据自己的需要,进行查看、修改和清空购物车的操作。确认购买可点击“购买”进入支付系统。4.在线支付模块:用户在确认购买书籍后可点击“购买”进入支付系统,进行网上支付。5.管理员模块(添加,修改,删除,查询商品):管理系统是系统管理员对整个网站后台数据库进行维护,是此网站最重要的大门。后台管理使用本地数据库,与因特网上的数据库实时同步,保证购书定单安全及时有效处理强大的统计分析功能,便于管理者及时了解财务状况、销售状况。在进入本栏目时系统会提示输入系统管理员的用户名和密码,对于其他用户此界面是不可见的。它包括用户管理、书籍管理、订单管理,这里重点介绍书籍管理。书籍管理包主要为图书库存管理,管理员可以添加新书、添加书籍分类以及修改书籍库存信息和删除书籍。三、概要设计该网上书城系统由用户和管理员两个子系统构成1.体系结构图:网上书店用户子系统管理员子系统用户登录用户注册图书选购购物车管理查看订单管理员登陆图书管理订单管理4图1体系结构图2.系统数据流程图订单用户管理员选择图书加入购物车收款提交购物车发货订单信息存储图2系统数据流程图3.图书选购—使用用例图用户选购图书浏览图书加入购物车图3图书选购—使用用例图54.图书管理—使用用例图管理员图书管理添加图书修改图书删除图书图4图书管理—使用用例图四、详细设计1.开发设计思想:(1)采用现有的软硬件环境及先进的管理系统开发方案,从而达到充分利用现有资源,提高系统开发水平和应用效果的目的。(2)尽量达到操作过程中的直观、方便、实用、安全等要求。(3)系统采用B/S体系结构,浏览器(浏览器端)负责提供表达逻辑、显示用户界面信息、访问数据库服务器;Server(服务器端)则用于提供数据服务。(4)系统采用模块化程序设计方法,既便于系统功能的各种组合和修改,又便于未参与开发的技术维护人员补充、维护。(5)系统应具备数据库维护功能,及时根据用户需求进行数据的添加、删除、修改、备份等操作。2.系统具体实现:(1)采用java、jsp语言编写代码实现各项功能。(2)网上书城界面采用html语言实现。(3)采用mysql实现后台数据库的管理。我个人负责用户子系统中的查询模块和管理员系统中的书籍管理模块,采用java语言编写代码。相关代码如下:商品查询模块:6publicclassGetBookByBookNameServletextendsHttpServlet{publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{request.setCharacterEncoding(utf-8);//查询多少条数据StringpageSize_str=request.getParameter(pageSize);intoffset=0;intpagecurrentPageNo=1;intpageSize=5;if(pageSize_str!=null){pageSize=Integer.parseInt(pageSize_str);}StringbookName_str=request.getParameter(bookName);if(bookName_str!=null){byte[]buf=bookName_str.getBytes();StringbookName=newString(buf);Modelmodel=newModel();BookPagerbookPager=model.searchBook(bookName);bookPager.setPageOffset(offset);bookPager.setPagecurrentPageNo(pagecurrentPageNo);bookPager.setPageSize(pageSize);request.setAttribute(bookPager,bookPager);request.setAttribute(bookList,bookPager.getBookMap().values());request.getRequestDispatcher(Admin/pages/manageBooks.jsp).forward(request,response);}}7publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsServletException,IOException{this.doGet(request,response);}}添加书籍在管理员模块当中,管理员可在数据库后台添加书籍的出版社、出版日期、版本、作者、价格、ID号、内容等详细信息,采用java语言编写代码。相关代码如下:添加书籍:publicclassAddBookServletextendsHttpServlet{privateServletConfigconfig;//初始化Servletfinalpublicvoidinit(ServletConfigconfig)throwsServletException{this.config=config;}五、测试数据及其结果分析1.用户查询模块:查询功能界面:892.商品订购界面:3.商品支付界面:104.管理员模块:(1)添加商品:11(2)添加、修改商品界面:12六、调试过程中的问题问题1:商品搜索只能检索英文,无法检索中文。问题原因:为数据库文字匹配问题。解决方案:(1)重装MySQL,设置成utf8,因为utf8可以兼容世界上所有的字符。(2)创建数据库时使用语句:CREATEDATABASE`test`CHARACTERSET'utf8'COLLATE'utf8_general_ci';(3)建表和建库时使用相同的编码格式。修改后问题得到解决问题2:无法连接到数据库。(1)如首页书库显示没有书籍13(2)用户注册以后登录显示用户不存在问题原因:代码中的连接数据库代码出现问题。解决方案:将连接部分代码改成下图所示修改完可以成功显示书籍库中的数据14问题3:支付界面只能显示,无法真正支付。解决方案:暂时无法解决。七、课程设计总结短短两个星期的专业课程设计,每天忙忙碌碌,一步一步走来,今天终于迎来了自己的成果。在这期间,经常遇到各种各样的问题,时常为不能解决的问题而一筹莫展,但这并未因此打消我们的信心,而是使我们更加专著的去解决问题,充满了挑战的艰辛与乐趣。通过这次课程设计使我所学的专业知识得到了综合的运用,对以前很多抽象、枯燥的理论知识加深了理解,同时也使我学会了利用结构化程序设计思想开发管理信息系统,并用模块化方法加以实现。通过这次课程设计,我深刻地认识到信息系统开发的每一步都是以上一步为基础的。因此每一步文档的编写都必须正确、完整,否则就会给下一步的工作带来不必要的麻烦,加大工作量。因为系统是为用户服务的,所以要充分了解用户的需求,考虑用户的特点和使用方面的习惯,以协调人机关系。在系统实施中应结合各方面的要求,尽可能选择自己熟悉的程序设计语言。系统测试中要根据实际情况设计有效的测试方法。在系统设计过程中,从用户的角度出发,在系统的可用性和易用性上做了很多功夫。在这次的设计过程中,我学到的不仅是知识,我还认识到许多事情。这次设计使我的编程水平提高了一大步,使我充分的认识到合作的可贵。由于这次设计涉及到数据库,我的学到了不少编程工具与数据库连接的知识,对数据库的操作有了进一步的了解。这次设计对我的综合能力是一次很好的锻炼,但是我必须承认自己的能力和知识还很肤浅。所以今后我的学习道路还是很漫长的。荆轲,一个四处为家的刺客,他的心犹如浮云,心如飘蓬,是没有根的,然而高渐离的筑声,却成了他愿意停留在燕国这片土地上的原由。虽是初见,却如故人。也许所有的遇见,早已经是前世的注定,没有早晚,刚好在合适的时间遇见你,就是最美的相识。他曾经游历过多少地方,自己已经数不清,但是没有一处可以挽留他行走的脚步,唯有今日高渐离的筑声,让他怎么也舍不得离开。从此二人心性相投,在燕国集市上,载歌击筑,把盏言欢,欢喜处。嬉笑开颜,忧伤处,潸然泪下,即便这些神经质的状态,被集市上的人哗然,可是对知己而言,又如何呢?人生难得一知己,悲欢喜悦与何人相干呢?我们各自欢喜就好。生为乱世,能够遇到如此懂得自己的人,是一件多么难得的幸福事情啊!然而,这快意的知己日子,总归逃不过那个时代的残酷,千不该,万不该,荆轲不该是一位刺客,若不如此,又如何会被愚蠢的太子丹派去刺杀秦王,一去不复返。15倘若荆轲不是刺客,也就更不可能身如飘蓬,居无定所,也许不可能遇见高渐离,所有一切都是冥冥之中的注定吧!“风萧萧兮,易水寒,壮士一去兮,不复还。”知己的离去,让高渐离心如刀割,整日独自击筑高歌,在痛苦中浑噩度日,这样疏懒的生活,无人懂他,对他来说已经倦怠了,他厌倦了这种孤独和苟且的日子。他本可以大隐于野,疏远于喧嚣处,可是他同样选择了一条不归路。去咸阳宫为上宾演奏,最终被人认出,他并不害怕,倒是坦然自若。因为他心里清楚这里就是染过他知己——荆轲的鲜血的宫殿,若能在这里死去,也算是一种缘分。然而事与愿违,秦王并没杀了他,给他一个痛快,而是熏瞎了他的双目,让他生不如死。在一次次的心伤中,他在筑中灌满了铅,仿效荆轲,想与秦王同归于尽,只是他心里非常清楚,他根本伤及不了秦王毫发。他之所以如此,以卵击石,无非就是想痛快死去,是一种求死的方式罢了。千百年以后,后人深记那易水的水有多寒冷,那易水的风有多刺骨。那句“风萧萧兮,易水寒,壮士一去兮,不复还”里融入了多少痛苦和无奈?几千年之后,易水的水,易水的风,易水的雪,一年复一年,而那个凄美的故事,也这样经久不衰的传颂着。不由让我又想起伯牙绝弦的故