首页 > 编程学习 > 网上商城实训

网上商城实训

发布时间:2022/1/17 11:11:23

实验目的:

结合前面6个实验,参照第10章“汽车用品网上商城”应用系统的展现,完整了解网上商城系统前台功能、后台功能,以及页面功能操作与数据库操纵之间的关系,充分理解数据库的核心作用,掌握面对实际应用设计数据库、操纵数据库的技能。

实验内容:

1.“汽车用品网上商城”前台功能

【实验7-1】主页中查询汽车配件对应的SQL操纵,编写一存储过程,实现查询特定汽车配件信息的功能。

【实验7-2】操作购物车,往购物车表中添加记录,并对购物车中某一条记录作删除操作。

【实验7-3】提交订单,编写一存储过程,给定会员编号、收货人姓名、收货人地址后在订单表中生成订单信息,同时将购物车中已有的该会员的购物记录追加到订单明细表中。

2.“汽车用品网上商城”后端功能

【实验7-4】管理会员,对会员表中数据进行增删改查。

【实验7-5】管理商品,对汽车配件表中数据进行增删改查。

【实验7-6】管理类别,对商品类别表进行增删改查。

【实验7-7】管理订单,修改订单表中的状态字段。

【实验7-8】查询统计,通过查询视图或者基表等手段,完成如下统计:本月销售汽车配件总数量、销售总金额、订单总数量、发生订单的会员数;最大的订单、最小的订单、消费金额最多的会员、消费金额最少的会员;卖的最好的汽车配件、卖得最差的汽车配件。

3.数据库备份与恢复

【实验7-9】对Shopping数据库进行备份

4.数据导入导出

【实验7-10】以文本格式导出汽车配件表,在Excel下完成汽车配件表的编辑(可选),将编辑后的汽车配件信息导入到Shopping数据库汽车配件表中。

实验要求:

1.完成实验文档,至少包括以下内容:‘汽车用品网上商城’系统概述、功能结构图、页面展示形式、每个功能点的数据库操纵语句。

2.在MySQL Workbench中完成【实验7-1】~【实验7-10】所有操作,将操作过程以屏幕抓图的方式拷贝,形成实验文档。

大致步骤图以下图2-1所表示。

图2-1 总体功效步骤图

三.系统总体设计

3.1 系统功效介绍

具体功效分为前台页面和后台页面两大部分,我们实训所做系统重视是后台管理,前台只需要一个登录界面即可,后台具体制作,具体功效以下。 

1) 前台功效模块: 

1.用户注册登陆模块:用户能够经过填写注册信息成为会员,登陆后才能进行购物车管理和购置商品,未经登陆会员只能浏览商品。 

2.商品检索、浏览模块:用户能够浏览商品具体信息(如名称、图片、价格等)也能够输入关键字进行查询商品。 

3.购物车模块:会员登陆后能够管理购物车。将商品放入购物车,对购物车中商品进行修改和删除,下订单和查看订单。 

2) 后台功效模块: 

1.商品管理模块:管理员登陆后能够查看商品种类和信息。也能够对商品进行增删改查操作。 

2.订单管理模块:管理员能够查看订单详情。也能够修改订单中商品数量和种类,还能够对订单进行删除。 

3.用户管理模块:增加新会员。能够查看会员具体信息。也能够对会员进行修改和删除。

4.分类管理模块:分为分类添加商品和分类列表,让商品能轻易被买家找到。

5.系统设置模块:包含个人信息详情,修改密码,新增管理员,管理员列表,和系统退出。

3.2系统功效模块

3.2.1 前台登录功效

我们需要设计一个登陆界面,这个界面用来连接后台管理界面,界面包含输入用户名和密码,和验证码文本框,还应该有一个注册文本内容,还有一个登陆按钮。

3.2.2 后台管理功效

首先我们应该设计一个后台管理界面,这个界面里面应该包含部分基础功效。拥有一个清楚目录,使用对应语言编写,使得界面中控件能和数据库中数据连接。

这些目录和一级目录下包含子目录为分为:商品管理(商品上架、商品列表),分类管理(分类添加、分类列表),订单管理(订单列表),用户管理(用户列表、权限设置),系统设置(个人信息、修改密码、新增管理员、管理员列表、系统退出)。

3.3 数据库表设计

3.3.1 设计步骤

总体分为以下图3-1所表示数据库表,因为数据库不是我们本项目标介绍关键,在下文我只列举了多个关键表。

图3-1 数据库总体表

3.3.2  数据库表介绍

(1)用户信息表:包含个人信息、登陆密码,登陆用户名,居住地址,联络方法,具体以下图3-2所表示。

图3-2 用户信息表

(2)商品信息表:包含商品类型,商品编号,商品价格,商品产地商品图片,折扣价格等,具体以下图3-3所表示。

图3-3 商品信息表

(3)订单管理表:包含商品信息,还有地单号,和购置商品用户用户名,和购置商品时间等,具体以下图3-4所表示。

图3-4 订单管理表

3.4 关键步骤介绍

我们所设计商品后台管理步骤为,第一步,直接登录,然后进入后台管理界面,再一步步对商品和用户进行管理。我们创建系统步骤通常为,首先我们需要编写好全部数据库表,和关系表。然后创建一个java项目,导入使用数据库驱动jar包 ,创建一个登陆界面,再创建一个后台管理界面,然后再对商品进行分类,添加,删除,上架,进行折扣等操作。具体设计以下图3-5所表示。

图3-5 大致步骤图

四.具体设计

4.1 三大配置文件关键内容

1)Struts.xml文件配置 

<struts> 

    <package name="struts2" extends="json-default">

<action name="usrLoginAction" class="cn.hbpu.Action.UsrLoginAction"> 

   <result name="success">/products.jsp</result>    <result name="error">/products.jsp</result>    <result name="input">/products.jsp</result>   </action> 

  <action name="clearSession" class="cn.hbpu.Action.ClearSessionAction">    <result>/index.jsp</result>   </action>   <action name="*ProductManagerAction" class="cn.hbpu.Action.ProductManagerAction" method="{1}">    <interceptor-ref name="fileUpload">     <!-- 设置上传文件类型 -->  

<param 

name="allowedTypes">image/bmp,image/png,image/jpg,image/pjpeg,image/gif,application/vnd.ms-excel </param>     <!-- 设置上传文件大小 --> 

    <param name="maximumSize">20XX00</param>    </interceptor-ref> 

   <!-- 必需显示配置引用struts默认拦截器栈:defaultStack -->  

<interceptor-ref name="defaultStack"></interceptor-ref> 

   <!-- 设置上传路径 --> 

   <param name="savePath">/upload</param>    <result 

name="searchproductshow">/products_search_show.jsp</result>    <result 

name="guestproductsshow">/products_show.jsp</result> 

<result 

name="adminproductsshow">/admin_products_show.jsp</result>    <result 

name="saveOnesuccess">/admin_products_show.jsp</result>    <result name="input">/upload_error.jsp</result>    <result name="index">/index.jsp</result> 

   <result name="productdetail">/productdetail.jsp</result>   </action>    

  <action name="registCheckAction" class="cn.hbpu.Action.RegistCheckAction">    <result type="json"></result>   </action>   <action name="registAction" class="cn.hbpu.Action.RegistAction" > 

   <result>/regist_succ.jsp</result>  

  <result name="error">/register.jsp</result>   </action> 

  <action name="*CartManagerAction" class="cn.hbpu.Action.CartManagerAction" method="{1}">    <result name="ok" type="json"></result> 

   <result name="cartshow">/cartshow.jsp</result>   </action> 

  <action name="*OrdersManagerAction" class="cn.hbpu.Action.OrdersManagerAction" method='{1}'> 

   <result name="checkoutsucc">/checkoutsucc.jsp</result>    <result name="ordershow">/ordershow.jsp</result>   </action> 

  <action name="*OrderitemManagerAction" class="cn.hbpu.Action.OrderitemManagerAction" method='{1}'> 

   <result name="orderitemshow">/orderitem_show.jsp</result>   </action>  </package> 

 <constant name="struts.i18n.encoding" value="utf-8"></constant>  <constant name="struts.devMode" value="true"></constant>  <constant name="struts.multipart.parser" value="jakarta"></constant>  <constant name="struts.custom.i18n.resources" value="properties/messageResource"/> </struts> 

经过定义不一样action,能够使JSP页面调用后台程序,是前台程序和后台程序连接枢纽。

2)web.xml文件配置 

<listener> 

 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <filter> 

  <filter-name>struts2</filter-name> 

 <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>  </filter> 

 <filter-mapping> 

  <filter-name>struts2</filter-name>   <url-pattern>*.action</url-pattern>  </filter-mapping>  <filter-mapping>    

     <filter-name>struts2</filter-name>

<url-pattern>*.jsp</url-pattern>       </filter-mapping>  <servlet> 

  <servlet-name>CheckCodeServlet</servlet-name> 

  <servlet-class>cn.hbpu.util.CheckCodeServlet</servlet-class>   </servlet> 

  <servlet-mapping> 

  <servlet-name>CheckCodeServlet</servlet-name>   <url-pattern>/authImg</url-pattern>   </servlet-mapping> </web-app> 

    该配置文件用来配置控制器,使得JSP页面action请求全部能够经过struts配置文件找到对应后台实现程序。其角色是为action提供激活信号。 3)applicationContext.xml文件配置 

 <bean id="dataSource" 

  class="org.apache.commons.dbcp.BasicDataSource">   <property name="driverClassName"    value="com.mysql.jdbc.Driver">   </property> 

  <property name="url" 

   value="jdbc:mysql://localhost:3306/acesys">   </property> 

  <property name="username" value="root"></property>   <property name="password" value="123456"></property>  </bean> 

 <bean id="sessionFactory" 

 class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">

<property name="dataSource">    <ref bean="dataSource" />   </property> 

  <property name="hibernateProperties">    <props> 

    <prop key="hibernate.dialect"> 

     org.hibernate.dialect.MySQLDialect     </prop> 

    <prop key="hibernate.show_sql">true</prop>     <prop key="hibernate.format_sql">true</prop>    </props>   </property> 

<property name="mappingResources">    <list> 

    <value>cn/hbpu/po/Usr.hbm.xml</value> 

    <value>cn/hbpu/po/Product.hbm.xml</value>     <value>cn/hbpu/po/Orders.hbm.xml</value>     <value>cn/hbpu/po/Orderitem.hbm.xml</value>    </list>   </property>  </bean> 

 <bean id="usrDao" class="cn.hbpu.DAO.impl.UsrDAOHib">   <property name="sessionFactory" ref="sessionFactory">   </property>  

</bean> 

 <bean id="usrService" class="cn.hbpu.service.impl.UsrServiceImpl"> 

  <property name="usrDao" ref="usrDao"></property>  </bean> 

 <bean class="cn.hbpu.Action.UsrLoginAction"> 

  <property name="usrService" ref="usrService"></property>  </bean> 

 <bean id="productDao" class="cn.hbpu.DAO.impl.ProductImpl">   <property name="sessionFactory" ref="sessionFactory"></property>  </bean> 

 <bean id="productService" class="cn.hbpu.service.impl.ProductServiceImpl"> 

  <property name="productDAO" ref="productDao"></property>  </bean> 

 <bean id="ordersDao" class="cn.hbpu.DAO.impl.OrdersDAOImpl">   <property name="sessionFactory" ref="sessionFactory"></property>   

 </bean>

<bean id="orderitemDAO" class="cn.hbpu.DAO.impl.OrderitemDAOImpl">   <property name="sessionFactory" ref="sessionFactory"></property> 

</bean> 

 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 

  <property name="sessionFactory" ref="sessionFactory"></property>  </bean>  <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor"> 

  <property name="transactionManager" ref="transactionManager"></property> 

  <property name="transactionAttributes">    <props>     <prop 

key="find*,get*">PROPAGATION_REQUIRED,readOnly</prop>     <prop 

key="save*,update*,delete*">PROPAGATION_REQUIRED</prop>    </props>   </property>  </bean>  <bean 

class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> 

  <property name="beanNames">    <list> 

    <value>usrDao</value> 

    <value>productDao</value>     <value>ordersDao</value>     <value>orderitemDAO</value>    </list>   </property>

<property name="interceptorNames">    <list> 

    <value>transactionInterceptor</value>    </list>   </property>  </bean>  </beans> 

4.2 前台功效模块

4.2.1 数据库连接模块

(1)数据库sql语句百分之九十全部是一样能够共同操作  

SELECT   *  FROM   eb_admin;   /*管理员表*/

SELECT   *  FROM   eb_customer;   /*用户表*/

SELECT   *  FROM  eb_category;    /*商品类别*/

SELECT  *  FROM  eb_goods;    /*商品   经过cid 和商品类别相关联  */

SELECT  *  FROM eb_goodsimgs    /*商品图片    经过gid和商品相关联*/

SELECT  *  FROM   eb_address;   /*地址表   经过userid和 用户表相关联   我们写是用户地址 */

SELECT  *  FROM eb_orders;   /*订单表   经过userid和用户表相关联   经过gid和商品表相关联   经过addrid和地址表相关联*/

 

(2)先导入使用数据库驱动jar包,以下图4-1所表示。再将项目标数据库生成能够查询对应表,写一个工具类,获取和数据库链接,我们所做全部操作全部是需要和数据库获取连接 ,在主函数中测试这个连接类 假如打印出连接字符串则连接成功 。具体代码以下所表示。

图4-1 导入包

package com.softeem.easybuy.dbhelper;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import sun.applet.Main;

/** * 数据库连接工具类 */

public class DBUtils {

private static final String DRIVER="com.mysql.jdbc.Driver";

//125.220.74.141

private static final String URL="jdbc:mysql://localhost:3306/easybuy";

private static final String USER="root";

private static final String PASSWORD="123456";

private static Connection conn;

private DBUtils(){};

//加载驱动

static{ try {

Class.forName(DRIVER);} catch (ClassNotFoundException e) {

e.printStackTrace();}}

//获取连接

public static Connection getConn(){

try {

if(conn == null ||conn.isClosed()){

conn = DriverManager.getConnection(URL, USER, PASSWORD);}

} catch (SQLException e) {

e.printStackTrace();}

return conn;}

//关闭资源

public static void closeConn(Connection conn){

try {if(conn != null)conn.close();

} catch (SQLException e) {

e.printStackTrace();}}

public static void main(String[] args) {

System.out.println(getConn()); }}

4.2.2 用户登录模块

具体代码和登陆界面以下图4-2所表示.

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>

<!DOCTYPE html>

<html>

<head>

<base href="<%=basePath%>">

<meta charset="utf-8" />

<title>后台管理----系统登录</title>

<!--作者:kusy

         时间:20XX-06-21

         描述:引入  我们写好配置文件   -->

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>

<script type="text/javascript" src="js/admin_login.js"></script>

<link type="text/css" rel="stylesheet" href="css/admin_login.css"/>

</head>

<!--作者:kusy 时间:20XX-06-21

     描述:

        HTML  静态标签      裸体模特        

        css   样式     给模特穿衣服

        js    动态配饰   让模特愈加好看  

        jquery 特殊js-->

<body leftmargin="0" οnlοad="changeImg()">

<div class="main_bar"><div id="login_form"><div class="title">EasyBuy系统登录</div>

<!--我们提交是一个完整form表单     action就是提交位置   -->

<form action="doLogin.jsp" method="post" οnsubmit="return check()">

<div id="form_widget">

<br>input type="text" name="uname" placeholder="请输入账号" id="box_name" class="txt" value="用户名" οnfοcus="this.value=''" οnblur="if(this.value=='')this.value='用户名'"/>

<br><input type="password" name="upass" placeholder="请输入密码" id="box_pass" class="txt"  value="password" οnfοcus="this.value=''" οnblur="if(this.value=='')this.value='password'"/>

<br><input type="text" id="vcode" placeholder="验证码"  value="验证码" οnfοcus="this.value=''" οnblur="if(this.value=='')this.value='验证码'"/><span id="code" title="看不清,换一张">ETF5</span>

<div id="search_pass_link"><a href="">忘记密码?</a></div>

<input type="submit" value="登录" class="btn"οnmοuseοver="this.style.backgroundColor='#FF8D00'" οnmοuseοut="this.style.backgroundColor='#FC5628'">

<br><div id="copyright">Power By kusy©CopyRight SOFTEEM since 20XX</div></div></form>

</div></div></body>

</html>


图4-2 登陆界面

4.3 后台功效模块

4.3.1 商品管理模块

1)当登录成功进入主界面 ,这个时候做商品列表 ,而且带上分页功效,具体以下图4-3所表示。一个大目录下包含着两个小目录,具体功效分别为,上架商品,和对商品进行列表统计。

2)设计分页效果

点击商品列表,会以下图所表示,当商品上架成功以后点击确定,也会出现图所表示界面,肯定显示是第一页。   

分页需要条件,总条数 /目前第一页 ,每页多少条 。   

目前有多少页 【分为两种情况 】,总条数/每页多少条=总页数+1,总条数/每页多少条=总页数

 

 

 

图4-3 商品管理效果图

4.3.2 分类管理模块

分类管理里面包含着分类添加,和分类列表,具体代码,见压缩包中源代码,具体效果图以下图4-4所表示。

 

图4-4 分类管理效果图

4.3.3 订单管理模块

订单管理里面包含着创建订单和订单列表,具体代码,见压缩包中源代码,具体效果图以下图4-5所表示。

 

图4-5 订单管理效果图

4.3.4 用户管理模块

用户管理模块跟商品管理列表功效差不多,在这里我就不具体介绍了,具体代码,见压缩包中源代码。

4.3.5 系统设计模块

系统设置包含着个人信息、修改密码、新增管理员、管理员列表、系统退出等二级目录,具体代码,见压缩包中源代码,具体效果图以下图4-6所表示。

图4-6 系统管理效果图

五. 系统评价和维护

5.1 系统评价

1)用户登陆功效 

 在index.jsp页面中输入用户名和密码,然后点击“Login”按钮,经过usrLoginAction.action将参数传输给cn.hbpu.Action.UsrLoginAction类中,经过处理后返回对应参数,并调用对应jsp页面,效果图4-2所表示。 

2)商品查询功效 

 在Product_Search.jsp页面中,选择查询方法,并在文本框中输入要查询内容,当点击“查询”按钮后,经过searchProductManagerAction.action将参数传输给cn.hbpu.Action.ProductManagerAction类中,然后经过search方法返回参数searchproductshow,最终调用products_search_show.jsp显示查询结果。

3)商品添加功效 

 在add_products_admin.jsp页面中,输入产品信息,当点击“添加”按钮后,经过saveOneProductManagerAction.action将参数传输给cn.hbpu.Action.ProductManagerAction类中,然后经过saveOne方法返回参数saveOnesuccess,最终调用admin_products_show.jsp页面显示结果。

5.2 系统测试

1)优异行登录,以下图5-1所表示,假如登陆成功,则以下图5-2所表示,然后再查看一个个目录所对应功效即可。

 

图5-1 登陆首页效果图

 

图5-2 登陆成功效果图

2)进入后台管理效果图,具体以下图5-3所表示。

 

 

 

 

图5-3 后台管理效果图

Copyright © 2010-2022 ngui.cc 版权所有 |关于我们| 联系方式| 豫B2-20100000