JAVA高级应用课程设计(网上书城系统——会员登陆模块的设计与实现)

 

一、开发背景

(一)背景概述

随着信息时代的到来,各行各业的工作模式发生了翻天覆地的变化,越来越多的商家加入线上购物服务,以期打开更大的销售市场,书店也不例外。过去消费者想要购买图书图需要去实体书店挑选,而书店的种类多无法在短时间内找到自己心仪的书籍,且大部分图书的价格不够透明,消费者多是被动购买,消费体验相对较差。

我国第一家网上书城于1997年由杭州市新华书城开办,该店只维持了1年最终便以失败告终"。经过十几年的发展,今天我国的网上书城已经颇具规模,能够在网上买卖图书的网站已经有数百家,并形成了各种不同的发展模式和格局,其营业额在图书零售市场上约占5%P'。但是各网上书城的盈利情况良莠不齐,生生死死不计其数,领跑的始终是当当网和卓越亚马逊两家,二者在网店经营中一直保持了优势地位,并占据整个网上书城营业额的80%。

线上购物网的流行让实体书店面临了巨大的挑战,寻求新的销售方式迫在眉睫。本次研究目的是为消费者购买书籍提供方便,提高全民读书率。商家可以通过后台更加轻松的管理书籍资源;消费者可以随时随地通过网站浏览购买自己喜欢的书,价格更加透明,充分提高了消费体验。

(二)发展前景

随着我国互联网的稳步发展以及网上预订的普及,社会福利以及人民大众日常生活工程质量的提高,国人起初高度重视对于理论知识的谋求,网上图书资料经销该种方式把不会取得充沛的施展。与传统模式相比网上图书销售有许多优势,成本低,选择快捷,随时随地都可以购买。相比于传统的购书模式,网上购书也进一步减轻了工作人员的工作量,提高工作效率。

 

图 1 主流的网上书城-新华书店

依据网上商场的需要,总体设计分成前台客户控制系统及后盾管理信息系统。本论要设计登陆,注册,管理,留言等模块。使用计算机网络对图书销售各种信息进行管理,改进传统售书的不足,提高系统的可操作性,可靠性。促使原来简单的工作简单化,方便快捷图书信息内容的查问,尽量地迎合购书顾客的购书志愿。

通过计算机存贮的资料,网上书店毫不费力地建立起自己庞大的全球化读者信息库,对客户需求和产品行情的预测也就更准确。从而有效地降低库存,减少资金占用。此外,网上虚拟书店,业务环节大为简化,能节约费用开支,降低销售成本。以及我国网络信息基础设施建设的逐步完善和电子商务环境的成熟,不难预测网上书店的访问量和成角量都将得到极大的提升。可以说网上书店的销售不仅是传统销售渠道的发展和补充,也必将是未来图书销售的发展方向。

(三)本文要点

网上书城是一种全新的电子商务模式,人们可以通过卢络和计算机实现购买图书的需求。这种全新的消费方式为商享带来了销售及宣传的新思路。商家可通过网上书城发布现有臣书的信息,同时处理消费者的订单,与消费者沟通交流,最后安排发货。不仅有利于消费者节省时间,也为商家拓展了销有渠道。本次研究设计的网上书城使用了JAVA语言以及JavaWeb技术,并利用MYSQL数据库开发。实现了网上书城购物系统。

二、系统分析

(一)需求分析

近年来,随着 lnternet的迅速崛起,互联网已成为收集信息的最佳渠道并逐步进入传统的流通领域。手是电子商务开始流行起来,越来越多的商家在网上建起在线商店,向消费者展示出一种新颖的购物理念。网上购物系统作为 B2B ( Business to Business, 即企业对企业)B2C( Business to Customer,即企业对消费者),C2C ( Customer to Customer,即消费者对消费者)电子商务的前端商务平台,在其商务活动全过程中起着举足轻重的作用。在传智书城项目中主要讲解的是如何建设 B2C 的网上购物系统。该项目应满足以下需求。

  • 统一友好的操作界面,具有良好的用户体验。
  • 商品分类详尽,可按不同类别查看商品信息。
  • 公告栏、本周热卖商品的展示。
  • 网站首页轮播图满足图书广告的需要。
  • 用户信息的注册和验证、用户登录功能。
  • 通过图书名模糊搜索相关图书。
  • 通过购物车一次购买多件商品。
  • 提供简单的安全模型,用户必须登录后购买图书。
  • 用户选择商品后可以在线提交订单。
  • 用户可以查看自己的订单信息。
  • 设计网站后合,用来管理网站的各项基本数据。
  • 系统运行安全稳定且响应及时。

(二)可行性分析

1.技术可行性

根据综合分析,要最终实现网上书城系统,需要用到JAVA EE技术、数据库技术(JDBC及 Mysql),以及软件工程的具体方法等内容。而这些技术在当前IT行业看来都已经发展的相当得成熟。因此,从技术上的角度考虑,最终实现该网上书城系统是确实可行的。

2.经济可行性

从经济上来考虑,这方面的投资少,回收快,而且无所谓存货等,所以特别适合小商店和个人在网上创业。从启动资金来看,传统的地面开店,门面租金加装修费,还有首批进货资金等等,少说也需要几万元的启动资金或者更多。而网上开店所需的启动资金却少得多的多,只需要架设一台主机服务器,配备一定的操作人员就可以。

3.操作可行性

网上书城系统的界面设计时充分考虑用户的习惯,用户体验良好,操作简单;数据录入迅速、规范、可靠;统计准确;适应力强;容易扩充。

三、系统设计

(一)功能详细介绍

网上书城的用户权限主要有注册用户、非注册用户以及管理员。注册用户能够在网站内浏览图书信息,进行图书购买和留言评价等操作;非注册用户只能浏览图书信息,无法购买;管理员可上传图书信息,同时维护系统的正常运行。

 

图 2 系统首页

(二)系统功能结构

1.前台功能结构

 

图 3 前台功能结构

2.后台功能结构

 

图 4 后台功能结构

(三)系统开发环境及运行环境

系统开发环境如下:

  • 系统开发平台:Eclipse。
  • 数据库管理系统软件:MySQL。
  • Java开发包:JDK8.0以上。

运行环境如下:

  • 运行平台:Windows10
  • Web服务器:tomcat7.0。
  • 浏览器:谷歌浏览器。

四、网上书城系统的实现

(一)会员登陆模块的实现

【主要程序代码】

<div id="divcontent">

                 <form action="${pageContext.request.contextPath}/register" method="post" onsubmit="return checkForm();">

                         <table width="850px" border="0" cellspacing="0">

                                  <tr>

                                          <td style="padding: 30px"><h1>新用户注册</h1>

                                                   <table width="70%" border="0" cellspacing="2" class="upline">

                                                           <tr>

                                                                    <td style="text-align: right; width: 20%">邮箱:</td>

                                                                    <td style="width: 40%">

                                                                    <input type="text" class="textinput"  id="email" name="email" onkeyup="checkEmail();"/>

                                                                    </td>

                                                                    <td colspan="2"><span id="emailMsg"></span><font color="#999999">请输入有效的邮箱地址</font></td>

                                                           </tr>

                                                           <tr>

                                                                   <td style="text-align: right">用户名:</td>

                                                                   <td><input type="text" class="textinput"  id="username" name="username" onkeyup="checkUsername();"/>

                                                                    </td>

                                                                    <td colspan="2"><span id="usernameMsg"></span><font color="#999999">字母数字下划线1到10位, 不能是数字开头</font></td>

                                                           </tr>

                                                           <tr>

                                                                    <td style="text-align: right">密码:</td>

                                                                   <td><input type="password" class="textinput"  id="password" name="password" onkeyup="checkPassword();"/></td>

                                                                    <td><span id="passwordMsg"></span><font color="#999999">密码请设置6-16位字符</font></td>

                                                           </tr>

                                                           <tr>

                                                                    <td style="text-align: right">重复密码:</td>

                                                                    <td>

                                                                    <input type="password" class="textinput"  id="repassword" name="repassword" onkeyup="checkConfirm();"/>

                                                                    </td>

                                                                    <td><span id="confirmMsg"></span>&nbsp;</td>

                                                           </tr>

                                                           <tr>

                                                                    <td style="text-align: right">性别:</td>

                                                                    <td colspan="2">&nbsp;&nbsp;

                                <input type="radio" name="gender" value="男" checked="checked" /> 男

                                          &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;

                                                                            <input type="radio" name="gender" value="女" /> 女

                                                                    </td>

                                                                   <td>&nbsp;</td>

                                                           </tr>

                                                           <tr>

                                                                    <td style="text-align: right">联系电话:</td>

                                                                    <td colspan="2">

                                                                    <input type="text" class="textinput"

                                                                            style="width: 350px" name="telephone" />

                                                                    </td>

                                                                   <td>&nbsp;</td>

                                                           </tr>

                                                           <tr>

                                                                    <td style="text-align: right">个人介绍:</td>

                                                                    <td colspan="2">

                                                                    <textarea class="textarea" name="introduce"></textarea>

                                                                    </td>

                                                                   <td>&nbsp;</td>

                                                           </tr>

                                                   </table>

                                                   <h1>注册验证</h1>

                                                   <table width="80%" border="0" cellspacing="2" class="upline">

                                                           <tr>

                                                                    <td style="text-align: right; width: 20%">输入验证码:</td>

                                                                    <td style="width: 50%">

                                                                    <input type="text" class="textinput" />

                                                                    </td>

                                                                   <td>&nbsp;</td>

                                                           </tr>

                                                           <tr>

                                                                    <td style="text-align: right; width: 20%;">&nbsp;</td>

                                                                    <td rowspan="2" style="width: 50%">

                                                                    <img src="${pageContext.request.contextPath}/imageCode" width="180"

                                                                            height="30" class="textinput" style="height: 30px;" id="img" />&nbsp;&nbsp;

                                                                           <a href="javascript:void(0);" onclick="changeImage()">看不清换一张</a>

                                                                    </td>

                                                           </tr>

                                                   </table>

                                                   <table width="70%" border="0" cellspacing="0">

                                                           <tr>

                                                                    <td style="padding-top: 20px; text-align: center">

                                                                            <input type="image" src="images/signup.gif" name="submit" border="0" width="140" height="35"/>

                                                                    </td>

                                                           </tr>

                                                   </table>

                                          </td>

                                  </tr>

                         </table>

                 </form>

        </div>

【效果截图】

 

 

图 5 用户登录界面

(二)商品浏览模块的实现

【主要程序代码】

<table cellspacing="0" class="listcontent">

                     <tr>

                         <td>

                            <h1>商品目录</h1>

                            <hr />

                            <h1>全部商品</h1>&nbsp;&nbsp;&nbsp;&nbsp;共${bean.totalCount}种商品

                            <hr />

                            <div style="margin-top:20px; margin-bottom:5px">

                                <img src="client/images/productlist.gif" width="100%" height="38" />

                            </div>

                            <table cellspacing="0" class="booklist">

                                <tr>

                                   <c:forEach items="${bean.ps}" var="p" varStatus="vs">

                                       <td>

                                          <div class="divbookpic">

                                              <p>

                                                 <a href="${pageContext.request.contextPath}/findProductById?id=${p.id}"><img

                                                     src="${pageContext.request.contextPath}${p.imgurl}"

                                                     width="115" height="129" border="0" /> </a>

                                              </p>

                                          </div>

                                          <div class="divlisttitle">

                                              <a href="${pageContext.request.contextPath}/findProductById?id=${p.id}">书名: ${p.name}<br />售价:¥${p.price} </a>

                                          </div>

                                       </td>

                                       <%-- <c:if test="${vs.count%4==0}">

                                       </c:if> --%>

                                   </c:forEach>

                                </tr>

                            </table>

                            <!-- <table cellspacing="0" class="booklist">

                                <tr>

                                </tr>

                            </table> -->

                            <div class="pagination">

                                <ul>

                                   <c:if test="${bean.currentPage!=1}">

                                       <li class="nextPage">

                                          <a href="${pageContext.request.contextPath}/MenuSearchSerlvet?currentPage=${bean.currentPage-1}&textfield=${bean.searchfield}">&lt;&lt;上一页</a>

                                       </li>

                                   </c:if>

                                   <c:if test="${bean.currentPage==1}">

                                      <li class="disablepage">&lt;&lt;上一页</li>

                                   </c:if>

                                   <c:forEach begin="1" end="${bean.totalPage}" var="pageNum">



                                       <c:if test="${pageNum==bean.currentPage}">

                                          <li class="currentpage">${pageNum }</li>

                                       </c:if>

                                       <c:if test="${pageNum!=bean.currentPage}">

                                          <li><a href="${pageContext.request.contextPath}/MenuSearchSerlvet?currentPage=${pageNum}&textfield=${bean.searchfield}">${pageNum}</a>

                                          </li>

                                       </c:if>

                                   </c:forEach>

                                   <c:if test="${bean.currentPage==bean.totalPage||bean.totalPage==0}">

                                       <li class="disablepage">下一页 &gt;&gt;</li>

                                   </c:if>



                                   <c:if test="${bean.currentPage!=bean.totalPage&&bean.totalPage!=0}">

                                       <li class="nextpage">

                                          <a href="${pageContext.request.contextPath}/MenuSearchSerlvet?currentPage=${bean.currentPage+1}&textfield=${bean.searchfield}">下一页&gt;&gt;</a>

                                       </li>

                                   </c:if>

                                </ul>

                            </div></td>

                     </tr>

                  </table>

              </td>

           </tr>

       </table>

    </div>

【效果截图】

 

 

图 6 商品浏览界面

 

五、参考文献

[1]徐峰,陈暄.UML面向对象建模基础[M].北京:中国水利水电出版社,2006.

[2]张海,藩著.软件工程导论[M].4版.北京:清华大学出版社,2003.

[3]陆惠恩,张成姝.实用软件工程[M].2版.北京:清华大学出版社2016.

 
 

课程设计总结

(本课程设计主要实现哪些功能?是如何解决设计中遇到的问题的?通过课程设计收获到了什么?如何进行下一步的学习?心得体会等)

通过此次课程设计,使我更加扎实的掌握了JavaWeb开发方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。实践出真知,通过亲自动手制作,使我们掌握的知识不再是纸上谈兵。

在课程设计过程中,我们持续发现错误,持续改正,持续领悟,持续获取。最终的检测调试环节,本身就是在践行“过而能改,善莫大焉”的知行观。这次课程设计终于顺利完成了,在设计中遇到了很多问题,最后在老师的指导下,终于游逆而解。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一实行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上劈荆斩棘,而不是知难而退,那样永远不可能收获成功,收获喜悦,也永远不可能得到社会及他人对你的认可!

回顾起此课程设计,至今我仍感慨颇多,从理论到实践,在这段日子里,能够说得是苦多于甜,但是能够学到很多很多的东西,同时不但能够巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提升自己的实际动手水平和独立思考的水平。在设计的过程中遇到问题,能够说得是困难重重,但可喜的是最终都得到了解决。

实验过程中,也对团队精神的实行了考察,让我们在合作起来更加默契,在成功后一起体会喜悦的心情。果然是团结就是力量,只有互相之间默契融洽的配合才能换来最终完美的结果。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>