基于JSP+Servlet+MySQL实现的电子商城购物系统

到山东找蓝翔

发布日期: 2021-07-22 09:52:04 浏览量: 191
评分:
star star star star star star star star star star_border
*转载请注明来自write-bug.com

一、课程设计的目的

《Asp.Net 应用开发项目设计》课程是软件工程专业学生的一项必修实践性教学环节。通过课程设计,使学生提高理论联系实际解决实际问题的能力;也使学生对基于面向对象的理论进行系统设计过程中的诸多具体问题有感性的认识和深入的理解;进而提高学生的学习兴趣为其将来顺利进入毕业环节作必要的准备。

二、课程设计内容

2.1 选题及需求分析

本次课题设计我选择电子商城系统为主题进行设计,开发一个功能比较完善的在线购物系统,主要为在线销售和在线购物提供服务。该系统的对象为普通用户、会员和系统管理员。该系统功能主要分为两部分,一部分是面向用户部分,包含:普通用户在线注册、登录、购物、提交订单、付款等操作;另一部分是商城管理部分,这部分的内容包括:商品的添加、删除、查询、订单的管理、注册用户的管理、系统的维护等。电子商城功能系统框架图:

2.1.1 前台功能

  • 首页

    • 显示商品类别列表,例如计算机类,玩具类等
    • 根据用户选择的类别以列表形式显示商品,且显示商品部分信息
    • 显示商品详细信息
    • 加入购物车
  • 销售排行

    • 显示最受欢迎的商品并进行排行
  • 新品上架

    • 显示最新上架的商品信息
  • 会员信息管理

    • 注册会员
    • 登录
    • 修改信息并保存
  • 购物车

    • 添加商品到购物车
    • 查看购物车:显示用户所选商品信息
    • 修改购物车:修改数量,删除商品信息
    • 自动计算金额总和
  • 结算

    • 进入库存,查看库存商品是否满足购买要求
      • 如果符合要求,则购买成功,生成订单,生成出库单,修改库存
      • 如果不符合要求则提示用户重新购买
    • 选择支付方式
  • 特价商品

    • 显示特价商品信息
  • 订单

    • 查看订单信息
    • 删除订单信息
  • 公告

    • 显示公告信息
  • 商品查询

    • 可以查询商品信息
  • 友情链接

    • 链接其他网站等

2.1.2 后台功能

  • 商品管理

    • 增加商品信息
    • 修改商品信息
    • 删除商品信息
  • 会员管理

    • 显示所有注册会员的信息
  • 管理员管理

    • 登录进入系统
    • 修改管理员信息
    • 添加管理员数量
    • 删除管理员信息
  • 订单管理

    • 显示所有订单信息
  • 公告管理

    • 发布公告信息
    • 删除公告信息
  • 友情链接管理

    • 添加链接信息等

2.2 系统功能设计

2.2.1 系统功能模块设计

系统主要设计了注册登录功能模块、订单信息模块、商品信息模块、管理用户信息模块、公告模块、最新上架商品信息模块、销售排行模块、友情链接模块、商品查询模块。

  • 注册登录模块:主要是普通用户注册必须填写所要求的个人资料,完成个人资料后成为一名会员,接着可以登录进入系统进行其他操作

  • 订单信息模块:包括会员及系统管理员对订单信息进行不同权限的操作。会员可以查看并删除自己形成的订单信息;系统管理员管理着所有会员所生成的订单信息

  • 商品信息模块:包含普通用户、会员、系统管理员所能得到的不同权限的操作服务。普通用户可以游览部分商品信息,会员则可以享受到前台的所有服务,而系统管理员还承担着管理商品信息的职责

  • 管理用户信息模块:包含着会员可以修改个人信息,系统管理员可以管理所有注册人员的信息

  • 公告模块:包含会员具有查看公告及删除公告信息的权益,以及系统管理员有发布、删除公告的管理权限

  • 最新商家商品信息模块:展示了最新的商品信息

  • 销售排行模块:显示了销售量排行靠前的商品信息

  • 商品查询模块:表示会员可以根据关键词查询自己想要获取到的相关商品信息

  • 友情链接模块:表示可以从本系统跳转到其他系统,享受其他服务

2.3 系统功能实现

该系统涉及到的功能比较多,要描述的部分也比较多,因此在这里只选取部分功能的实现来展开介绍。

2.3.1 用户注册和登录代码实现

  • 用户注册和管理模块主要包括用户注册、登录及找回密码 3 个部分。

用户注册

当用户第一次登录时首先要注册,成为会员后,才可以购买物品。用户可以通过单击首页的注册按键来打开注册页面进行会员注册操作。

为了便于管理网站对用户的管理,在用户注册页接收到的注册信息要经过严格的过滤,保证注册用户的唯一性,在提交表单后需要对数据表中的数据进行查询,如果没有找到,则在插入数据表时提示注册成功,否则提示用户以被站用,请重新注册,部分代码如下:

  1. <tr>
  2. <td width="107" height="35">
  3. <div align="right">
  4. 会员名称:
  5. </div>
  6. </td>
  7. <td width="163">
  8. <div align="left">
  9. <html:text property="name">
  10. </html: text>
  11. </div>
  12. </td>
  13. </tr>
  14. <tr>
  15. <td height="35">
  16. <div align="right">
  17. 会员密码:
  18. </div>
  19. </td>
  20. <td>
  21. <div align="left">
  22. <html:password property="password">
  23. </html: password>
  24. </div>
  25. </td>
  26. </tr>
  27. <tr>
  28. <td height="35">
  29. <div align="right">
  30. 密码确认:
  31. </div>
  32. </td>
  33. <td>
  34. <div align="left">
  35. <input type="password" name="passwordOne">
  36. </div>
  37. </td>
  38. </tr>
  39. <tr>
  40. <td height="35">
  41. <div align="right">
  42. 真实姓名:
  43. </div>
  44. </td>
  45. <td>
  46. <div align="left">
  47. <html:text property="reallyName">
  48. </html: text>
  49. </div>
  50. </td>
  51. </tr>
  52. <tr>
  53. <td height="35">
  54. <div align="right">
  55. 年龄:
  56. </div>
  57. </td>
  58. <td>
  59. <div align="left">
  60. <html:text property="age">
  61. </html: text>
  62. </div>
  63. </td>
  64. </tr>
  65. <tr>
  66. <td height="35">
  67. <div align="right">
  68. 职业:
  69. </div>
  70. </td>
  71. <td>
  72. <div align="left">
  73. <html:text property="profession">
  74. </html: text>
  75. </div>
  76. </td>
  77. </tr>
  78. <tr>
  79. <td height="35">
  80. <div align="right">
  81. Email地址:
  82. </div>
  83. </td>
  84. <td>
  85. <div align="left">
  86. <html:text property="email">
  87. </html: text>
  88. </div>
  89. </td>
  90. </tr>
  91. <tr>
  92. <td height="35">
  93. <div align="right">
  94. 找回密码问题:
  95. </div>
  96. </td>
  97. <td>
  98. <div align="left">
  99. <html:text property="question">
  100. </html: text>
  101. </div>
  102. </td>
  103. </tr>
  104. <tr>
  105. <td height="35">
  106. <div align="right">
  107. 答案:
  108. </div>
  109. </td>
  110. <td>
  111. <div align="left">
  112. <html:text property="result">
  113. </html: text>
  114. </div>
  115. </td>
  116. </tr>

会员登录

网站首页在用户第一次访问时会判断用户是否登录,未登录则显示用户登录窗口,提示用户登录或注册。对于已经登录的用户,在用户登录窗口将显示用户的相关信息。

首页主要是根据保存用户名信息的 Session 参数来判断用户是否已经登录的,部分代码如下:

  1. <tr>
  2. <td width="125">
  3. </td>
  4. <td width="422" valign="bottom">
  5. <table width="411" border="0">
  6. <tr>
  7. <td width="55" height="38">
  8. <font color="#9A6634">
  9. <strong>
  10. 用户名:
  11. </strong>
  12. </font>
  13. </td>
  14. <td width="104">
  15. <input name="account" type="account" class="bgtext" size="15">
  16. </td>
  17. <td width="45">
  18. <font color="#9A6634">
  19. <strong>
  20. 密码:
  21. </strong>
  22. </font>
  23. </td>
  24. <td width="113">
  25. <input name="password" type="password" class="bgtext" size="15">
  26. </td>
  27. <td width="72">
  28. <div align="right">
  29. <input name="Submit" type="image" class="bgButtoninput" src="image/bg-land.gif">
  30. </div>
  31. </td>
  32. </tr>
  33. <tr>
  34. <td height="30" colspan="5">
  35. <div align="right">
  36. <a href="index.jsp" class="a1">
  37. 返回
  38. </a>
  39. </div>
  40. </td>
  41. </tr>
  42. </table>
  43. </td>
  44. </tr>

找回密码

当密码意外丢失,会给用户带来不必要麻烦,重新注册一个新的用户,浪费了新得用户的时间,也浪费了网站的资源,如果用户只记住自己的用户名和电子邮箱名,并提供密码提示的问题和答案,就可以找回密码。

用户单击查找按钮,系统会进行验证提交的信息是否完全符合数据库中的查询条件。只有符合才能显示密码结果,否则弹出“你输入的信息有误”的提示对话框。部分代码如下:

  1. <%if(form==null||form.equals( "")) { %>
  2. <p>
  3. <strong>
  4. 不存在此会员名称,请重新输入!!!
  5. </strong>
  6. </p>
  7. <meta http-equiv="refresh" content="3;URL=findOne.jsp">
  8. <% } else { %>
  9. <p>
  10. <strong>
  11. 输入答案
  12. </strong>
  13. </p>
  14. <form name="form" method="post" action="fg-three.jsp" onSubmit="return checkEmpty(form)">
  15. <table width="298" border="0" cellspacing="0" cellpadding="0" bordercolor="#FFFFFF"
  16. bordercolordark="#819BBC" bordercolorlight="#FFFFFF">
  17. <tr>
  18. <td width="105" height="35">
  19. <div align="right">
  20. 问题:
  21. </div>
  22. </td>
  23. <td width="187">
  24. <div align="left">
  25. <input type="hidden" name="name" value="<%=form.getName()%>">
  26. <input type="hidden" name="question" value="<%=form.getQuestion()%>">
  27. <%=form.getQuestion()%>
  28. </div>
  29. </td>
  30. </tr>
  31. <tr>
  32. <td width="105" height="35">
  33. <div align="right">
  34. 答案:
  35. </div>
  36. </td>
  37. <td width="187">
  38. <div align="left">
  39. <input type="text" name="result">
  40. </div>
  41. </td>
  42. </tr>
  43. </table>
  44. <br>
  45. <input type="image" class="input1" src="image/save.jpg" width="51" height="20">
  46. <a href="#" onClick="javascript:form.reset()">
  47. <img src="image/clear.gif">
  48. </a>
  49. <a href="#" onClick="javasrcipt:history.go(-1)">
  50. <img src="image/back.gif">
  51. </a>
  52. </form>
  53. <% }%>

2.3.2 购物车代码实现

会员可以进行添加商品到购物,删除购物车商品信息等操作,设计思路如下:

  • 获取到数据,序列化器进行校验

  • 获取到商品 id,count 和是否选中信息

  • 判断用户是否为登录用户

    • 如果为登录用户则数据保存到redis
    • 连接 Redis
    • 将校验过的数据设置到 hash 中(如果添加的是同一件商品,需要用到 hincrby 累加)
    • 如果传过来的 selected 是 true,将它添加到 set 中
    • 返回序列化之后的数据
  • 如果为非登录用户保存到cookies

    • 获取到 cookie 中的 cart 的值
      • 如果 cart 存在,对其解码解密
      • 如果不存在,令 cart={}
    • 判断传过来的 sku_id 是否在 cart 中
      • 如果在,获取到之前的 count,让他加上此次传过来的 count 值
    • 重新设置 cart 的值,并对其进行编码加密处理
    • 然后重新写入到 cookie 中,返回给前端

部分代码如下:

  1. <strong>
  2. 我的购物车
  3. </strong>
  4. <div align="center">
  5. <br>
  6. <%if(session.getAttribute( "cart")==null) { %>
  7. 您还没有购物!!!
  8. <% } else { %>
  9. </div>
  10. <form method="post" action="cart_modify.jsp" name="form">
  11. <table width="92%" border="1" align="center" cellpadding="0" cellspacing="0"
  12. bordercolor="#FFFFFF" bordercolordark="#819BBC" bordercolorlight="#FFFFFF">
  13. <tr>
  14. <td width="16%" height="28">
  15. <div align="center">
  16. 序号
  17. </div>
  18. </td>
  19. <td width="23%">
  20. <div align="center">
  21. 商品的名称
  22. </div>
  23. </td>
  24. <td width="22%">
  25. <div align="center">
  26. 商品价格
  27. </div>
  28. </td>
  29. <td width="22%">
  30. <div align="center">
  31. 商品数量
  32. </div>
  33. </td>
  34. <td width="17%">
  35. <div align="center">
  36. 总金额
  37. </div>
  38. </td>
  39. </tr>
  40. <% float sum=0; Vector cart=(Vector)session.getAttribute( "cart"); for(int
  41. i=0; i<cart.size(); i++) { SellGoodsForm form=(SellGoodsForm)cart.elementAt(i);
  42. sum=sum+form.number*form.price; System.out.print( "sum="+sum); %>
  43. <tr>
  44. <td height="28">
  45. <div align="center">
  46. <%=i+1%>
  47. </div>
  48. </td>
  49. <td>
  50. <div align="center">
  51. <%=dao.selectOneGoods(new Integer(form.ID)).getName()%>
  52. </div>
  53. </td>
  54. <td>
  55. <div align="center">
  56. <%=form.price%>
  57. </div>
  58. </td>
  59. <td>
  60. <div align="center">
  61. <input name="num<%=i%>" size="7" type="text" value="<%=form.number%>"
  62. onBlur="check(this.form)">
  63. </div>
  64. </td>
  65. <td>
  66. <div align="center">
  67. <%=form.number*form.price%>
  68. </div>
  69. </td>
  70. </tr>
  71. <script language="javascript">
  72. < !--
  73. function check(myform) {
  74. if (isNaN(myform.num < %=i % >.value) || myform.num < %=i % >.value.indexOf('.', 0) != -1) {
  75. alert("请不要输入非法字符");
  76. myform.num < %=i % >.focus();
  77. return;
  78. }
  79. if (myform.num < %=i % >.value == "") {
  80. alert("请输入修改的数量");
  81. myform.num < %=i % >.focus();
  82. return;
  83. }
  84. myform.submit();
  85. }-->
  86. </script>
  87. <% }%>
  88. </table>

2.3.3 个人信息修改代码实现

会员可以对自己的注册信息进行修改,实现思路如下:

修改用户名,邮箱等

根据当前登录的用户 id 查询查询用户信息并且返回对象 u1,判断此时的 u1 是否为 null,如果为 null 表示当前正在登录的用户已经从数据库删除了,那么此次修改没有意义,抛出用户不存在的异常;如果不为 null,表示此次的用户仍然存在,那么这个 id 是可用的,设置在 user 对象中,便于后面执行 update(User user)方法调用

如果 u1 不为 null,根据用户输入的用户名查询用户信息,返回 u2,如果这个 u2 不为 null 并且其中的用户名和当前正在登录的用户名不相同,那么说明这个用户名已经在数据库中存在了,抛出用户名已经存在的异常,反之说明这个修改过后的用户名是可用的,因此设置在 user 对象中,便于后面的修改调用。

如果前面的内容都能正常进行,那么此时就可以更新了。

修改密码

  • 根据 id 查询用户信息,返回 user
    • 如果 user=null,抛出用户不存在的异常
    • 如果 user!=null,比较 user 中的密码和用户输入的旧密码 oldPassword 是否相同
      • 如果密码不相同,抛出密码不匹配的异常
      • 如果密码相同,表示用户输入的旧密码是正确的,那么更新密码即可

部分代码如下:

  1. <tr>
  2. <td width="105" height="35">
  3. <div align="right">
  4. 会员名称:
  5. </div>
  6. </td>
  7. <td width="187">
  8. <div align="center">
  9. <input type="hidden" name="name" value="<%=form.getName()%>">
  10. <%=form.getName()%>
  11. </div>
  12. </td>
  13. </tr>
  14. <tr>
  15. <td height="35">
  16. <div align="right">
  17. 原来的密码:
  18. </div>
  19. </td>
  20. <td>
  21. <div align="center">
  22. <input type="hidden" name="result" value="<%=form.getResult()%>">
  23. <input type="hidden" name="question" value="<%=form.getQuestion()%>">
  24. <input type="hidden" name="passwordOld" value="<%=form.getPassword()%>">
  25. <input type="password" name="oldPassword">
  26. </div>
  27. </td>
  28. </tr>
  29. <tr>
  30. <td height="35">
  31. <div align="right">
  32. 会员密码:
  33. </div>
  34. </td>
  35. <td>
  36. <div align="center">
  37. <input type="password" name="password">
  38. </div>
  39. </td>
  40. </tr>
  41. <tr>
  42. <td height="35">
  43. <div align="right">
  44. 密码确认:
  45. </div>
  46. </td>
  47. <td>
  48. <div align="center">
  49. <input type="password" name="passwordOne">
  50. </div>
  51. </td>
  52. </tr>
  53. <tr>
  54. <td height="35">
  55. <div align="right">
  56. 真实姓名:
  57. </div>
  58. </td>
  59. <td>
  60. <div align="center">
  61. <input type="text" name="reallyName" value="<%=form.getReallyName()%>">
  62. </div>
  63. </td>
  64. </tr>
  65. <tr>
  66. <td height="35">
  67. <div align="right">
  68. 年龄:
  69. </div>
  70. </td>
  71. <td>
  72. <div align="center">
  73. <input type="text" name="age" value="<%=form.getAge()%>">
  74. </div>
  75. </td>
  76. </tr>
  77. <tr>
  78. <td height="35">
  79. <div align="right">
  80. 职业:
  81. </div>
  82. </td>
  83. <td>
  84. <div align="center">
  85. <input type="text" name="profession" value="<%=form.getProfession()%>">
  86. </div>
  87. </td>
  88. </tr>
  89. <tr>
  90. <td height="35">
  91. <div align="right">
  92. Email地址:
  93. </div>
  94. </td>
  95. <td>
  96. <div align="center">
  97. <input name="email" type="text" value="<%=form.getEmail()%>">
  98. </div>
  99. </td>
  100. </tr>

2.3.4 商品管理代码实现

系统管理员可以对商品进行管理,部分代码如下:

  1. <tr>
  2. <td>
  3. <div align="center">
  4. <strong>
  5. 查看商品的详细情况
  6. </strong>
  7. </div>
  8. </td>
  9. </tr>
  10. </table>
  11. <br>
  12. <table width="90%" height="209" border="1" cellpadding="1" cellspacing="1"
  13. bordercolor="#FFFFFF" bgcolor="#CCCCCC">
  14. <tr>
  15. <td width="20%" height="26">
  16. 所属大类别
  17. </td>
  18. <td width="31%" bgcolor="#FFFFFF">
  19. <%=big.selectName(goodsForm.getBig())%>
  20. </td>
  21. <td width="20%">
  22. 所属于小类别
  23. </td>
  24. <td width="31%" bgcolor="#FFFFFF">
  25. <%=small.selectName(goodsForm.getSmall())%>
  26. </td>
  27. </tr>
  28. <tr>
  29. <td height="26">
  30. 商品名称
  31. </td>
  32. <td bgcolor="#FFFFFF">
  33. <%=goodsForm.getName()%>
  34. </td>
  35. <td>
  36. 生产厂商
  37. </td>
  38. <td bgcolor="#FFFFFF">
  39. <%=goodsForm.getFrom()%>
  40. </td>
  41. </tr>
  42. <tr>
  43. <td height="26">
  44. 商品定价
  45. </td>
  46. <td bgcolor="#FFFFFF">
  47. <%=goodsForm.getNowPrice()%>
  48. </td>
  49. <td>
  50. 特价
  51. </td>
  52. <td bgcolor="#FFFFFF">
  53. <%=goodsForm.getFreePrice()%>
  54. </td>
  55. </tr>
  56. <tr>
  57. <td height="26">
  58. 商品简介
  59. </td>
  60. <td colspan="3" bgcolor="#FFFFFF">
  61. <%=goodsForm.getIntroduce()%>
  62. </td>
  63. </tr>
  64. <tr>
  65. <td height="79">
  66. 商品图片
  67. </td>
  68. <td colspan="3" bgcolor="#FFFFFF">
  69. <input name="imageField" type="image" src="<%=goodsForm.getPriture()%>"
  70. width="140" height="126">
  71. </td>
  72. </tr>
  73. </table>
  74. <table width="90%" border="0" cellspacing="0" cellpadding="0">
  75. <tr>
  76. <%String mark=goodsForm.getMark().toString(); %>
  77. <td width="65%" height="29" align="right">
  78. <%if(mark.equals( "0")) { %>
  79. <% } else { %>
  80. <a href="goodsAction.do?action=11&id=<%=goodsForm.getId()%>&mark=0">
  81. 删除特价信息
  82. </a>
  83. <% }%>
  84. </td>
  85. <td width="22%" align="right">
  86. <%if(mark.equals( "0")) { %>
  87. <a href="goodsAction.do?action=10&id=<%=goodsForm.getId()%>">
  88. 设置特价商品
  89. </a>
  90. <% } else { %>
  91. <a href="goodsAction.do?action=10&id=<%=goodsForm.getId()%>">
  92. 调整特价商品
  93. </a>
  94. <% }%>
  95. </td>
  96. <td width="13%">
  97. <a href="javascript:history.back();">
  98. 返回
  99. </a>
  100. </td>

2.3.5 会员信息管理代码实现

系统管理员可以对所有注册会员的信息进行管理,部分代码如下:

  1. <tr>
  2. <td width="14%" height="25">
  3. <div align="center">
  4. 编号
  5. </div>
  6. </td>
  7. <td width="14%">
  8. <div align="center">
  9. 会员账号
  10. </div>
  11. </td>
  12. <td width="14%">
  13. <div align="center">
  14. 会员姓名
  15. </div>
  16. </td>
  17. <td width="14%">
  18. <div align="center">
  19. 会员年龄
  20. </div>
  21. </td>
  22. <td width="38%">
  23. <div align="center">
  24. 操作
  25. </div>
  26. </td>
  27. </tr>
  28. <%for(int i=start; i<over; i++) { MemberForm form=(MemberForm)list.get(i);
  29. %>
  30. <tr bgcolor="#FFFFFF">
  31. <td height="30">
  32. <div align="center">
  33. <%=form.getId()%>
  34. </div>
  35. </td>
  36. <td>
  37. <div align="center">
  38. <%=form.getName()%>
  39. </div>
  40. </td>
  41. <td>
  42. <div align="center">
  43. <%=form.getReallyName()%>
  44. </div>
  45. </td>
  46. <td>
  47. <div align="center">
  48. <%=form.getAge()%>
  49. </div>
  50. </td>
  51. <td>

2.3.6 公告管理代码实现

系统管理员可以对公告进行管理操作,部分代码如下:

  1. <tr>
  2. <td width="23%" height="30">
  3. <div align="center">
  4. 公告标题
  5. </div>
  6. </td>
  7. <td width="77%" bgcolor="#FFFFFF">
  8. <%=affiche.getName()%>
  9. </td>
  10. </tr>
  11. <tr>
  12. <td width="23%" height="208">
  13. <div align="center">
  14. 公告内容
  15. </div>
  16. </td>
  17. <td width="77%" bgcolor="#FFFFFF">
  18. <%=affiche.getContent()%>
  19. </td>
  20. </tr>
  21. </table>
  22. <table width="82%" height="30" border="0" cellpadding="0" cellspacing="0">
  23. <tr>
  24. <td>
  25. </td>
  26. <td>
  27. <div align="right">
  28. <a href="javascript:history.go(-1)">
  29. 返回
  30. </a>
  31. </div>
  32. </td>
  33. </tr>

2.3.7 友情链接管理代码实现

系统管理员还可以将其他网站的链接发布到该系统上实现方便的转换,部分代码如下:

  1. <tr>
  2. <td>
  3. <div align="center">
  4. <strong>
  5. 连接网站信息的查询
  6. </strong>
  7. </div>
  8. </td>
  9. </tr>
  10. </table>
  11. <br>
  12. <table width="90%" border="1" cellpadding="1" cellspacing="1" bordercolor="#FFFFFF"
  13. bgcolor="CCCCCC">
  14. <tr>
  15. <td width="14%" height="25">
  16. <div align="center">
  17. 数据编号
  18. </div>
  19. </td>
  20. <td width="28%">
  21. <div align="center">
  22. 网站名称
  23. </div>
  24. </td>
  25. <td width="28%">
  26. <div align="center">
  27. 网站连接地址
  28. </div>
  29. </td>
  30. <td width="30%">
  31. <div align="center">
  32. 操作
  33. </div>
  34. </td>
  35. </tr>
  36. <%for(int i=start; i<over; i++) { LinkForm form=(LinkForm)list.get(i);
  37. %>
  38. <tr bgcolor="#FFFFFF">
  39. <td height="30">
  40. <div align="center">
  41. <%=form.getId()%>
  42. </div>
  43. </td>
  44. <td>
  45. <div align="center">
  46. <%=form.getLinkName()%>
  47. </div>
  48. </td>
  49. <td>
  50. <div align="center">
  51. <%=form.getLinkAddress()%>
  52. </div>
  53. </td>
  54. <td>
  55. <div align="center">
  56. <a href="linkAction.do?action=4&id=<%=form.getId()%>">
  57. 删除
  58. </a>
  59. </div>
  60. </td>
  61. <% }%>
  62. </tr>

2.4 系统功能测试

2.4.1 用户注册和登录功能测试

系统首页测试图

用户注册测试图

用户登录测试图

用户登录成功图

2.4.2 购物车功能测试

购物车空车图

成功添加商品到购物车图

2.4.3 个人信息修改功能测试

个人信息修改图

2.4.4 商品管理功能测试

后台登录图

商品信息管理图

2.4.5 会员信息管理功能测试

会员信息管理图

2.4.6 公告管理功能测试

公告信息管理图

公告信息管理图

2.5 友情链接功能测试

友情链接管理图

友情链接管理图

总结

本次课程设计工作在最初选题过后,我选择了 JSP,它是真正的跨平台,实现动态功能的一种技术。JSP+Servlet+JavaBeans/EJB,能够让人非常简单方便地构建安全高速的 Java Web 应用。同时可以通过 JDBC(Java DataBase Comnectivity)接口,访问几乎所有数据库,并且可以使用数据库连接池技术,有效控制连接数,确保系统的正常运转。从发展的眼光来看,JSP 的前途一片光明。在数据库的选择上,我也使用近些年发展很好的 MySQL,充分实现系统的跨平台性。

在该系统的开发过程中,我参阅了很多相关的书籍,许多网站的帮助解决了我许多难题。系统中所有的页面,我都争取使页面上代码简捷、易懂、易改。

经过多天的设计与开发,系统终于基本开发完成,各项预期功能都已得到实现。当然,该系统还具有进一步的扩展空间,将会伴随着日后的使用逐步完成,使得界面更加优美,操作更加顺畅。设计和开发过程中遇到的问题也都得到解决,学到了很多的开发经验,受益无穷。

参考文献

  • [1] 孙滨,霍金明,周贤来,javaWeb 程序设计,电子科技大学出版,2019

  • [2] 吴迪,马宏茹,丁万宁,软件工程教程,电子科技大学出版,2019

  • [3] 传智播客,MySQL 数据库入门,人民邮电出版,2008

  • [4] 传智播客,HTML+CSS+javaScript 网页制作案例教程,人民邮电出版,2008

上传的附件 cloud_download 文档.docx ( 4.92mb, 6次下载 ) cloud_download Shopping.rar ( 5.67mb, 5次下载 )
error_outline 下载需要13点积分

发送私信

会冒泡的可乐

102
文章数
12
评论数
最近文章
eject