TRƯỜNG ĐẠI HỌC CÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
======***======
BÁO CÁO BÀI TẬP LỚN
MƠN: LẬP TRÌNH ỨNG DỤNG CƠ SỞ DỮ LIỆU TRÊN WEB
ĐỀ TÀI: Xây dựng Website giới thiệu sản
phẩm và bán hàng Nơng sản
GVHD:
Nhóm:
Sinh viên:
Ths Đỗ Ngọc Sơn
12
1. Nguyễn Viết Trí
2. Đặng Ngọc Đăng
Huy
3. Dương Thị Nhung
4. Nguyễn Phương
Thảo
Lớp: 202110503134011
Khóa: 13
Hà Nội - Năm 2022
2
LỜI MỞ ĐẦU
Nền tin học càng phát triển thì con người càng có nhiều những phương
pháp mới, cơng cụ mới để xử lý thông tin và nắm bắt được nhiều thông tin hơn,
Tin học được ứng dụng trong mọi ngành nghề, mọi lĩnh vực của đời sống xã hội,
việc áp dụng tin học vào quản lý, sản xuất, kinh doanh du lịch là một xu hướng
tất yếu.
Đối với việc kinh doanh, việc áp dụng tin học trong quản lý bán hàng là
một giải pháp đúng đắn và hiệu quả trước nhu cầu mua sắm của thị trường ngày
nay ngày càng tăng.
Xuất phát từ thực tế đó, đề tài “ Xây dựng website cho cửa hàng sản phẩm
nông sản” mà chúng em đang xây dựng dưới đây mong muốn được góp phần đưa
một cách bán hàng mới tới người tiêu dùng hiện nay. Tuy nhiên việc nghiên cứu
vẫn còn gặp nhiều khó khăn nên đề tài vẫn chưa được khai thác tuyệt đối, đề tài
vẫn cịn có nhiều thiếu sót. Rất mong được thầy cơ và các bạn đóng góp ý kiến
để chương trình ngày càng hồn thiện và được đưa vào sử dụng.
Chúng em xin chân thành cảm ơn !
Lập trình ứng dụng CSDL trên Web
3
MỤC LỤC
Lập trình ứng dụng CSDL trên Web
4
Bảng phân công công việc
Mã SV
Họ tên
Công việc được
phân
2018604596
Nguyễn Viết Trí
+ Layout client
+ Slider
+ Tìm kiếm sản
phẩm
+ Oder , giỏ hàng ,
thanh toán .
+ Thiết kế cở sở dữ
liệu .
+ Quản lý đơn đặt
hàng
2018604110
Đặng Ngọc Đăng
Huy
+ Thiết kế cở sở dữ
liệu
+ Layout admin
+ Quản lý tài khoản
+ Quản lý Sản
phẩm
+ Liên hệ
+ Quản lý contact
2018603799
Dương Thị Nhung
+ Đăng Ký
+ Tin tức , giới
thiệu
+ Quản lý Danh
Mục Sản phẩm
+ Quản lý , Tìm
kiếm đơn đặt hàng
+ Phân trang
+ Hiện thị sản
phẩm theo chủng loại
2018603850
Nguyễn Phương
+ Đăng Nhập
Thảo
+ Xem chi tiết sản
phẩm
+ Quản lý danh
mục
+ Đăng Xuất
Lập trình ứng dụng CSDL trên Web
5
+ Quản lý Blog
+ Quản lý Footer,
About
Phần 1. TÌM HIỂU WEBSITE THỰC TẾ
1.1 Mô tả các chức năng của Website thực tế
Cài đặt Website trong đó:
‐ Trang người dùng:
1. Xây dựng giao diện website như trang mẫu.
2. Đăng ký, đăng nhập, có kiểm tra hợp lệ của dữ liệu trước khi gửi đi.
3. Hiển thị sản phẩm nông sản theo chủng loại.
4. Tìm kiếm sản phẩm theo tên loại, khoảng giá và nhiều tiêu chí khác.
5. Xem chi tiết ảnh, thông tin từng sản phẩm nông sản .
6. Đặt mua được sản phẩm nông sản.
7. Quản lý được sản phẩm vừa đặt nhưng chưa gửi (xem lại, sửa, xóa).
8. Các trang hiển thị có phân trang.
9. Xem được các tin tức liên quan tới các sản phẩm nơng sản.
‐ Phía người quản trị
1. Giao diện website có bố cục hợp lý, đồng nhất về màu sắc, font chữ.
2. Có đăng nhập, tạo user, phân cấp user
3. Cập nhật tất cả các bảng trong cơ sở dữ liệu
4. Quản lý được hóa đơn đặt hàng nơng sản (xem, sửa, xóa, in)
5. Hiển thị 3 sản phẩm nông sản được khách hàng mua.
6. Các trang hiển thị có phân trang.
Trang Web mẫu:
- Tên website mẫu: />- Địa chỉ : Phòng 912 CT1 - X2 Bắc Linh Đàm, phường Hoàng Liệt, quận Hoàng
Mai, Tp. Hà Nội
- Số điện thoại: 0358.241.421
-
Một số trang giao diện của WebSite thực tế tham khảo.
Lập trình ứng dụng CSDL trên Web
6
Hình 1.1 Trang Chủ
Hình 1.2 Đăng nhập và đăng kí.
Lập trình ứng dụng CSDL trên Web
7
Hình 1.3. Chi tiết sản phẩm.
Hình 1.4 Giỏ hàng và đặt hàng.
Hình 1.5. Danh mục sản phẩm.
Lập trình ứng dụng CSDL trên Web
8
Hình 1.6. Blog về sản phẩm.
Hình 1.7. List trang Home
Lập trình ứng dụng CSDL trên Web
9
Hình 1.8. Thơng tin về trang Web
Lập trình ứng dụng CSDL trên Web
10
Hình 1.9. Đặc trưng của trang WebSite.
Lập trình ứng dụng CSDL trên Web
11
1.2 Thiết kế cơ sở dữ liệu
-
Sơ đồ USE CASE
Sơ đồ quan hệ
Bảng Sản phẩm.
Lập trình ứng dụng CSDL trên Web
12
Bảng User
Bảng Danh Mục Sản Phẩm
Bảng order
Bảng ảnh sản phẩm
Lập trình ứng dụng CSDL trên Web
13
Phần 2. Thiết kế và cài đặt chương trình
2.1 Giao diện phía khách hàng
2.1.1 Trang Layout
2.1.2 Các trang màn hình tương ứng với các chức năng hỗ trợ khách hàng
2.1.2.1
Đăng Nhập và Đăng Ký
Lập trình ứng dụng CSDL trên Web
14
2.1.2.2
Chi tiết sản phẩm
Lập trình ứng dụng CSDL trên Web
15
2.1.2.3
Tìm kiếm sản phẩm
2.1.2.4
Giỏ hàng và thanh tốn
Lập trình ứng dụng CSDL trên Web
16
2.1.2.5
Liên Hệ
2.2 Giao diện phía quản trị
2.2.1 Trang Layout
Lập trình ứng dụng CSDL trên Web
17
2.2.2 Các trang màn hình tương ứng với các chức năng quản trị hệ thống
-
Quản lý sản phẩm (thêm, sửa, xóa , tìm kiếm)
-
Quản lý danh mục (thêm, sửa, xóa , tìm kiếm)
-
Quản lý danh mục sản phẩm (thêm, sửa, xóa , tìm kiếm)
Lập trình ứng dụng CSDL trên Web
18
-
Quản lý tài khoản (thêm, sửa, xóa , tìm kiếm)
-
Quản lý blog (thêm, sửa, xóa , tìm kiếm)
Lập trình ứng dụng CSDL trên Web
19
-
Quản lý đơn đặt hàng (thêm, sửa, xóa , tìm kiếm)
-
Quản lý giao diện (thêm, sửa, xóa , tìm kiếm)
Lập trình ứng dụng CSDL trên Web
20
2.3 Chương trình
2.3.1 Homecontroller
using
using
using
using
using
using
using
using
Model.DAO;
Model.EF;
ShopFruit.Models;
System;
System.Collections.Generic;
System.Linq;
System.Web;
System.Web.Mvc;
namespace ShopFruit.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Slides = new SlideDAO().ListAll();
var productDAO = new ProductDAO();
var DanhMucDAO = new DanhMucDAO();
var DanhMucSanPhamDAO = new CategoryProductDAO();
ViewBag.NewProducts = productDAO.ListNewProduct(4);
ViewBag.NewProducts1 = productDAO.ListNewProduct1(4);
ViewBag.ListFeatureProducts = productDAO.ListFeatureProduct(4);
ViewBag.SanPhamBanChay = productDAO.SanPhamBanChay(4);
ViewBag.DanhMuc = DanhMucDAO.ListAll();
ViewBag.DanhMucSanPham =
DanhMucSanPhamDAO.ListCategoryProduct();
return View();
}
public PartialViewResult HeaderCart()
{
var cart = Session[Common.CommonConstants.CartSession];
var list = new List<CartItem>();
if (cart != null)
{
list = (List<CartItem>)cart;
}
return PartialView(list);
}
public ActionResult Footer()
{
var model = new FooterDAO().GetFooter();
return PartialView(model);
}
public ActionResult About()
{
return View("About");
}
Lập trình ứng dụng CSDL trên Web
21
[HttpGet]
public ActionResult Contact()
{
return View();
}
[HttpPost]
public ActionResult Contact(MessageContact messageContact)
{
if (ModelState.IsValid)
{
var dao = new UserDAO();
long id = dao.InsertMessage(messageContact);
if (id > 0)
{
ModelState.AddModelError("", "Gửi thành công");
return RedirectToAction("Contact", "Home");
}
else
{
ModelState.AddModelError("", "Thêm user không thành công");
}
}
return View();
}
}
}
2.3.2 Userscontroller
using
using
using
using
using
using
using
using
using
using
using
using
Facebook;
Model.DAO;
Model.EF;
Model.ViewModel;
ShopFruit.Common;
ShopFruit.Models;
System;
System.Collections.Generic;
System.Configuration;
System.Linq;
System.Web;
System.Web.Mvc;
namespace ShopFruit.Controllers
{
public class UserController : Controller
{
private string groupID = "MEMBER";
private Uri RedirectUri
{
get
{
var uriBuilder = new UriBuilder(Request.Url);
Lập trình ứng dụng CSDL trên Web
22
uriBuilder.Query = null;
uriBuilder.Fragment = null;
uriBuilder.Path = Url.Action("FacebookCallback");
return uriBuilder.Uri;
}
}
public ActionResult Index()
{
return View();
}
public ActionResult QuanLyDonHang()
{
return View();
}
public PartialViewResult DonHangDangDat()
{
var session =
(UserLogin)Session[CommonConstants.USER_SESSION];
var thongTinDonHangDAO = new ThongTinDonHangDAO();
ViewBag.DonHangDangDat =
thongTinDonHangDAO.DonHangChuaGiao(session.UserID);
return PartialView();
}
public PartialViewResult TatCaDonHang()
{
var session =
(UserLogin)Session[CommonConstants.USER_SESSION];
var thongTinDonHangDAO = new ThongTinDonHangDAO();
ViewBag.TatCaDonHang =
thongTinDonHangDAO.ToanBoDonDatHang(session.UserID);
return PartialView();
}
public PartialViewResult DonHangDaGiao()
{
var session =
(UserLogin)Session[CommonConstants.USER_SESSION];
var thongTinDonHangDAO = new ThongTinDonHangDAO();
ViewBag.DonHangDaGiao =
thongTinDonHangDAO.DonHangDaGiao(session.UserID);
return PartialView();
}
[HttpGet]
public ActionResult ChiTietDonHang(string orderID)
{
var session =
(UserLogin)Session[CommonConstants.USER_SESSION];
var thongTinDonHangDAO = new ThongTinDonHangDAO();
var TatCaDonHang =
thongTinDonHangDAO.ToanBoDonDatHang(session.UserID);
DonHangViewModel dHModel = new DonHangViewModel();
Lập trình ứng dụng CSDL trên Web
23
foreach (var item in TatCaDonHang)
{
if (item.OrderID.Trim() == orderID.Trim())
{
dHModel.OrderID = item.OrderID;
dHModel.SanPhamID = item.SanPhamID;
dHModel.DonGia = item.OrderID;
dHModel.Quantity = item.Quantity;
dHModel.ThanhTien = item.ThanhTien;
dHModel.CreateDate = item.CreateDate;
dHModel.ShipName = item.ShipName;
dHModel.ShipMobile = item.ShipMobile;
dHModel.ShipAddress = item.ShipAddress;
dHModel.ShipEmail = item.ShipEmail;
dHModel.UserID = item.UserID;
dHModel.TongTien = item.TongTien;
dHModel.TenSanPham = item.TenSanPham;
dHModel.Status = item.Status;
}
}
return View(dHModel);
}
public ActionResult Login(LoginModel model)
{
if (ModelState.IsValid)
{
var dao = new UserDAO();
var result = dao.Login(model.Gmail,
Encryptor.MD5Hash(model.Password));
if (result == 1)
{
var user = dao.GetByGmail(model.Gmail);
var userSession = new UserLogin();
userSession.UserID = user.UserID;
userSession.Gmail = user.Gmail;
userSession.Name = user.Name;
userSession.Address = user.Address;
userSession.Phone = user.Phone;
string groupID = "ADMIN";
var Group = dao.GetByGroup(userSession.Gmail, groupID);
Session.Add(CommonConstants.USER_SESSION, userSession);
if (Group.Count > 0)
{
return RedirectToAction("Index", "Home_Admin", new { area
= "Admin" });
}
else
{
return RedirectToAction("Index", "Home");
}
Lập trình ứng dụng CSDL trên Web
24
}
else if (result == 0)
{
ModelState.AddModelError("", "tài khoản không tồn tại");
}
else if (result == -1)
{
ModelState.AddModelError("", "tài khoản đang bị khóa");
}
else if (result == -2)
{
ModelState.AddModelError("", "Tài khoản mật khẩu không
đúng không đúng");
}
else
{
ModelState.AddModelError("", "Tài khoản mật khẩu không
đúng không đúng");
}
}
return PartialView("Index");
}
public ActionResult LoginFacebook()
{
var fb = new FacebookClient();
var loginUrl = fb.GetLoginUrl(new
{
client_id = ConfigurationManager.AppSettings["FbAppID"],
client_secret =
ConfigurationManager.AppSettings["FbAppSecret"],
redirect_uri = RedirectUri.AbsoluteUri,
response_type = "code",
scope = "email",
});
return Redirect(loginUrl.AbsoluteUri);
}
public ActionResult FacebookCallback(string code)
{
var fb = new FacebookClient();
dynamic result = fb.Post("oauth/access_token", new
{
client_id = ConfigurationManager.AppSettings["FbAppID"],
client_secret =
ConfigurationManager.AppSettings["FbAppSecret"],
redirect_uri = RedirectUri.AbsoluteUri,
code = code
});
var accessToken = result.access_token;
if (!string.IsNullOrEmpty(accessToken))
{
fb.AccessToken = accessToken;
Lập trình ứng dụng CSDL trên Web
25
dynamic me = fb.Get("me?
fields=first_name,middle_name,last_name,id,email");
string email = me.email;
string name = me.first_name + " " + me.middle_name + " " +
me.last_name;
groupID = "MEMBER";
var user = new User();
user.Gmail = email;
user.Password = "NULL";
user.Phone = "NULL";
user.Address = "NULL";
user.GroupID = groupID;
user.Name = name;
user.Status = true;
ViewBag.Email = user.Gmail;
var resultInsert = new UserDAO().InsertForFacebook(user);
if (resultInsert > 0)
{
var userSession = new UserLogin();
userSession.Gmail = user.Gmail;
userSession.UserID = resultInsert;
Session.Add(CommonConstants.USER_SESSION, userSession);
return View("UpdateLoginFacebook");
}
}
return RedirectToAction("Index", "Home");
}
public ActionResult UpdateLoginFacebook(User user)
{
var dao = new UserDb();
var userSession =
(UserLogin)Session[CommonConstants.USER_SESSION];
user.UserID = userSession.UserID;
user.Password = Encryptor.MD5Hash(user.Password);
var update = dao.UpdateLoginFacebook(user);
ViewBag.Update = "Cập nhật thành công";
return View("Index");
}
public ActionResult Logout()
{
Session[Common.CommonConstants.USER_SESSION] = null;
return View("Index");
}
public ActionResult Register(RegisterModel model)
{
if (ModelState.IsValid)
Lập trình ứng dụng CSDL trên Web