as if UPDATE Status1 begin DECLARE @iddeal int Select @iddeal = ID from inserted update Show_import_material set... on export_product after updateas if UPDATE Status1 DECLARE @iddea
Trang 1Phần I MÔ TẢ BÀI TOÁN
A Phân tích và triển khai dự án
1 LÝ DO CHỌN ĐỀ TÀI
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
3 MỤC TIÊU CỦA ĐỀ TÀI
Vận dụng những kiến thức về lập trình, hệ quản trị cơ sở dữ liệu, vàochương trình quản lý mua bán và quản lý xưởng gỗ
Trang 2 Tìm hiểu nâng cao kỹ năng lập trình quản lí vận dụng vào thực tế.
Đánh giá khả năng tìm hiểu kiến thức trong quá trình học tập và nghiên cứu.Với đề tài này phần mềm sẽ cho phép người sử dụng thực hiện một cáchnhanh chóng, chính xác việc nhập dữ liệu, lưu trữ, cập nhật thông tin các mặthàng, thực hiện yêu cầu báo cáo… với giao diện làm việc thân thiện, tiện dụngvới người sử dụng hệ thống Giúp cho người quản lý dễ dàng quản lý việc xuấtnhập, mua bán đỗ gỗ một cách chặt chẽ, nhanh chóng
B.MÔ TẢ NGHIỆP VỤ
1.Mô tả nghiệp vụ
Giới thiệu
Cửa hàng đồ gỗ nhà chú Thắng đặt tại: Khu Công Nghiệp, La Xuyên,
xã Yên Ninh, huyện Ý Yên, tỉnh Nam Định chuyên kinh doanh cácloại mặt hàng đồ gỗ mỹ nghệ cao cấp Cửa hàng nhận bán buôn, bán
lẻ với các chế đỗ ưu đãi cho những khá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ặt
Trang 3hà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:
• Mở rộng phạm vi kinh doanh
• 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
Trang 4- 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
- Lưu trữ thông tin hoá đơn nhập
4.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ê
Trang 5Ngườ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
Phần II Mô hình quan hệ
a Xác đ nh th c th ị ự ể
- Th c th vai trò : g m các thuôc tính : id c a vai trò (id) , tên vai ự ể ồ ủtrò (ten) , mã vai trò (ma)
- Th c th Nguoidung_vaitro: g m các thu c tính : s th t (id) , ự ể ồ ộ ố ứ ự
mã ng i dùng (userid) , vai trò c a ng i dùng (roleid)ườ ủ ườ
- Th c th ng i dùng : g m các thu c tính : m i ng i dùng ự ể ườ ồ ộ ỗ ườ
đ c gán m t mã ng i dùng (id) , đ a ch c a ng i dùng ượ ộ ườ ị ỉ ủ ườ(diachi) , h tên ng i dùng (hoten) , thông tin đ liên h qua ọ ườ ể ệgmail (gmail),s đi n tho i ng i dùng (sodienthoai) , tr ng thái ố ệ ạ ườ ạ
đ xem ng i dùng còn ho t đ ng hay không (tr ng thái), tên ể ườ ạ ộ ạđăng nh p c a ng i dùng (tài kho n )ậ ủ ườ ả
- 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 duy t (tr ng thái) , mã ng i dùng trong hóa đ n (userID)ượ ệ ạ ườ ơ
Trang 6M i s n ph m đ c gán duy nh t m t mã s n ph m ỗ ả ẩ ượ ấ ộ ả ẩ( masanpham) , ch t li u t o ra s n ph m (chatlieu) , chi u dài ấ ệ ạ ả ẩ ề
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ệ ố ượ ậ
Trang 8 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 9 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ồ ề ả ẩ
Nha cung c p nh p m t hay nhi u v t t , v t t có th đ c nh p ấ ậ ộ ề ậ ư ậ ư ể ượ ậ
b i nhi u nhà cung c p Khi mua thì xu t hi n s l ng, ngày l pở ề ấ ấ ệ ố ượ ậ
Trang 10 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 11 Th c ự th ể hóa đ n nh p ơ ậ và CTHD nh p ậ : có m i k t h p (1ỗ ế ợ N).Vì m t hóa đ nộ ơ nh pậ thì có nhi u chi ti t hóa đ nề ế ơ nh pậ
- Th c ự th CHITIETHOADON ể NHAP và VATTU 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 13
Chuy n mô hình ERD sang mô hình quan h ể ệ
Trang 14- ChiTietHoaDon (MaHoaDon, SoLuong, MaSanPham)
- SanPham (MaSanPham, ChieuDai, ChieuRong, NoiDung, Gia, MoTaNgan, SoLuongMua, SoLuongTon, TieuDe, MaTheLoai)
- LoaiSanPham (MaLoaiSanPham, Ten, MoTaNgan,AnhDaiDien)
Trang 15as
if UPDATE ( Status1 )
begin DECLARE @iddeal int Select @iddeal = ID from inserted
update Show_import_material set
Trang 16on export_product after update
as
if UPDATE ( Status1 )
DECLARE @iddeal int Select @iddeal = ID from deleted
update Show_export_product set Status1 = 0 where id_deal = @iddeal
create trigger xoacthd_nhap
on Show_import_material after update
as declare @id_vt int declare @soluong bigint select @soluong = quanlity from deleted
select @id_vt = id_material from deleted
if UPDATE ( Status1 )
update material set quantity_in_stock =
quantity_in_stock - @soluong where ID = @id_vt
create trigger xoacthd_xuat_material
on Show_export_material after update
as declare @id_vt int declare @soluong bigint select @soluong = quanlity from deleted
select @id_vt = id_material from deleted
if UPDATE ( Status1 )
update material set quantity_in_stock
quantity_in_stock + @soluong where ID = @id_vt
Trang 17-Khi xóa 1 hóa đ n ơ
on export_product after update
as DECLARE @iddeal int Select @iddeal = ID from deleted
if update ( Status1 )
update Show_export_product set Status1 = 0 where id_deal = @iddeal create trigger
xoahd_nhap_product
on import_products after update
as DECLARE @iddeal int Select @iddeal = ID from deleted
as declare @id_vt int declare @soluong bigint select @soluong = quanlity from deleted
select @id_vt = id_product from deleted
if update ( Status1 )
update Product set quantity_in_stock =
quantity_in_stock - @soluong where ID = @id_vt
create trigger xoacthd_xuat_product
on Show_export_product after update
as declare @id_vt int
Trang 18-Khi xóa 1 lo i s n ạ ả
ph m thì xóa toàn ẩ
b s n ph m thu c ộ ả ẩ ộ
lo i s n ph m đó ạ ả ẩ
-Khi thêm 1 hóa đ n ơ
declare @soluong bigint select @soluong = quanlity from deleted
select @id_vt = id_product from deleted
if update ( Status1 )
update Product set quantity_in_stock =
quantity_in_stock + @soluong where ID = @id_vt
create trigger xoahd_loaisp
on Categories_Product after update
as DECLARE @idproduct int Select @idproduct = ID from deleted
if update ( Status1 )
update Product set Status1 =
where id_category = @idproduct
Trang 19on Show_import_material for insert
as begin declare @giasp bigint declare @soluong bigint declare @id_deal int declare @id_vt int select @soluong = quanlity from inserted
select @id_deal = id_deal from inserted
select @id_vt = id_material from inserted
select @giasp = last_price from inserted
if @soluong <= 0 BEGIN
ROLLBACK TRAN END
update material set quantity_in_stock
= quantity_in_stock + @soluong where @id_vt = ID
update Import_material set price_deal =
price_deal + @soluong * @giasp where @id_deal = ID
end
create trigger them_chi_tiet_hoa_don_nhap_prod uct
on Show_import_product for insert
as begin declare @giasp bigint declare @soluong bigint declare @id_deal int declare @id_vt int select @soluong = quanlity from inserted
select @id_deal = id_deal from inserted
Trang 20-Khi thêm 1 hóa đ n ơ
ROLLBACK TRAN END
update Product set quantity_in_stock
= quantity_in_stock + @soluong where @id_vt = ID
update import_products set price_deal =
price_deal + @soluong * @giasp where @id_deal = ID
end
create trigger them_chi_tiet_hoa_don_XUAT_prod uct
on Show_export_product 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
select @id_sp = id_product from inserted
select @giasp = last_price from inserted
if @soluong <= 0 and @soluong
Product where ID = @id_sp )
BEGIN ROLLBACK TRAN END
update Product set quantity_in_stock
= quantity_in_stock - @soluong where @id_sp = ID
update export_product set price_deal =
price_deal + @soluong * @giasp where @id_deal = ID
Trang 21on Show_export_product 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
select @id_sp = id_material from inserted
select @giasp = last_price from inserted
if @soluong <= 0 and @soluong
material where ID = @id_sp )
BEGIN ROLLBACK TRAN END
update material set quantity_in_stock
= quantity_in_stock - @soluong where @id_sp = ID
update Export_product set price_deal =
price_deal + @soluong * @giasp where @id_deal = ID
end
create trigger capnhat_giasp_vaocthdxuat
Trang 22as begin declare @id_product int declare @gia bigint select @gia = sell_price from Product where @id_product = ID
update Show_export_product set firt_price = @gia
end
create trigger capnhat_giavt_vaocthdnhap
on Show_import_material for insert
as begin declare @id_vt int declare @gia bigint select @gia = price from material where @id_vt = ID
update Show_import_materialset firt_price = @gia
end
create trigger khi_xoa_sp
on Product after update
as begin declare @id_product int select @id_product = ID from deleted
Show_import_product where id_product = @id_product ) and
update ( Status1 )
BEGIN ROLLBACK TRAN END
Trang 23as begin declare @id_vt int select @id_vt = ID from deleted
Show_import_material where id_material = @id_vt ) and
update ( Status1 )
BEGIN ROLLBACK TRAN END
end
create trigger khi_themsp
on Product for insert as
begin declare @name nvarchar ( 255 )
select @name = name from deleted
where upper ( name ) like
'%' + upper ( @name )+ '%' )
BEGIN ROLLBACK TRAN END
End create trigger khi_themvt
on material for insert as
begin declare @name nvarchar ( 255 )
select @name = name from deleted
where upper ( name ) like
'%' + upper ( @name )+ '%' )
BEGIN ROLLBACK TRAN END
End
create trigger khi_themsp_loaisp
on Categories_Product for insert
as
Trang 24begin declare @name nvarchar ( 255 )
select @name = name from deleted
Categories_Product where
upper ( name ) like
'%' + upper ( @name )+ '%' )
BEGIN ROLLBACK TRAN END
CREATE PROC Find_by_name_material
@name nvarchar ( 255 )
as select from material where
upper ( name ) like
'%' + upper ( @name )+ '%' and
Status1 =
CREATE PROC Find_by_name_product @name nvarchar ( 255 )
as select from Product where
upper ( name ) like
'%' + upper ( @name )+ '%'
and Status1 =
Trang 25upper ( name ) like
'%' + upper ( @name )+ '%' and
Status1 =
Create Proc count_sp_by_id_categories
@id_cate int as
select count ( ID ) from Product where @id_cate = id_category and Status1=1
Create Proc TIM_CTHD_THEO_IDHD_nhap_sp
@id_deal int as
select * from Show_import_product where
@id_deal id_deal and Status1=1
Create Proc TIM_CTHD_THEO_IDHD_nhap_vtu
@id_deal int as
select * from Show_import_material where
@id_deal id_deal and Status1=1
Create Proc TIM_CTHD_THEO_IDHD_xuat_sp
@id_deal int as
select * from Show_export_product where
@id_deal id_deal and Status1=1
Trang 26@id_deal int as
select * from Show_export_product where
@id_deal id_deal and Status1=1
create proc lochd_ngaythangnam
@tungay date ,
@denngay date as
select from import_products where createddate BETWEEN
@tungay AND @denngay and
Status1 =
create proc lochd_ngaythangnam_sp_xuat
@tungay date ,
@denngay date as
select from export_product where createddate BETWEEN
@tungay AND @denngay and
Status1 =
create proc lochd_ngaythangnam_vtu_nhap
@tungay date ,
@denngay date as
select from import_material where createddate BETWEEN
@tungay AND @denngay and
Status1 =
create proc lochd_ngaythangnam_vtu_xuat
@tungay date ,
@denngay date as
select from export_material where createddate BETWEEN
@tungay AND @denngay and
Trang 27@denngay and Status1 =
create proc tinhtongchi
@denngay and Status1 =
create proc laysp_byid
@id_sp int as
select * from Product where
ID = @id_sp and Status1=1
create proc layvt_byid
@id_vt int as