Hiển thị sản phẩm trong kho Sản phẩm trong kho sẽ được hiển thị trên trang web bao gồm số lượng, kiểu, kích thước… Khách hàng và người quản tri có thể xem tìm kiếm thông tin về sản phẩ
Trang 1TRƯỜNG ĐẠI HỌC XÂY DỰNG
Trang 2Phần I MÔ TẢ BÀI TOÁN
A Phân tích và triển khai dự án
Như chúng ta đã biết, việc quản lý kinh doanh của nhiều cửa hàng vẫn cònrất thủ công, việc ghi chép thông qua sổ sách gặp rất nhiều trở ngại, gây khókhăn cho người quản lý khi muốn xem xét tình trạng các mặt hàng theo ngày,tháng
Điều đó tồn tại nhiều bất cập như: gặp khó khăn trong quá trình tìm kiếm,người quản lý có thể gặp sai sót hoặc nhầm lẩn với những con số, nó đem lại hậuquả vô cùng to lớn Tuy nhiên, ngày nay cùng sự phát triển của thời đại đi đôivới sự phát triển của công nghệ thông tin, việc ứng dụng công nghệ vào đời sống
là một nhu cầu hết sức cấp thiết Nó thay thế con người làm từ những việc từđơn giản đến phức tạp, thậm chí là những việc mà con người không thể làm Vìvậy nhóm chúng em chọn thực hiện đề tài xây dựng phần mềm quản lý mua bán
và quản lý xướng gỗ để giúp cho nhà quản lý, các cửa hàng hạn chế những saisót trong quá trình mua bán, cũng như dễ dàng quản lý các mặt hàng nhập xuất,tồn kho, , từ đó đưa ra chiến lược kinh doanh tối ưu để đem lại hiệu quả kinh
tế cao nhất
2 PHẠM VI HOẠT ĐỘNG
Quản lý và thống kê tình hình mua bán của một công ty với phần mềm hỗ trợ
là Hệ quản trị cơ sở dữ liệu và ngôn ngữ lập trình JavaSpring
B.MÔ TẢ NGHIỆP VỤ
Trang 31.Mô tả nghiệp vụ
⮚ Giới thiệu
Cửa hàng chuyên kinh doanh các loại mặt hàng đồ gỗ mỹ nghệ caocấp Cửa hàng nhận bán buôn, bán lẻ với các chế đỗ ưu đãi cho nhữngkhách hàng đặt đơn số lượng lớn và dịch vụ hàng theo yêu cầu
o Báo cáo sản phẩm và doanh thu:
● Chủ của hàng trùng bày nhiều mặt hàng cùng loại để thuận tiệncho khách mua và giúp nhân viên bán hàng dễ kiểm soát hànghóa để bổ sung thêm khi hết hàng Hàng tháng căn cứ vào tìnhhình bán ở cửa hàng, bộ phận nghiệp vụ sẽ thống kê những mặthàng nào hết hoặc còn ít trong kho để tiến hành yêu cầu nhậpsản phẩm mới
● Sau một tháng cửa hàng sẽ tiến hành tổng báo cáo doanh thutrong tháng đó rồi gửi cho quản lý
⮚ Khảo sát yêu cầu
Hoạt đông quản lí hàng hóa và mua bán trực tiếp tại cửa hàng hoàntoàn thủ công bộc lỗ rõ những hạn chế :
• Không đáp ứng được nhu cầu trên phạm vi lớn
• Không đáp ứng được độ chính xác trong việc quản lí sảnphẩm và tài chính
• Không đáp ứng được nhu cầu thông tin phục vụ khác hàng
⮚ Hệ thống website sinh ra với mục đích đáp ứng được các nhu cầu cơ bảnsau:
Trang 4• Quản lí hóa đơn và sản phẩm chính xác hơn.
• Có khả năng lưu trữ thông tin cụ thể hơn
C Hệ thống dự định sẽ làm
Chương trình xây dựng nhằm mục đích phục vụ công việc quản lý Kho đồ gỗ
Bao gồm những nghiệp vụ chính sau:
1 Quản lý tài khoản:
- Đăng ký tài khoản
- Đăng nhập tài khoản
- Phân quyền tài khoản
2 Quản lý sản phẩm (Tạo mới, chỉnh sửa, xóa bỏ)
- Quản lý thông tin sản phẩm nhâp/xuất
- Quản lý loại sản phẩm nhâp/xuất
3 Quản lý kho
Chức năng của quản lý kho:
- Xem số lượng sản phẩm trong kho
- Quản lý nhập xuất kho
-quản lý nhà cung cấp
-quản lý khách hàng
-quản lý hoá đơn nhập/xuất
4 Mô tả sơ lược quy trình quản lý kho
4.1 Quy trình nhập kho:
- Nếu có sản phẩm, thì tăng số lượng sản phẩm trong kho
- Nếu chưa có sản phẩm thì tiến tạo mới sản phẩm
- Lưu trữ thông tin nhà cung cấp
Trang 54.2 Quy trình xuất:
Khách hàng sẽ xem qua và đặt hàng trên web Khi đặt hàng, khách hàng sẽ cần tạo
1 tài khoản để tiến hành thanh toán
Thông tin của khách hàng sẽ được lưu trong danh mục tài khoản khách hàng
Sau khi khách hàng thanh toán, hoá đơn sẽ được lưu trữ trogn kho hoá đơn xuất
4.3 Hiển thị sản phẩm trong kho
Sản phẩm trong kho sẽ được hiển thị trên trang web bao gồm số lượng, kiểu, kích thước…
Khách hàng và người quản tri có thể xem tìm kiếm thông tin về sản phẩm thông qua website
5 Báo cáo thống kê
Người quản lý sẽ đăng nhập vào trang chủ để tiến hành xem hoá đơn nhập, hóa đơn xuất, thông tin khách hàng, thông tin nhà cung cấp, sản phẩm, để tiến hành thêm sửa xoá
-xem thống kê doanh thu theo từng tháng
- xem danh sách hoá đơn , nhà cung cấp ,người dùng
- Thực thể hóa đơn : gồm các thuộc tính : mã riêng được cập nhật của từng hóa đơn (mã hóa đơn) , hóa đơn đã duyệt hay chưa được
Trang 6Số lượng các sản phẩm đã mua ( soluong) , mã của từng chi tiết hóa đơn ( mahoadon),
Mã của sản phẩm đã mua ( masanpham)
- Thực thể loại sản phẩm : gồm các thực thể : gán từng mã loại sản phẩm cho từng loại sản phẩm ( id), tên của loại sản phẩm (ten), mô
tả ngắn của loại sản phẩm (Motangan) , ảnh loại sản phẩm (Anhdaidien)
B Mối quan hệ giữa các thực thể
● Thực thể VAITRO và NGUOIDUNG
Tạo ra một bảng là NGUOIDUNG_VAITRO làm liên kết cho 2 bảng vai trò và người dùng Vì một người có nhiều vai trò và một vai trò có nhiều người dùng
● Thực thể NGUOIDUNG và HOADON:có mỗi kết hợp (N-1).
Vì một người dùng có nhiều hóa đơn nhưng một hóa đơn chỉ thuộc 1 người dùng
Trang 7Khách có thể mua một hay nhiều mặt hàng, mặt hàng có thể không được ai mua, có thể được mua bởi nhiều khách hàng Khi mua thì xuất hiện số lượng, ngày lập
● Thực thể HOADON và CHITIETHOADON: có mỗi kết hợp (1-N).Vì một
hóa đơn thì có nhiều chi tiết hóa đơn
● Thực thể CHITIETHOADON và SANPHAM và HOADON: có mỗi kết
hợp (1-1).Vì mỗi chi tiết hóa đơn chỉ hiển thị cho một sản phẩm
Trang 8● Thực thể LOAISANPHAM và SANPHAM: có mỗi kết hợp (1-N).Vì một
sản phẩm chỉ thuộc 1 loại sản phẩm mà 1 loại sản phẩm thì gồm nhiều sản phẩm
C Sơ đồ thực thể và các liên kết
D nhiệm vụ của thuộc tính
- VaiTro(MaVaiTro,Ten,Ma)
Trang 9- NguoiDung (MaNguoiDung, DiaChi, HoTen, Gmail, PassWord, SoDienThoai,
TrangThai, TaiKhoan)
- HoaDon (MaHoaDon, TrangThai, MaNguoiDung)
- ChiTietHoaDon (MaHoaDon, SoLuong, MaSanPham)
- SanPham (MaSanPham, ChieuDai, ChieuRong, NoiDung, Gia, MoTaNgan, SoLuongMua, SoLuongTon, TieuDe, MaTheLoai)
- LoaiSanPham (MaLoaiSanPham, Ten, MoTaNgan,AnhDaiDien)
Chú thích :Những thuộc tính gạch chân là các khóa chính
Phần III : Tạo Database và xử lý truy vấn
Trang 11- Bảng Nuser
+code:
+select:
Trang 15- Bảng Show_Deal_out_material
+code:
+select:
Trang 17B Tạo khóa ngoại
Trang 19D Truy vấn bằng các kỹ thuật trigger , Stored procedured ,view
DECLARE @iddeal int Select @iddeal = ID from
deleted
Show_Deal_in_material where
Trang 20(đồng thời phải giảm
Hoặc tăng số lượng tồn
DECLARE @iddeal int Select @iddeal = ID from
declare @id_vt int declare @soluong bigint select @soluong = quanlity from
Trang 21-Khi xóa 1 hóa đơn
declare @id_vt int declare @soluong bigint select @soluong = quanlity from
where ID = @id_vt
create trigger xoahd_xuat
on Deal_out_product
INSTEAD OF DELETE as
DECLARE @iddeal int Select @iddeal = ID from
deleted
Delete from
Show_Deal_out_product where
id_deal = @iddeal
Trang 22DECLARE @iddeal int Select @iddeal = ID from
declare @id_vt int declare @soluong bigint select @soluong = quanlity from
deleted
select @id_vt = id_product from
deleted
Trang 23-Khi xóa 1 loại sản
declare @id_vt int declare @soluong bigint select @soluong = quanlity from
Trang 24phẩm ( hoặc vật tư)
create trigger xoahd_loaisp
on Categories_Product
INSTEAD OF DELETE as
DECLARE @idproduct int Select @idproduct = ID from
deleted
Delete from Product where
id_category = @idproduct
Trang 25-Khi thêm 1 hóa đơn
Xuất phải tiến hành
tăng số lượng sản
phẩm ( hoặc vật tư)
create trigger
them_chi_tiet_hoa_don_nhap_mate rial
on Show_Deal_in_material
for insert as
begin declare @giasp bigint declare @soluong bigint declare @id_deal int declare @id_vt int
select @soluong = quanlity from
Trang 26(nếu thêm hoá đơn
xuất phải kiểm tra xem
số lượng sản phẩm có
đủ hay k rồi tiến hành
giảm số lương
+khi thêm chi tiết hoá
đơn nhập xuât phải
end
create trigger
them_chi_tiet_hoa_don_nhap_prod uct
on Show_Deal_in_product
for insert as
begin declare @giasp bigint declare @soluong bigint declare @id_deal int declare @id_vt int
select @soluong = quanlity from
quantity_in_stock
Trang 27kiểm tra số lượng tồn
+cập nhât giá nhập vào
của bảng vật tư vào chi
tiết hoá đơn nhập của
begin declare @giasp bigint declare @soluong bigint declare @id_deal int declare @id_sp int
select @soluong = quanlity from
if @soluong <= 0 and @soluong
<( select quantity_in_stock from
Product where ID = @id_sp )
Trang 28hoá đơn khi thêm 1 chi
tiết hoá đơn
-khi xoá :
Phải kiểm tra xem đã
có tồn tại trong các
hoá dơn chưa nếu dã
tồn tai thì k đuọc xoá
ROLLBACK TRAN END
on Show_Deal_out_material
for insert as
begin declare @giasp bigint declare @soluong bigint declare @id_deal int declare @id_sp int
select @soluong = quanlity from
inserted
select @id_deal = id_deal from
inserted
Trang 29-khi thêm :
Phải kiếm tra xem tên
của sp hoặc vật tư có
if @soluong <= 0 and @soluong
<( select quantity_in_stock from
material where ID = @id_sp )
BEGIN ROLLBACK TRAN END
begin
Trang 30declare @gia bigint select @gia = sell_price from
Product where @id_product = ID update Show_Deal_out_product
set firt_price = @gia
begin declare @id_vt int declare @gia bigint select @gia = price from material
where @id_vt = ID update Show_Deal_in_material
set firt_price = @gia
end
Trang 31create trigger khi_xoa_sp
on Product
for delete
as
begin
declare @id_product int
select @id_product = ID from
declare @id_vt int
select @id_vt = ID from deleted
if EXISTS( select from
Show_Deal_in_material where
id_material = @id_vt )
Trang 32ROLLBACK TRAN END
declare @name nvarchar ( 255 )
select @name = name from
deleted
if EXISTS( select from Product
where name = @name )
BEGIN
ROLLBACK TRAN END
declare @name nvarchar ( 255 )
select @name = name from
deleted
if EXISTS( select from
Trang 33BEGIN ROLLBACK TRAN END
begin declare @name nvarchar ( 255 )
select @name = name from
deleted
if EXISTS( select from
Categories_Product where name = @name )
BEGIN ROLLBACK TRAN END
Trang 34-tìm kiếm theo tên của
ID = @name
CREATE PROC spud_tim_spham
@name nvarchar ( 255 )
as select * from Product where
ID = @name
CREATE PROC spud_tim_loaisp
@name nvarchar ( 255 )
as
Trang 35-đếm số sản phẩm
theo từng loại sản
phẩm
+với hoá đơn :
-Tìm chi tiết hoá đơn
theo hoá đơn
ID = @name
Create Proc
count_sp_by_id_categories
@id_cate int as
select count ( ID ) from Product
where @id_cate = id_category
Create Proc
TIM_CTHD_THEO_IDHD_nhap_sp
@id_deal int as
Trang 36-lọc các hoá đơn theo
select * from Deal_in_product
where createdate BETWEEN
@tungay AND @denngay
create proc
lochd_ngaythangnam_sp_xuat
@tungay date ,
@denngay date as
select from Deal_out_product
Trang 37-tính tổng chi và tổng
thu theo năm tháng
@tungay AND @denngay
create proc
lochd_ngaythangnam_vtu_nhap
@tungay date ,
@denngay date as
select from Deal_in_product
where createdate BETWEEN
@tungay AND @denngay
create proc
lochd_ngaythangnam_vtu_xuat
@tungay date ,
@denngay date as
select from Deal_out_product
where createdate BETWEEN
@tungay AND @denngay
create proc tinhtongthu
Trang 38theo cách phân trang
create proc tinhtongchi
select from Product where
ID = @id_sp
create proc layvt_byid
@id_vt int
Trang 39select * from Product where
ID = @id_cate
create proc list_pagin_product
@page int ,
Trang 40id OFFSET @page ROWS FETCH NEXT @limit ROWS ONLY ;
create proc list_pagin_material
@page int ,
@limit int as
SELECT FROM material ORDER BY
id OFFSET @page ROWS FETCH NEXT @limit ROWS ONLY ;
create proc list_pagin_cate
@page int ,
@limit int as
SELECT * FROM
Categories_Product ORDER BY id OFFSET @page ROWS FETCH NEXT
@limit ROWS ONLY ;
Trang 41delete Product where ID = @id_sp
create proc delete_vt_byid
@id_vt int as
delete material where ID = @id_vt
create proc delete_cate_byid
@id_cate int as
delete Categories_Product where
ID = @id_cate
create proc xoa_hd_xuat_sanpham
@id int as Delete Deal_out_product where
ID = @id
create proc xoa_hd_nhap_sanpham
@id int as Delete Deal_in_product where
ID = @id
create proc xoa_hd_xuat_vtu
Trang 43name like @name
create proc lay_ncc_id
@id int as select * from partner where id
create view find_all_material
as select from material
create view find_all_Cate as select * from
Categories_Product
create view
product_out_of_stock as
Trang 44+lấy ra sản phẩm nào
chưa bán được cái nào
+lấy ra vật tư nào chưa
material quantity_in_stock =
create view
find_product_not_sell as select from Product where
not EXISTS( select from
Show_Deal_out_product inner join Product on Product ID =
Show_Deal_out_product id_produc t
create view
find_material_not_use as select from material where
not EXISTS( select from
Show_Deal_out_material inner join material on material ID =
Show_Deal_out_material id_mater ial )