1. Trang chủ
  2. » Tất cả

HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU QUẢN LÝ CỬA HÀNG

23 5 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Quản Lý Cửa Hàng
Tác giả Trần Thanh An, Huy Văn Bình, Nguyễn Văn Đức
Người hướng dẫn Nguyễn Ngọc Quỳnh Châu
Trường học Trường Đại Học Thủy Lợi
Chuyên ngành Hệ Quản Trị Cơ Sở Dữ Liệu Quản Lý Cửa Hàng
Thể loại Bài tập lớn học phần
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 23
Dung lượng 88,21 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Trong thời đại ngày nay, công nghệ thông tin đang được phát triển mạnh mẽ, nhanh chóng và xâm nhập vào nhiều lĩnh vực khoa học, kỹ thuật cũng như trong cuộc sống. Nó trở thành công cụ đắc lực trong nhiều ngành nghề như giao thông, quân sự, y học.... đặc biệt trong công tác quản lý nói chung và quản lý nhà hàng nói riêng. Trước đây, khi máy tính chưa được ứng dụng rộng rãi, các công việc quản lý nhà hàng đều được làm thủ công nên rất mất thời gian và tốn kém về nhân lực cũng như tài chính. Ngày nay, với sự phát triển công nghệ thông tin mà máy tính đã được sử dụng rộng rãi trong các cơ quan, nhà máy, trường học... giúp cho công việc được tốt hơn. Việc sử dụng máy tính vào công tác quản lý nhà hàng là một yêu cầu cần thiết nhằm xóa bỏ những phương pháp quản lý lạc hậu, lỗi thời gây tốn kém về nhiều mặt. Vì vậy, chúng em đã xây dựng đề tài “Quản lý nhà hàng ” với mong muốn giúp cho việc quản lý được dễ dàng, thuận tiện và tránh sai sót.

Trang 1

TRƯỜNG ĐẠI HỌC THỦY LỢI KHOA CÔNG NGHỆ THÔNG TIN

BÀI TẬP LỚN HỌC PHẦN: HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU

ĐỀ TÀI: QUẢN LÝ CỬA HÀNG

Giáo viên hướng dẫn: Nguyễn Ngọc Quỳnh Châu

Sinh viên/nhóm sinh viên thực hiện:

1 Trần Thanh An – 2051060374 - 62PM2

2. Huy Văn Bình - 2051060403 - 62PM2

3. Nguyễn Văn Đức - 2051060456 - 62PM2

Hà Nội, năm 2022

Trang 2

MỤC LỤC

A MỞ ĐẦU

1 Giới thiệu

2 Mục đích

3 Phương pháp

B NỘI DUNG

1 Thiết kế CSDL

a Mô tả bài toán

b Mô hình quan hệ

2 Lập trình

a Cursor

b Procedure

c Function

d View

e Trigger

Trang 3

A MỞ ĐẦU:

1 Giới thiệu:

Trong thời đại ngày nay, công nghệ thông tin đang được phát triển mạnh

mẽ, nhanh chóng và xâm nhập vào nhiều lĩnh vực khoa học, kỹ thuật cũng như trong cuộc sống Nó trở thành công cụ đắc lực trong nhiều ngành nghề như giao thông, quân sự, y học đặc biệt trong công tác quản lý nói chung

và quản lý nhà hàng nói riêng.

Trước đây, khi máy tính chưa được ứng dụng rộng rãi, các công việc quản lý nhà hàng đều được làm thủ công nên rất mất thời gian và tốn kém

về nhân lực cũng như tài chính Ngày nay, với sự phát triển công nghệ thông tin mà máy tính đã được sử dụng rộng rãi trong các cơ quan, nhà máy, trường học giúp cho công việc được tốt hơn.

Việc sử dụng máy tính vào công tác quản lý nhà hàng là một yêu cầu cần thiết nhằm xóa bỏ những phương pháp quản lý lạc hậu, lỗi thời gây tốn

kém về nhiều mặt Vì vậy, chúng em đã xây dựng đề tài “Quản lý nhà

hàng ” với mong muốn giúp cho việc quản lý được dễ dàng, thuận tiện và

tránh sai sót

2 Mục đích:

Hệ thống “Quản lý nhà hàng ” thực hiện quản lý danh mục các món,

danh sách bàn, danh sách nhân viên: (Thông tin NV, thanh toán lương NV), lịch phân ca làm việc, danh bạ công thức pha chế, danh sách các khoản thu chi, danh sách đại lý, nhà cung cấp, danh sách khách hàng cần thiết (khách VIP, khách quen…), giúp cho việc quản lý nhà hàng được dễ dàng, thuận tiện và tránh sai sót.

Trang 4

B NỘI DUNG:

1 Thiết kế CSDL:

a Mô tả bài toán

- Quản lý menu: bảng giá của từng mặt hàng và các mặt hàng có trong nhà hàng

- Quản lý bàn ăn: quản lý hóa đơn tính tạm của mỗi bàn ăn và cập nhật liên tục khi khách thêm món

- Lập hóa đơn thanh toán: hóa đơn thanh toán theo số lượng và đơn giá các món ăn mà khách hàng đã gọi và hệ thống tự động tính tổng tiền khách phải trả và số tiền khách còn dư sau khi trả, và lưu vào cơ sở dữ liệu để quản lý hóa đơn

- Lập báo cáo: Hàng tháng nhân viên thu chi sẽ sử dụng chức năng quản

lý thu chi của hệ thống để tổng hợp và lâp báo cáo về tình hình thu/chi

và lợi nhuận trong tháng của nhà hàng lên giám đốc vào ngày 28 hàng tháng để giám đốc có kế hoạch chi trả lương và thưởng cho nhân viên vào ngày mùng 3 tháng sau.

b CSDL

Trang 5

Mô hình quan hệ:

Nhanvien

IDNhanVien int Primary key Mã nhân viên

HoaDon

IDKhachHang int Foreign key Mã khách hàngIDNhanVien Int Foreign key Mã nhân viên

Trang 6

SanPham

IDLoaihang int Foreign key Mã loại hàngIDNguyenlieu int Foreign key Mã nguyên liệu

NguyenLieu

IDNguyenLieu int Primary key Mã nguyên liệu

Trang 7

IDNhaCungCap int Foreign key Mã nhà cung cấp

LoaiHang

IDLoaiHang int Primary key Mã loại hàng

KhachHang

IDKhachHang int Primary key Mã khách hàng

NhaCungCap

IDNhaCungCa

Trang 8

2 Lập trình:

a Cursor

1 Sử dụng con trỏ để in ra nhân viên bán được nhiều nhất thông qua khung hình TongKetHoaDon

DECLARE cau1 CURSOR DYNAMIC SCROLL

FOR SELECT IDNhanVien FROM v_TongKetHoaDon

GROUP BY IDNhanVien HAVING COUNT(IDNhanVien) >=

ALL(SELECT COUNT(IDNhanVien)

FROM v_TongKetHoaDon GROUP BY IDNhanVien);

OPEN cau1;

DECLARE @idNhanVien INT;

FETCH FIRST FROM cau1 INTO @idNhanVien;

WHILE (@@FETCH_STATUS = 0) BEGIN

SELECT DISTINCT IDNhanVien, HoTenNhanVien FROM

v_TongKetHoaDon WHERE IDNhanVien = @idNhanVien;

FETCH NEXT FROM cau1 INTO @idNhanVien;

END

close cau1;

2 Sử dụng con trỏ để in ra sản phẩm có số lượng bán nhiều nhất dựa vào khung hình ChiTietHoaDon

DECLARE cau2 CURSOR DYNAMIC SCROLL

FOR SELECT IDSanPham FROM v_ChitietHoaDon

GROUP BY IDSanPham HAVING SUM(SoLuong) >= ALL(SELECT

SUM(SoLuong)

FROM v_ChitietHoaDon GROUP BY IDSanPham);

OPEN cau2;

DECLARE @idSanPham INT;

FETCH FIRST FROM cau2 INTO @idSanPham;

WHILE (@@FETCH_STATUS = 0) BEGIN

Trang 9

SELECT DISTINCT IDSanPham, TenSp FROM v_ChitietHoaDon WHERE IDSanPham = @idSanPham;

FETCH NEXT FROM cau2 INTO @idSanPham;

declare cs2 cursor dynamic scroll

for select TenSP, Mota from SanPham

open cs2

declare @ten nvarchar(50) , @mota nvarchar(50);

fetch first from cs2 into @ten, @mota

while(@@FETCH_STATUS=0)

begin

print N'Tên SP:' + @ten + N' Mô tả:' + @mota

fetch next from cs2 into @ten , @mota

end

close cs2;

deallocate cs2;

4 Sử dụng con trỏ để in ra các hóa đơn cùng tên khách hàng:

Mã hóa đơn, Tên hiển thị

declare cs3 cursor dynamic scroll

for select Hoadon.IDHoaDon, KhachHang.HoTen from Hoadon,

KhachHang

open cs3

declare @id int , @tenkh nvarchar(100);

Trang 10

fetch first from cs3 into @id, @tenkh

declare cs5 cursor dynamic scroll

for select IDHoaDon, ngayban, Hoten from Hoadon ,NhanVien where Hoadon.IDNhanVien = NhanVien.IDNhanVien

open cs5

declare @id int, @ngayban date, @ten nvarchar(50);

fetch first from cs5 into @id ,@ngayban, @ten;

Trang 11

6. Sử dụng con trỏ để chứa bản ghi phiếu thống kê và tài khoản Sử dụng con trỏ để in ra theo định dạng “Tên hiển thị… số lượng hóa đơn”

declare cs6 cursor dynamic scroll

for select Hoten, count(IDHoaDon) from NhanVien, HoaDon where HoaDon.IDNhanVien = NhanVien.IDNhanVien group by Hoten open cs6

declare @ten nvarchar(50), @soluong int;

fetch first from cs6 into @ten, @soluong;

1 Viết thủ tục hiển thị số lượng hóa đơn mà 1 nhân viên đã thực hiện

create proc nhanvien

@x nchar(10) output as begin

declare @count int

Trang 12

select @count= count(IDHoaDon) from HoaDon where

@x=IDNhanVien

print CONCAT(N'Nhân Viên',@x,N'đã làm', @count,N'Hóa Đơn') end;

exec nhanvien'2'

2 Viết thủ tục hiển thị số lượng sản phẩm

create proc Dem @demsp int

as begin

declare @dem int;

select @dem = count(*) from SanPham

print N'Có ' +cast(@dem as char(4)) + N' SanPham'

end;

3 Viết thủ tục hiển thị số hóa đơn bán theo ngày nhập vào

create or alter proc cau3

4 Viết thủ tục trả về tổng số tiền của tất cả hóa đơn

alter proc tongtiennh

as begin

Trang 13

declare @tong int;

declare @dem int;

select @dem = count(*) from NguyenLieu where IDNhaCungCap = (select IDNhaCungCap from NhaCungCap where TenCongTy =

@ncc)

print N'Nhà cung cấp: ' + @ncc + N' cung ứng ' + cast(@dem as nvarchar(10)) + N' nguyên liệu'

end;

6 Viết thủ tục trả về số lượng sản phẩm mà 1 loại hàng cung cấp

create proc SLSPLH @type nvarchar(50)

as begin

declare @dem int;

select @dem = count(*) from SanPham where IDLoaiHang = (select IDLoaiHang from LoaiHang where TenLoaiHang = @type)

Trang 14

print N'Loại hàng ' + @type + N' có ' + cast(@dem as nvarchar(10)) + N' sản phẩm'

2 Viết hàm tổng tiền của 1 hóa đơn

CREATE or alter FUNCTION f_TongTien(@idHoaDon int)

Trang 15

3 Function trả về danh sách chi tiết các sản phẩm trong một đơn hàng bao gồm : IDSanPham, TenSanPham, TenLoaiHang,

TenNguyenLieu, TenNhaCungCapNL,TyLeGiamGia, ThanhTien

create or alter function cau3(@idhoadon int) returns table as

return(select ChitietHoaDon.IDSanPham, SanPham.TenSP,

4 Viết hàm trả về mã hóa đơn có nhiều sản phẩm nhất

create function hdslmax()

returns table

as

return (select top(1) IDHoaDon, count(IDSanPham) as

SoLuong from ChitietHoaDon group by IDHoaDon order by

SoLuong desc)

5 Viết hàm trả về tên nhân viên có nhiều hóa đơn nhất

Trang 16

create function f_maxsp()

returns table

as

return select HoTen from HoaDonNhanVien where SoLuong = (select max(SoLuong) from HoaDonNhanVien)

6 Tìm hóa đơn với nhân viên id=1

create function timhoadon()

returns table as

return (select * from HoaDon where IDNhanVien=1)

select * from timhoadon()

i Trần Thanh An: 3, 4

ii Huy Văn Bình: 5 ,6iii Nguyễn Văn Đức: 1, 2

d View

1 Tạo khung hình hiển thị chi tiết thông tin hóa đơn bao

gồm:IDHoaDon, IDSanPham, TenSanPham, TenLoaiHang,

SoLuongBan, TenNguyenLieu,DonGiaBan,

TyLeGiamGia,TongTienBan

create view v_ChitietHoaDon as

select IDHoaDon, SanPham.IDSanPham, TenSP, TenLoaiHang, ChitietHoaDon.SoLuong , TenNguyenLieu, DonGiaBan,

Trang 17

JOIN LoaiHang ON SanPham.IDLoaiHang =

LoaiHang.IDLoaiHang

JOIN NguyenLieu ON NguyenLieu.IDNguyenLieu =

SanPham.IDNguyenLieu

SELECT * FROM v_ChitietHoaDon;

2 Tạo 1 khung hình hiển thị thông tin tổng kết các hóa đơn bao gồm IDHoaDon, IDKhachHang, HoTenKhachHang,

GioiTinhKhachHang, IDNhanVien, HoTenNhanVien, NgayBan, TongTienHoaDon

create view v_TongKetHoaDon as

select IDHoaDon, KhachHang.IDKhachHang, KhachHang.HoTen HotenKhachHang, KhachHang.GioiTinh GioiTinhKhachHang, NhanVien.IDNhanVien, NhanVien.Hoten HotenNhanVien,

HoaDon.NgayBan,

dbo.f_TongTien(HoaDon.IDHoaDon) TongTienHoaDon

FROM HoaDon JOIN KhachHang ON KhachHang.IDKhachHang = HoaDon.IDKhachHang

JOIN NhanVien ON NhanVien.IDNhanVien = HoaDon.IDNhanVien

select * from v_TongKetHoaDon

3 Tạo khung nhìn hiển thị Tên sản phẩm, Đơn giá, Mã nguyên liệu,Tên Nguyên liệu,Mã loại hàng, tên loại hàng

Create view SanPhamNguyenLieu as

Trang 18

Select SanPham.TenSP, SanPham.Mota, Nguyenlieu.IDNguyenLieu, Nguyenlieu.TenNguyenLieu as'TenNguyenLieu',

LoaiHang.IDLoaiHang, LoaiHang.TenLoaiHang as 'TenLoaiHang' from SanPham, Nguyenlieu, LoaiHang

where SanPham.IDNguyenLieu = Nguyenlieu IDNguyenLieu and SanPham.IDLoaiHang = LoaiHang.IDLoaiHang

Group By SanPham.TenSP, SanPham.Mota,

Nguyenlieu.IDNguyenLieu, Nguyenlieu.TenNguyenLieu,

LoaiHang.IDLoaiHang, LoaiHang.TenLoaiHang

4 Tạo khung nhìn hiển thị số lượng hóa đơn mà mỗi nhân viên thực hiện được

Create view HoaDonNhanVien as

select HoTen, count(IDHoaDon) as SoLuong from NhanVien,

HoaDon where NhanVien.IDNhanVien = HoaDon.IDNhanVien group by HoTen

5 Tạo khung nhìn tổng hợp ra tên của những sản phẩm được bán nhiều nhất

Create view SoluongNguyenLieu as

select Nguyenlieu.tennguyenlieu, Nguyenlieu.soluong from

select TenLoaiHang, count(IDSanPham) as SoLuong from

LoaiHang, SanPham where LoaiHang.IDLoaiHang =

SanPham.IDLoaiHang group by TenLoaiHang

Trang 19

ALTER TABLE ChiTietHoaDon

ADD ThanhTien MONEY

GO

CREATE OR ALTER TRIGGER ThanhTienNhap ON

ChiTietHoaDon FOR UPDATE AS

BEGIN

DECLARE @soHDN NVARCHAR(20), @donGiaNhap

MONEY, @maHang NVARCHAR(20)

SELECT @soHDN = IDHoaDon, @maHang = IDSanPham FROM inserted

UPDATE ChiTietHoaDon SET ThanhTien = (SoLuong * DonGiaBan)

where IDHoaDon = @soHDN AND IDSanPham = @maHang END

GO

2 Tạo trigger tự động cập nhật tổng tiền hóa đơn khi người dùng thêm, xóa sản phẩm khỏi chi tiết hóa đơn

ALTER TABLE HoaDon

ADD TongTien MONEY

GO

CREATE OR ALTER TRIGGER TongTienBan ON ChiTietHoaDon FOR INSERT, UPDATE, DELETE AS

BEGIN

Trang 20

DECLARE @inSoHDB NVARCHAR(20), @deSoHDB

NVARCHAR(20), @inThanhTien MONEY, @deThanhTien

MONEY

SELECT @inSoHDB = IDHoaDon, @inThanhTien =

ThanhTien FROM inserted

SELECT @deSoHDB = IDHoaDon, @deThanhTien =

ThanhTien FROM deleted

UPDATE HoaDon SET TongTien = ISNULL(TongTien, 0) + ISNULL(@inThanhTien,0) - ISNULL(@deThanhTien, 0) WHERE IDHoaDon = ISNULL(@inSoHDB, @deSoHDB)

Trang 21

DELETE FROM NhanVien WHERE IDNhanVien IN

(SELECT IDNhanVien FROM deleted)

END

GO

5 Tạo Trigger để đảm bảo rằng khi thêm một loại mặt hàng vào bảng LoaiHang thì tên loại mặt hàng thêm vào phải chưa có trong bảng create or alter TRIGGER trig_1 ON LoaiHang FOR insert AS

BEGIN

IF ((SELECT COUNT(TenLoaiHang) FROM LoaiHang

WHERE TenLoaiHang = (SELECT TenLoaiHang FROM inserted))

Trang 22

PRINT N'Them thanh cong.' END

6 Tạo Trigger để đảm bảo rằng khi sửa một loại mặt hàng trong bảng LoaiHang thì tên loại mặt hàng sau khi sửa phải khác tên loai mặt hàng trước khi sửa và tên loại mặt hàng sau khi sửa không trùng với tên các loại hàng đã có trong bảng.

alter TRIGGER trig_2 ON LoaiHang FOR UPDATE AS BEGIN

IF ((SELECT COUNT(TenLoaiHang) FROM LoaiHang

WHERE TenLoaiHang = (SELECT TenLoaiHang FROM inserted))

> 1) BEGIN

ROLLBACK TRAN;

PRINT N'Ten loai hang da co trong bảng LoaiHang'; END

ELSE IF ((SELECT TenLoaiHang FROM inserted) =

(SELECT TenLoaiHang FROM deleted)) BEGIN

Trang 23

CREATE TRIGGER trigger4 on NhanVien for update

BEGIN

COMMIT TRAN PRINT N' Sửa mật khẩu thành công' END

ELSE

BEGIN

ROLLBACK TRAN PRINT N'Mật khẩu chỉ chứa số, không nhập các kí tự khác'

END END

END

i Trần Thanh An: 3, 4

ii Huy Văn Bình: 1, 2

iii Nguyễn Văn Đức: 5, 6

Ngày đăng: 27/02/2023, 07:45

🧩 Sản phẩm bạn có thể quan tâm

w