bái tập lớn :Đề tài: Quản Lý Bán Hàng Công Ty Máy Tính TIC
Trang 1MỤ C L C Ụ
PHẦN 1 3
PHÂN TÍCH ĐỀ TÀI 3
QUẢN LÝ BÁN HÀNG CỦA CÔNG TY MÁY TÍNH TIC 3
I Đặt Vấn Đề 3
II Phát Biểu Bài Toán 3
1 Quản lý thông tin hàng 3
2 Quản lý bán hàng 3
3 Quản lý nhân viên 4
4 Báo cáo thống kê 4
MÔ HÌNH PHÂN CẤP CHỨC NĂNG CỦA HỆ THỐNG 5
III Chức Năng Của Hệ Thống 5
PHẦN 2 7
THIẾT KẾ CƠ SỞ DỮ LIỆU 7
Quá trình chuẩn hóa: 7
1 Danh mục Loại Hàng (LOAIHANG) 8
2 Danh mục Hàng (HANG) 9
3 Danh mục KháchHàng (KHACHHANG) 9
4 Danh mục Nhân Viên (NHANVIEN) 10
5 Hàng Xuất (HANGXUAT) 10
6 Phiếu xuất (PHIEUXUAT) 10
SƠ ĐỒ THỰC THỂ KẾT HỢP 11
DỮ LIỆU SỬ DỤNG 11
PHẦN 3 LẬP TRÌNH CƠ SỞ DỮ LIỆU 14
3.1 VIEW 14
Trang 21 vw_HangXuat 14
2 vw_HX_PX 14
3 vw_PX_SLMAX 15
4 vw_SOPX_THANG 15
3.2 STORE PROCEDURE 16
1 Bang Hang 16
2 Bang Hang 19
3 Bang HangXuat 23
4 Bang PhieuXuat 27
5 Bang KhachHang 31
6 Bang NhanVien 34
7 THU TUC BAO CAO PHIEU XUAT LOC THEO SOPX 38
3.3 FUNCTION 38
3.4 TRIGGER 42
1 trg_HANGXUAT_THEM 42
2 XOA BO LOAI HANG THI MAT HANG BI XOA 43
3 XOA KHACH HANG THI TU DONG XOA PHIEU XUAT 45
Trang 3PHẦN 1 PHÂN TÍCH ĐỀ TÀI QUẢN LÝ BÁN HÀNG CỦA CÔNG TY MÁY TÍNH TIC
I Đặt Vấn Đề
Sự phát triển của ngành công nghệ thông tin trong những năm gần đây đã đem lại những thành tựu to lớn trong việc phát triển kinh tế, nó góp phần không nhỏ vào việc quản lý các hoạt động trên mọi mặt một cách nhanh chóng, thuận tiện
và chính xác Hoạt động quản lý bán hàng cũng vậy, chương trình quản lý bán hàng được xây dựng nhằm đáp ứng những đòi hỏi đặt ra của quá trình quản lý như nhập thông tin hàng, quản lý, thống kê, in báo cáo và rất nhiều công việc khác, giúp công ty hoạt động một cách hiệu quả và khoa học
Bằng những kiến thức đã học, chúng em đã ứng dụng hệ quản trị cơ sở dữ liệu SQL Server để thực hiện đề tài “Quản lý bán hàng của công ty máy tính TIC”
II Phát Biểu Bài Toán
Công ty TNHH TM Tin Học và Thiết Bị Văn Phòng TIC ở địa chỉ 45 Hồ Tùng Mậu- Cầu Giấy- Hà Nội Công ty chuyên bán các linh phụ kiện máy tính, đồ kỹthuật công nghệ cao
Công ty có nhiều bộ phận đảm nhận những công việc khác nhau như: giám đốc,
kế toán, nhân viên bán hàng, nhân viên bảo vệ, bộ phận kỹ thuật… với các hoạtđộng chính bao gồm: quản lý thông tin hàng, quản lý bán hàng, quản lý nhân viên, và báo cáo thống kê
1 Quản lý thông tin hàng
Khi hàng đc chuyển vào kho, bộ phận quản lý hàng tiến hành kiểm tra chất lượng sản phẩm, thêm thông tin hàng mới, sửa thông tin đối với các mặt hàng
có sự thay đổi, và xóa thông tin hàng khi hàng không còn kinh doanh nữa Thông tin về hàng bao gồm: mã hàng, tên hàng, số lượng, thời gian bảo hành,
mô tả hàng, giá bán…
2 Quản lý bán hàng
Trang 4Khách hàng mua hàng trực tiếp tại công ty, bộ phận bán hàng kiểm tra và thanhtoán cho khách, và giao cho khách một phiếu lưu các thông tin: mã hàng, tên hàng, số lượng, đơn giá, thành tiền, tổng tiền, ngày lập gọi là phiếu xuất.
Nếu khách hàng nhận hàng trực tiếp tại công ty thì hàng được giao ngay cho khách, khách hàng thanh toán tiền với thu ngân
Đồng thời, công ty cũng có dịch vụ giao hàng tận nơi cho khách trong trường hợp khách có yêu cầu và đặt mua hàng với số lượng lớn hoặc có giá trị cao
3 Quản lý nhân viên
Để theo dõi và quản lý nhân viên làm việc, công ty thực hiện thêm thông tin nhân viên mới được tuyển vào danh sách, sửa đổi thông tin khi có những biến đổi xảy ra và xóa bỏ nhân viên khi hết hợp đồng hoặc bị sa thải Thông tin về nhân viên gồm: mã nhân viên, tên nhân viên, địa chỉ, điện thoại, ngày sinh, giớitính và các mô tả khác
4 Báo cáo thống kê
Để tiện theo dõi việc kinh doanh của công ty, hàng tháng công ty lập báo cáo gửi cho ban giám đốc, báo cáo về doanh thu trong tháng, mặt hàng đã bán ra vàbáo cáo hàng tồn kho Từ đó có các biện pháp điều chỉnh và đề ra chiến lược kinh doanh
Trang 5MÔ HÌNH PHÂN CẤP CHỨC NĂNG CỦA HỆ THỐNG
III Chức Năng Của Hệ Thống
Hệ thống bán hàng của công ty bao gồm các chức năng sau:
1 Liệt kê thông tin chi tiết của từng phiếu xuất
2 Liệt kê thông tin chi tiết các phiếu xuất cho các khách hàng tương ứng
3 Liệt kê các phiếu xuất hàng có số lượng lớn nhất
4 Thực hiện thêm mới dữ liệu cho bảng loại hàng
5 Sửa đổi thông tin bảng loại hàng
6 Xóa thông tin loại hàng
7 Thêm thông tin hàng mới
Trang 68 Sửa thông tin hàng.
9 Xóa thông tin hàng
10 Thống kê thông tin các mặt hàng được bán
11 Sửa thông tin hàng xuất
12 Xóa thông tin hàng xuất
13 Thêm mới phiếu xuất
14 Sửa thông tin phiếu xuất
15 Liệt kê thông tin các khách hàng mua hàng trong công ty
16 Sửa thông tin khách hàng
17 Xóa thông tin khách hàng
18 Thêm thông tin nhân viên mới
19 Sửa thông tin nhân viên
20 Xóa thông tin nhân viên
Trang 7PHẦN 2 THIẾT KẾ CƠ SỞ DỮ LIỆU
ManvTennvGioitinhNgaysinhNgaylamviecDiachinvDienthoainvNgaypxNgaygiaohang
SopxMakhTenkhDiachikhDienthoaikhEmail
ManvTennvGioitinhNgaysinhNgaylamviecDiachinvDienthoainvNgaypxNgaygiaohang
Sopx
MakhManvNgaypxNgaygiaohang
Makh
TenkhDiachikhDienthoaikhEmail
Manv
TennvGioitinhNgaysinhNgaylamviecDiachinvDienthoainvMah
TenhSoluongDvtinh
MahSopxSlxuatGiaban
Mah Sopx
SlxuatGiaban
Trang 8tenlh Thoigianbh
SlxuatGiabanMalhTenlhSopx
MahTenhSoluongDvtinhThoigianbhMalh
tenlh
Mah
TenhSoluongDvtinhThoigianbhMalh
Malh
Tenlh
Sau khi chuyển dữ liệu về dạng 3NF, ta có các thực thể như sau:
PHIEUXUAT (Sopx, Makh, Manv, Ngaypx, Ngaygiaohang)
KHACHHANG (Makh, Tenkh, Diachikh, Dienthoaikh, Email)
NHANVIEN (Manv, Tennv, gioitinh, Ngaysinh, Ngaylamviec, Diachinv,
Dienthoainv)
HANGXUAT (Mah, Sopx, Slxuat, Giaban)
HANG (Mah, Tenh, Malh, Soluong, Dvtinh, Thoigianbh)
MALHANG (Malh, Tenlh)
1 Danh mục Loại Hàng (LOAIHANG)
Chứa mọi thông tin về loại hàng có bán của công ty Gồm các thuộc tính hợp thành
Tên cột Ý nghĩa Kiểu Độ rộng Ràng buộc
TENLH Tên loại hàng NVARCHAR 50
Trang 92 Danh mục Hàng (HANG)
Chứa mọi thông tin về hàng hóa trong kho của công ty Gồm các thuộc tính hợp thành
Tên cột Ý nghĩa Kiểu Độ rộng Ràng buộc
SOLUONG Số lượng hàng INT
THOIGIANBH Thời gian bảo hành VARCHAR 20
3 Danh mục KháchHàng (KHACHHANG)
Chứa mọi thông tin về khách hàng mua hàng tại công ty Gồm các thuộc tính hợp thành
Tên cột Ý nghĩa Kiểu Độ rộng Ràng buộc
MAKH Mã khách hàng VARCHAR 4 Primary key TENKH Tên khách hàng NVARCHA
EMAIL Email khách hàng VARCHAR 100
4 Danh mục Nhân Viên (NHANVIEN)
Chứa mọi thông tin về nhân viên làm việc cho công ty thực hiện công việc lập phiếu xuất Gồm các thuộc tính hợp thành
Tên cột Ý nghĩa Kiểu Độ Ràng buộc
Trang 10TENNV Tên nhân viên NVARCHAR 50
GIOITINH Giới tính BIT
NGAYSINH Ngày sinh SMALLDATETIM
E NGAYLAMVIEC Ngày làm việc SMALLDATETIM
E DIACHINV Địa chỉ của nhân viên NVARCHAR 100
DIENTHOAINV Điện thoại nhân viên NVARCHAR 20
5 Hàng Xuất (HANGXUAT)
Chứa mọi thông tin về hàng đã bán được của công ty Gồm các thuộc tính hợp thành
Tên cột Ý nghĩa Kiểu Độ rộng Ràng buộc
Primary key
SLXUAT Số lượng xuất INT
6 Phiếu xuất (PHIEUXUAT)
Chứa mọi thông tin về phiếu xuất hàng cho công ty Gồm các thuộc tính hợp thành
Tên cột Ý nghĩa Kiểu Độ
Trang 11NGAYGIAOHANG Ngày giao hàng SMALLDATETIME NOT
NULL NGAYPX Ngày đặt hàng SMALLDATETIME NOT
KH03 Nguyen Xuan Hoa Tu Liem, Ha Noi 0972584565 hoathan@yahoo.com
KH04 Ton Ngo Khong Hoan Kiem, HaNoi 01698585421 phuongtay@gmail.co
Trang 12KH05 Ngo Trac Linh Cau Giay, Ha Noi 0915648457 vntinhoa@vnzon.vn
KH06 Tran Khai Lam Ha Dong, Ha Noi 01668454544 lamyeudau@gmail.co
Cong 0 5/8/1985 5/30/2008 Quang Ninh 0945612454NV04 Do Van Nghinh 0 4/2/1981 6/14/2007 Ha Noi 0941235456 NV05 Nguyen Thai
Phong 0 7/7/1984 5/17/2005 Hai Phong 0983445543
BANG HANG
MA
H
TENH MALH SOLUONG DONVITINH THOIGIANBH
H3 Compaq Presario LH1 20 CAI 24 Thang
Trang 13H8 May Quay LH2 25 CAI 12 Thang
BANG LOAIHANG
MAL
H
TENLH
LH1 May Tinh Xach Tay
LH2 THIET BI GIAI TRI
LH3 THIET BI VAN PHONG
Trang 14drop view vw_HANGXUAT
Su dung bang ao
SELECT * FROM vw_HANGXUAT
Trang 15slxuat*giaban as thanhtienFROM HANG a INNER JOIN HANGXUAT b ON a.mah=b.mah
INNER JOIN PHIEUXUAT c ON b.sopx=c.sopx
INNER JOIN KHACHHANG d ON c.makh=d.makh
DROP VIEW vw_PX_SLMAX
SELECT * FROM vw_PX_SLMAX
WHERE SoMH>=ALL (SELECT SoMH FROM vw_PX_SLMAX)GO
Trang 164 vw_SOPX_THANG
Thong ke So phieu xuat theo thang
CREATE VIEW vw_SOPX_THANG
AS
SELECT TOP 100 YEAR (ngaypx) AS Nam, MONTH (ngaypx) AS Thang, COUNT (sopx) AS SopxThang
FROM phieuxuat
GROUP BY YEAR (ngaypx) , MONTH (ngaypx)
DROP VIEW vw_SOPX_THANG
a Them moi du lieu vao bang LoaiHang
DROP PROC spud_LoaiHang_them
CREATE PROC spud_LoaiHang_them
Trang 17EXEC spud_LoaiHang_them 'LH1','MAY TINH XACH TAY'
EXEC spud_LoaiHang_them 'LH4','THIET BI KY THUAT SO'
b Sua thong tin LoaiHang
DROP PROC spud_LoaiHang_sua
CREATE PROC spud_LoaiHang_sua
@malh CHAR(4),
@tenlh VARCHAR(50)
AS
DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT malh FROM LoaiHang WHERE malh =
@malh)
BEGIN
SET @ErrMsg = 'Khong tim thay ma loai hang'+@malhRAISERROR(@ErrMsg, 16, 1)
Trang 18Xu ly update
UPDATE LoaiHang
SET tenlh = @tenlh
WHERE malh = @malh
GO
EXEC spud_LoaiHang_sua 'LH1','MAY TINH XACH TAY'
c Xoa thong tin LoaiHang
drop proc spud_loaihang_xoa
CREATE PROC spud_LoaiHang_xoa
@malh CHAR(4)
AS
DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT * FROM LoaiHang WHERE malh = @malh)BEGIN
SET @ErrMsg = 'Ma loai hang' +@malh+ ' khong ton tai, nen khong the xoa'
RAISERROR(@ErrMsg, 16, 1)RETURN
Trang 19RAISERROR(@ErrMsg, 16, 1)RETURN
END
ELSE
BEGIN
Thuc hien xoa mau tin
DELETE LoaiHang WHERE malh = @malhPRINT 'Loai hang' +@malh+ ' da duoc xoa'END
GO
EXEC spud_LoaiHang_xoa 'LH4'
SELECT * FROM LoaiHang
2 Bang Hang
a Them hang moi
DROP PROC spud_Hang_them
CREATE PROC spud_Hang_them
kiem tra ma hang chua co
IF EXISTS (SELECT * FROM Hang WHERE mah = @mah)
Trang 20PRINT 'Ma hang ' +@mah+ ' da ton tai! NHAP MA HANG KHAC'
RETURNEND
kiem tra ten hang khong trung
IF EXISTS (SELECT * FROM Hang WHERE tenh = @tenh)
BEGIN
PRINT 'Ten hang ' +@tenh+ ' da ton tai! NHAP TEN HANG KHAC '
RETURNEND
kiem tra ma loai hang da co
IF NOT EXISTS (SELECT * FROM LoaiHang WHERE malh = @malh)BEGIN
PRINT 'Ma loai hang ' +@malh+ ' khong ton tai trong bang Loai Hang'
RETURNEND
Them mau tin moi
BEGIN
INSERT INTO hang VALUES (@mah, @tenh, @malh,
@soluong, @dvtinh, @thoigianbh)
PRINT 'MAT HANG DA THEM THANH CONG!'END
GO
Trang 21EXEC spud_Hang_them 'H1','MAY ANH
CANON','LH1',12,'CAI','24THANG'
EXEC spud_Hang_them 'H10','MAY ANH
CANON','LH1',15,'CAI','24THANG'
b Sua thong tin hang
DROP PROC spud_Hang_sua
CREATE PROC spud_Hang_sua
Trang 22Thuc hien update
UPDATE hang
SET tenh = @tenh, malh = @malh, soluong = @soluong, dvtinh =
@dvtinh, thoigianbh = @thoigianbh
WHERE mah = @mahPRINT 'sua hang thanh cong'GO
SELECT * FROM HANG
EXEC spud_Hang_sua 'H4','MAN HINH LCD 17 INCHES','LH5',10,
'CAI','24 THANG'
EXEC spud_Hang_sua 'H5','MAY IN MAU','LH3',25, 'CAI','24 THANG'
c Xoa Hang
DROP PROCEDURE spud_Hang_xoa
CREATE PROCEDURE spud_Hang_xoa
Trang 23END
Thuc hien xoa mau tin
DELETE Hang WHERE mah = @mah
PRINT 'xoa Mat hang ' +@mah+' thanh cong'GO
EXEC spud_Hang_xoa 'H1'
EXEC spud_Hang_xoa 'H10'
3 Bang HangXuat
a Them moi HangXuat
DROP PROCEDURE spud_HangXuat_them
CREATE PROCEDURE spud_HangXuat_them
DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT sopx FROM PhieuXuat WHERE sopx =
Trang 24IF NOT EXISTS (SELECT mah FROM hang WHERE mah = @mah)BEGIN
SET @ErrMsg = 'mah '+@mah+ ' nay khong co trong hang KHONG THE XUAT HANG'
Trang 25INSERT INTO HangXuat VALUES (@mah, @sopx, @slxuat, @giaban)
GO
SELECT * FROM HANGXUAT
ALTER TABLE HANGXUAT NOCHECK CONSTRAINT ALL
ALTER TABLE HANGXUAT CHECK CONSTRAINT ALL
EXEC spud_HangXuat_them 'PX01', 'H10', 1, 1500000
EXEC spud_HangXuat_them 'PX01', 'H1', 1, 1500000
EXEC spud_HangXuat_them 'H4', 'PX01', 1, 15000000
GO
b Sua thong tin HangXuat
DROP PROCEDURE spud_HangXuat_sua
CREATE PROCEDURE spud_HangXuat_sua
IF NOT EXISTS (SELECT sopx, mah FROM HangXuat WHERE (sopx
= @sopx) and (mah = @mah))
Trang 26SET giaban = @giaban, slxuat = @slxuat
WHERE(sopx = @sopx) and (mah = @mah)
PRINT 'sua HangXuat thanh cong'
GO
EXEC spud_HangXuat_sua 'H1','PX01', 2, 15000000
c Xoa HangXuat
DROP PROCEDURE spud_HangXuat_xoa
CREATE PROCEDURE spud_HangXuat_xoa
@mah CHAR(4),
@sopx CHAR(4)
AS
IF NOT EXISTS (SELECT sopx, mah FROM HangXuat WHERE (sopx
= @sopx) and (mah = @mah))
BEGIN
Trang 27PRINT 'So phieu xuat '+@sopx+ 'va ma hang' +@mah+ 'khong ton taitrong bang HangXuat, ban khong the xoa'
RETURN
END
DELETE HangXuat
WHERE (sopx = @sopx) and (mah = @mah)
PRINT 'xoa HangXuat thanh cong'
GO
EXEC spud_HangXuat_XOA 'H4', 'PX01'
4 Bang PhieuXuat
a Them moi PhieuXuat
DROP PROCEDURE spud_PhieuXuat_them
ALTER TABLE PHIEUXUAT NOCHECK CONSTRAINT ALL
ALTER TABLE PHIEUXUAT CHECK CONSTRAINT ALL
CREATE PROCEDURE spud_PhieuXuat_them
DECLARE @ErrMsg VARCHAR(100)
IF EXISTS (SELECT sopx FROM phieuxuat WHERE sopx = @sopx)BEGIN
SET @ErrMsg = 'So Phieu xuat '+@sopx+ ' da ton tai trong bang Phieuxuat Nhap sopx khac de them'
Trang 28Thuc hien them PhieuXuat
INSERT INTO PhieuXuat VALUES(@sopx, @makh, @manv,
Trang 29b Sua thong tin phieu xuat
DROP PROCEDURE spud_PhieuXuat_sua
CREATE PROCEDURE spud_PhieuXuat_sua
DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT sopx FROM PhieuXuat WHERE sopx =
Trang 30IF NOT EXISTS (SELECT manv FROM NhanVien WHERE manv =
WHERE sopx = @sopx
PRINT 'Phieu Xuat da duoc sua thong tin'
GO
EXEC spud_PhieuXuat_sua 'PX01', 'KH01', 'NV01', '7/16/2009', '7/17/2009'
c Xoa phieu xuat
DROP PROCEDURE spud_PhieuXuat_xoa
CREATE PROCEDURE spud_PhieuXuat_xoa
@sopx CHAR(4)
AS
DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT sopx FROM PhieuXuat WHERE sopx =
@sopx)
BEGIN
SET @ErrMsg = 'So phieu xuat '+@sopx+ ' khong ton tai trong bang PhieuXuat, nen khong the xoa'
Trang 31Thuc hien xoa mau tin
DELETE PhieuXuat WHERE sopx = @sopx
PRINT 'Phieu Xuat ' +@sopx+ ' da duoc xoa'
a Them Khach hang
DROP PROCEDURE spud_KhachHang_them
CREATE PROCEDURE spud_KhachHang_them
Trang 32BEGIN
INSERT INTO KhachHang VALUES(@makh, @tenkh,
@diachikh, @dienthoaikh, @email)
PRINT 'DA THEM KHACH HANG THANH CONG'END
GO
select * from khachhang
EXEC spud_KhachHang_them 'KH01','NGUYEN HONG HOA', 'HOANG MAI, HA NOI', '0953765840', ''
EXEC spud_KhachHang_them 'KH07','NGUYEN HONG HOA', 'HOANG MAI, HA NOI', '0953765840', 'HOAHONG@TIC.VN'
GO
b Sua thong tin khach hang
DROP PROCEDURE spud_KhachHang_sua
CREATE PROCEDURE spud_KhachHang_sua
@makh CHAR(4),
@tenkh VARCHAR(50),
@diachikh VARCHAR(100),
@dienthoaikh VARCHAR(20),
Trang 33@email VARCHAR(100)
AS
DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT makh FROM KhachHang WHERE makh =
ELSE
BEGIN
UPDATE KhachHangSET tenkh = @tenkh, diachikh = @diachikh, dienthoaikh =
@dienthoaikh, email = @email
WHERE makh = @makhPRINT 'KHACH HANG DA SUA THANH CONG'END
GO
EXEC spud_KhachHang_sua 'KH07','NGUYEN LE CHI','HOANG MAI, HA NOI', '0953765840', 'HOAHONG@TIC.VN'
c Xoa khach hang
-DROP PROCEDURE spud_KhachHang_xoa
CREATE PROCEDURE spud_KhachHang_xoa
@makh CHAR(4)
AS
Trang 34DECLARE @ErrMsg VARCHAR(100)
IF NOT EXISTS (SELECT * FROM KhachHang WHERE makh =
IF EXISTS (SELECT makh FROM PhieuXuat WHERE makh = @makh)BEGIN
SET @ErrMsg = 'Ma khach hang nay ton tai trong bang PhieuXuatnen khong the xoa'
RAISERROR(@ErrMsg, 16, 1)RETURN
END
ELSE
BEGIN DELETE KhachHang WHERE makh = @makh
PRINT 'Khach hang da duoc xoa'END
GO
EXEC spud_KhachHang_xoa 'KH08'
EXEC spud_KhachHang_xoa 'KH07'
6 Bang NhanVien
a Them moi du lieu vao bang NhanVien
DROP PROC spud_NhanVien_them
CREATE PROC spud_NhanVien_them