1、学号 2010 XXX XXXXXXXXX学校 本科学生毕业论文(设计) 店铺管理软件设计与实现 系别名称:计算机与电子信息工程系专业名称:计算机科学与技术 学生姓名: 指导教师: 二。一四年三月 因为Mysql数据库并不是用Java编程语言来开发的,但我们必须要用Java语言来链接数据库,因此我们可以用桥连接来实现链接数据库这个过 程。 通过上图可以看出,基于JDBC的应用程序,使用JDBC的API,相当于是 对数据库操作的抽象的扩展,算作桥接模式的抽象局部;而具体的接口实现 是由驱动来完成的,驱动这边自然就相当于桥接模式的实现局部了。而桥接 的方式,不再是让抽象局部
2、持有实现局部,而是采用了类似于工厂的做法, 通过DriverManager来把抽象局部和实现局部对接起来,从而实现抽象局部 和实现局部解耦。 JDBC的这种架构,把抽象和具体别离开来,从而使得抽象和具体局部都 可以独立扩展。对于应用程序而言,只要选用不同的驱动,就可以让程序操 作不同的数据库,而无需更改应用程序,从而实现在不同的数据库上移植; 对于驱动程序而言,为数据库实现不同的驱动程序,并不会影响应用程序。 而且,JDBC的这种架构,还合理的划分了应用程序开发人员和驱动程序开发 人员的边界。 2. 5 JavaBean 技术 在软件开发过程中,经常用使用”组件”的概念,所谓组件就是可以
3、重 用的软件模块,JavaBean也是一种组件技术。传统上的JavaBean组件分为 可视化和非可视化两种。可视化组件可以在运行结果中观察到,如Swing中 的按钮、文本框等,通常也成为控件;而非可视化组件一般不可以观察到, 通常用来处理一些复杂的业务,主要用在服务器端。而对于Jsp来说,只支 持非可视化的JavaBean组件。非可视化的JavaBean又可以分为业务Bean 和数据Bean两种,前者用于封装业务逻辑、数据库操作,后者可用来封装 数据源。 一个JavaBean由3局部组成: 属性(properties) , JavaBean提供了高层次的属性概念,属性在 JavaBean中
4、不只是传统的面向对象的概念里的属性,它同时还得到了属性读 取和属性写入的API的支持。属性值可以通过调用适当的bean方法进行。 比方,可能bean有一个名字属性,这个属性的值可能需要调用String getName ()方法读取,而写入属性值可能要需要调用void setName (String str)的方法。每个JavaBean属性通常都应该遵循简单的方法命名规那么,这 样应用程序构造器工具和最终用户才能找到JavaBean提供的属性,然后查 询或修改属性值,对bean进行操作。JavaBean还可以对属性值的改变作出 及时的反响。比方一个显示当前时间的JavaBean,如果改变时钟的时
5、区属性, 那么时钟会立即重画,显示当前指定时区的时间。 方法(method) , JavaBean中的方法就是通常的Java方法,它可以从 其他组件或在脚本环境中调用。默认情况下,所有bean的公有方法都可以 被外部调用,但bean一般只会引出其公有方法的一个子集。由于JavaBean 本身是Java对象,调用这个对象的方法是与其交互作用的唯一途径。 JavaBean严格遵守面向对象的类设计逻辑,不让外部世界访问其任何字段 (没有public字段)。这样,方法调用是接触Bean的唯一途径。但是和普 通类不同的是,对有些Bean来说,采用调用实例方法的低级机制并不是操 作和使用Bean的主要
6、途径。公开Bean方法在Bean操作中降为辅助地位, 因为两个高级Bean特性一属性和事件是与Bean交互作用的更好方式。因此 Bean可以提供要让客户使用的public方法,但应当认识到,Bean设计人员 希望看到绝大局部Bean的功能反映在属性和事件中,而不是在人工调用和 各个方法中。 事件(event) , Bean与其他软件组件交流信息的主要方式是发送和接 受事件。我们可以将bean的事件支持功能看作是集成电路中的输入输出引 脚:工程师将引脚连接在一起组成系统,让组件进行通讯。有些引脚用于输 入,有些引脚用于输出,相当于事件模型中的发送事件和接收事件。事件为 JavaBean组件提供
7、了一种发送通知给其他组件的方法。在AWT事件模型中, 一个事件源可以注册事件监听器对象。当事件源检测到发生了某种事件时, 它将调用事件监听器对象中的一个适当的事件处理方法来处理这个事件。 3.可行性研究 3.1 经济可行性分析 系统的开发除了要耗费一定的时间之外,另外需要的开发软件及工具平台都是不用花钱的,而且这个系统可以在未来的一段时间发挥稳定的作用, 因此开发该系统在经济上是完全可行的。 3. 2操作可行性分析 本系统前台采用JSP技术,Jsp是基于Java Servlet以及整个Java体 系的Web开发技术,利用这一技术可以建立平安的、跨平台的先进动态网站, 这项技术还在不断
8、地被更新和优化。后台数据库是MySQL,两者结合,为Web 数据库技术提供了完美的实现体系.基于javaweb的店铺管理软件设计与实 现就是在这种条件下开发出来的,通过网页的形式,完成商品展现、购买等 功能。 基于javaweb的店铺管理软件设计与实现是典型的信息展示系统,本系 统采用B/S的设计结构,其开发主要包括后台数据库的建立和维护以及前端 应用程序的开发两个方面。对于前者要求建立起资料一致性和完整性强、资 料平安性好的库。而对于后者那么要求应用程序功能完备,易使用等特点。基 于javaweb的店铺管理软件设计与实现是一个网络商品展示的重要组成部 分,不但能实现商品的展示,同时也为用户
9、提供充足的信息和快捷的查询手 段。 3. 3技术可行性分析 “基于javaweb的店铺管理软件设计与实现”商铺查询模块是由网络和 网页实现的。所以本系统使用JSP开发技术,应用界面友好且功能强大的由 MX MyECplise软件,服务器端脚本用JAVA脚本来编写,客户端脚本也用JAVA 来编写,数据库使用MySQL数据库,服务器是TOMCAT 。在大学的学习中, 已经学过这JAVA. , C#, C++几种语言,并且屡次参加实训开发工程,有一定的 实地开发经验。且热爱计算机科学,又刻苦钻研的精神,经过大学四年的学 习,这些课程已基本熟练掌握,该模块是在学校开发,遇到问题可以与同学 一起研
10、究,再加上指导老师的指导。因此在技术上能够适应本系统的开发。 3. 4可行性综合分析 从前面的课题背景中可以知道,基于javaweb的店铺管理系统设计与实 现能够给人民提供购物便利,整体上看是可行的。 4 .系统需求分析 4.1 系统流程概述 网上购物为商品交易活动提供一个方便的电子平台。该系统分前台会 员注册购物局部和后台系统管理局部。销售商通过后台管理系统将商品信息 发布在网上,并对整个购物流程进行有效的控制、管理和统计;消费者通过 系统前台局部方便快捷的选购需要的商品,享受销售商提供的各种服务。 管理员可以选择管理员的角色进入到本系统中,可以对系统中的各个 信息进行全方面的管
11、理。用户可以自己申请账号,然后查看商品信息,进行 购物流程。 5 .系统总体设计 从上面的系统需求中大体知道了本系统的运行流程,下面将分析系统功 能设计与数据库设计。 5.1 系统功能设计 该系统有2个局部:前端用户模块、超级管理员模块。用户登录系统时, 会先判断用户名与密码是否匹配,如果匹配会提示错误,如果匹配,那么可以 进去相对应的页面。⑶流程图如下: 5. 2数据库设计 我为该系统设计了 11张表,在这里列出11张表分别为如下所示: t_admin系统管理员字段名 id int (11) NO 是 username varchar(100) YE
12、S password varchar(100) YES 数据类型默认值允许非空自动递增备注 t_contact 建议字段名数据类型 字段名数据类型 默认 值 允许非 空 自动递 是 备注 idint (11) customerld int(11) phonevarchar(100) contenttext insertDate datetime NO YES YES YES YES 用户 联系方 式 内容 日期 t_customer 客户字段名 id 字段名 id 数据类型 默认
13、值 允许非 自动递 int(ll)NO 是 备注 字段名 数据类型 默认 值 允许非 空 自动递 增 备注 username varchar(100) YES 账号 password varchar(100) YES 密码 customerName varchar(100) YES 姓名 sex varchar(100) YES 1 生另U address varchar(100) YES 地址 phone varchar(100) YES 手机 account i
14、nt (11) YES 账户 jf int (11) YES 积分 默认允许非 字段名数据类型值 空 idint(ll)NO j fName varchar(100)YES jfCost int (11) 自动递 备注 积分产品名 称 YES 积分数量 t_jfdh积分兑换产品 默认允许非自动递字段名数据类型 值 空 增 备注 jfPic varchar(lOO)YES产品图片t_kc库存 字段名数据类型默认值允许非空自动递增备注idint(ll)NO 是 productldint (11)YES产品kcNumint(ll)YES库存
15、数量 insertDatedatetimeYES日期t_message信息交流 字段名 切.I E MA El 数据类型 默认值 允许非空 自动递增 备注 id int (11) NO 是 customerld int (11) YES 用户 messageContent text YES 内容 types int (11) YES insertDate datetime YES 时间 t_order 订单 字段名 数据类型 值 空 增 备注 id int (11) NO
16、是 customerld int (11) YES 用户 productDetail text YES 订单详细 allPrice varchar (100) YES 订单总价 格 status varchar (100) YES 状态 orderNum varchar (100) YES 订单编号 pl text YES 物流信息 insertDate datetime YES 日期 默认允许非 自动递 t_product 产品 字段名 数据类型 默认 值 允
17、许非 空 自动递 增 备注 id int (11) NO 是 productName varchar (100) YES 产品名 称 productPicl varchar(100) YES 图片1 随着互联网与移动互联网迅速普及,当今计算机及网络技术正飞速开展, 网络应用正在全球范围内日益普及,当今社会正快速向信息化社会前进,此 时信息系统的作用也越来越大。在这个信息时代,传统的管理方法将被计算 机为基础的信息管理所取代是一个不争的事实。此种情况也必将发生在不完 善的店铺管理上,因此根据店铺经营的实际情况开发出一套便捷的店铺管理 系
18、统是十分必要的。 店铺管理系统实现了对客户、商品、交易的管理和对客户、商品、交易统 计工作,从而提高店主在管理店铺过程中的工作效率和质量。 本论文首先简要介绍了电子商务的开展及管理电子商务的重要性;其次对 系统进行了需求分析,确定了系统的功能模块;最后,对本系统的程序设计 作了详细的描述。在开发设计的时候,主要采用了 MyEclipse作为开发工具, 在开发的系统中,使用MySql数据库、JSP等各方面的知识。制作此系统帮 助进一步理解了大学所学的知识,大大增强了自己的动手能力。 关键词:店铺管理;JSP ; MySql字段名 id 字段名 数据类型 默认 值 允许非
19、空 自动递 增 备注 productPic2 varchar (100) YES 图片2 productPic3 varchar(100) YES 图片3 productPic4 varchar(100) YES 图片4 price int (11) YES 价格 oldPrice int (11) YES 原价 content text YES 内容 nums int (11) YES 数量 tjxj varchar (50) YES 推荐星 级 stat
20、us varchar (50) YES 状态 typesld int (11) YES 分类 jf int (11) YES 积分 字段名 id 数据类型默认值允许非空 自动递增 int(ll)NO是 备注 t_shopcar购物车 字段名数据类型 默认值 允许非空 自动递增 备注productldint (11)YES产品 numint (11)YES数量customerldint (11)YES t_types 分类 字段名 必 j I E XIA Tfrl 数据类型 默认值 允许非空 自动递增 备注 id
21、int (11) NO 是 typesName varchar (1000) YES 分类 t_user普通员工 字段名数据类型 默认值 允许非空 自动递增 备注 id int (11) NO 是 username varchar(100) YES 账号 password varchar(100) YES 密码 name varchar(100) YES 姓名 gh varchar(100) YES 工号 mobile varchar(100) YES 手机
22、 6.系统详细设计 6.1 超级管理员身份验证模块 该界面可以验证用户名与密码是否匹配,进行登录。如果不匹配会提示错误,并重新 登录,如果匹配,会进入主页面。 店铺管理软件密码 密码 登录保存 店铺管理软件 欢迎您!admin退出 s客户管理 叁产品管理 您好:欢迎使用店铺管理软件 图6. 1系统登录界面和登录后的界面 主要的代码实现: package com.sxi.controller.aamin; import java. util. List;[ @Controller("adminLoginController") @RequestMa
23、pping(value = "/adminLogin")
public class AdminLoginController extends MyController {^)RequestMapping( value = "/login")
public String index(Model model, ServletRequest request)throws Exception { return "/admin/login";)
@RequestMapping(value = "/save")public ResponseEntity
24、odel model, ServletRequest request,String username,String password) throws Exce String sql="select * from t_admin where username=?"; List
25、"password").equals(password)){request.getSession().setMaxInactiveInterval(60*60*24); request.getSession().setAttribute("adminBean", map);result="lH; }else(result="0"; }}else( result="0";) return renderData(true,result,null);} @RequestMapping(value = "/out")public String out(Model model, Se
26、rvletRequest request)throws Exception { request.getSession().removeAttribute("adminBean");return "redirect:/adminLogin/login.html"; 欢迎您! admin退出 信息处理 旧密码:* 新密码:* 新密码确认:* 6.2 个人中心管理店铺管理软件 会个人中心修改宙码 各客户管理s产品管理 s订单管理 图6. 2个人中心信息修改管理主界面 主要的实现代码: ^KequestMappi ng (value = 7admin") public cl
27、ass AdminController extends MyController {^RequestMapping(value = "/index") public String frame(Model model, ServletRequest request)throws Exception { return "/admin/index";) @RequestMapping(value = "/main")public String main(Model model, ServletRequest request)throws Exception { return "/
28、admin/main"; }^RequestMapping(value = "/tjl") public String tjl(Model model, ServletRequest request)throws Exception {String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from t_order order by DATE_FORMAT(insertDate,*%Y-%m-^ List
29、del.addAttribute("list", list);System.out.println(list);
return "/admin/tj/tjl";)
@RequestMapping(value = "/password")public String password(Model model, ServletRequest request)throws Exception { return "/admin/password";
}@RequestHapping(value = "/changePassword")
public ResponseEntity 30、ng> loginSave(Model model, ServletRequest request,String oldPassword,String newPassword) throws Exception { Map admin = getAdmin(request);if(oldPassword.equals(admin.get("password").toString())){
String sql="update t_admin set password=? where id=?";db.update(sql, new Object[]{newPassword,admin. 31、get("id")});
return renderData(true,"l",null);}else{
return renderData(false,"1",null);)
}欢迎您I admin退出
欢迎您I admin退出
6.3 客户管理客户列表
客户列表
店铺管理软件客户管理
1味号檀税查询:1
1姓名模糊直询:1
1 直询 | IJiiS |
瓶号1方码
姓名
幽址
枳分
修改
没有找到符合条件的记录!
s产品管理 s订单管理
图6. 3客户管理界面
下面是实现的代码:
15
16
17
18
19
20
32、
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
u38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
RA
欢迎您! admin退出
拿个人中心
s客户管理
=产品管理
产品列表
=订单管理
产品管理
产品名称枝附 询:单询「 蓟.」
16号产品名落图片价格
没有找到符合条件的记录!
内容职分层行上下架
品新添加片存时时
<-'■ ♦ import java.util.List;
gController 33、"adminCustomerController")3RequestMapping(value = "/admin/customer")
public class AdminCustomerController extends MyController {
@RequestMapping(value = "/frame")public String frame(Model model, ServletRequest request)throws Exception { return "/admin/customer/fname";
}
^RequestMapping(valu 34、e = "/list")public String list(Model model, ServletRequest request,String username,String customerName)throws Exception { String sql="select a.* from t_customer a where 1=1";
if(username!=null&&!"".equals(username)){
sql+=M and username like '%"+username+"%' )
if(customerName!=null&&!"".equal 35、s(customerName)){
sql+=H and customerName like ,%"+customerName+"%' )
sql+=" order by id desc";
List list = db.queryForList(sql);
request.setAttribute("list", list);
return "/admin/customer/list";
)
^RequestMapping(value = "/editSave")
public ResponseEntity 36、ervletRequest request,Long id
,String username,String password,String customerName,String sex,String address,String mobile,Integer account,Integer jf) throws Exception{ int result = 0;
if(id!=null){String sql="update t_customer set username=?,password=?,customerName=?,sex=?Jaddress=?,mobile=?,acco 37、unt=?,jf=? where id=?M;
result = db.update(sql, new Object[]{username,password,customerName,sex,address,mobile,account,jf,id});
}else{String sql="insert into t_customer(username,password,customerName,sex,address,mobile,account,jf) values(
result = db.update(sql, new Object[]{username,password,cus 38、tomerName,sex,address,mobile,account,jf});
)6. 4商品管理主界面
店铺管理软件
图6.4商品管理主界面
下面是实现的代码:
jKiglg ! admin 退出
6. 5订单管理店铺管理软件
B个人中心
叁客户管理
=产品管理
会订单管理
订单列表
订单管理
刷新J
案号用户
没有找到符合条件的记录!
0单号
订单详细
订单总价格
状态
物流侬
图6. 5订单管理界面
下面是实现的代码:
package com.sxl.controller.admin;import java.util.List;
39、Controller(MproductController*)$i*RequestMapping( value = "/admin/product**)
public class Productcontroller extends MyController {
^RequestMapping( value = "/frame'*)public String frame(Model model, ServletRequest request,String flag)throws Exception ( return H/admin/product/fname**;
)
^Req 40、uestMapping(value = "/list”)
public String list(F4odel model, ServletRequest request,String flag,String productName)throws Exception {
String sql=Mselect a.(select typesName from t_types b where a.typesld=b.id) typesName from t_product a where 1:1";
if (productName I =null&&l " '*. equals ( p 41、roduct Name ) ) {
sql>=* and productName like ・%“*productName+"%' }
sql+B1' order by id desc";
List list = db.queryForList(sql);
request.setAttribute(MlistH, list);
return w/admin/product/listM;
)
^RequestMapping( value = "/editSave'*)public ResponseEntity 42、rvletRequest request,Long id,String flag ,String productName,String productPicl,String productPic2/String productPic3/String productPic4, Integer price,Integer oldPrice,String content,Integer nums,String tjxj,String status,Integer typesld,Integer jf) throws Exceptionf int result = 0;
if(id!=null){S 43、tring sql=wupdate t_product set productName=?>productPic1=?,productPic2=?,productPic3=?,productPic4=?,price=?,M + *'oldPrice=?,contentsP^numssp,tjxjsP,statussP^typesIdsP^jfs? where id=?M;
result = db.update(sql, new Object[]{productName,productPicl,productPic2,productPic3,productPic4,price,oldPrice 44、/content,nums,tjxj,status,typesld,jf,id});
}clsc{String sqlsMinsert into t_product(productName,productPicl,productPic2,productPic3,productPic4,price,oldPrice,content,nums>tjxj,status^typesld,jf) values(?,?,?>?,?,?,?,?,?,?)M;
result = db・update(sql, new Object[J{productName,productPicl,productPic2/ 45、productPic3,productPic4,price,oldRrice,content,nums,tjxj,status,typesld,jf});
}
if(result««l){return rende「Data(tru。,”拣作成功,null);
}clsc{return renderData(f also>
)
)
^RequestMapping(value = M/editDelete")
public ResponseEntity 46、String flag) throws Exception {String sql=Mdelete from t_product where id=?M; int result = db.updateCsql, new Object([{id}); if(result==l){
return rende「D8ta(true」振作成功”,null);
}else{return rende2ata(fols。」峥失败'null);
}
^RequestMapping(value = "/edit")public String edit(F4odel model, ServletRe 47、quest request,Long id,String flag)throws Exception { if(idl*null){
〃修改String sql=Mselect • from t_product where id=?M;
Map map s db.queryForf4ap(sql,naw Object[]{id});model.addAttributeC^ap11, map);
JString sql=ww;sql="select ♦ from t_types";
model.addAttribute(MtypesLisf\ db.queryForList(sql)); 48、
return M/admin/product/editM;6. 6客户端登录/注册
上我的账号X联系我们
店铺管理软件
模糊搜索商品名称
口我的购物车
首页全部产品积分兑换
登录
新用户?注册账号吧.
忘记密码了 ?
图6.6客户端登录/注册界面下面是实现的代码:
5,KequestMapp 1 ng Q value = "/admin")public class AdminController extends MyController {
@RequestMapping(value = "/index")public String frame(Model mod 49、el, ServletRequest request)throws Exception { return "/admin/index";
)
@RequestMapping( value = "/main1')public String main(Model model, ServletRequest request)throws Exception { return "/admin/main";
}
^RequestMapping(value = "/tjl")
public String tjl(Model model, ServletRequest re 50、quest)throws Exception {
String sql="select DATE_FORMAT(insertDate,'%Y-%m-%d') dates,sum(allPrice) price from torder order by DATE_FORMAT(insertDate, List






