Phân tích các đối tượng sử dụng: a Người quản lý Mô tả Là giám đốc hoặc những người quản lý các bộ phận trong siêu thịVai trò Chịu trách nhiệm quản lý hoạt động của siêu thị hay bộ phận
Trang 1- O 0 O
-BÁO CÁO ĐỒ ÁN MÔN: CÔNG NGHỆ CLIENT – SERVER
ĐỀ TÀI:
HỆ THỐNG QUẢN LÝ BÁN HÀNG
Sinh viên thực hiện : NGUYỄN HUY LINH (TH9A)
LÊ THỊ DUYÊN (TH9B) NGUYỄN TUẤN ANH (TH9B)
Hà Nội, tháng 12 năm 2013
Trang 2BÁO CÁO CÔNG NGHỆ CLIENT – SERVER
có hiệu quả trong việc đáp ứng các nhu cầu tiêu dùng của mọi người
Với sự phát triển ngày càng rộng, yêu cầu tin học hóa các quy trình nghiệp
vụ trong siêu thị là tất yếu, nhằm mục đích làm đơn giản hóa các nghiệp vụ cũngnhư làm cho khả năng phục vụ khách hàng trở nên nhanh chóng, hiệu quả
Giới thiệu đề tài:
Chương trình Quản lý bán hàng kế thừa mô hình hoạt động của các siêu thịhiện trên thực tế Đồng thời, ứng dụng công nghệ mới vời mục đích làm chochương trình có thể đáp ứng được nhu cầu quản lý ngày càng phức tạp với khốilượng thông tin ngày càng lớn, dễ dàng trong triển khai cũng như trong ứng dụng
LỜI CẢM ƠN
Chúng em xin trân thành cảm ơn thầy giáo Nguyễn Mạnh Hùng – giảng viênmôn Công nghệ Client – Server, Học viện KTQS đã giúp đỡ chúng em nhiều kiếnthức quý giá trong quá trình thực hiện bản báo cáo này
Trang 3I KHÁI QUÁT NGHIỆP VỤ CHÍNH TRONG SIÊU THỊ:
- Có khả năng đáp ứng đầy đủ và hỗ trợ thực hiện tốt các nghiệp vụ lưu
trữ dữ liệu chính trong siêu thị
- Có khả năng tra cứu thông tin cho từng đối tượng.
2 Phân tích các đối tượng sử dụng:
a) Người quản lý
Mô tả Là giám đốc hoặc những người quản lý các bộ phận trong
siêu thịVai trò Chịu trách nhiệm quản lý hoạt động của siêu thị hay bộ
phận riêng lẻ
Quyền Sử dụng toàn bộ hoặc một phần chức năng (Bảng dữ liệu)
của hệ thốngb) Nhân viên nhập hàng
Mô tả Nhân viên làm việc ở bộ phận nhập hàng
Thực hiện nghiệp vụ nhập hàng vào kho
Vai trò Chịu trách nhiệm trong khâu nhập hàng từ nhà cung cấp,
lập phiếu nhập hàng
Quyền Sử dụng các chức năng: lập phiếu nhậ, quản lý thông tin
nhóm hàng, ngành hàng, hàng hóa và nhà cung cấp
Trang 4c) Nhân viên xuất hàng
Mô tả Nhân viên làm việc ở bộ phận xuất hàng (bầy hàng hóa
lên quầy)
Vai trò Chịu trách nhiệm trong khâu xuất hàng từ kho lên quầy,
lập phiếu xuất hàng
Quyền Sử dụng chức năng: lập phiếu xuất, xem thông tin hàng
hóa, kiểm tra hàng tồn
d) Nhân viên bán hàng
Mô tả Nhân viên thực hiện nghiệp vụ thu ngân
Vai trò Chịu trách nhiệm trong khâu thanh toán cho khách hàng.Quyền Sử dụng chức năng: lập hóa đơn, xem thông tin hàng hóa,
kiểm kê hàng tồn
e) Nhân viên tin học
Mô tả Nhân viên làm việc trong bộ phận tin học
Vai trò Chịu trách nhiệm trong việc lập báo cáo thống kê, quản
trị hệ thống
Quyền Sử dụng chức năng: lập báo cáo thống kê, xem thông tin
các phiếu nhập, xuất, phiếu kiểm kê
3 Các chức năng của hệ thống:
- Lưu trữ dữ liệu theo nghiệp vụ siêu thị.
- Xây dựng các hàm, thủ tục, trigger, các check, default, … phù hợp với
Trang 5D
Trang 62 Bảng CT_HoaDon
Column
AllowNull
TrongLuon
NoiSX Nơi sản xuất DiaChi(nvarchar(50)
Trang 7Name Null
6 Bảng PhieuNhap
Column
AllowNull
TongPhaiTr
7 Bảng CT_PhieuNhap
Column
AllowNull
TenNCC Tên nhà cung
Trang 8DiaChi Địa chỉ nhà cung
cấp
DiaChi(nvarchar(50)
Trang 99 Bảng ChucVu
Column
AllowNull
10 Bảng NhanVien
Column
AllowNull
MaQuanL
y
Mã người quản
12 Bảng PhieuXuat
Column
AllowNull
Trang 10Quan hệ giữa các bảng dữ liệu:
BanHang:
Trang 12HangHoa:
Trang 13NhapHang:
Trang 14QuanLy:
Trang 15XuatHang:
Trang 16IV MÔ TẢ CÁC THỦ TỤC, HÀM VÀ TRIGGERS:
1 Hàm tính tuổi của nhân viên
Tính tuổi cua nhân viên
CREATE FUNCTION FNC_TinhTuoi ( @ngay smalldatetime )
[1] Lấy ra năm sinh của nhân viên
[2] Thực hiện hàm với năm sinh lấy được: Hàm sẽ lấy năm hiện thời trừ
đi năm sinh của nhân viên
2 Thủ tục hiển thị thông tin cấp trên trực tiếp của một nhân viên
ALTER PROC [dbo] [ThongTin_QuanLy_TrucTiep]
[1] Lấy ra mã quản lý nhân viên đó trong bảng NhanVien
[2] Lấy ra thông tin có mã nhân viên là mã quản lý vừa lấy được trongbảng NhanVien
3 Thủ tục lấy ra tất cả các nhân viên cấp trên của một nhân viên nào
Trang 17SELECT MaQuanLy FROM QuanLy NhanVien WHERE MaNV @MaNV UNION ALL First recursive member returns male ancestors of the previous generation.
SELECT NhanVien MaQuanLy FROM Generation , QuanLy NhanVien WHERE Generation MaNV NhanVien MaNV
)
SELECT NhanVien MaNV , TenNV , MaQuanLy FROM Generation , QuanLy NhanVien WHERE Generation MaNV NhanVien MaNV ;
[1] Dựa vào MaNV, lấy ra MaQuanLy của nhân viên đó
[2] Dựa vào MaQuanLy, lấy ra trong bảng NhanVien MaQuanLy củanhân viên có MaNV bằng MaQuanLy vừa lấy ra
[3] Nối các kết quả với nhau, ta được tất cả nhân viên cấp trên của nhânviên ban đầu
4 Trigger kiểm tra để không có nhân viên nào tự quản lý chính mình
CREATE TRIGGER QuanLy NhanVien_Khac_QuanLy
RETURN END
V MÔ TẢ CÁC VIEWS THEO MẪU:
1 Kiểm tra bảng CT_HoaDon xem những mặt hàng nào bán chạy
SELECT MaHH , SUM( SoLuong )
FROM BanHang CT_HoaDon
GROUP BY MaHH
Trang 18HAVING SUM( SoLuong )> 200
VI QUẢN TRỊ CSDL:
- Tạo thêm các login
EXEC sp_addlogin 'ten_login', 'password', ['du_lieu']
CREATE LOGIN S_GiamDoc WITH PASSWORD 'giamdoc'
CREATE LOGIN S_NVQLBanHang WITH PASSWORD 'nvqlbanhang'
CREATE LOGIN S_NVQLNhapHang WITH PASSWORD 'nvqlnhaphang'
CREATE LOGIN S_NVQLXuatHang WITH PASSWORD 'nvqlxuathang'
CREATE LOGIN S_NVBanHang WITH PASSWORD 'nvbanhang'
CREATE LOGIN S_NVNhapHang WITH PASSWORD 'nvnhaphang'
CREATE LOGIN S_NVXuatHang WITH PASSWORD 'nvxuathang'
CREATE LOGIN S_KhachHang WITH PASSWORD 'khachhang'
- Xóa login:
EXEC sp_droplogin 'ten_login'
drop login 'ten_login'
- Thay đổi người đăng nhập:
alter login {[enable | disable] with {password = '' | default_database = }} - Tạo ít nhâU t 03 database roles: dbr_GiamDoc, dbr_NVQLBanHang,
dbr_NVQLNhapHang, dbr_NVQLXuatHang, dbr_NVBanHang, dbr_NVXuatHang,
dbr_NVNhapHang, dbr_KhachHang
- Tạo ít nhâU t 06 database users:
CREATE USER US_GiamDoc FOR LOGIN S_GiamDoc
CREATE USER US_NVQLBanHang FOR LOGIN S_NVQLBanHang
CREATE USER US_NVQLNhapHang FOR LOGIN S_NVQLNhapHang
CREATE USER US_NVQLXuatHang FOR LOGIN S_NVQLXuatHang
CREATE USER US_NVBanHang FOR LOGIN S_NVBanHang
CREATE USER US_NhapHang FOR LOGIN S_NVNhapHang
CREATE USER US_XuatHang FOR LOGIN S_NVXuatHang
CREATE USER US_KhachHang FOR LOGIN S_KhachHang
- Chỉ định nhóm cho các users:
EXEC sp_addrolemember 'db_owner' , 'dbr_GiamDoc'
- Phân quyêZ n ở mức cột, bang, schema:
CâU p quyêZ n đổU i với mổ_ i schema:
GRANT permission [ , n ] ON SCHEMA :: schema_name
WITH GRANT OPTION
Phân quyêZ n ở mức bang:
GRANT SELECT , INSERT , UPDATE , DELETE ON BanHang CT_HoaDon TO US_NVQLBanHang DENY SELECT ON BanHang.CT_HoaDon TO US_NVQLBanHang
GRANT SELECT , INSERT , UPDATE , DELETE ON NhapHang CT_PhieuNhap TO
US_NVQLNhapHang
Trang 19DENY SELECT ON NhapHang.CT_PhieuNhap TO US_NVQLNhapHang
GRANT SELECT , INSERT , UPDATE , DELETE ON XuatHang CT_PhieuXuat TO
REVOKE GRANT OPTION FOR SELECT ON BanHang.CT_HoaDon TO US_KhachHang CASCADE
VII MÃ NGUỒN MỘT SỐ THỦ TỤC, HÀM, TRIGGER
Phai có trigger theo dõi các thao tác trên CSDL
- Trigger Kiêm tra trong bang Nhân viên sao cho khổng có nhân viên nào làm Quan lý cho chính mình
CREATE TRIGGER QuanLy NhanVien_Khac_QuanLy
- Trigger Kiêm tra Chỉ có một Quan lý cao nhâU t
CREATE TRIGGER QuanLy DuyNhat_QuanLy_CaoNhat
ON QuanLy NhanVien
FOR INSERT , UPDATE
AS
IF EXISTS SELECT FROM inserted WHERE MaQuanLy IS NULL)
AND (( SELECT count (*) FROM QuanLy NhanVien WHERE NhanVien MaQuanLy IS NULL) >= 2 )
DECLARE @x CHAR ( ), @y CHAR ( ), @xx CHAR ( )
Xac dinh ma cua nhan vien Emp_ID co thay doi thu truong
SELECT @xx inserted MaNV FROM inserted
Luu ma nhan vien vua bi sua doi MaNV
Trang 20SELECT @x @xx
SELECT @y = '*'
Tìm người lên trên
WHILE @y IS NOT NULL
BEGIN
SELECT @y MaNV FROM Nhanvien WHERE MaNV @x
IF @xx @y BEGIN
ROLLBACK TRAN
RAISERROR ( 'Lổ_ i: Nhân viên là Quan lý cua chính mình!' , 16 , 10 )
RETURN END
ELSE
SET @x @y END
END
GO
- Trigger kiêm tra câU p trên có tổZ n tại hay khổng, nêU u khổng tổZ n tại thì khổng cho chèn
CREATE TRIGGER TonTai_CapTren ON QuanLy NhanVien
FOR INSERT , UPDATE
AS
IF NOT EXISTS( SELECT FROM QuanLy NhanVien , inserted
WHERE QuanLy NhanVien MaNV inserted MaQuanLy OR inserted MaQuanLy IS NULL)
- Trigger Xóa hóa đởn bán hàng
Xóa trong bang CT_HoaDon trước (vị trí có MaHD bị xóa trong bang deleted) Xóa trong bang HoaDonBanHang (vị trí có MaHD bị xóa trong bang deleted) CREATE TRIGGER Xoa_HoaDonBanHang ON BanHang HoaDonBanHang
DELETE FROM BanHang HoaDonBanHang WHERE BanHang HoaDonBanHang MaHD in
( SELECT MaHD FROM deleted )
END
- Trigger Xóa PhiêU u nhập
Xóa trong bang CT_PhieuNhap trước (vị trí có MaPN bị xóa trong bang deleted)
Xóa trong bang PhieuNhap (vị trí có MaPN bị xóa trong bang deleted)
CREATE TRIGGER Xoa_PhieuNhap ON NhapHang PhieuNhap
FOR DELETE
AS
BEGIN
DELETE FROM NhapHang CT_PhieuNhap WHERE NhapHang CT_PhieuNhap MaPN in
( SELECT MaPN FROM deleted )
Trang 21DELETE FROM NhapHang PhieuNhap WHERE NhapHang PhieuNhap MaPN in SELECT MaPN FROM deleted )
END
- Trigger Xóa PhiêU u xuâU t
Xóa trong bang CT_PhieuXuat trước (vị trí có MaPX bị xóa trong bang deleted)
Xóa trong bang PhieuXuat (vị trí có MaPX bị xóa trong bang deleted)
CREATE TRIGGER Xoa_PhieuXuat ON XuatHang PhieuXuat
FOR DELETE
AS
BEGIN
DELETE FROM XuatHang CT_PhieuXuat WHERE XuatHang CT_PhieuXuat MaPX in
( SELECT MaPX FROM deleted )
DELETE FROM XuatHang PhieuXuat WHERE XuatHang PhieuXuat MaPX in SELECT MaPX FROM deleted )
END
- Tìm tuổi cua nhân viên
CREATE FUNCTION FNC_TinhTuoi ( @ngay smalldatetime )
RETURNS int
AS
BEGIN
DECLARE @KetQua int
SET @KetQua YEAR ( GETDATE ()) YEAR ( @ngay )