Chương I : Khảo sát nghiệp vụ đề tài1, Hoạt động của cửa hàng Hệ thống bán hàng được chia thành các chức năng: - Quảnlýthôngtin kháchhàng: + Bao gồm các chức năng: thêmmới thông tin khác
Trang 1TRƯỜNG ĐẠI CÔNG NGHIỆP HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
Đề tài:
XÂY DỰNG CHƯƠNG TRÌNH QUẢN LÝ CỬA
HÀNG BÁN XE MÁY
Giáo viên hướng dẫn:
Sinh viên thực hiện:
Phạm Thị Thúy Nguyễn Thị Hồng Tươi
Hà Nội, ngày 23 tháng 6 năm 2012
Trang 2Mục lục
Chương I : Khảo sát nghiệp vụ đề tài 5
1.Hoạt động của hệ thống 5
2.Ưu nhược điểm của hệ thống cũ 7
3.Một số biểu mẫu thu được của hệ thống cũ 9
Chương II : Phân tích hệ thống 10
1.Mô hình phân cấp chức năng của hệ thống 10
2.Mô hình luồng dữ liệu mức khung cảnh 11
3.Mô hình luồng dữ liệu mức đỉnh 12
Chương III : Thiết kế hệ thống 13
1 Xây dựng mô hình thực thể liên kết 13
2.Chuyển mô hình thực thể liên kết thành các bản ghi logic 16
3 Thiết kế CSDL vật lý 16
3.1 Lập từ điển dữ liệu 17
3.1.1 Bảng khách hàng 17
3.1.2 Bảng mặt hàng 18
3.1.3 Bảng nhà cung cấp 18
3.1.4 Bảng nhân viên 19
3.1.5 Bảng phiếu nhập 20
3.1.6 Bảng phiếu xuất 20
3.1.7 Bảng chi tiết phiếu nhập 20
3.1.8 Bảng chi tiết phiếu xuất 21
3.2 Mô hình dữ liệu vật lý 22
Chương IV Thiết kế code cho SQL 23
1 Tạo các bảng trong CSDL 23
2 Tạo các thủ tục 26
2.1 Tạo các thủ tục cho bảng Nhà Cung Cấp 26
2.2 Tạo các thủ tục cho bảng Khách Hàng 28
2.3 Tạo các thủ tục cho bảng Nhân Viên 30
2.4 Tạo các thủ tục cho bảng Mặt Hàng 31
2.5 Tạo các thủ tục cho bảng Phiếu Nhập 33
2.6 Tạo các thủ tục cho bảng Phiếu Xuất 35
2.7 Tạo các thủ tục cho bảng Chi Tiết Phiếu Nhập 37
2.8 Tạo các thủ tục cho bảng Chi Tiết Phiếu Xuất 39
Trang 33 Tạo các View 41
4 Tạo các Trigger 43
Chương V : Cài đặt chương trình 47
1 Thiết kế giao diện 47
1.1 Thiết kế thực đơn 47
1.2 Thiết kế giao diện 47
2 Cài đặt chương trình 56
Chương VI : Kết luận 59
1 Kết quả thu được 59
2 Hướng phát triển tiếp theo 59
3 Cách sử dụng chương trình 59
Danh mục tài liệu tham khảo: 60
Trang 4Lời nói đầu
Sau khi học 3 môn phân tích thiết kế hệ thống, hệ quản trị cơ sở dữ liệu, lập trìnhwindow để củng cố kiến thức trên giảng đường, và để có thêm kinh nghiệm về lập trìnhmột chương trình ứng dụng thực tế chúng em đã quyết định viết 1 chương trình quản lý
có sử dụng kiến thức đã của cả 3 môn trên
Trong bối cảnh công nghệ thông tin phát triển ngày càng phát triển mạnh và có nhiều ứngdụng trong thực tế như tổ chức quản lý bán hàng, thư viện, quản lý nhân viên.Chươngtrình của chúng em được cài đặt cơ sở dữ liệu với SQL,giao diện được thiết kế bằngC#,kết hợp với dotnetbar
Chúng em xin chân thành cô đã nhiệt tình giúp đỡ chúng em hoàn thành chương trìnhnày
Trang 5Chương I : Khảo sát nghiệp vụ đề tài
1, Hoạt động của cửa hàng
Hệ thống bán hàng được chia thành các chức năng:
- Quảnlýthôngtin kháchhàng:
+ Bao gồm các chức năng: thêmmới thông tin khách hàng khi có khách hàngmới,sửachữa thông tin khách hàng khi thay đổi,xoábỏthôngtinvềkháchhàng
+ Các thôngtinvềkháchhàngbaogồm:Mãkháchhàng,tênkháchhàng,địachỉ,điệnthoại liênhệ,email.Tất cảcácthông tinvềkháchhàngđềuđượclưutrữ lại
+ Đầu vào là thông tin của khách hàng, bao gồm tên khách, địa chỉ, điện thoại, email.Đầu ra là 1 bản danh sách ghi đầy đủ thông tin của khách hàng
- Quản lý thông tin nhà cung cấp :
+ Bao gồm các chức năng: thêm mới nhà cung cấp khi công ty mua hàng của nhà cungcấp mới, sửa các thông tin về nhà cung cấp khi cần thiết và xóa thông tin về nhà cung cấpkhi không mua hàng của nhà cung cấp nữa
+ Các thông tin về nhà cung cấp gồm : Mã nhà cung cấp, tên nhà cung cấp, địa chỉ, điệnthoại, email
+ Đầu vào là thông tin của nhà cung cấp, bao gồm tên nhà cung cấp, địa chỉ, điện thoại,
Trang 6email Đầu ra là 1 bản danh sách ghi đầy đủ thông tin của các nhà cung cấp.
- Quản lý nhân viên :
+ Bao gồm các chức năng: thêm mới nhân viên khi có nhân viên mới được tuyển, sửa cácthông tin về nhân viên khi cần thiết và xóa thông tin khi hết hợp đồng hoặc sa thải nhânviên
+ Các thông tin về nhân viên gồm : Mã nhân viên, tên nhân viên, năm sinh, giới tính, địachỉ, điện thoại, chức vụ, lương cơ bản
+ Đầu vào là thông tin của nhân viên, bao gồm tên nhân viên, địa chỉ, điện thoại, nămsinh, giới tính, chức vụ, lương cơ bản Đầu ra là 1 bản danh sách ghi đầy đủ thông tin củanhân viên
- Quản lí xuất hàng:
+ Khi khách hàng đến mua hàng tại công ty thì họ yêu cầu công ty về mặt hàng cầnmua.Nếumặthàng màkhách yêu cầu khôngcóbán tại côngtyhoặcđãhết hàngthìđưaramộtthôngbáotừchối bán hàng Trong trường hợp mặt hàng có bán tại cửa hàng thìnhân viên nhập hàng lưu thông tin của khách hàng lại, trước khi lập phiếu xuất hàng, phiếubảo hành vào giao hàng Bộ phận bán hàng cũng có trách nhiệm giải quyết việc thanh toántiền hàng với khách hàng Có nhiều hình thức thanh toán, có thể thanh toán trực tiếp bằngtiền mặt, chuyển khoản hoặc trả góp
+ Các thông tin trên phiếu xuất hàng gồm : Mã phiếu xuất, ngày xuất, tên nhân viên, tênnhà cung cấp, tên hàng, số lượng xuất, đơn giá xuất, thuế Một nhân viên có thể lập nhiềuphiếu xuất Một phiếu xuất thì chỉ do một và chỉ một nhân viên lập
- Quản lí nhập hàng
+ Khi nhà cung cấp giới thiệu sản phẩm thì bộ phận nhập hàng có trách nhiệm kiểm trachất lượng của mặt hàng này, để đồng ý nhập hoặc từ chối nhập Nếu mặt hàng là mặt hàngmới thì nhân viên nhập hàng có nhiệm vụ thêm hàng đó vào danh sách hàng,sau đó lậpphiếu nhập hàng Bộ phận này cũng chịu trách nhiệm thanh toán tiền cho nhà cung cấp
Trang 7+ Các thông tin trên phiếu nhập hàng gồm : Mã phiếu nhập, ngày nhập, tên nhân viên, tênkhách hàng, tên hàng, số lượng nhập, đơn giá nhập, thuế Một nhân viên có thể lập nhiềuphiếu nhập Một phiếu nhập thì chỉ do một và chỉ một nhân viên lập.
- Báo cáo thống kê:
+ Đểtiệntheodõi việckinh doanhcủacửa hàng,hàngthángbộ phận báo cáo sẽlậpcácbáocáogửichobangiámđốcvềdoanhthu trongtháng,mặthàng đãbánra,hàngtồn kho, mặt hàng bánchạy,đểban giám đốccócácbiệnphápđiều chỉnh việc kinh doanh cho hợp lí
+ Đầu vào là các hóa đơn nhập, xuất, danh sách hàng hóa Đầu ra là các bản báo cáo hàngnhập, hàng xuất, doanh thu, hàng tồn, hàng bán chạy
2, Ưu nhược điểm của hệ thống cũ
- Ưu điểm:
Hệ thống cũ dựa trên cách làm truyền thống, vì vậy cách làm dễ dàng, chi phí thấp, thíchhợp cho những hệ thống nhỏ
- Nhược điểm:
Khi quy mô của cửa hàng tăng lên, hệ thống cũ không thể đáp ứng hết được yêu cầu Ví
dụ khi muốn tra cứu thông tin của một khách hàng nào đó,với đống sổ sách khổng lồ làmột việc vô cùng khó khăn Các nhà quản lý cũng khó quản lý cửa hàng của mình
Để khắc phục nhược điểm của hệ thống cũ, hệ thống mới được ra đời để giúp giảm bớtcông việc của nhân viên,cũng như giúp các nhà quản lý dễ dàng quản lý cửa hàng hơn.3.Một số biểu mẫu thu được của hệ thống cũ:
Trang 8- Phiếu nhập hàng
- Phiếu xuất hàng
Trang 9Chương II : Phân tích hệ thống
1 Mô hình phân cấp chức năng của hệ thống
Quản lý bán xe máy
Quản lý nhân viên
Kiểm tra số lượng hàng
Từ chối xuất
Nhập thông tin nhân viên
Sửa thông tin nhân viên
Xóa thông tin nhân viên
Quản lý
TT nhà cung cấp
Nhập
TT nhà cung cấp
Sửa TT nhà cung cấp
Xóa TT nhà cung cấp
Quản lý
TT khách hàng
Nhập
TT khách hàng
Sửa TT khách hàng
Xóa TT khách hàng
Báo cáo – Thống kê
Thông
kê hàng bán
Thống
kê hàng nhập
Thống
kê hàng tồn
Báo cáo doanh thu
Quản lý
nhập
hàng
Quản lý xuất hàng
Quản lý hàng
Nhập
TT hàng
Sửa
TT hàng
Xóa
TT hàng
Trang 102 Mô hình luồng dữ liệu mức khung cảnh
3 Mô hình luồng dữ liệu mức đỉnh
Trang 11Chương III : Thiết kế hệ thống
1 Xây dựng mô hình thực thể liên kết
Xác định các thực thể định dạng tương ứng
Mặt hàng : Mã hàng
Khách hàng : Mã khách hàng
Nhà cung cấp : Mã nhà cung cấp
Trang 12Nhân viên : Mã nhân viên
Phiếu nhập : Mã PN
Phiếu xuất : Mã PX
Xác định liên kết giữa các thực thể
Trang 14 Quan hệ N-N giữa Mặt Hàng và Phiếu Nhập có thể được tách thành 2 quan hệ 1-Nvới thực thể kết hợp Chi Tiết Phiếu Nhập như sau :
Quan
hệ N-N giữa Mặt Hàng và Phiếu Xuất có thể được tách thành 2 quan hệ 1-N với thực thểkết hợp Chi Tiết Phiếu Xuất như sau :
Mô hình liên kết thực thể của hệ thống
Trang 152.Chuyển mô hình thực thể liên kết thành các bản ghi logic :
Trang 16- Mặt hàng ( Mã hàng, Tên hàng, Nhà SX, Số lượng, Thông tin bảo hành, Đơn vị tính, Mô
tả )
- Nhà cung cấp ( Mã nhà cung cấp, Tên nhà cung cấp, Địa chỉ, Điện thoại, Email )
- Nhân viên ( Mã nhân viên, Tên nhân viên,năm sinh, Giới tính, Điện thoại, Địa chỉ, chứcvụ,lương cơ bản )
- Khách hàng ( Mã khách hàng, Tên khách hàng, Địa chỉ, Điện thoại, Email )
- Phiếu nhập ( Mã PN, Ngày nhập, Mã nhân viên, Mã nhà cung cấp )
- Phiếu xuất ( Mã PX, Ngày xuất, Mã nhân viên, Mã khách hàng )
- CT phiếu nhập ( Mã PN, Mã hàng, Số lượng nhập, Đơn giá nhập, Thuế )
- CT phiếu xuất ( Mã PX, Mã hàng, Số lượng xuất, Đơn giá xuất, Thuế )
4 DIENTHOAI Nvarchar(50) Null Điện thoại
kháchhàng
khách
Trang 173.1.2 Bảng mặt hàng
STT Tên thuộc tính Kiểu ( Độ rộng ) Ràng
buộc Khóa chính/Khóa phụ
AOHANH Nvarchar(100) Null Thông tin bảohành
6 DONVITINH Nvarchar(50) Null Đơn vị tính
7 MOTA Nvarchar(100) Null Mô tả hàng
3.1.3 Bảng nhà cung cấp
STT Tên thuộc tính Kiểu
( Độ rộng ) Ràng buộc chính/Khóa
Khóa phụ(PK/FK)
Trang 18thoại nhàcung cấp
Mô tả
1 MANHANVIEN Nvarchar(50) Not null PK Mã nhân viên
2 TENNHANVIEN Nvarchar(50) Not null Tên nhân viên
4 GIOITINH Char(10) Not null Giới tính nhân
7 CHUC VU Nvarchar(50) Not null Chức Vụ
8 LUONGCOBAN Nvarchar(50) Not Null Lương cơ bản
3.1.5 Bảng phiếu nhập
STT Tên thuộc tính Kiểu
( Độ rộng ) Ràng buộc Khóa chính/Khóa phụ
(PK/FK)
Mô tả
1 MAPN Nvarchar(50) Not null PK Mã phiếu
nhập
2 NGAYNHAP Datatime(8) Not null Ngày nhập
3 MANHANVIEN Nvarchar(50) Not null FK Mã nhân
viên
Trang 194 MANHACUNGCAP Nvarchar(50) Not null FK Mã nhà
Mô tả
1 MAPX Nvarchar(50) Not null PK Mã phiếu
xuất
2 NGAYXUAT Datatime(8) Not null Ngày xuất
3 MANHANVIEN Nvarchar(50) Not null FK Mã nhân
viên
4 MAKHACHHANG Nvarchar(50) Not null FK Mã khách
hàng
3.1.7 Bảng chi tiết phiếu nhập
STT Tên thuộc tính Kiểu
( Độ rộng ) Ràng buộc Khóa chính/Khóa phụ
(PK/FK)
Mô tả
1 MAPN Nvarchar(50) Not null PK Mã phiếu
nhập
2 MAHANG Nvarchar(50) Not null PK Mã hàng
hàng nhập
4 DONGIANHAP Float(8) Not null Đơn giá
nhập
3.1.8 Bảng chi tiết phiếu xuất
STT Tên thuộc tính Kiểu
( Độ rộng ) Ràng buộc Khóa chính/Khóa phụ
(PK/FK)
Mô tả
1 MAPX Nvarchar(50) Not null PK Mã phiếu
xuất
Trang 202 MAHANG Nvarchar(50) Not null PK Mã hàng
Trang 21Chương IV Thiết kế code cho SQL
Trang 22TENHANG NVARCHAR(50) NOT NULL,
NHASX NVARCHAR(50) NOT NULL,
SOLUONG INT NOT NULL,
THONGTINBAOHANH NVARCHAR(100) NULL,
DONVITINH NVARCHAR(50) NULL,
MOTA NVARCHAR(100) NULL
TENNHANVIEN NVARCHAR(50) NOT NULL,
NAMSINH INT NOT NULL,
GIOITINH CHAR(10) NOT NULL,
DIENTHOAI NVARCHAR(50) NULL,
DIACHI NVARCHAR(50) NOT NULL,
CHUCVU NVARCHAR(50) NOT NULL,
LUONGCOBAN NVARCHAR(50) NULL
TENKHACHHANG NVARCHAR(50) NOT NULL,
DIACHI NVARCHAR(50) NOT NULL,
DIENTHOAI NVARCHAR(50) NULL,
Trang 23EMAIL NVARCHAR(50) NULL,
TENNHACUNGCAP NVARCHAR(50) NOT NULL,
DIACHI NVARCHAR(50) NOT NULL,
DIENTHOAI NVARCHAR(50) NULL,
EMAIL NVARCHAR(50) NULL,
ON DELETE CASCADE ON UPDATE CASCADE,
MANHANVIEN NVARCHAR(50) NOT NULL
CONSTRAINT fk_PNhap_NhanVien
FOREIGN KEY(MANHANVIEN)
REFERENCES NhanVien(MANHANVIEN)
ON DELETE CASCADE ON UPDATE CASCADE,
NGAYNHAP DATETIME NOT NULL,
)
-Bảng chi tiết phiếu nhập
CREATE TABLE CTPNhap
(
MAPN NVARCHAR(50) NOT NULL,
MAHANG NVARCHAR(50) NOT NULL,
SLNHAP INT NOT NULL,
THUE FLOAT,
Trang 24DONGIANHAP FLOAT NOT NULL,
NGAYXUAT DATETIME NOT NULL,
MAKHACHHANG NVARCHAR(50) NOT NULL,
CONSTRAINT fk_PXuat_KhachHang
FOREIGN KEY(MAKHACHHANG)
REFERENCES KhachHang(MAKHACHHANG)
ON DELETE CASCADE ON UPDATE CASCADE,
MANHANVIEN NVARCHAR(50) NOT NULL,
-Bảng chi tiết phiếu xuất
CREATE TABLE CTPXuat
(
MAPX NVARCHAR(50) NOT NULL,
MAHANG NVARCHAR(50) NOT NULL,
SLXUAT INT NOT NULL,
THUE FLOAT,
DONGIANHAP FLOAT NOT NULL,
CONSTRAINT pk_CTPXuat
Trang 25RAISERROR('DA TON MA NHA CUNG CAP NAY',12,1)
Trang 27INSERT INTO KHACHHANG VALUES
(@MAKHACHHANG,@TENKHACHHANG,@DIACHI,@DIENTHOAI,@EMAIL)ELSE
RAISERROR('DA TON TAI MA KHACH HANG NAY!!',12,1)
Trang 282.3 Tạo các thủ tục cho bảng Nhân Viên
INSERT INTO NHANVIEN
VALUES(@MANHANVIEN ,@TENNHANVIEN ,@GIOITINH ,@DIENTHOAI ,@DIACHI ,@LUONGCOBAN)
Trang 29UPDATE NHANVIEN SET
TENNHANVIEN=@TENNHANVIEN,GIOITINH=@GIOITINH,DIENTHOAI=@DIENTHOAI,DIACHI=@DIACHI,LUONGCOBAN=@LUONGCOBAN WHERE
Trang 30INSERT INTO MATHANG
VALUES(@MAHANG,@TENHANG,@NHASX,@SOLUONG,@THONGTINBAOHANH,@DONVITINH,@MOTA)
Trang 31RAISERROR('KHONG TON TAI MA HANG NAY',12,1)
IF(EXISTS (SELECT MAPN FROM PNHAP WHERE MAPN=@MAPN))
RAISERROR('DA TON TAI MA PHIEU NHAP NAY ROI BAN HAY THEM HANG VAO',12,1)
IF(NOT EXISTS(SELECT MANHANVIEN FROM NHANVIEN WHERE
MANHANVIEN=@MANHANVIEN))
RAISERROR('CONG TY KO CO MA NHAN VIEN NAY',12,1)
IF(NOT EXISTS(SELECT MANHACUNGCAP FROM NHACUNGCAP WHERE MANHACUNGCAP=@MANHACUNGCAP))
RAISERROR('CHUA CO THONG TIN VE NHA CUNG CAP NAY',12,1)
Trang 32IF(NOT EXISTS(SELECT MAPN FROM PNHAP WHERE MAPN=@MAPN))
RAISERROR('KHONG TON TAI MA PHIEU NAY',12,1)
RAISERROR('KHONG TON TAI NHAN VIEN NAY',12,1)
ELSE IF(NOT EXISTS(SELECT MANHACUNGCAP FROM NHACUNGCAP
IF(NOT EXISTS(SELECT MAPN FROM PNHAP WHERE MAPN=@MAPN))
RAISERROR('KHONG TON TAI PHIEU NHAP NAY',12,1)
Trang 33CREATE PROC SP_INSERT_PXUAT
IF(EXISTS (SELECT MAPX FROM PXUAT WHERE MAPX=@MAPX))
RAISERROR('DA TON TAI MA PHIEU XUAT NAY HAY CHON HANG CAN
XUAT',12,1)
IF(NOT EXISTS(SELECT MANHANVIEN FROM NHANVIEN WHERE
MANHANVIEN=@MANHANVIEN))
RAISERROR('CONG TY KO CO MA NHAN VIEN NAY',12,1)
IF(NOT EXISTS(SELECT MAKHACHHANG FROM KHACHHANG WHERE
IF(NOT EXISTS(SELECT MAPX FROM PXUAT WHERE MAPX=@MAPX))
RAISERROR('KHONG TON TAI MA PHIEU NAY',12,1)
ELSE
IF(@NGAYXUAT>GETDATE())
RAISERROR('NGAY SUA KHONG DUNG',12,1)
Trang 34IF(NOT EXISTS(SELECT MANHANVIEN FROM NHANVIEN WHERE
MANHANVIEN=@MANHANVIEN))
RAISERROR('KHONG TON TAI NHAN VIEN NAY',12,1)
ELSE IF(NOT EXISTS(SELECT MAKHACHHANG FROM KHACHHANG WHERE MAKHACHHANG=@MAKHACHHANG))
RAISERROR('KHONG CO THONG TIN KHACH HANG NAY',12,1)
ELSE
UPDATE PXUAT SET
NGAYXUAT=@NGAYXUAT,MANHANVIEN=@MANHANVIEN,MAKHACHHANG=@MAKHACHHANG WHERE MAPX=@MAPX
IF(NOT EXISTS(SELECT MAPX FROM PXUAT WHERE MAPX=@MAPX))
RAISERROR('KHONG TON TAI PHIEU XUAT NAY',12,1)
ELSE DELETE FROM PXUAT WHERE MAPX=@MAPX
IF(NOT EXISTS(SELECT MAPN FROM PNHAP WHERE MAPN=@MAPN))
RAISERROR('CHUA CO PHIEU NHAP NAY TRONG BANG PNHAP',12,1)
Trang 35ELSE IF(NOT EXISTS(SELECT MAHANG FROM MATHANG WHERE
RAISERROR('DON GIA NHAP KHONG CHINH XAC',12,1)
ELSE INSERT INTO CTPNHAP VALUES
Trang 36CREATE PROC SP_DELETE_CTPNHAP
ELSE IF(NOT EXISTS(SELECT MAHANG FROM MATHANG WHERE
Trang 37IF(@SLXUAT>(SELECT (slxuat+SOLUONG) FROM MATHANG inner join
CTPXUAT ON CTPXUAT.MAHANG=MATHANG.MAHANG WHERE
MATHANG.MAHANG=@MAHANG AND MAPX=@MAPX))
RAISERROR('SO LUONG XUAT KO THE LON HON SO LUONG TRONG
Trang 38CREATE view v_DanhSachPNhap
-View danh sách phiếu xuất
CREATE view v_DanhSachPXuat
as
select top 100 percent pxuat.mapx,month(ngayxuat) Tháng, year(ngayxuat)
Năm,ngayxuat=convert(char(10),ngayxuat,103),tenhang,slxuat,dongiaxuat,thue,((thue/ 100)*dongiaxuat*slxuat)+dongiaxuat*slxuat as thanhtien from ((mathang inner join ctpxuat on mathang.mahang=ctpxuat.mahang)inner join pxuat on
pxuat.mapx=ctpxuat.mapx )
order by year(ngayxuat),month(ngayxuat)
-View Doanh Thu
CREATE view v_dthu