V.1. Xác định các thực thể của hệ thống và các thuộc tính của chúngV.1.1. Khách Hàng V.1.1. Khách Hàng
Mã KH : 1 ký tự đầu dùng để phân biệt nhà cung cấp và khách mua hàng (C hay K), 4 ký tự sau là số thứ tự khách hàng. Họ KH : Họ khách hàng, độ dài ≤ 25 ký tự. Nhà CC Tìm kiếm phiếu nhập hàng Tìm kiếm phiếu xuất hàng Tìm kiếm phiếu TT Tìm kiếm phiếu TT
Phiếu nhập xuất Phiếu thanh toán Y/ c tìm kiếm PN
Y/C tìm kiếm PX
Y/c tìm kiếmPTT
Khách hàng
Tên KH : Tên khách hàng, độ dài ≤ 15 ký tự. Ví dụ:
MaKH = K0001 có HoKH & TenKH = Lê Văn Nam. MaKH = K0002 có HoKH & TenKH = Hồ Thị Phượng. MaKH = C0001 có HoKH & TenKH = Trần Thị Mỹ Hoa.
Ý nghĩa: Mỗi khách hàng có một mã riêng để phân biệt giữa các khách hàng với nhau.
V.1.2. Mặt Hàng
MaHang : 1 ký tự đầu tiên là mã nhóm, 3 ký tự tiếp theo là số thứ tự mặt hàng trong nhóm.
TenHang : Tên mặt hàng.
SLTonTT : Số lượng tồn tối thiểu ứng với một mặt hàng trong kho. Nếu số lượng mặt hàng đó tồn trong kho dưới mức tối thiểu thì phải nhập thêm vào.
SLTonTD : Số lượng tồn tối đa ứng với một mặt hàng ở trong kho. Nếu nhập thêm số lượng mặt hàng nào đó thì tổng số lượng trong kho không được vượt quá số lượng tồn tối đa của mặt hàng đó.
MaDVT : Mã đơn vị tính của đơn vị tính. MaHSX : Mã hãng sản xuất của hãng sản xuất. MaNhom : Mã nhóm của nhóm hàng.
Ví dụ:
MaHang = A001 có TenHang = Acer3250. MaHang = H001 có TenHang = HPV3200. MaHang = T001 có TenHang = ToShiBa3700.
Ý nghĩa: Mỗi mặt hàng có một mã riêng để phân biệt giữa các mặt hàng với nhau.
V.1.3. Quản Lý Kho
MaKho : 4 ký tự đầu là các ký tự viết tắt tên đường, 1 ký tự sau là số thứ tự kho trên đường đó.
TenKho : Tên kho hàng. Ví dụ:
MaKho = NTMK1 có TenKho = Kho LapTop. MaKho = NTMK2 có TenKho = Kho Printer.
Ý nghĩa: Mỗi kho có một mã riêng để phân biệt giữa các kho với nhau.
V.1.4. Quản Lý Đơn Đặt Hàng
MaDDH : 1 ký tự đầu dùng để phân biệt đơn đặt mua hàng của khách hàng hay đơn công ty gửi nhà cung cấp (M hay B), 4 ký tự sau là số thứ tự đơn đặt hàng.
Ý nghĩa: Mỗi đơn đặt hàng có một tập hợp mã riêng để phân biệt giữa các đơn đặt hàng với nhau.
V.1.5. Dòng Đơn Đặt Hàng
Chi tiết hàng được đặt Số lượng, đơn giá ...
V.1.6. Quản lý phiếu nhập xuất hàng <NXHANG>
MaPXH : 1 ký tự đầu dùng để phân biệt phiếu nhập hay phiếu xuất hàng (N hay X), 4 ký tự sau là thứ tự phiếu xuất hay nhập hàng.
Ý nghĩa: Mỗi đơn đặt hàng có một tập hợp mã riêng để phân biệt giữa các đơn đặt hàng với nhau.
V.1.7. Quản lý dòng phiếu nhập xuất hàng <DONGNXHANG>
Chi tiết hàng được nhập Số lượng, đơn giá ...
V.1.8. Quản lý phiếu thanh toán <THANHTOAN>
MaPTT : 1 ký tự đầu dùng để phân biệt phiếu thu hay phiếu chi (T hay C), 4 ký tự sau là số thứ tự phiếu thanh toán.
Ý nghĩa : Mỗi phiếu thanh toán có một tập hợp mã riêng để phân biệt giữa các phiếu thanh toán với nhau.
V.1.9. Quản lý đường <DUONG>
MaDuong : Viết tắt các ký tự đầu của tên đường. TenDuong : Tên đường.
Ví dụ:
MaDuong = MHD có TenDuong = Mai Hắc Đế. MaDuong = TH có TenDuong= Thái Hà.
Ý nghĩa: Mỗi tên đường có một mã riêng để phân biệt giữa các đường với nhau.
V.1.10. Quản lý ngân hàng <NGANHANG>
MaNH : Viết tắt các ký tự đầu của tên ngân hàng. TenNH : Tên ngân hàng.
Ví dụ:
MaNH = NHNH có TenNH = Ngân hàng nông nghiệp. MaNH = NHNT có TenNH = Ngân hàng ngoại thương.
Ý nghĩa: Mỗi ngân hàng có một mã riêng để phân biệt giữa các ngân hàng với nhau.
V.1.11. Quản lý huyện <HUYEN>
MaHuyen : 4 ký tự đầu là mã nước và mã tỉnh, hai ký tự sau là số thứ tự của huyện trong tỉnh. Mỗi tỉnh không quá 100 huyện nên dùng 2 ký tự.
TenHuyen : Bắt đầu là Tp cho thành phố trực thuộc Tỉnh, Q : cho quận, H cho huyện, TX cho thị xã và tiếp theo là tên thành phố, quận, huyện, thị xã.
Ví dụ:
MaHuyen = VN0101 có TenHuyen = Q. Ba Đình. MaHuyen = VN0201 có TenHuyen =Tp. Hạ Long.
Ý nghĩa: Mỗi huyện được phân biệt bởi một mã huyện khác nhau ở trong một Tỉnh cũng như phân biệt với các huyện khác ở các tỉnh khác, vì trong mã huyện ta có kèm theo 2 kí tự của mã tỉnh nên có thể phân biệt được rằng ta đang biễu diễn mã của các huyện ở trong tỉnh nào.
V.1.12. Quản lý tỉnh <TINH>
MaTinh : Số thứ tự của tỉnh trong nước. Việt Nam có dưới 100 tỉnh, nên ta chọn 2 ký tự để đánh số thứ tự của tỉnh.
2 Ký tự đầu là mã nước.
2 Ký tự tiếp theo là số thứ tự tỉnh trong nước.
TênTinh: Bắt đầu là Tp cho thành phố trực thuộc trung ương, T cho tỉnh và tiếp theo là tên tỉnh hay thành phố.
Ví dụ:
MaTinh = VN04 có TenTinh = Tp.Hà Nội. MaTinh = VN02 có TenTinh =T.Quảng Ninh.
Ý nghĩa: Mỗi một tỉnh có một mã số riêng để phân biệt các tỉnh với nhau
V.1.13. Quản lý nước <NUOC>
MaNuoc : Chữ viết tắt của một tên nước trên thế giới. TenNuoc : Tên của một nước.
Ví dụ:
MaNuoc = VN có TenNuoc = Việt Nam MaNuoc = TQ có TenNuoc = Trung Quốc
MaNuoc = NB có TenNuoc = Nhật Bản
Ý nghĩa: Mỗi nước có một mã số riêng để phân biệt các nước với nhau.
V.1.14. Quản lý hãng sản xuất <HANGSX>
MaHSX : Hai ký tự đầu là mã nước, hai ký tự sau là số thứ tự hãng sản xuất trong nước.
TenHSX : Tên của hãng sản xuất.
MaNuoc : Mã nước của nước có hãng sản xuất đó. Ví dụ:
MaHSX = TQ01 có TenHSX = HP-COMPACT MaHSX = NB01 có TenHSX = SONY.
Ý nghĩa: Mỗi hãng sản xuất có một mã riêng để phân biệt giữa các hãng sản xuất với nhau.
V.1.15. Quản lý đơn vị tính <DONVITINH>
MaDVT: Viết tắt ký tự đầu của tên đơn vị tính. TenDVT : Tên đơn vị tính.
Ví dụ :
MaDVT = C có TenDVT = Chiếc. MaDVT = T có TenDVT = Thùng. V.1.16. Quản lý nhóm hàng <NHOM>
MaNhom : Dùng một chữ cái để ký hiệu nhóm. TenNhom : Tên nhóm hàng.
Ví dụ:
MaNhom = L có TenNhom = Nhóm hàng LapTop.
MaNhom = P có TenNhom = Nhóm hàng Projector . MaNhom = I có TenNhom = Nhóm hàng Printer.
Ý nghĩa: Mỗi nhóm hàng có một mã riêng để phân biệt giữa các nhóm với nhau
V.2. Xây dựng mô hình thực thể liên kết
KHÁCH HÀNG Mã KH Họ KH Tên KH Tên giao dịch Số nhà KH DT khách hàng Fax KH Tài khoản ST nợ có thể Mã huyện Mã đường Mã NH HUYỆN Mã huyện Tên huyện Mã tỉnh ĐƯỜNG Mã đường Tên đường KHO Mã kho Tên kho DT kho Fax kho Số nhà kho Thủ kho Mã đường TỈNH Mã tỉnh Tên tỉnh Mã nước NƯỚC Mã nước Tên nước HÃNG SX Mã HSX Tên HSX Mã nước DV TÍNH Mã DVT Tên DVT MẶT HÀNG Mã hàng Tên hàng SL tồn TT SL tồn TD Mã HSX Mã DVT Mã nhóm NHÓM Mã nhóm Tên nhóm NGÂN HÀNG Mã NH Tên NH ĐƠNDHÀNG Mã DDH Mã KH Ngày DH Hạn ngày giao DÒNGĐƠNDH Mã DDH Mã hàng Số lượng DH Đơn giá DH NX HÀNG Mã PNXH Mã DDH Mã kho Ngày NXH Ngày HTT Ngày lập PNX THANH TOAN Mã PTT Mã PNXH Ngày TT Số tiền DÒNGNX HÀNG Mã PNXH Mã hàng Số lượng NXH Đơn giá NXH
CHƯƠNG IV XÂY DỰNG CHƯƠNG TRÌNH I. Phần dữ liệu
Như đã trình bày trong chương III, phần phân tích và thiết kế hệ thống. Ta tổ chức dữ liệu thành 16 bảng dữ liệu như sau.
Hình : Mô hình vật lý dữ liệu
II. MÔ HÌNH TỔ CHỨC DỮ LIỆU
Mô hình này chính là lược đồ cơ sở dữ liệu của hệ thống. Đây là bước trung gian chuyển đổi giữa mô hình thực thể (gần với người sử dụng) và mô hình vật lý dữ liệu (mô hình trong máy tính), chuẩn bị cho việc cài đặt hệ thống.
II.1. THIẾT KẾ CƠ SỞ DỮ LIỆU
II.1.1. Khách Hàng
KHACHHANG (Dùng cho cả nhà cung cấp và khách mua hàng)
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaKH nvarchar PK Mã KH
2 HoKH nvarchar Họ KH
3 TenKH nvarchar Tên KH
4 TenGiaoDich nvarchar Tên giao dịch
5 SoNhaKH nvarchar Số nhà KH
6 DTKhachHang nvarchar DT khách hàng
7 FaxKH nvarchar Fax KH
8 TaiKhoan nvarchar Tài khoản
9 STNoCoThe nvarchar ST nợ có thể
10 MaDuong nvarchar FK Mã huyện
11 MaHuyen nvarchar FK Mã đường
12 MaNH nvarchar FK Mã NH
II.1.2. Mặt Hàng
Mặt hàng <MATHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaHang nvarchar PK Mã hàng
2 TenHang nvarchar Tên hàng
3 SLTonTT Int SL tồn TT
4 SLTonTD Int SL tồn TD
5 MaDVT nvarchar v Mã HSX
6 MaHSX nvarchar FK Mã DVT
7 MaNhom nvarchar FK Mã nhóm
II.1.3. Quản Lý Kho Quản lý kho <KHO>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaKho nvarchar PK Mã kho
2 TenKho nvarchar Tên kho
3 DTKho nvarchar DT kho
4 FaxKho nvarchar Fax kho
5 SoNhaKho Int Số nhà kho
6 ThuKho nvarchar Thủ kho
7 MaDuong nvarchar FK Mã đường
II.1.4. Quản Lý Đơn Đặt Hàng
Quản lý đơn đặt hàng <DONDHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDDH nvarchar PK Mã DDH
2 NgayDH datetime Mã KH
3 HanNgaygiao Nvarchar Ngày DH
4 MaKH Nvarchar FK Hạn ngày giao
VI.1.5. Dòng Đơn Đặt Hàng
Dòng đơn đặt hàng <DONGDONDH>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDDH Nvarchar PK Mã DDH
2 MaHang Nvarchar Mã hàng
3 SoLuongDH Int Số lượng DH
4 DonGiaDH Int Đơn giá DH
II.1.6.
Quản lý phiếu nhập xuất hàng <NXHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaPNXH nvarchar PK Mà PNXH
2 MaDDH nvarchar FK Mã DDH
3 MaKho nvarchar FK Mã kho
4 NgayNXH datetime Ngày NXH
5 NgayHTT datetime Ngày HTT
6 NgayLapPNX datetime Ngày lập PNX
II.1.7.
Quản lý dòng phiếu nhập xuất hàng <DONGNXHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaPNXH nvarchar PK Mà PNXH
2 MaHang nvarchar Mã hàng
3 SoLuongNXH Int Số lượng NXH
4 DonGiaNXH Float Đơn giá NXH
II.1.8.
Quản lý phiếu thanh toán <THANHTOAN>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaPTT nvarchar PK Mã PTT
2 MaPNXH nvarchar Mã PNXH
3 NgayTT Datetime Ngày TT
4 SoTien Float Số tiền
II.1.9.
Quản lý đường <DUONG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDuong Nvarchar PK Mã đường
2 TenDuong Nvarchar Tên đường
II.1.10.
Quản lý ngân hàng <NGANHANG>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaNH Nvarchar PK Mã NH
2 TenNH Nvarchar Tên NH
II.1.11.
Quản lý huyện <HUYEN>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaHuyen Nvarchar PK Mã huyện
2 TenHuyen Nvarchar Tên huyện
3 MaTinh Nvarchar FK Mã tỉnh
II.1.12.
Quản lý tỉnh <TINH>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaTinh nvarchar PK Mã tỉnh
2 TenTinh nvarchar Tên tỉnh
3 MaNuoc nvarchar FK Mã nước
II.1.13.
Quản lý nước <NUOC>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaNuoc nvarchar PK Mã nước
2 TenNuoc nvarchar Tên nước
II.1.14.
Quản lý hãng sản xuất <HANGSX>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaHSX nvarchar PK Mã HSX
2 TenHSX nvarchar Tên HSX
3 MaNuoc nvarchar FK Mã nước
II.1.15.
Quản lý đơn vị tính <DONVITINH>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaDVT nvarchar PK Mã DVT
2 TenDVT nvarchar Tên DVT
II.1.16.
Quản lý nhóm hàng <NHOM>
STT Tên trường Kiểu dữ liệu Khóa Diễn giải
1 MaNhom nvarchar PK Mã nhóm
2 TenNhom nvarchar Tên nhóm
III. Một số giao diện chính :
III.1. Hình ảnh Form Đăng nhập hệ thống
III.2. Hình ảnh Form chính của chương trình:
III.3. Hình ảnh Form cập nhật hàng hóa :
III.4. Hình ảnh Form cập nhật khách hàng
III.5. Hình ảnh Form Đơn đặt hàng
III.6. Hình ảnh Form cập nhật kho
III.7. Hình ảnh Form Phiếu nhập hàng
III.8. Hình ảnh Form Phiếu chi
III.9. Hình ảnh Form Phiếu xuất
III.10. Hình ảnh Form Phiếu thu
III.11. Hình ảnh Form Thống kê báo cáo theo khoảng thời gian
III.12. Hình ảnh Báo cáo Phiếu đặt hàng
III.13. Hình ảnh Báo cáo phiếu nhập kho
III.14. Hình ảnh Báo cáo phiếu xuất kho
III.15. Hình ảnh Báo cáo phiếu thu
III.16. Hình ảnh Báo cáo phiếu chi
IV. Một số mô đun chính : IV.1. Mô đun kết nối CSDL :
Public Function Ketnoi() As Boolean On Error Resume Next
con.ConnectionTimeout = 5
'su dung sqloledb de ket noi toi sqlserver ' phuong thuc chuoi ket noi
con.ConnectionString = "PROVIDER=SQLOLEDB.1;server =(local)" & ";Database=dulieu1" & ";Trusted_Connection=yes"
'con.Properties("Prompt") = adPromptComplete con.Open
End Function
IV.2. Mô đun kiểm tra ngày tháng nhập vào :
' Ham kiem tra ngay nhap vao
Public Function checkdate(strdate As String) As String Dim temp As Integer
Dim strtemp As String temp = 3
If IsNumeric(Left(strdate, 1)) Then ' Neu ky tu dau la so thi
If IsNumeric(Mid(strdate, 2, 1)) Then ' Neu ky tu thu hai la so thi If Left(strdate, 2) <= 31 Then ' Neu gia tri 2 ky tu
' <=31 thi kiem tra dau "/" mask1:
If Mid(strdate, temp, 1) = "/" Then
If IsNumeric(Mid(strdate, temp + 1, 1)) Then If IsNumeric(Mid(strdate, temp + 2, 1)) Then If Mid(strdate, temp + 1, 2) <= 12 Then
If Mid(strdate, temp + 3, 1) = "/" Then
strtemp = Left(strdate, temp + 3) ' Cat bo 6 ky tu dau If IsDate(strdate) Then ' Chuyen phan con lai th nam checkdate = strtemp & Format(strdate, "yyyy") Else GoTo msgdate End If End If Else GoTo msgdate End If Else
If Mid(strdate, temp + 2, 1) = "/" Then strtemp = Left(strdate, temp + 2) If IsDate(strdate) Then
checkdate = strtemp & Format(strdate, "yyyy") Else GoTo msgdate End If End If End If Else GoTo msgdate End If Else GoTo msgdate End If Else GoTo msgdate End If Else
If Mid(strdate, 2, 1) = "/" Then temp = 2 GoTo mask1 Else GoTo msgdate End If End If Else msgdate: checkdate = "1" End If End Function
IV.3. Mô đun lưu dữ liệu xuất hàng:
Public Sub Luudl()
On Error GoTo error1
Dim rs As New ADODB.Recordset Dim cmd As New ADODB.Command Dim str As String
If Trim(txtmapnx) = "" Or Trim(txtngaylappnx) = "" Or Trim(Combomaddh.Text) = "" Or Trim(txtngaynx) = "" Or Trim(txtngayhtt) = "" Or Trim(Combomahang.Text) = "" Or Trim(txtsoluongnx) = "" Or Trim(txtdongianx) = "" Then
MsgBox "Chu y: Phai nhap day du thong tin truoc khi luu!", vbOKOnly + vbExclamation, "Thong bao"
txtmapnx.SetFocus Exit Sub
End If
'Neu kiem tra ma khach hang co bat dau bang chu 'K' hay khong
If Left(Trim(txtmapnx), 1) <> "X" Then
MsgBox "Chu y: Ma phieu xuat hang phai bat dau boi 'X ...' !", vbOKOnly + vbExclamation, "Thong bao"
txtmapnx.SetFocus Exit Sub
End If
'Tim xem da ton tai Maduong nay trong Table duong hay chua? Set cmd.ActiveConnection = con
str = "Select NXHANG.mapnxh, NXHANG.maddh, NXHANG.makho, NXHANG.ngaynxh, NXHANG.ngayhtt, NXHANG.ngaylappnx from NXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = True Then 'Neu chua ton tai
Set rs = Nothing ' Dong record lai toithieu = 0 'Xoa gia tri ban dau toida = 0 'Xoa gia tri ban dau Set cmd.ActiveConnection = con
str = "select MATHANG.mahang, MATHANG.sltontt, MATHANG.sltontd from MATHANG where MATHANG.mahang ='" & Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = False Then ' Neu da ton tai, chac chan co
toithieu = rs!sltontt toida = rs!sltontd Set rs = Nothing End If
Set cmd.ActiveConnection = con
str = "select CTMATHANG.mahang, CTMATHANG.soluongton from CTMATHANG where CTMATHANG.mahang ='" & Trim(Left(Combomahang.Text, 4)) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = False Then ' Neu da ton tai
sltontam = rs!soluongton - Val(txtsoluongnx) If sltontam < toithieu Then
MsgBox "So luong hang ton duoi muc toi thieu. Can phai nhap them truoc da.", vbOKOnly + vbExclamation, "Thong bao"
txtsoluongnx.SetFocus Me.MousePointer = 0 Set rs = Nothing Exit Sub
Else ' Neu khong duoi muc ton toi thieu, cap nhat SL
Set rs = Nothing
Set cmd.ActiveConnection = con 'Mo lai de luu
str = "Select NXHANG.mapnxh, NXHANG.maddh, NXHANG.makho, NXHANG.ngaynxh, NXHANG.ngayhtt, NXHANG.ngaylappnx from NXHANG where mapnxh like 'X%' and mapnxh = '" & Trim(txtmapnx) & "'"
rs.Open str, con, adOpenKeyset, adLockPessimistic, adCmdText If rs.EOF = True Then 'Neu chua ton tai, chac chan chua co rs.AddNew rs!mapnxh = Trim(txtmapnx) rs!ngaylappnx = Trim(txtngaylappnx) rs!maddh = Trim(Left(Combomaddh.Text, 5)) rs!makho = Trim(Left(Combomakho.Text, 5)) rs!ngaynxh = Trim(txtngaynx) rs!ngayhtt = Trim(txtngayhtt) rs.Update
Set rs = Nothing ' Dong record lai End If
Set cmd.ActiveConnection = con
str = "Select DONGNXHANG.mapnxh, DONGNXHANG.mahang, DONGNXHANG.soluongnxh, DONGNXHANG.dongianxh from DONGNXHANG