II. Phân tích và thiết kế hệ thống về mặt dữ liệu
2. Quy tắc đặt tên bảng tên trường
* Thiết kế các bảng và xác định các mối quan hệ giữa các bảng
Bảng là đối tượng đầu tiên cần phải tạo trước khi tạo các đối tượng khác do vậy việc thiết kế các bảng trong cơ sở dữ liệu phải bảo đảm một số nguyên tắc nhất định để cơ sở dữ liệu có tính hợp lý trong lưu trữ và xử lý về sau.
* Một số quy tắc và xây dựng cơ sở dữ liệu
+ Mỗi trường trong bảng phải mô tả một loại thông tin duy nhất
+ Mỗi bảng phải có một số trường là khoá nhờ đó mà không có các bảng ghi trùng nhau
+ Các trường trong bảng phải đầy đủ và liên quan đến khoá cơ bản hay gọi là liên quan đến chủ thể của bảng (Đều gọi là phụ thuộc hàm)
Theo quy tắc trên phải đạt hai yêu cầu:
- Yêu cầu thứ nhất là phải đầy đủ các trường
- Yêu cầu thứ hai là các trường đó phải liên quan đến các khoá cơ bản
+ Có thể thay đổi một trường bất kỳ (Trừ các khoá cơ bản) mà không ảnh hưởng đến các trường
Sau khi thiết kế các bảng chúng ta chỉ có cấu trúc các bảng chưa có các thông tin quan hệ giữa các bảng với nhau. Do đó việc thiết lập quan hệ giữa các bảng sẽ giúp nhau Microsoft Access quản lý các dữ liệu được hợp lý hơn và đồng thời thông qua các mối quan hệ chúng ta có thể trao đổi qua lại giữa các thông tin trong các bảng có quan hệ.
Nếu ta thiết kế tốt thì các bảng sẽ có mối quan hệ, nhờ mối quan hệ đó mà ta lần ra kết quả khi có yêu cầu
+ Quan hệ 1-n: Là quan hệ mỗi bản ghi bất kỳ trong bảng thứ nhất có quan hệ với nhiều bảng ghi trong bảng thứ hai
+ Quan hệ 1-1: Là quan hệ mỗi bảng ghi bất kỳ trong bảng thứ nhất có quan hệ với một bảng ghi trong bảng thứ hai
3. Các bảng cơ sở dữ liệu
* Danh mục đơn đặt hàng
Tên trường Kiểu dữ liệu Độ rộng Mô tả
So HDDH Text 7 Số hiệu đơn đặt hàng
NgayDH Date Ngày lập đơn đặt hàng
Nguoilap Text 20 Người lập đơn đặt hàng
* Bảng chi tiết đơn đặt hàng
Tên trường Kiểu dữ liệu Độ rộng Mô tả
SoHDDH Text 7 Số hiệu đơn đặt hàng
TTDDH Number Thứ tự dòng đơn hàng
TenSP Text 20 Tên sản phẩm
Soluong Number Số lượng
MaSP Text 10 Mã sản phẩm
* Danh mục nhà cung cấp
Tên trường Kiểu dữ liệu Độ rộng Mô tả
Ma NCC Text 15 Mã nhà cung cấp
Ten NCC Text 20 Tên nhà cung cấp
Dienthoai Number 11 Điện thoại nhà cung cấp
DiachiNCC Text 30 Địa Địa chỉ nhà cung cấp
* Danh mục phiếu nhập kho
Tên trường Kiểu dữ liệu Độ rộng Mô tả
SoPN Text 7 Số phiếu nhập
NgayN Date Ngày nhập kho
TenNCC Text 20 tên nhà cung cấp
* Bảng chi tiết phiếu nhập kho
Tên trường Kiểu dữ liệu Độ rộng Mô tả
SoPn Text 7 Số phiếu nhập
TTDPN Number Thứ tự dòng phiếu nhập
Soluongnhap Number Số lượng nhập
GiaV Number Giá vốn
* Bảng khách hàng
* Bảng sản phẩm
Tên trường Kiểu dữ liệu Độ rộng Mô tả
MaH Text 10 Mã hàng
TenH Text 20 Tên hàng
DVT Text 10 Đơn vị tính
SL Number Số luợng
* Bảng hoá đơn bán hàng
Tên trường Kiểu dữ liệu Độ rộng Mô tả
MaHDBH Text 10 Mã hoá đơn bán hàng
NgayHD Date 10 Ngày lập hoá đơn bán hàng
Nguoilap Text 25 Người lập đơn bán hàng
* bảng chi tiết hoá đơn bán hàng
Tên trường Kiểu dữ liệu Độ rộng Mô tả
MaHDBH Text 10 Mã hoá đơn bán hàng
MaCTHDBH Text 10 Mã chi tiết hoá đown bán hàng
TenSP Text 20 Tên sản phẩm
SL Number 30 Số luợng
DG Number 30 Đơn giá bán
TT Number 30 Tổng tiền
Tên trường Kiểu dữ liệu Độ rộng Mô tả
MaKH Text 15 Mã khách hàng
TenKH Text 20 Tên khách hàng
Diachi Text 30 Địa chỉ
4. Mô hình thực thể liên kết
5. Mô hình cơ sở dữ liệu quan hệ
kho Khách hàng Phiếu xuất Đơn đặt hàng Hàng hoá Hoá đơn Phiếu nhập Khách hàng
Trên đây là mô hình quan hệ Relationships của cơ sở dữ liệu “ QLBH.mdb “. Nhìn vào mô hình ta thấy tất cả các bảng đều thể hiện một mối quan hệ duy nhất đó là quan hệ một nhiều (1 - ∞ ) . Là mối quan hệ phổ biến nhất trong cơ sở dữ liệu
Trong quan hệ một nhiều thì một bản ghi trong bảng A sẽ có thể có nhiều bản ghi tương ứng trong bản B, nhưng ngược lại một bản ghi trong bảng B có duy nhất một bản ghi tương ứng trong bảng A . Cụ thể như trong mô hình trên
* Giải thích:
- Bảng hàng hoá với bảng chi tiết đơn đặt hàng : một hàng hoá thì có nhiều chi tiết đơn đặt hàng, nhưng một chi tiết đơn đặt hàng chỉ có một hàng hoá nhất định . Ta có 2 bảng dữ liệu như sau :
+ Bảng HangHoa (Ma_hang,Ten_Hang,DG,Cong_Dung )
+ Bảng CTDDH (So_HDDH,TT_DDDH,Ma_Hang,Ten_Hang,So_L ) Hai bảng này có mối quan hệ ( 1 - ∞ ) dựa trên khoá Ma_Hang .
- Bảng chi tiết đơn đặt hàng với bảng đơn đặt hàng : một đơn đặt hàng thì có nhiều chi tiết đơn đặt hàng, nhưng một chi tiết đơn đặt hàng chỉ có một đơn đặt hàng nhất định . Ta có 2 bảng dữ liệu như sau :
+ Bảng DDH ( So_HDDH, Nguoilap, Ngaylap,Ma_KH )
+ Bảng CTDDH(So_HDDH,TT_DDDH,Ma_Hang,Ten_Hang,So_L) Hai bảng này có mối quan hệ ( 1 - ∞ ) dựa trên khóa So_HDDH.
- Bảng đơn đặt hàng với bảng khách hàng : một khách hàng có nhiều đơn đặt hàng, nhưng một đơn đặt hàng chỉ có một khách hàng. Ta có 2 bảng dữ liệu sau:
+ Bảng DDH ( So_HDDH, Nguoilap, Ngaylap,Ma_KH) + Bảng KH ( Ma_Kh,Ten_Kh,DiaChi,SoDT)
Hai bảng này có mối quan hệ ( 1 - ∞ ) dựa trên trường Ma_KH
- Bảng Hàng Hoá với bảng chi tiết hoá đơn : một hàng hóa có nhiều chi tiết đơn đặt
hàng nhưng một chi tiết đơn đặt hàng chỉ có một hàng hoá nhất định. Ta có 2 bảng dữ liệu sau:
+ Bảng HH ( Ma_hang,Ten_Hang,DG,Cong_Dung)
+ Bảng CTHD ( So_HHD,TT_DHD,Ma_Hang,Ten_Hang,So_Luong) Hai bảng này có mối quan hệ (1 - ∞ ) dựa trên trường Ma_Hang
- Bảng chi tiết hoá đơn với hoá đơn : một hoá đơn có nhiều chi tiết hoá đơn nhưng một chi tiết hóa đơn chỉ có một hoá đơn. Ta có 2 bảng dữ liệu sau:
+ Bảng CTHD (So_HHD,TT_DHD,Ma_Hang,Ten_Hang,So_Luong) + Bảng HD (So_HHD,ngayban,nguoiban,Ma_Kh)
Hai bảng này có mối quan hệ (1 - ∞ ) thông qua trường So_HHD
- Bảng hoá đơn với bảng khách hàng : một khách hàng có nhiều hoá đơn nhưng một hoá đơn chỉ có một khách hàng.Ta có 2 bảng dữ liệu sau :
+ Bảng KH ( Ma_Kh,Ten_Kh,DiaChi,SoDT) + Bảng HD (So_HHD,ngayban,nguoiban,Ma_Kh)
- Bảng hàng hoá với bảng chi tiết phiếu nhập : một hàng hoá có nhiều chi tiết phiếu nhập nhưng một chi tiết phiếu nhập chỉ có một hàng hoá. Ta có 2 bảng dữ liệu sau : + Bảng HH (Ma_hang,Ten_Hang,DG,Cong_Dung)
+ Bảng CTPN ( So_HPN,TTDPN,So_L,Ma_Hang,GiaV) Hai bảng này có mối quan hệ (1 - ∞ ) thông qua trường Ma_Hang )
- Bảng chi tiết phiếu nhập với bảng phiếu nhập : một phiếu nhập có nhiều chi tiết phiếu nhập nhưng một chi tiết phiếu nhập chỉ có một phiếu nhập. Ta có 2 bảng dữ liệu sau: + Bảng CTPN ( So_HPN,TTDPN,So_L,Ma_Hang,GiaV)
+ Bảng PN ( So_HPN,Ngay_Nhap,Ma_NCC)
Hai bảng này có mối quan hệ (1 - ∞ ) thông qua trường So_HPN
- Bảng phiếu nhập với bảng nhà cung cấp : một nhà cung cấp có nhiều phiếu nhập nhưng một phiếu nhập chỉ có một nhà cung cấp. Ta có 2 dữ liệu sau :
+ Bảng PN ( So_HPN,Ngay_Nhap,Ma_NCC)
+ Bảng NCC ( Ma_NCC, Ten_NCC, DiaChi, So_DT) Hai bảng này có mối quan hệ (1 - ∞ ) thông qua trường Ma_NCC
CHƯƠNG III
THIẾT KẾ GIAO DIỆN
1. Thiết kế hệ thống cho chương trình
* Quá trình thiết kế hệ thống cho chương trình được chia thành 2 giai đoạn :
+ Thiết kế tổng thể : Nhằm xác định vai trò, vị trí của máy tính trong hệ thống mới và phân tích rõ cho thấy công việc nào có thể do máy tính đảm nhiệm, công việc nào do người dùng làm thủ công, để tạo cơ sở cho việc thiết kế hệ thống sau này để từ đó có thể phát huy được những ưu điểm của hệ thống mới.
+ Thiết kế chi tiết:
- Thiết kế giao diện. - Thiết kế các điều khiển. - Thiết kế cơ sở dữ liệu. - Xây dựng chương trình. - Thử nghiệm chương trình.
- Chuyển tiếp chương trình thành sản phẩm.
2. Một số chức năng chính của chương trình
Phần mền quản bán hàng gồm có một màn hình giao diện hệ thống với các chức năng - Cập nhật Danh mục nhà cung cấp.
- Cập nhật Danh mục hàng hoá - Cập nhật khách hàng
- Cập nhật người sử dụng
- Cập nhật phiếu phập kho,chi tiết phiếu nhập kho - Cập nhật đơn đặt hàng, chi tiết đơn đặt hàng - Cập nhật hoá đơn,chi tiết hoá đơn
- Tìm kiếm, báo cáo
Visual Basic là một ngôn ngữ lập trình định hướng theo kiểu đối tượng, chúng ta có thể phân tích mỗi yếu tố trong chương trình thành một đối tượng và viết mã riêng cho từng đối tượng đó. Tập hợp nhiều đối tượng như vậy sẽ trở thành một chương trình hoàn chỉnh. Trong mỗi một đối tượng trước tiên đối với Visual Basic thì bao giờ cũng phải thiết kế giao diện, sau đó sẽ viết code cho chương trình. Đây là bước rất quan trọng vì nó sẽ phải thực hiện đúng yêu cầu của chương trình.
Visual Basic là công cụ phát triển phần mềm giống như phần biên dịch C,C+ +. Sử dụng Visual Basic tiết kiệm được thời gian và công sức khi làm một phần mềm so với các ngôn ngữ lập trình khác. Khi lập trình Visual Basic có thể thấy ngay qua từng thao tác và giao diện khi chương trình thực hiện. Đồng thời Visual Basic còn cho phép ta chỉnh sửa một cách nhanh chóng, đơn giản về kích thước màu sắc, hình dáng của các đối tượng có trong ứng dụng cũng như thiết kế dữ liệu cho ứng dụng đó.
Visual Basic cho phép chạy chương trình trong thời gian soạn thảo, khi mà chương trình lỗi Visual Basic sẽ tự khắc báo cho bạn biết để biết cách sửa lỗi. Khi sử dụng Visual Basic chúng ta vừa phải thiết kế giao diện vừa viết phần mã lệnh. Việc tạo trực tiếp những khung giao diện ứng dụng thông qua những thao tác trên màn hình, dựa trên những đối tượng như khung đối thoại, nút điều khiển những đối tượng sẽ mang những thuộc tính riêng biệt như màu sắc, phông chữ, cỡ chữ mà ta sẽ gán thông qua bảng các danh sách thuộc tính. Một trong những thành công của Visual Basic là có thể triển khai một chương trình ứng dụng Windows trọn vẹn mà không phải viết các chỉ thị rắc rối để tạo ra giao diện của chúng.
Trong Visual basic khi thiết kế giao diện trên biểu mẫu thì chúng ta phải sử dụng thành công cụ Toolbox và sau đó sẽ gán giá trị cho từng đối tượng khi ta đã chọn. Trong quá trình viết phần mã lệnh thì chúng ta phải lựa chọn công cụ kết nối để xây dựng một chương trình hoàn thiện vì vậy em đã lựa chọn công cụ kết nối ADODB. ADODB là công cụ giúp cho việc lập trình của ta thuận tiện hơn. ADO ( active X data object) là một tập hợp các đối tượng cho phép nhà lập trình nối tới CSDL. ADO là sự kết hợp cơ sở dữ liệu dựa trên ADO và RDO được sử dụng trong những công cụ như :
ADO là một phần của OLE DB - là một cách mới để truy xuất dữ liệu và tổ hợp dữ liệu ADO cho phép tạo nhanh một tệp mẩu tin để lấy dữ liệu.
ODBC là một giao diện lập trình chuẩn cho các ứng dụng trên Windows do Microsoft đề xuất. Nó có thể làm trên Access, Excel,…bạn phải khai báo lên ODBC nguồn dữ liệu mà chương trình sẽ truy xuất và sử dụng. Các đối tượng của ADO là: Connection, command,lable…
Với những tiện ích của Visual basic em lựa chọn để viết chương trình
4. Một số giao diện của chương trình
* Giao diện chính
* Chức năng chương trình
* Frm Khách hàng
* frm Đơn Đặt hàng
* frm phiếu nhập
* frm chi tiết phiếu nhập
5. Một số thuật toán sử dụng trong quá trình thiết kế các chức năng
5.1.Sử dụng các câu lệnh truy vấn SQL:
* Sử dụng câu lệnh SELECT để lấy về các mẩu tin
“ SELECT TenTruong FROM TenBang WHERE (DieuKien)”
* Sử dụng câu lệnh INSERT INTO để thêm các thông tin:
“INSERT INTO TenBang ( DS TenTruong) VALUES ( DS GiaTri)”
* Sử dụng câu lệnh UPDATE để sửa thông tin:
“UPDATE TenBang
SET TenTruong = GiaTri
WHERE (DieuKien)”
*Sử dụng câu lệnh DELETE để xóa các bản ghi:
“ DELETE DS TenTruong
FROM TenBang
WHERE (DieuKien)”
5.2. Sử dụng các cấu trúc lệnh điều khiển luồng chương trình:
1/ Câu lệnh IF:
IF DieuKien THEN
ELSE
‘Thực hiện các lệnh khi không thỏa mãn DieuKien
END IF.
2/ Câu lệnh SELECT CASE SELECT CASE X CASE 0: ‘ Thực hiện các lệnh khi X = 0 CASE 1: ‘ Thực hiện các lệnh khi X = 1 .... CASE X: ‘ Thực hiện các lệnh khi X = n END SELECT
3/ Câu lệnh DO WHILE ... LOOP
Đây là cấu trúc lặp kiểm tra điều kiện trước, vòng lặp tiếp tục khi điều kiện lặp còn đúng.
DO WHILE DieuKien
‘ Thực hiện các lệnh khi DieuKien còn thỏa mãn LOOP
4/ Câu lệnh DO ... LOOP WHILE
Đây là cấu trúc lặp kiểm tra điều kiện sau, vòng lặp tiếp tục khi điều kiện lặp còn đúng
DO
‘ Các lệnh LOOP WHILE
5/ Câu lệnh DO... LOOP UNTIL 6/ Câu lệnh FOR...NEXT FOR ... TO STEP n ‘Các lệnh NEXT 5.3 Sử dụng các hàm chuỗi * Hàm Mid
Hàm Mid trả về một chuỗi lưu trữ trong một variant và hàm Mid$, hàm trả về chuỗi thực tế
Cú pháp
Mid (String, Start [length]) * Hàm Left và Right
Cú pháp : left (string,number) Right (string,number)
* Hàm InStr
Hàm này báo cho biết chuỗi có thuộc thành phần của một chuỗi khác hay không.Nếu có thì nó sẽ báo cho biết vị trí bắt đầu chuỗi con
Đồng thời hàm cũng cho phép chỉ định bắt đầu tìm kiếm tại một ký tự nhất định
Do hàm này trả về giá tri False khi Visual Basic không tìm thấy một ký tự, hoặc một giá trị True khi tìm thấy, nên thông thường ta phải tự mình viết các vòng lặp
IF…THEN hoặc DO * Hàm VAL
Đây là hàm chuyển đổi một chuỗi thành một con số.Val đơn giản đọc quachuỗichođếnkhigặpmột ký tự phi số (hoặc một dấu chấm thứ hai). Con số mà ta có được tự nó sẽ xác định bởi vì nó không ngừng tìm…
* HàmStr
Hàm này cho phép chuyển một con số thành một chuỗi số * Hàm Format
Hàm này cho phép ta cắt các chữ số dưvà hiển thị một con số (lớn) có dấu phẩy hoặc một dấu đồng đô la dẫn đầu
* Hàm Trim
CHƯƠNG IV
HƯỚNG DẪN SỬ DỤNG CÀI ĐẶT CHƯƠNG TRÌNH VÀ ĐÁNH GIÁ ƯU NHƯỢC ĐIỂM CỦA CHƯƠNG TRÌNH
I Hướng dẫn người dùng sử dụng chương trình
Người dùng tìm và chạy File: NamDung.exe thì hộp thoại đăng nhập xuất hiện. Khi hộp thoại xuất hiện rồi người dùng muốn truy cập phải khai báo tên và mật khẩu vào máy để máy kiểm tra sau đó bạn nháy chuột vào nút Logon.Nếu tên và mật khẩu của người sử dụng vừa khai báo phù hợp với tên và mật khẩu có trong máy mà ta đã đăng ký trước đó thì người dùng sẽ truy cập vào giao diện chính của chương trình.Ngược lại tên và mật khẩu của người dùng vừa khai báo mà không đúng thì máy sẽ đưa ra hộp thoại với lời đề nghị “ bạn đã nhập sai tên hoặc mật khẩu hãy nhạp lại ” lúc đó người dùng muốn truy cập tiếp đúng thì phải khai báo lại sao cho phù hợp. Còn nếu bạn không muốn truy cập chương trình thì bạn nháy chuột vào nút Cacel.
Khi đã đăng nhập đúng thì MDImain sẽ hiện ra. Ở đó người dùng có thể sử toàn bộ chương trình thông qua các chức năng của chương trình.
II. Hướng dẫn cài đặt chương trình
- Yêu cầu: Cấu hình máy: Intel Pentium III hoặc Celeon 500MHz trở lên. Ram128Mb, Hệ