Tải bản đầy đủ (.pdf) (36 trang)

Xây dựng hệ thống thông tin quản lý bán hàng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.55 MB, 36 trang )

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
Viện Công nghệ Thông tin và Truyền thơng
——————– * ——————–

BÁO CÁO MƠN HỌC: Nhập môn hệ quản trị cơ sở dữ liệu
Đề tài: Xây dựng hệ thống thông tin quản lý bán hàng

Sinh viên thực hiện:
Trần Lương Nguyên. SHSV: 20152732
Lớp: CNTT2.1 - K60
Giảng viên hướng dẫn:
ThS. Đỗ Tuấn Anh

HÀ NỘI - 2018


Lời nói đầu
Đầu tiên, em xin gửi lời cảm ơn sâu sắc nhất tới thầy giáo ThS. Đỗ Tuấn Anh là người đã tận
tình giảng dạy và hướng dẫn em trong suốt q trình học mơn Nhập mơn hệ quản trị cơ sở
dữ liệu và thực hiện bài tập lớn môn học.
Em cũng xin chân thành cảm ơn các thầy cô giáo đã giảng dạy em trong những năm học
qua, những kiến thức mà em nhận được trong suốt quãng thời gian qua không chỉ giúp em
thực hiện được bài tập lớn này mà cịn vơ cùng hữu ích cho công việc sau này.
Hà Nội, tháng 5, 2018
Sinh viên thực hiên
Trần Lương Nguyên

i


Mục lục


Lời nói đầu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

i

Danh sách các hình vẽ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

iv

1

TỔNG QUAN ĐỀ TÀI

1

2

KHẢO SÁT U CẦU CỦA HỆ THỐNG THƠNG TIN

2

2.1

Mơ tả nghiệp vụ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

2

2.1.1

Mô tả phân quyền hệ thống . . . . . . . . . . . . . . . . . . . . . .


2

2.1.2

Mô tả và thiết kế các quy trình nghiệp vụ . . . . . . . . . . . . . .

3

Một số mẫu biểu thực tế . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

2.2
3

PHÂN TÍCH HỆ THỐNG QUẢN LÍ BÁN HÀNG

6

3.1

Phân tích chức năng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

3.1.1

Biểu đồ phân cấp chức năng . . . . . . . . . . . . . . . . . . . . .

6


3.1.2

Biểu đồ usecase . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

Phân tích luồng dữ liệu (DFD) . . . . . . . . . . . . . . . . . . . . . . . .

9

3.2.1

Mức khung cảnh (mức 0) . . . . . . . . . . . . . . . . . . . . . . .

9

3.2.2

Mức đỉnh (mức 1) . . . . . . . . . . . . . . . . . . . . . . . . . .

9

3.2.3

Mức dưới đỉnh (mức 2) . . . . . . . . . . . . . . . . . . . . . . . .

10

3.2.4


Kho dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

3.2

4

THIẾT KẾ CƠ SỞ DỮ LIỆU

14

4.1

Thiết kế việc lưu trữ dữ liệu . . . . . . . . . . . . . . . . . . . . . . . . . .

14

4.2

Cài đặt cơ sở dữ liệu sử dụng SQL Server . . . . . . . . . . . . . . . . . .

14

ii


4.3
5


Thiết kế cơ sở dữ liệu ở tầng Database . . . . . . . . . . . . . . . . . . . .

16

XÂY DỰNG ỨNG DỤNG CÓ KẾT NỐI VỚI CƠ SỞ DỮ LIỆU

24

5.1

Thiết kế lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

5.1.1

Gói Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

5.1.2

Gói DbConnnection . . . . . . . . . . . . . . . . . . . . . . . . .

27

5.1.3

Gói View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .


27

5.1.4

Liên hệ giữa View và Model . . . . . . . . . . . . . . . . . . . . .

28

5.1.5

Biểu đồ lớp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

Kết quả đạt được . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

5.2

iii


Danh sách hình vẽ
2.1
2.2
2.3

Phiếu nhập kho (sử dụng khi mua sản phẩm về cửa hàng) . . . . . . . . . .

Phiếu xuất kho (sử dụng khi bán sản phẩm cho khách hàng) . . . . . . . . .
Phiếu chi (sử dụng khi xuất hiện các chi phí phát sinh) . . . . . . . . . . .

3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10

Modul chức năng . . . . . . . . .
Biểu đồ usecase tổng quan . . . .
Phân rã usecase nhập hàng . . . .
Phân rã usecase quản lí tài chính .
Phân rã usecase quản lí nhân viên
DFD mức 0 . . . . . . . . . . . .
DFD mức 1 . . . . . . . . . . . .
DFD mức 2 quản lí xuất/nhập hàng
DFD mức 2 quản lí tài chính . . .
DFD mức 2 quản lí nhân viên . . .

.
.
.
.
.

.
.
.
.
.

6
7
7
8
8
9
10
11
11
12

4.1

Biểu đồ cơ sở dữ liệu của hệ thống . . . . . . . . . . . . . . . . . . . . . .

15

5.1
5.2
5.3
5.4
5.5
5.6
5.7

5.8
5.9

Biểu đồ lớp của chương trình . . . . . . . . . . . . . . . . . . . .
Màn hình đăng nhập . . . . . . . . . . . . . . . . . . . . . . . .
Chức năng bán hàng . . . . . . . . . . . . . . . . . . . . . . . .
Chức năng nhập hàng(thêm sản phẩm vào kho) . . . . . . . . . .
Quản lí tất cả sản phẩm hiện có . . . . . . . . . . . . . . . . . . .
Quản lí nhân viên và thêm/xóa nhân viên, tài khoản của nhân viên
Thêm các chi phí phát sinh . . . . . . . . . . . . . . . . . . . . .
Quản lí doanh thu và lợi nhuận . . . . . . . . . . . . . . . . . . .
Xem tất cả hóa đơn . . . . . . . . . . . . . . . . . . . . . . . . .

28
29
29
29
30
30
30
31
31

.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
. .
. .

iv

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.

.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.


.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.

4
5
5


Chương 1
TỔNG QUAN ĐỀ TÀI
Tên đề tài: Xây dựng hệ thống thơng tin quản lý bán hàng.
Mục đích của đề tài: Việc ứng dụng CNTT vào trong kinh doanh đã được thực hiện từ lâu,
tuy nhiên thường thì các hệ thống được xây dựng đều dành cho doanh nghiệp lớn với số lượng
sản phẩm và khách hàng cần quản lí rất lớn, vì thế chi phí cũng rất cao. Mục đích của đồ án
là xây dựng một chương trình để giúp việc quản lý kinh doanh của các cửa hàng nhỏ lẻ được
dễ dàng. Chương trình cần dễ sử dụng, không cần yêu cầu vốn đầu tư ban đầu và hạ tầng lớn,
dễ bảo trì và chi phí duy trì hệ thống ở mức tối thiểu.
Giới thiệu về hệ thống được xây dựng: Một cửa hàng bán các sản phẩm bao gồm các loại
với các thơng tin khác nhau:
• Đĩa nhạc: Tên đĩa nhạc/tên bài hát, thông tin ca sĩ, nhạc sĩ, thể loại nhạc, năm sản
xuất,. . .
• Đĩa phim: Tên đĩa phim, thông tin về các diễn viên, đạo diễn, năm sản xuất, nhà sản
xuất, thể loại phim,. . .
• Các loại sách: Tên cuốn sách, tác giả, thể loại sách, thông tin về năm xuất bản, nhà
xuất bản,. . .
Yêu cầu đặt ra:
• Xây dựng một hệ thống quản lý các sản phẩm trên theo từng thuộc tính đã nêu, ngồi
ra hệ thống cịn hỗ trợ quản lý theo số lượng, giá mua, giá bán của các sản phẩm.
• Ngồi ra cần phải quản lý về mặt chí phí, bao gồm các chi phí lúc nhập sản phẩm và
bán sản phẩm, các chi phí về trả lương cho nhân viên, các chi phí định kì và phát sinh.

Vì đây là cửa hàng nhỏ, mục đích của phần mềm chỉ là sử dụng nội bộ, do đó phần mềm sẽ
hướng đến các chức năng chính là quản lí xuất nhập hàng, sản phẩm và doanh thu, khơng có
các thông tin về khách hàng hay nhà cung cấp.

1


Chương 2
KHẢO SÁT U CẦU CỦA HỆ
THỐNG THƠNG TIN
2.1
2.1.1

Mơ tả nghiệp vụ
Mô tả phân quyền hệ thống

Hệ thống sẽ phục vụ cho những loại người dùng sau:
Người quản lý:
• Mơ tả: Là chủ của cửa hàng hoặc người được giao nhiệm vụ quản lý.
• Vai trị: Chịu trách nhiệm quản lý hoạt động của tồn bộ cửa hàng.
• Quyền: Sử dụng toàn bộ các chức năng của hệ thống.
Nhân viên quản lí kho:
• Mơ tả: Nhân viên làm việc trong cửa hàng, thực hiện nghiệp vụ nhập hàng hóa 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 hóa đơn
mua hàng, quản lí các sản phẩm hiện có của cửa hàng.
• Quyền: Sử dụng các chức năng: mua hàng; quản lý thông tin liên quan đến sản phẩm.
Nhân viên thu ngân:
• Mơ tả: Nhân viên làm việc trong cửa hàng, thực hiện nghiệp vụ bán hàng.
• Vai trị: Chịu trách nhiệm trong khâu thanh tốn và bán sản phẩm cho khách hàng.

• Quyền: Sử dụng các chức năng: bán các mặt hàng hiện đang có của cửa hàng.
2


Nhân viên kế tốn:
• Mơ tả: Nhân viên làm việc trong cửa hàng, thực hiện nghiệp vụ quản lí tài chính của
cửa hàng.
• Vai trị: Chịu trách nhiệm trong khâu thu chi, doanh thu lợi nhuận của cửa hàng thông
qua các hóa đơn, quản lí và thêm các chi phí phát sinh của cửa hàng.
• Quyền: Sử dụng các chức năng: xem thơng tin tất cả các loại hóa đơn, lập hóa đơn liên
quan đến các chi phí phát sinh, quản lí doanh thu và lợi nhuận của cửa hàng.

2.1.2

Mơ tả và thiết kế các quy trình nghiệp vụ

Mua hàng:
Khi mua hàng, nhân viên nhập hàng sẽ tiếp nhận hàng hóa, đồng thời kiểm tra xem thơng tin
về những hàng hóa được nhập có sẵn trong danh mục chưa. Nếu chưa có thơng tin về hàng
hóa được nhập tức đây là mặt được nhập lần đầu, nhân viên phải nhập đầy đủ thơng tin của
hàng hóa. Trong trường hợp đây là mặt hàng lần đầu tiên được nhập thì nhân . Khi đã có đầy
đủ thơng tin, nhân viên nhập hàng sẽ tiến hành lập phiếu nhập hàng, in và lưu trữ phiếu. Khi
phiếu nhập được lập xong, số lượng hàng hóa mới sẽ tự động cập nhật vào cơ sở dữ liệu.
Bán hàng:
Khi khách đến mua hàng và có yêu cầu thanh toán, nhân viên thu ngân sẽ tiếp nhận yêu cầu
thanh toán. Nhân viên sẽ kiểm tra xem các thơng tin của mặt hàng tiến hành tính tiền, lập
hóa đơn cho khách hàng. Hóa đơn sẽ được lưu trữ lại trong cơ sở dữ liệu, số lượng hàng trên
quầy được tự động cập nhật vào cơ sở dữ liệu.
Quản lí hàng hóa:
Bất cứ khi nào có u cầu, nhân viên quản lí kho sẽ kiểm tra thơng tin của tất cả sản phẩm

hiện đang có trong cửa hàng, ví dụ như số lượng hiện tại, giá mua vào, bán ra,. . .
Quản lí hóa đơn và chi phí phát sinh:
Khi cần kiểm tra các hoạt động liên quan đến thu chi của cửa hàng, nhân viên kế toán sẽ sử
dụng các thơng tin về hóa đơn được lưu trữ lại. Các loại hóa đơn là hóa đơn mua hàng, nhập
hàng, thanh toán lương cho nhân viên, các chi phí phát sinh. Khi có một hoạt động nào phát
sinh chi phí, nhân viên kế tốn cũng sẽ lập hóa đơn để lưu lại.
Quản lí nhân viên:
Đây là nghiệp vụ chỉ dành riêng cho người quản lí. Mỗi khi có thêm nhân viên mới, người
quản lí sẽ thêm thơng tin về nhân viên vào và cung cấp cho họ một tài khoản với các chức
3


năng liên quan đến nhiệm vụ của họ để sử dụng. Mỗi khi có một nhân viên nghỉ việc thì
người quản lí sẽ xóa thơng tin của nhận viên đó. Hàng tháng, quản lí sẽ tiến hành thanh tốn
tiền lương cho tất cả nhân viên, hóa đơn thanh tốn tiền lương sẽ được tự động lập và lưu lại.

2.2

Một số mẫu biểu thực tế

Dưới đây là một số ví dụ về các mẫu biểu thường được các cửa hàng sử dụng:

Hình 2.1: Phiếu nhập kho (sử dụng khi mua sản phẩm về cửa hàng)

4


Hình 2.2: Phiếu xuất kho (sử dụng khi bán sản phẩm cho khách hàng)

Hình 2.3: Phiếu chi (sử dụng khi xuất hiện các chi phí phát sinh)


5


Chương 3
PHÂN TÍCH HỆ THỐNG QUẢN LÍ
BÁN HÀNG
3.1
3.1.1

Phân tích chức năng
Biểu đồ phân cấp chức năng

Hình 3.1: Modul chức năng

3.1.2

Biểu đồ usecase

Các tác nhân của hệ thống:
• Quản lí
• Quản lí kho
• Thu ngân
• Kế tốn
6


Hình 3.2: Biểu đồ usecase tổng quan

Hình 3.3: Phân rã usecase nhập hàng


7


Hình 3.4: Phân rã usecase quản lí tài chính

Hình 3.5: Phân rã usecase quản lí nhân viên

8


3.2
3.2.1

Phân tích luồng dữ liệu (DFD)
Mức khung cảnh (mức 0)

Đây là mức khái quát của hệ thống, mô tả sự trao đổi thông tin của các đối tác với hệ thống.
Mơ tả q trình trao đổi thơng tin ở mức 0:
Khi nhập hàng, quản lí kho sẽ nhập thơng tin về sản phẩm vào hệ thống, trong quá trình nhập
hàng, có thể tùy chọn xem thơng tin về các sản phẩm đã có trong cửa hàng từ hệ thống. Khi
bán hàng, thu ngân sẽ lựa chọn các sản phẩm đã có trong cửa hàng và phù hợp với yêu cầu
của khách hàng để tạo hóa đơn gửi đến hệ thống và tiến hành thanh tốn. Thơng tin về các
hóa đơn nhập/bán hàng sẽ được hệ thống lưu lại, và khi cần có thể được kế tốn tra cứu lại.
Ngồi ra, kế tốn cũng có thể gửi các chi phí phát sinh đến hệ thống để làm hóa đơn, hoặc
xem xét doanh thu lợi nhuận của cửa hàng. Quản lí ngồi việc có thể thực hiện các thao tác
trên cịn có khả năng thêm/cập nhật thông tin về các nhân viên gửi đến hệ thống. Hệ thống
lưu trữ tồn bộ thơng tin của các nhân viên trong cửa hàng để quản lí có thể xem.

Hình 3.6: DFD mức 0


3.2.2

Mức đỉnh (mức 1)

Đây là mức mơ tả q trình trao đổi thơng tin của những chức năng chính với nhau và đối
tác. Mơ tả q trình trao đổi thơng tin ở mức 1:
Khi các sản phẩm được nhập vào gửi đến cửa hàng, nhân viên quản lí kho sẽ tiến hành kiểm
kê hàng hóa để có đầy đủ thơng tin sản phẩm, sau đó nhập hàng vào kho. Khách hàng khi
9


mua hàng sẽ có một danh sách các mặt hàng cần mua gửi đến cho thu ngân, nhân viên thu
ngân sẽ kiểm tra kho hàng để xem các sản phẩm có đáp ứng được u cầu của khách hàng
khơng, nếu có thì tiến hành thanh tốn cho khách hàng. Kế tốn có trách nhiệm theo dõi các
đơn hàng mua vào và bán ra các sản phẩm của cửa hàng, chi ra các khoản tiền dành cho chi
phí phát sinh của cửa hàng. Khi cần thì sẽ tổng hợp lại các hóa đơn để tính doanh thu, lợi
nhuận của cửa hàng trong khoảng thời gian được yêu cầu.

Hình 3.7: DFD mức 1

3.2.3

Mức dưới đỉnh (mức 2)

Đây là mức mô tả quá trình trao đổi thơng tin một cách chi tiết của chức năng nhỏ trong từng
chức năng lớn.
Quản lí xuất/nhập hàng:
Mơ tả: Khi nhận được sản phẩm, quản lí kho tiến hành kiểm kê hàng hóa và nhập hàng vào
kho, nếu sản phẩm đã có sẵn thì tiến hành cập nhật số lượng, nếu chưa có thì nhập mới sản

phẩm vào kho. Sau khi mua hàng thì sẽ hóa đơn mua hàng sẽ được tạo và lưu lại. Khi khách
hàng đến cửa hàng và lựa chọn các sản phẩm để mua, thu ngân sẽ tiến hành tạo đơn hàng
bằng cách lựa chọn các sản phẩm có trong kho đáp ứng yêu cầu của khách hàng. Sau khi tiến
hành thanh tốn, hóa hơn bán hàng sẽ được lưu lại.

10


Hình 3.8: DFD mức 2 quản lí xuất/nhập hàng
Quản lí tài chính:
Mơ tả: Mỗi khi phát sinh một chi phí nào đó (khơng phải là mua hàng/bán hàng), kế tốn có
nhiệm vụ chi trả và sau đó tạo hóa đơn chi phí phát sinh để lưu lại. Để biết được doanh thu,
lợi nhuận của cửa hàng, kế toán sẽ dựa vào tất cả các loại hóa đơn đang được lưu lại trong cơ
sở dữ liệu.

Hình 3.9: DFD mức 2 quản lí tài chính

11


Quản lí nhân viên:
Mơ tả: Khi có nhân viên mới vào làm ở cửa hàng, quản lí sẽ tiến hành thêm nhân viên vào
cửa hàng. Khi thông tin của nhân viên cần được chỉnh sửa, quản lí sẽ lựa chọn chức năng sửa
đổi thông tin của nhân viên trong cơ sở dữ liệu. Khi có một nhân viên nghỉ việc, quản lí sẽ
tiến hành lựa chọn xóa nhân viên khỏi cửa hàng. Hàng tháng, quản lí sẽ tiến hành trả lương
cho nhân viên dựa trên số giờ làm và tiền lương theo giờ của từng nhân viên. Hóa đơn trả
lương sẽ được lưu lại để phục vụ cho quá trình quản lí tài chỉnh.

Hình 3.10: DFD mức 2 quản lí nhân viên


3.2.4

Kho dữ liệu

Mô tả các kho dữ liệu cần thiết cho hệ thống:
Tên kho dữ liệu: Sản phẩm
• Diễn giải: Lưu trữ thông tin liên quan đến các nhân viên của cửa hàng.
• Các thơng tin chính cần lưu trữ: Tên nhân viên, vị trí, tiền lương, ngày sinh, giới tính,
tài khoản được cấp.
Tên kho dữ liệu: Hóa đơn mua hàng
• Diễn giải: Lưu trữ thơng tin liên quan đến các hóa đơn mua vào các sản phẩm của cửa
hàng.

12


• Các thơng tin chính cần lưu trữ: Mã hóa đơn, ngày tạo, các sản phẩm được mua vào,
số tiền.
Tên kho dữ liệu: Hóa đơn bán hàng
• Lưu trữ thơng tin liên quan đến các hóa đơn bán ra các sản phẩm của cửa hàng.
• Các thơng tin chính cần lưu trữ: Mã hóa đơn, ngày tạo, các sản phẩm được bán, số tiền.
Tên kho dữ liệu: Hóa đơn chi phí phát sinh
• Diễn giải: Lưu trữ thơng tin liên quan đến các hóa đơn chi trả các chi phí phát sinh của
cửa hàng.
• Các thơng tin chính cần lưu trữ: Mã hóa đơn, ngày tạo, thơng tin về hóa đơn, số tiền.
Tên kho dữ liệu: Hóa đơn trả lương
• Diễn giải: Lưu trữ thông tin liên quan đến các hóa đơn trả lương cho nhân viên của cửa
hàng.
• Các thơng tin chính cần lưu trữ: Mã hóa đơn, ngày tạo, danh sách nhân viên được trả
lương, số tiền.


13


Chương 4
THIẾT KẾ CƠ SỞ DỮ LIỆU
4.1

Thiết kế việc lưu trữ dữ liệu

Sau khi đã tiến hành phân tích hệ thống, ta nhận thấy có những đối tượng cần phải lưu trữ lại
một cách lâu dài (trên bộ nhớ ngoài), chứ không thể để mất đi cùng với sự kết thúc chương
trình, đó là các đối tượng kho dữ liệu. Cách lưu trữ được lựa chọn là sử dụng cơ sở dữ liệu
quan hệ (RDBMS). RDBMS cho phép quản lý dữ liệu và tìm kiếm thơng tin với các câu truy
vấn phức tạp.
Mơ hình quan hệ gồm các khác niệm chính sau: Bảng (Quan hệ), Cột, Khóa chính/Khóa
ngồi. Với hệ thống mà chúng ta đang xây dựng, có 3 đối tượng chính cần lưu trữ là: Sản
phẩm, hóa đơn, nhân viên. Vì vậy ta sẽ xây dựng 3 bảng để lưu trữ lại các thông tin của 3
loại đối tượng này.
Cụ thể, ở nhân viên, ta cần tạo tài khoản cho mỗi nhân viên để họ có thể đăng nhập, mỗi
nhân viên có chức vụ khác nhau nên có các quyền khác nhau, vì vậy cần tạo bảng để lưu lại
các tài khoản và bảng để lưu trữ các quyền của các nhân viên.
Tiếp theo, mỗi sản phẩm (thuộc một trong 3 loại: đĩa nhạc, phim, sách) lại có thơng tin liên
quan đến các nhân vật (tác giả, nhạc sĩ, ca sĩ), vì vậy cần tạo một bảng để lưu trữ các nhân
vật và một bảng để liên kết sản phẩm và các nhân vật.
Với hóa đơn, ta có 4 loại hóa đơn là: Hóa đơn nhập hàng, hóa đơn bán hàng, hóa đơn chi phí
phát sinh, hóa đơn trả lương. Ngồi bảng để lưu các thơng tin chính của các hóa đơn ở trên,
với mỗi loại hóa đơn ta cần tạo thêm bảng. Cụ thể, với hóa đơn mua hàng/bán hàng, vì loại
hóa đơn này sẽ bao gồm các sản phẩm, vì vậy ta cần tạo một bảng liên kết giữa hóa đơn và
các sản phẩm. Tương tự với hóa đơn trả lương cho nhân viên, ta cũng cần tạo một bảng liên

kết giữa hóa đơn và các nhân viên được trả lương.

4.2

Cài đặt cơ sở dữ liệu sử dụng SQL Server

SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management
System – RDBMS ), ngơn ngữ lập trình được sử dụng là Transact-SQL (T-SQL). Như đã
14


phân tích ở mục trước, em tiến hành việc xây dựng các bảng như hình dưới đây.

Hình 4.1: Biểu đồ cơ sở dữ liệu của hệ thống
Chức năng của các bảng:
• Staffs: Thơng tin các nhân viên của cửa hàng.
• Account: Tài khoản của nhân viên, khóa ngồi UID tham chiếu tới bảng Staffs. Một
lưu ý là mật khẩu của tài khoản được lưu dưới dạng mã băm.
• Permission: Phân quyền cho nhân viên, khóa ngồi UID tham chiếu tới bảng Staffs.
• Invoices: Thơng tin tất cả các hóa đơn.
• Invoice&Staff Relation: Dùng để lưu trữ hóa đơn trả lương sẽ cho những nhân viên
nào, có 2 khóa ngồi tham chiếu tới hai bảng Invoices và Staffs.
• Items: Thơng tin các sản phẩm của cửa hàng
• Invoice&Item Relation: Dùng để lưu trữ hóa đơn mua hàng/bán hàng sẽ gồm những
sản phẩm nào, có 2 khóa ngồi tham chiếu tới hai bảng Invoices và Items.
• Person: Thơng tin các nhân vật có trong sản phẩm
• Item&Person Relation: Dùng để lưu trữ sản phẩm sẽ gồm những nhân vật nào, có 2
khóa ngồi tham chiếu tới hai bảng Person và Items.
• Current Budget: Ngân sách hiện có của cửa hàng.
15



4.3

Thiết kế cơ sở dữ liệu ở tầng Database

Để đáp ứng các chức năng của chương trình, sau khi đã tạo các bảng cần thiết để lưu trữ dữ
liệu, cần có thêm các Stored Procedure và Trigger để thuận tiện cho việc thao tác với cơ sở
dữ liệu.
Stored Procedure là một tập hợp các phát biểu T-SQL mà SQL Server biên dịch thành một
kế hoạch thực thi, được lưu trữ trong CSDL của SQL Server. Stored Procedure được gọi một
cách rõ ràng bởi ứng dụng, kịch bản, batch hoặc các tác vụ. Trigger là một thủ tục lưu trữ hệ
thống (stored procedure) đặc biệt, được thực thi một cách tự động khi có sự kiện gây biến đổi
dữ liệu như Update, Insert hay Delete.
Ngồi ra, trong SQL Server cịn có một khái niệm nữa được gọi là Function (Hàm). Giống
như Stored procedure, function (hàm ) là nhóm các lệnh T-SQL thực hiện chức năng nào đó.
Khác với thủ tục, các hàm sẽ trả về một giá trị ngay tại lời gọi nó. Hàm cũng có thể được lưu
giữ ngay trên database dưới dạng Store procedure.
Dưới đây em trình bày các thủ tục, hàm mà em đã cài đặt cho hệ thống. Các thủ tục được lựa
chọn là các thủ tục thường xuyên được hệ thống sử dụng, nhằm mục đích tận dụng những ưu
điểm của Stored Procedure.
Hàm login_check
Nhận vào Username và Password của nhân viên, trả về UID của nhân viên nếu tài khoản và
mật khẩu đúng, người lại trả về giá trị ’0’.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION login_check
(

@username varchar(50),
@password varchar(50)
)
RETURNS char(10)
AS
BEGIN
DECLARE @staffID char(10);
SELECT @staffID = UID
FROM Account
WHERE Username = @username AND Password = @password;
IF (@staffID IS NULL)
SET @staffID = ’0’;
16


RETURN @staffID;
END
GO
Trigger UpdateQuantity
Tự động cập nhật số lượng sản phẩm trong bảng sản phẩm khi có hoạt động mua vào sản
phẩm/bán ra sản phẩm.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER UpdateQuantity
ON [Invoice&Item Relation]
AFTER INSERT
AS
BEGIN

SET NOCOUNT ON;
DECLARE @InvoiceType nvarchar(50);
SELECT
@InvoiceType = Invoices.[Invoice Type]
FROM Invoices, inserted WHERE Invoices.invoiceID = inserted.invoiceID
IF @InvoiceType = ’Import’
Begin
UPDATE Items
SET Items.Quantity = Items.Quantity + inserted.Quantity
FROM inserted
WHERE Items.itemID = inserted.itemID
End
IF @InvoiceType = ’Sale’
Begin
UPDATE Items
SET Items.Quantity = Items.Quantity - inserted.Quantity
FROM inserted
WHERE Items.itemID = inserted.itemID
End
END
GO

17


Thủ tục get_current_budget
Khơng có giá trị tham số truyền vào, output là giá trị ngân sách hiện tại của cửa hàng
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON

GO
CREATE PROCEDURE get_current_budget
@budget float OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @budget = [Current Budget]
FROM [Current Budget]
END
GO

Thủ tục get_staff_info_by_id
Nhận vào UID của nhân viên cần lấy thông tin, trả về thơng tin của nhân viên đó.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE get_staff_info_by_id
@staffID char(10),
@Name nvarchar(50) OUTPUT,
@birthday date OUTPUT,
@salary float OUTPUT,
@position varchar(30) OUTPUT,
@totalHours float OUTPUT,
@sex bit OUTPUT
AS
BEGIN
SET NOCOUNT ON;
SELECT @Name = Name,
@birthday = Birthday,

18


@salary = Salary,
@position = Position,
@totalHours = [Total Hours],
@sex = Sex
FROM Staffs
WHERE UID = @staffID
END
GO

Thủ tục insert_staff
Thêm nhân viên mới vào bảng Staff, tham số vào là UID, các thông tin khác của nhân viên
tạm thời mặc định.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE insert_staff
@uid char(10)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Staffs
(UID, Name, Salary, Position, [Total Hours], Birthday, Sex)
VALUES
(@uid, ’’, 0, ’’, 0, GETDATE(), 1)
END
GO


Thủ tục insert_item
Thêm sản phẩm mới với tham số vào là các thông tin về sản phẩm.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE insert_item
19


@itemId nchar(10),
@name nvarchar(50),
@cost float,
@purchase float,
@quantity int,
@itemType nvarchar(50),
@pageNumber int,
@publisher nvarchar(50)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Items
(itemID, Name, Cost, Purchase, Quantity, [Item Type], [Pages Number], Publisher)
VALUES
(@itemId, @name, @cost, @purchase, @quantity, @itemType, @pageNumber, @publisher)
END
GO

Thủ tục insert_invoice

Thêm hóa đơn mới với tham số vào là các thơng tin về hóa đơn.
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE insert_invoice
@invoiceId char(10),
@invoiceType nvarchar(30),
@sumCost float,
@profit float,
@des nvarchar(50),
@createTime date
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO Invoices
(invoiceID, [Invoice Type], [Sum Cost], Profit, Description, [Created Time])
VALUES
20


×