You are on page 1of 7

Ñeà 3.

Quaûn Lyù Nhaäp/Xuaát Vaät Tö 1


ĐỀ TÀI MÔN CƠ SỞ DỮ LIỆU PHÂN TÁN
Đề 3 . QUẢN LÝ NHẬP/XUẤT VẬT TƯ
Viết chương trình việc quản lý nhập/xuất vật tư của cửa hàng.
Cho cơ sở dữ liệu QLVT, trong đó có các Table sau :
a. Table ChiNhanh:
Field Name Type Constraint
MACN nChar(10) Primary key
ChiNhanh nvarchar(100) Unique
DIACHI nvarchar(100) NOT NULL
SoDT nVarchar(15) NOT NULL

b. Table Nhanvien
Field Name Type Constraint
MANV INT Primary key
CMND NVARCHAR( Unique Key, Not NULL
20)
HO nvarchar(40) Not NULL
TEN nvarchar(10) Not NULL
DIACHI nvarchar(100)
NGAYSINH DateTime
LUONG float >=4000000
MACN nChar(10) FK
TRANGTHAIX bit Default : false
OA

c. Table Kho:
Field Name Type Constraint
MAKHO nChar(4) Primary Key
TENKHO nvarchar(30) Unique
DIACHI nvarchar(100)
MACN nChar(10) FK
Ñeà 3. Quaûn Lyù Nhaäp/Xuaát Vaät Tö 2

d. Table Vattu:
Field Name Type Constraint
MAVT nChar(4) Primary Key
TENVT nvarchar(30) Unique
DVT nvarchar(15) Đơn vị tính
SoLuongTon int >=0

c. Table DatHang:
Field Name Type Constraint
MasoDDH nChar(8) Primary Key
NGAY Date Default : ngaøy hieän haønh
GetDate()
NhaCC Nvarchar(100) Teân coâng ty, ñaïi lyù cung caáp
haøng
MANV int Foreign key
MAKHO nChar(4) FK (TRONG CSDL THẦY GỬI
KHÔNG CÓ)

d-Table CTDDH: chi tieát ñôn ñaët haøng


Field Name Type Properties
MasoDDH nChar(8) Foreign key
MAVT nChar(4) Foreign key
SOLUONG int >0
DONGIA float >0
Khoùa chính: MasoDDH +MAVT

e. Table PhieuNhap:
Field Name Type Constraint
MAPN nChar(8) Primary Key
NGAY Date Default: Getdate()
MasoDDH nchar (8) Foreign key, Unique
MANV Int Foreign key
MAKHO nChar(4) FK

f-Table CTPN: chi tieát phieáu nhaäp haøng


Field Name Type Properties
MAPN nChar(8) Foreign key
MAVT nChar(4) Foreign key
Ñeà 3. Quaûn Lyù Nhaäp/Xuaát Vaät Tö 3
SOLUONG int >0, NOT NULL
DONGIA float >=0, NOT NULL
Khóa chính: MAPN +MAVT

g. Table PhieuXuat:
Field Name Type Constraint
MAPX nChar(8) Primary Key
NGAY Date Dafault: Getdate()
HOTENKH nvarchar (100) Hoï teân khaùch haøng
MANV Int Foreign key
MAKHO nChar(4) FK

h-Table CTPX: chi tieát phieáu xuất haøng


Field Name Type Properties
MAPX nChar(8) Foreign key
MAVT nChar(4) Foreign key
SOLUONG int >0, NOT NULL
DONGIA float >=0, NOT NULL
Khóa chính: MAPX +MAVT
Khảo sát
- Công ty có 2 chi nhánh (CN1 và CN2) . Trong mỗi chi nhánh có nhiều nhân
viên, nhưng mỗi nhân viên chỉ thuộc 1 chi nhánh. Mỗi nhân viên có mã để phân
biệt các nhân viên với nhau, họ, tên, phái, ngày sinh, dịa chỉ, số điện thoại liên
lạc. Các nhân viên về sau này có khả năng sẽ được điều chuyển qua chi nhánh
khác.

- Mỗi hàng hóa có mã mặt hàng để phân biệt các mặt hàng với nhau, tên mặt
hàng, đơn vị tính. Mỗi hàng hóa thuộc 1 loại hàng, 1 loại hàng có thể có nhiều
hàng hóa.

- Mỗi chi nhánh nhập hàng bằng hình thức đặt hàng cho nhà cung cấp. Mỗi nhà
cung cấp có mã để phân biệt các nhà cung cấp với nhau, tên nhà cung cấp, dịa
chỉ, số điện thoại liên lạc. 1 nhà cung cấp có thể cung cấp hàng cho cả 2 chi
nhánh.
- Chi nhánh khi nhập hàng thì lập đơn đặt hàng cho nhà cung cấp, mỗi đơn đặt
hàng có thể có nhiều mặt hàng kèm theo số lượng đặt, đơn giá đặt; mỗi mặt
hàng có thể được đặt nhiều lần. Các đơn đặt hàng phải ghi nhận nhân viên lập.
- Chi nhánh chỉ nhập hàng khi đă có đơn đặt hàng; khi nhập sẽ có phiếu nhập.
Mỗi phiếu nhập sẽ có SoPN, Ngày lập và các mặt hàng thuộc đơn đặt hàng
tương ứng; mỗi phiếu nhập sẽ do 1 nhân viên lập, và toàn bộ mặt hàng trên
phiếu nhập sẽ chuyển hết về 1 kho.
- Mỗi chi nhánh có nhiều kho, nhưng 1 kho chỉ thuộc 1 chi nhánh.
Ñeà 3. Quaûn Lyù Nhaäp/Xuaát Vaät Tö 4
- Khi khách hàng mua hàng thì bao giờ chi nhánh cũng phải lập hóa đơn cho
khách. Mỗi hóa đơn sẽ có số hóa đơn, Ngày lập và các mặt hàng, số lượng , đơn
giá; Một hàng hóa có thể được xuất nhiều lần. Mỗi hóa đơn sẽ do 1 nhân viên
lập, và toàn bộ mặt hàng trên hóa đơn đều được xuất từ 1 kho.

- Các khách hàng có mã để phân biệt các khách hàng với nhau, tên khách hàng,
dịa chỉ, số điện thoại liên lạc. Nếu 1 khách hàng mua hàng từ cả 2 chi nhánh thì
xem như là 2 khách hàng độc lập.

Yêu cầu:
Giả sử công ty có 2 chi nhánh: chi nhánh 1 (CN1), chi nhánh 2 (CN2) .
Phân tán cơ sở dữ liệu QLVT ra làm 3 mảnh với điều kiện sau:
- QLVT được đặt trên server1: chứa thông tin của các phiếu phát sinh thuộc
chi nhánh 1.
- QLVT được đặt trên server2: chứa thông tin của các phiếu phát sinh thuộc
chi nhánh 2.
- QLVT được đặt trên server3: chứa thông tin các nhân viên, kho của cả 2 chi
nhánh 1 và 2. Server này dùng để tra cứu thông tin của nhân viên, kho của cả
2 chi nhánh

Viết chương trình tạo các Form và Report sau:

(1.1 - 1.3 - 1.4)


(1.2 - 1.5)
1. Lập các Form sau:
1.1. Nhập danh sách nhân viên : có các chức năng: Thêm, Xóa, Ghi, Undo,
Reload, Chuyển chi nhánh (giao tác) , Thoát. Nhân viên thuộc chi nhánh nào thì chi
nhánh đó nhập. Trên từng chi nhánh ta chỉ thấy được danh sách nhân viên thuộc chi
nhánh đó.
1.2. Nhập danh mục vật tư: Thêm, Xóa, Ghi, Undo, Reload , Thoát.
1.3. Nhập danh mục kho: Thêm, Xóa, Ghi, Undo, Reload , Thoát. Kho
thuộc chi nhánh nào thì chi nhánh đó nhập. Trên từng chi nhánh ta chỉ thấy được
danh sách Kho thuộc chi nhánh đó.
1.4. Đơn đặt hàng: trình bày form dưới dạng SubForm. Nhân viên thuộc chi
nhánh nào thì lập đơn đặt hàng của chi nhánh đó. Trên từng chi nhánh ta chỉ thấy
được danh sách các đơn đặt hàng của chi nhánh đó.
Nhân viên đang đăng nhập là nhân viên nhập đơn hàng.
1.5.Phiếu nhập/xuất vật tư: trình bày form dưới dạng SubForm. Nhân viên
thuộc chi nhánh nào thì nhập dữ liệu nhập/xuất của chi nhánh đó. Trên từng chi
nhánh ta chỉ thấy được danh sách các phiếu nhập/xuất của chi nhánh đó.
Phiếu nhập hàng chỉ lập khi có đơn đặt hàng, và không cho nhập quá số
lượng đã đặt trên các vật tư trong đơn đặt.

2. Phân quyền: Chương trình có 3 nhóm : Công ty , ChiNhanh, User


- Nếu login thuộc nhóm CongTy thì login đó có thể chọn bất kỳ chi nhánh nào
trong form để xem số liệu bằng cách chọn tên chi nhánh, và chỉ có các chức
năng sau:
Ñeà 3. Quaûn Lyù Nhaäp/Xuaát Vaät Tö 5

+ Chỉ có thể xem dữ liệu của phân mảnh tương ứng.


+ Xem được các báo cáo.
+ Tạo login thuộc nhóm Congty
- Nếu login thuộc nhóm ChiNhanh thì chỉ cho phép toàn quyền làm việc trên chi
nhánh đó , không được log vào chi nhánh khác ; Tạo login thuộc nhóm ChiNhanh,
User .
- Nếu login thuộc nhóm User thì chỉ được quyền cập nhật dữ liệu, không được tạo
tài khoản mới cho hệ thống.

Chương trình cho phép ta tạo các login, password cho các nhân viên và cho login
này làm việc với 1 nhóm quyền. Căn cứ vào quyền này: khi user login vào hệ thống,
ta sẽ biết người đó được quyền làm việc với mảnh phân tán nào hay trên tất cả các
phân mảnh như đã nêu ở trên.

(3.1 - 3.3 - 3.5)

(3.2 - 3.4 - 3,6)

3. Lập các báo biểu:


3.1. In danh sách nhân viên: Tùy thuộc vào quyền hạn của login mà ta cho
phép chọn chi nhánh để in theo thứ tự tăng dần tên + họ
 Nếu login thuộc nhóm Công ty thì ta cho chọn tên chi nhánh và tìm dữ liệu
trên phân mảnh tương ứng để in.
 Nếu login thuộc nhóm ChiNhánh thì ta lấy dữ liệu trên phân mảnh tương
ứng để in.
3.2. In danh mục vật tư: theo thứ tự tên vật tư tăng dần của cả công ty
3.3. In Bảng kê chi tiết số lượng – trị giá hàng nhập hoặc xuất theo từng
tháng trong 1 khoảng thời gian do người sử dụng chọn.
Nếu login thuộc nhóm ChiNhanh hoặc User thì dữ liệu in ra sẽ thuộc chi
nhánh tương ứng với nhân viên khi login vào. Nếu login vào thuộc nhóm Công ty
thì dữ liệu sẽ là dữ liệu tổng hợp (Job) của cả 2 chi nhánh. Kết xuất:

SELECT NGAY, TENVT, SOLUONG, TRIGIA = SOLUONG * DONGIA


FROM
(
(SELECT MAPN, NGAY
FROM PHIEUNHAP
WHERE NGAY BETWEEN '2023-03-05' AND '2023-06-06' )
UNION
(SELECT MAPN, NGAY
FROM LINK1.QLVT_DATHANG.DBO.PHIEUNHAP
WHERE NGAY BETWEEN '2023-03-05' AND '2023-06-06' )
) PHIEU,
(
SELECT MAVT, TENVT FROM VATTU
) VT,
(
SELECT MAPN, MAVT, SOLUONG, DONGIA FROM CTPN
UNION
SELECT MAPN, MAVT, SOLUONG, DONGIA FROM
LINK1.QLVT_DATHANG.DBO.CTPN
) CT
WHERE PHIEU.MAPN = CT.MAPN AND VT.MAVT = CT.MAVT
Ñeà 3. Quaûn Lyù Nhaäp/Xuaát Vaät Tö 6

Tháng/năm Tên vật tư Tổng số lượng Tổng trị giá


3.4. In Danh sách các đơn đặt hàng chưa có phiếu nhập. Kết xuất:

MSĐĐH Ngày lập Nhà cung cấp Họ tên nhân viên Tên vật tư Số lượng đặt Đơn giá

3.5. Báo cáo tình hình hoạt động của 1 nhân viên trong 1 khoảng thời
gian: báo cáo được nhóm theo từng tháng. Ta chọn nhân viên, nhập vào Từ ngày ,
Đến ngày. Kết xuất của báo cáo:

HOẠT ĐỘNG NHÂN VIÊN


Từ ngày : dd/mm/yyyy đến ngày dd/mm/yyyy
Họ tên nhân viên : XXXXXXXXXXXXXXXXX
Ngày lập báo cáo: dd/mm/yyyy
Ngày Số phiếu Loại Khách Tên vật Số Đơn Trị giá
phiếu hàng tư lượng giá
Tháng : 01/2023
02/01/2023 PN01 Nhập
05/01/2023 PX01 Xuất
Tổng tháng 01/2023 #,### #,##0
Tháng : 02/2023

Tổng cộng: #,##0 đồng (tiền chữ)

3.6. Lập Report tên ‘TONG HOP NHAP XUAT’ để:


- Tổng hợp số tiền Nhập và Xuất trong từng ngày
- Mỗi ngày chỉ thể hiện một dòng
- Tổng hợp trong khoảng thời gian nào
- Mỗi ngày phải cho biết tỷ lệ % so với tổng số.
- Cuối cùng phải cho biết tổng số tiền trong khoảng thời gian mà ta chỉ ra.
Mẫu in có dạng:
BẢNG TỔNG HỢP NHẬP XUẤT

TỪ dd/mm/yy ĐẾN dd/mm/yy

NGÀY NHẬP TỶ LỆ XUẤT TỶ LỆ


dd/mm/yyyy #,##0 0.00% #,##0 0.00%
dd/mm/yyyy #,##0 0.00% #,##0 0.00%
….
Ñeà 3. Quaûn Lyù Nhaäp/Xuaát Vaät Tö 7
CỘNG #,##0 #,##0
Ghi chú:
- Sinh viên tự kiểm tra các ràng buộc có thể có khi viết chương trình.
- Thực hiện các lệnh truy vấn dưới dạng Stored Procedure.

HẾT

You might also like