基于Web的网上购物商城的设计与实现 基于C#的网上购物商城的设计与实现(源码+文档)
Web.config 2024-10-06 10:03:03 阅读 70
目录
一.研究方法、研究内容及其预期目的
1.1研究方法
1.2研究内容
1.3预期目的
二.系统功能分析
2.1 前台模块的功能模块设计描述
2.2后台管理模块的功能模块设计描述
三.数据库设计
四.页面展示
五.源码获取方式
一.研究方法、研究内容及其预期目的
1.1研究方法
设计是在 Windows 系统下采取基于Web使用Strut2框架的MVC模式来实现网上购物平台的功能,以MyEclipse为开发平台,MySql为后台数据库,Tomcat为服务器,从结构和功能上,系统主要是以后台管理模块为主.设计中分析了一些购物网站的相关功能,如:当当网。结合本次毕业设计的相关要求写出需求分析;其次,综合运用以前所学的相关知识(包括计算机网络技术、相关协议、信息安全、JSP等相关知识等),选择所熟悉的开发工具进行本毕业设计的开发;在设计中以需求分析为基础,写出系统开发计划、实现流程及相关问题的实现方法。
1.2研究内容
本设计通过实际网上购物平台的功能,与一些在线购物平台网站的功能进行比较,解决了一些网站不能为顾客提供良好体验的一些问题和购买功能的问题。如:正在搞活动的商品,商家推荐的商品,分类商品以及相关内容。当用户选中某款商品时可以进行登录购买,如果不是本站会员也可以进行注册,然后再继续购买,与传统购物流程相似,但操作更为简单,实现了随时随地只要在电脑前就可以购物的愿望。不同的用户有不同的权限,如果是管理员,可以实现商品的添加与商品信息和用户信息的删改、商品的管理、对违法用户的删除,订单的查看与管理等功能,如果是普通用户则只能对自己信息的修改,自己订单的查询等操作。
1.3预期目的
网上购物系统是一个用户和商家相互交互的在线购物的系统。网上购物平台主要是对后台管理和前台操作.后台管理是管理员对本网站的维护,通过商品资料(商品添加、商品修改)会员管理(会员审查)网站信息管理(新闻添加、修改删除、公告设置),以及常规设置(广告添加,友情链接)等功能达到对网站的管理。前台操作是用户登录到本网站,可以进行用户注册,通过网站的精品推荐或商品搜索功能,找到自己想要买的商品,装入购物车,提交定单进行购买.网上购物平台的特点是客户和电子商品信息量很大,管理员需要整理的信息很多,为让管理员轻松、方便、快捷的管理,该平台采用符合购买电子商品基本的原则,满足广大客户的日益增长的数量,并达到操作过程中的直观、方便、实用、安全等要求.
二.系统功能分析
前台用户相关功能主要包括:
用户注册、登录;
购物车;
订单查询;
分类浏览;
编辑推荐;
热销图书;
最新上架;
后台管理相关功能主要包括:
添加商品;
处理订单;
查询用户信息;
将以上这些功能制作成网页以后,在其中分别互相建立连接,基本完成商城及用户对网站的要求。
前端业务流图
后端业务流图
2.1 前台模块的功能模块设计描述
前台模块主要为登陆网上商城的用户提供商品和服务的信息,填写并提交订单的服务.这样,将前台模块再细分为用户管理模块、订单查询模块、购物车模块、填写送货地址模块。顾名思义,这些模块的名称基本概括了它们的功能。下面详细说明一下这些功能模块的设计:
(1)用户管理模块:
为了方便于网站的管理,必须由一套完整的用户管理体系。该网站用户管理模块主要实现用户的注册、登录、找回密码3方面功能。
(2)购物车模块:
在超市购物,可以根据自己的需要将很多种商品挑选至购物车或购物篮中,然后到收银台结款。而在网上虚拟的商城中,当然没有办法使用真正的购物工具,因此,通常都会采用一种被称为“购物车"的技术来模拟现实生活。在网上商城中,所选商品须通过购物车进行暂存,然后生产订单。这种技术使用起来十分方便,不但可以随时添加、查看、修改、清空购物车中的内容,还可以随时去收银台结款.
(3)订单管理模块:
用户提交订单后,通过产生的订单号查询订单信息及执行状态。用户可以浏览自己购买商品的数量,商品ID及购买总价等信息。
(4)填写送货地址模块:
当用户购买完成商品在购物车中结算以后,可以填写自己的地址已确定购买的商品的寄送。在填写送货地址栏中可以修改自己的地址及联系方式,这样确保商品的准确送货。这样,子模块各自的内容基本设计好。下面可以设计如何将这些模块组织在一起,构成一个结构比较合理的前台了。除了在主页中建立面向其他模块的链接外,也要在其他模块中建立返回主页面的链接。另外各个模块间也应该互相链接起来.
2.2后台管理模块的功能模块设计描述
后台管理模块的功能是对站内的资源进行管理和维护。以后台的业务流程分析和前台各个模块的设计为基础、根据用户的需求分析来确定后台管理模块应具有的功能。后台管理模块的各个子功能模块如下:
管理员身份验证模块:为合法用户提供一个后台入口。该模块的功能是对管理员身份进行能够验证。用户输入登录ID和密码后,系统将判断登录ID及密码的有效性,如果通过验证则状态后台主页,反之则提示错误.
商品管理模块:向商品表插入前台首页展示的商品信息,也就是添加商品信息。
处理订单模块:网站管理者对用户订单的执行和编辑状态.
用户信息管理模块:查询注册所有用户,对一些非法或失信用户进行删除操作 。
三.数据库设计
商品信息表d_Product的实体图
用户信息表d_User的实体图、
订单生成表d_Order的实体图
订单商品表d_Item的实体图
管理员信息表d_Admin的实体图
商品信息表
字段名称
| 数据类型
| 长度
| 是否允许为空
| 是否为主键
| 字段描述
|
Id
| int
| 12
| no
| YES
| 商品编号
|
Product_name
| varchar
| 100
| NO
| NO
| 商品名称
|
Description
| varchar
| 100
| YES
| NO
| 商品描述
|
Add_time
| bigint
| 20
| YES
| NO
| 上架时间
|
Fxed_price
| double
| 20
| NO
| NO
| 出厂价格
|
Recommend_code
| double
| 20
| NO
| NO
| 是否推荐
|
Dang_price
| double
| 20
| NO
| NO
| 商家价格
|
Hot_code
| double
| 20
| NO
| NO
| 热销程度
|
Keywords
| varchar
| 200
| YES
| NO
| 商品关键字
|
Has_deleted
| int
| 1
| NO
| NO
| 是否删除
|
Product_pic
| varchar
| 200
| YES
| NO
| 商品
|
用户信息表d_User用户信息表d_User用来保存用户信息。表tb_User的结构如表
用户信息表
字段名称
| 数据类型
| 长度
| 是否允许为空
| 是否为主键
| 字段描述
|
id
| int
| 12
| NO
| YES
| 用户ID
|
| varchar
| 50
| NO
| NO
| 用户邮箱
|
nickname
| varchar
| 50
| YES
| NO
| 用户昵称
|
User_integral
| varchar
| 50
| NO
| NO
| 用户字段
|
Is_email_verify
| int
| 12
| NO
| NO
| 是否验证
|
Last_login_time
| char
| 3
| YES
| NO
| 最后登录时间
|
Email_verify_code
| varchar
| 50
| YES
| NO
| 邮箱验证
|
password
| bigint
| 50
| YES
| NO
| 密码
|
Last_login_ip
| varchar
| 15
| YES
| NO
| 最后登录IP
|
(3)订单生成表d_Order
订单生成表d_Order用来记录新生成的订单。表d_Order的结构如表
生成订单表
字段名称
| 数据类型
| 长度
| 是否允许为空
| 是否为主键
| 字段描述
|
id
| Int
| 10
| NO
| YES
| 订单编号
|
User_id
| int
| 12
| NO
| NO
| 用户ID
|
status
| int
| 12
| NO
| NO
| 订单状态
|
Order_desc
| bigint
| 24
| YES
| NO
| 订单描述
|
Total_price
| varchar
| 100
| NO
| NO
| 总共价格
|
Receive_name
| varchar
| 200
| YES
| NO
| 收货人姓名
|
Postal_code
| varchar
| 5
| YES
| NO
| 商家价格
|
mobile
| varchar
| 4
| YES
| NO
| 手机号码
|
phone
| varchar
| 45
| YES
| NO
| 座机号码
|
Order_time
| varchar
| 55
| YES
| NO
| 订单时间
|
Full_address
| varchar
| 44
| NO
| NO
| 收货人地址
|
订单商品表d_Item订单商品表d_Item用来记录某一订单中所定购的商品的详细信息。表d_Item的结构如表所示。
生成订单商品表
字段名称
| 数据类型
| 长度
| 是否允许为空
| 是否为主键
| 字段描述
|
id
| int
| 10
| NO
| YES
| 订单ID
|
Order_id
| int
| 10
| NO
| NO
| 生成订单ID
|
Product_id
| int
| 10
| NO
| NO
| 商品ID
|
Product_name
| varchar
| 100
| NO
| NO
| 商品名称
|
Dang_price
| double
| 12
| NO
| NO
| 商场价格
|
Product_num
| int
| 10
| NO
| NO
| 商品数量
|
amount
| double
| 35
| NO
| NO
| 总共数量
|
四.页面展示
代码展示
<code>部分源代码
“注册页面”的代码设计如下:
public void save(User user) throws Exception {
String sql =”insert into
d_user(email,nickname,password,user_integral,”+ "is_email_verify,email_verify_code,last_login_time,last_login_i p) values(?,?,?,?,?,?,?,?)";
Connection conn = DBUtil.getConnection();
PreparedStatement stmt = conn.prepareStatement(sql,
Statement.RETURN_GENERATED_KEYS);
stmt.setString(1, user。getEmail());
stmt.setString(2, user.getNickname());
stmt。setString(3, user.getPassword());
stmt。setInt(4, user。getUser_integral());
stmt。setString(5, user。getIs_email_verify());
stmt.setString(6, user。getEmail_verify_code());
stmt。setLong(7, user。getLast_login_time());
stmt.setString(8, user。getLast_login_ip());
stmt.executeUpdate();
ResultSet rs = stmt。getGeneratedKeys();
rs.next();
int id = rs.getInt(1);
user.setId(id);
}
“购物车”的代码设计如下:
public class CartServiceImpl implements CartService{
private static CartService instance = new CartServiceImpl();
private CartServiceImpl(){}
public static CartService getInstance(){
return instance;
}
public boolean buy(Cart cart, int id) throws Exception {
for(CartItem item : cart。getItems()){
if(id == item。getPro().getId()){
return false;
}
}
cart.getItems()。add(new
CartItem(DangFactory。createProductDAO()。findById(id), 1,
Comstant.HAS_DELETE_NO));
return true;
}
public void delete(Cart cart, int id) {
for(CartItem item : cart.getItems()){
if(id == item。getPro()。getId()){
item。setHas_delete(Comstant.HAS_DELETE_YES);
}
}
}
public void modify(Cart cart, int id, int count) {
for(CartItem item : cart。getItems()){
if(id == item。getPro()。getId()){
item。setCount(count);
}
}
}
public void resume(Cart cart, int id) {
for(CartItem item : cart。getItems()){
if(id == item.getPro().getId()){
item.setHas_delete(Comstant。HAS_DELETE_NO);
}
}
}
public double pay(Cart cart) throws Exception {
double sum = 0;
for(CartItem item : cart。getItems()){
sum += item。getCount()*(item。getPro().getDang_price());
}
return sum;
}
public double save_pay(Cart cart) throws Exception {
double sum = 0;
for(CartItem item : cart.getItems()){
sum += item。getCount() * (item。getPro().getFixed_price() — item。getPro()。getDang_price());
}
return sum;
}
public Cart getexistItemsCart(Cart cart) throws Exception {
Cart existCart = new Cart();
for(CartItem item:cart。getItems()){
if(item。getHas_delete() == Comstant.HAS_DELETE_NO){
existCart.getItems().add(item);
}
}
return existCart;
}
public Cart getremoveItemsCart(Cart cart) throws Exception {
Cart removeCart = new Cart();
for(CartItem item:cart。getItems()){
if(item.getHas_delete() == Comstant.HAS_DELETE_YES){
removeCart.getItems().add(item);
}
}
return removeCart;
}
public Cart toCart(String cartStr) throws Exception {
Cart cart = new Cart();
if("”。equals(cartStr)){
return cart;
}
String[] strs = cartStr.split(”:”);
for(String s : strs){
String[] data = s.split(",");
CartItem item = new CartItem();
item。setPro(DangFactory.createProductDAO().findById(Integer。parseInt(data[0])));
item。setCount(Integer。parseInt(data[1]));
item.setHas_delete(Integer.parseInt(data[2]));
cart。getItems()。add(item);
}
return cart;
}
public String toString(Cart cart) throws Exception{
StringBuilder sb = new StringBuilder();
for(CartItem item : cart.getItems()){
sb.append(item。getPro()。getId() + ",” + item。getCount() + ",” + item。getHas_delete() + ":");
}
return sb.toString();
}
}
“订单”的代码设计如下:
//添加订单
public int add(Order order) throws Exception {
String sql = "insert into
d_order(user_id,status,order_time,total_price,receive_name,full_address,postal_code,mobile,phone)"+”values(?,?,?,?,?,?,?,?,?)”;PreparedStatement stmt = DBUtil。getConnection().prepareStatement(sql,PreparedStatement.RETURN_GENERATED_KEYS);
stmt。setInt(1, order。getUser_id());
stmt。setInt(2, order。getStatus());
stmt.setLong(3, order.getOrder_time().getTime());
stmt.setDouble(4, order.getTotal_price());
stmt。setString(5, order.getReceive_name());
stmt。setString(6, order。getFull_address());
stmt.setString(7, order。getPostal_code());
stmt。setString(8, order。getMobile());
stmt。setString(9, order。getPhone());
stmt.executeUpdate();
ResultSet rs = stmt。getGeneratedKeys();
rs.next();
return rs.getInt(1);
}
//用户订单
public List<Order> findByUserId(int userId) throws Exception {
String sql = ”select * from d_order where user_id=? order by
order_time desc";
List〈Order> orders = new ArrayList<Order〉();
PreparedStatement stmt =
DBUtil。getConnection().prepareStatement(sql);
stmt.setInt(1, userId);
ResultSet rs = stmt.executeQuery();
while(rs。next()){
Order order = new Order();
order。setId(rs。getInt("id”));
order.setOrder_time(new Date(rs.getLong(”order_time")));
order。setStatus(rs。getInt(”status"));
order。setTotal_price(rs。getDouble("total_price"));
orders.add(order);
}
return orders;
}
//订单状态
public void modifyStatus(int id,int status) throws Exception {
String sql = "update d_order set status = ? where id=?”;
PreparedStatement stmt =
DBUtil。getConnection()。prepareStatement(sql);
stmt.setInt(1, status);
stmt.setInt(2, id);
stmt.executeUpdate();
}
“登录界面"的代码设计如下:
public User find(String email) throws Exception {
String sql = ”select * from d_user where email = ?”;
User user = null;
Connection conn = DBUtil.getConnection();
PreparedStatement stmt = conn。prepareStatement(sql);
stmt.setString(1, email);
ResultSet rs = stmt.executeQuery();
if (rs.next()) {
user = new User(rs。getInt(”id"), rs.getString(”email”),
rs。getString(”nickname”),
rs。getString("password”),
rs.getInt("user_integral”),
rs。getString("is_email_verify”),
rs.getString(”email_verify_code"),
rs.getLong("last_login_time"),
rs.getString(”last_login_ip”));
}
return user;
}
五.源码获取方式
只展示了部分功能和源码,需要源码可私信或
本文标签
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。