Tải bản đầy đủ (.docx) (19 trang)

báo cáo cấu trúc dữ liệu nâng cao

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 (453.75 KB, 19 trang )

Quản lý thực đơn tại nhà hàng khách sạn
TRƯỜNG ĐẠI HỌC ĐỒNG THÁP

KHOA SƯ PHẠM TOÁN - TIN

BÀI TẬP KẾT THÚC
MÔN HỌC CẤU TRÚC
DỮ LIỆU NÂNG CAO

Ngành: SƯ PHẠM TIN HỌC
Lớp: SPTIN 21 – L2 – KG
Giảng viên hướng dẫn: ThS. Huỳnh Lê Minh Uyên
Học viên: Lâm Thúy An – MSSV: 4521440184

MỤC LỤC
MỤC LỤC
1

Đồng Tháp, ngày 12 tháng 7 năm Học
2022viên: Lâm Thúy An
Ts. Huỳnh Lê Minh Uyên


Quản lý thực đơn tại nhà hàng khách sạn
LỜI NÓI ĐẦU3
CHƯƠNG 1: 4
I. Lý do chọn đề tài4
II. Mô tả bài toán4
1.
2.
3.


4.

Giới thiệu nhà hàng..............................................................................................4
Mục tiêu .5
Yêu cầu .5
Chức năng chính của đề tài quản lý thực đơn tại nhà hàng khách sạn.................6
CHƯƠNG 2: CÀI ĐẶT CẤU TRÚC DỮ LIỆU.............................................7

I.

II.
1.
2.
3.

Cài đặt cấu trúc quản lý bằng danh sách liên kết đơn..........................................7
1. Giới thiệu Cài đặt cấu trúc quản lý bằng danh sách liên kết đơn.....................7
2. Một số hình ảnh minh họa................................................................................7
3. Viết Code.........................................................................................................10
Cài đặt cấu trúc quản lý bằng cây nhị phân tìm kiếm.........................................20
Giới thiệu Cài đặt cấu trúc quản lý bằng cây nhị phân tìm kiếm........................20
Một số hình ảnh minh họa...................................................................................21
Viết Code22
CHƯƠNG 3: TỔNG
KẾT…………………………………………………....28
TÀI LIỆU THAM
KHẢO……………………………………………………….29
BẢNG PHÂN CƠNG
NHĨM…………………………………………………..30


2
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
CHƯƠNG 1: KHẢO SÁT HỆ THỐNG
I. Lí do chọn đề tài
Ngày nay, CNTT đã và đang đóng vai trị quan trọng trong đời sống kinh tế, xã
hội của nhiều quốc gia trên thế giới, là một phần không thể thiếu trong xã hội năng
động, ngày càng hiện đại hố. Vì vậy, việc tin học hố vào một số lĩnh vực là hồn
tồn có thể và phù hợp với xu hướng hiện nay. Xuất phát từ nhu cầu thực tế đó, trong
cơng việc quản lý thông tin thực đơn là một việc không thể thiếu. Nhằm thay thế một
số công việc mà trước đó phải thao tác bằng tay trên giấy tờ đạt hiệu quả khơng cao,
mất nhiều thời gian. Vì vậy, em đã thực hiện báo cáo với đề tài “Xây dựng chương
trình quản lý thực đơn tại nhà hàng khách sạn”.

II. Mơ tả bài tốn
Quản lý thực đơn tại nhà hàng khách sạn.
1. Giới thiệu về nhà hàng
- Tên hệ thống: Quản lý Nhà hàng An Lành Như Ngọc
- Địa chỉ: 06 Nhật Tảo, P. An Bình, tp. Rạch Giá, tỉnh Kiên Giang
- Nhà hàng với trên 500 chỗ ngồi, nhà hàng mang phong cách làng quê, ấm
cúng. Với thực đơn phong phú trên 200 món ăn đậm nét truyền thống Việt Nam và
các món ăn nổi tiếng Quốc Tế được chế biến tài tình bởi bàn tay của các đầu bếp tài
hoa cùng đội ngũ nhân viên phục vụ tận tình, chun nghiệp chắc chắn sẽ làm hài
lịng những Q khách khó tính nhất.
- Mục đích:


+ Mang tính chun nghiệp cho việc quản lý nhà hàng.
+ Hồ sơ lưu trữ của nhà hàng sẽ được tốt hơn.
+ Đáp ứng nhu cầu xử lý nhập xuất, tìm kiếm, thêm, cập nhật, xóa thơng tin
về cơ sở vật chất của nhà hàng một cách nhanh chóng, chính xác và có hiệu quả.
2. Mục tiêu
Quản trị và phân quyền người dùng cao cấp theo từng chức năng phần
mềm cụ thể, giúp người quản lý có thể phân cơng cơng việc cho từng nhân viên
mà dữ liệu vẫn được bảo mật - an toàn.
Mục tiêu của đề tài là xây dựng một hệ thống quản lý thực đơn, nhằm hỗ
trợ việc nhập xuất cát món ăn, thêm, xóa, sửa các món.
3. Yêu cầu
3.1. Yêu cầu của hệ thống quản lý
Đối với một hệ thống quản lý trong lĩnh vực quản thực đơn thì phục vụ
cho khách hàng là cần thiết.
3.2. Yêu cầu về chương trình
Đảm bảo tính bảo mật của cơ sở dữ liệu.
3
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
Hỗ trợ người dùng cập nhật, sửa đổi, tìm kiếm thơng tin, xóa…
Quản lý thực đơn trong nhà hàng.
4. Chức năng chính của đề tài quản lý thực đơn
Các chức năng chính để quản lý thực đơn gồm: thêm, cập nhật, xóa, tìm
kiếm theo mã các món ăn.
Cài đặt cấu trúc quản lý bằng danh sách liên kết gồm chức năng: thêm
thực đơn, sửa thơng tin thực đơn, xóa thực đơn bởi DI, tìm kiếm thực đơn theo

tên, sắp xếp thực đơn theo tên, hiển thị dnh sách thực đơn, ghi danh sách thực
đơn vào file và thốt chương trình.
Cài đặt cấu trúc quản lý bằng cây nhị phân tìm kiếm gồm những chức
năng: thêm thông tin thực đơn, sửa thông tin thực đơn bỏi ID, tìm kiếm thực đơn
theo tên.

CHƯƠNG II: CÀI ĐẶT CẤU TRÚC DỮ LIỆU
I.

Cài đặt cấu trúc quản lý bằng danh sách liên kết
1. Giới thiệu cài đặt cấu trúc quản lý bằng danh sách liên kết

1.1.

Danh sách liên kết đơn
Danh sách liên kết đơn là một tập hợp các Node được phân bố động, được
sắp xếp theo cách sao cho mỗi Node chứa “một giá trị” (Data) và “một con trỏ”
(Next). Con trỏ sẽ trỏ đến phần tử kế tiếp của danh sách liên kết đó. Nếu con trỏ
mà trỏ tới NULL, nghĩa là đó là phần tử cuối cùng của linked list.
1.2. Cấu trúc chương trình của danh sách liên kết

1
2
3
4
5
6
7
8
9


Khái báo thư viện
Khái báo cấu trúc lưu trữ DS
Hàm Khởi tạo
Kiểm tra DS rỗng
Kiễm tra về pt đầu tiên trong DS
Hàm trả vể pt tiếp theo trong DS
Hàm lấy giá trị pt tại vị trí p trong DS
Hàm trả về vị trí cuối trong DS
Hàm chèn pt vào vị trí p trong DS

10
11

Hàm Đọc|Nhập các pt vào DS
Hàm In|Xuất DS ra màn hình

#include …
Void MakeNullList (List *Header)
Int EmptyList (List L)
Position First (List L)
Position Next (Potision P, List L)
ElementType Retrieve (Position P,List L)
Position EndList (List L)
Void InsertList (ElementType X, Position P,
List *L)
Void ReadList (List *L)
Void PrintList (List L)

4

Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
12 Gọi hàm trong chương trình chính

Main() {}

2. Một số hình ảnh minh họa
a. Màn hình chính

b.

Màn hình thêm thực đơn thành cơng:
c. Sửa thơng tin thực đơn bởi ID:

d. Xóa thực đơn bỏi ID:

5
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
e. Tìm kiếm thực đơn theo tên
f. Sắp xếp thực thực đơn theo tên


g. Hiển thị danh thực đơn
h. Ghi danh sách thực đơn vào file

i.
Thốt chương trình:
6
Ts. Huỳnh Lê Minh Un

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
3. Viết Code
#include<conio.h>
#include<stdio.h>
#include <iostream>
#include <string.h>
#define MAX 100
using namespace std;

struct thucdon {
int id;
char tenmon[30];
char maloai[5];
char mamon[5];
int dongia;

};

typedef thucdon TD;


void printLine(int n);
void nhapThongTinTD(TD &td, int id);
void nhapTD(TD a[], int id, int n);
void capNhatThongTinTD(TD &td);
void capNhatTD(TD a[], int id, int n);
int xoaTheoID(TD a[], int id, int n);
void timKiemTheoTen(TD a[], char tenmon[], int n);
void tinhDTB(TD &td);
void xeploai(TD &td);
int idLonNhat(TD a[], int n);
void sapxepTheoDTB(TD a[], int n);
void sapXepTheoTen(TD a[], int n);
void showmenu(TD a[], int n);
int docFile(TD a[], char fileName[]);
void ghiFile(TD a[], int n, char fileName[]);

7
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
void pressAnyKey();

int main() {
int key;
char fileName[] = "thucdon.txt";
TD arrayTD[MAX];

int soluongTD = 0;
int idCount = 0;

// nhap danh sach thuc don tu file
soluongTD = docFile(arrayTD, fileName);
idCount = idLonNhat (arrayTD, soluongTD);

while(true) {
cout << "CHUONG TRINH QUAN LY THUC DON C/C++\n";
cout
<<"*************************MENU**************************\n";
cout << "**

1. Them thuc don.

cout << "**

2. Sua thong tin thuc don boiID.

cout << "**

3. Xoa thuc don boiID.

cout << "**

4. Tim kiem thuc don theo ten.

cout << "**

5. Sap xep thuc dontheo ten.


cout << "**

6. Hien thi danh sach thuc don.

cout << "**

7. Ghi danh sach thuc don vao file.

cout << "**

0.Thoat

**\n";
**\n";

**\n";
**\n";
**\n";
**\n";
**\n";
**\n";
cout
<<"*******************************************************\n";
cout << "Nhap tuy chon: ";
cin >> key;
switch(key){
case 1:
cout << "\n1. Them thuc don.";


8
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
idCount++;
nhapTD(arrayTD, idCount, soluongTD);
printf("\nThem thuc don thanh cong!");
soluongTD++;
pressAnyKey();
break;
cout << "Nhap tuy chon: ";
cin >> key;
case 2:
if(soluongTD > 0) {
int id;
cout << "\n2. Cap nhat thong tin thuc don. ";
cout << "\n Nhap ID: "; cin >> id;
capNhatTD(arrayTD, id, soluongTD);
}else{
cout << "\nDanh sach thuc don trong!";
}
pressAnyKey();
break;
case 3:
if(soluongTD > 0) {
int id;
cout << "\n3. Xoa thuc don.";

cout << "\n Nhap ID: "; cin >> id;
if (xoaTheoID(arrayTD, id, soluongTD) == 1) {
printf("\nthuc don co id = %d da bi xoa.", &id);
soluongTD--;
}
}else{
cout << "\nSanh sach thuc don trong!";
}
pressAnyKey();
break;
case 4:
if(soluongTD > 0) {
cout << "\n4. Tim kiem thuc don theo ten.";

9
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
char strTen[30];
cout << "\nNhap ten de tim kiem: "; fflush(stdin);
gets(strTen);
timKiemTheoTen(arrayTD, strTen, soluongTD);
}else{
cout << "\nDanh sach thuc don trong!";
}
pressAnyKey();
break;

case 5:
if(soluongTD > 0) {
cout << "\n6. Sap xep thuc don theo ten.";
sapXepTheoTen(arrayTD, soluongTD);
showmenu(arrayTD, soluongTD);
} else {
cout << "\nDanh sach thuc don trong!";
}
pressAnyKey();
break;
case 6:
if(soluongTD > 0){
cout << "\n7. Hien thi danh sach thuc don.";
showmenu(arrayTD, soluongTD);
}else{
cout << "\nSanh sach thuc don trong!";
}
pressAnyKey();
break;
case 7:
if(soluongTD > 0){
cout << "\n8. Ghi danh sach thuc don vao file.";
ghiFile(arrayTD, soluongTD, fileName);
}else{
cout << "\nSanh sach thuc don trong!";
}
printf("\nGhi danh sach thuc don vao file %s thanh cong!",
fileName);

10

Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
pressAnyKey();
break;
case 0:
cout << "\nBan da chon thoat chuong trinh!";
getch();
return 0;
default:
cout << "\nKhong co chuc nang nay!";
cout << "\nHay chon chuc nang trong hop menu.";
pressAnyKey();
break;
}
}
}

void nhapThongTinTD(TD &td, int id) {
cout << "\n Nhap ten: "; fflush(stdin); gets(td.tenmon);
cout << " Nhap mamon: "; gets(td.mamon);
cout << " Nhap maloai: "; gets(td.maloai);
cout << " Nhap dongia: "; cin >> td.dongia;
td.id = id;
}

void nhapTD( TD a[], int id, int n) {

printLine(40);
printf("\n Nhap thuc don thu %d:", n + 1);
nhapThongTinTD(a[n], id);
printLine(40);
}

void capNhatThongTinTD(TD &td) {
cout << "\n Nhap tenmon: "; fflush(stdin); gets(td.tenmon);
cout << " Nhap

mamon: "; gets(td.mamon);

cout << " Nhap

maloai: "; gets(td.maloai);

cout << " Nhap dongia: "; cin >> td.dongia;

11
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
}

void capNhatTD(TD a[], int id, int n) {
int found = 0;
for(int i = 0; i < n; i++) {

if (a[i].id == id) {
found = 1;
printLine(40);
cout << "\n Cap nhat thong tin thuc don co ID = " << id;
capNhatThongTinTD(a[i]);
printLine(40);
break;
}
}
if (found == 0) {
printf("\n thuc don co ID = %d khong ton tai.", id);
}
}

int xoaTheoID(TD a[], int id, int n) {
int found = 0;
for(int i = 0; i < n; i++) {
if (a[i].id == id) {
found = 1;
printLine(40);
for (int j = i; j < n; j++) {
a[j] = a[j+1];
}
cout << "\n Da xoa TD co ID = " << id;
printLine(40);
break;
}
}
if (found == 0) {


12
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
printf("\n thuc don co ID = %d khong ton tai.", id);
return 0;
} else {
return 1;
}
}

void timKiemTheoTen(TD a[], char tenmon[], int n) {
TD arrayFound[MAX];
char tenmonTD[30];
int found = 0;
for(int i = 0; i < n; i++) {
strcpy(tenmonTD, a[i].tenmon);
if(strstr(strupr(tenmonTD), strupr(tenmon))) {
arrayFound[found] = a[i];
found++;
}
}
showmenu(arrayFound, found);
}

void showmenu(TD a[], int n) {
printLine(100);

cout <<"\n\STT\tID\tHo va ten\tma mon\tma mon\tdon gia ";
for(int i = 0; i < n; i++) {
// in thuc don thu i ra man hinh
printf("\n %d", i + 1);
printf("\t%d", a[i].id);
printf("\t%s", a[i].tenmon);
printf("\t\t%s", a[i].mamon);
printf("\t\t%s", a[i].maloai);
printf("\t\t%d", a[i].dongia);

}
printLine(100);

13
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
}

void sapXepTheoTen(TD a[], int n) {
//Sap xep don gia theo ten theo thu tu tang dan
TD tmp;
char tenmonTD1[30];
char tenmonTD2[30];
for(int i = 0;i < n; i++) {
strcpy(tenmonTD1, a[i].tenmon);
for(int j = i+1; j < n; j++) {

strcpy(tenmonTD2, a[j].tenmon);
if(strcmp(strupr(tenmonTD1), strupr(tenmonTD2)) > 0) {
tmp = a[i];
a[i] = a[j];
a[j] = tmp;
}
}
}
}

int idLonNhat (TD a[], int n) {
int idMax = 0;
if (n > 0) {
idMax = a[0].id;
for(int i = 0;i < n; i++) {
if (a[i].id > idMax) {
idMax = a[i].id;
}
}
}
return idMax;
}

int docFile(TD a[], char fileName[]) {

14
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An



Quản lý thực đơn tại nhà hàng khách sạn
FILE * fp;
int i = 0;
fp = fopen (fileName, "r");
cout << "Chuan bi doc file: "; puts(fileName);
// doc thong tin thuc don
while (fscanf(fp, "%5d%30s%5s%5d%10s\n", &a[i].id, &a[i].tenmon,
&a[i].mamon, &a[i].dongia, &a[i].maloai) != EOF) {
i++;
cout << " Doc ban ghi thu: " << i << endl;
}
cout << " So luong thuc don co san trong file la: " << i << endl;
cout << endl;
fclose (fp);
// tra ve so luong thuc don duoc doc tu file
return i;
}

void ghiFile(TD a[], int n, char fileName[]) {
FILE * fp;
fp = fopen (fileName,"w");
for(int i = 0;i < n;i++){
fprintf(fp, "%5d%30s%5s%5d%10s\n", a[i].id,
a[i].tenmon,a[i].mamon,
a[i].dongia, a[i].maloai);
}
fclose (fp);
}


void printLine(int n) {
cout << endl;
for (int i = 0; i < n; i++) {
cout << "_";
}
cout << endl;
}

15
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
void pressAnyKey() {
cout << "\n\nBam phim bat ky de tiep tuc...";
getch();
system("cls");
}

CHƯƠNG 4: TỔNG KẾT
1. Kết quả đạt được
Hệ thống quản lý thực đơn nhà hàng đã được thiết kế dựa trên các yêu cầu
cần thiết hiện nay, cũng đáp ứng những nhu cầu cần thiết của việc quản lý nhà
hàng khách sạn. Ứng dụng được những điều đã học vào trong quá trình thực
hiện chương trình, qua đó nắm vững kiến thức lý thuyết cơ bản phục vụ tốt cho
việc thiết kế chương trình.
Sau một khoảng thời gian học tập và nghiên cứu tài liệu trong qua trình
tìm hiểu mơn Cấu trúc dữ liệu nâng cao nhóm đã thiết kế được chương trình

quản lý cơ sở vật chấtbằng danh sách liên kết đơn.
2. Hướng phát triển
Tiếp tục phát triển thực tế nên trong tương lai phần mềm sẽ thực hiện yêu
cầu sau:
- Nâng cấp mơ hình quản lý.
- Bổ sung một số chức năng hiệu chỉnh để người dùng có thể linh động
hơn trong q trình hiệu chỉnh.
Nhóm chúng em sẽ tiếp tục phát triển những sơ đồ khác nữa
Chỉnh sửa những lỗi hiện tại để hoàn thành tốt hơn
TÀI LIỆU THAM KHẢO
1. Nguyên Văn Linh al et. (2003), “Bài giảng cấu trúc dữ liệu”,Đại học Cần
Thơ.
2. Hàn Việt Thuận, Th.s Nguyễn Anh Phương (2018), “Giáo trình cấu trúc dữ
liệu và giải thuật”, NXB Thống kê, TP Hồ Chí Minh.
16
Ts. Huỳnh Lê Minh Uyên

Học viên: Lâm Thúy An


Quản lý thực đơn tại nhà hàng khách sạn
3. Đinh Mạnh Tường (2001), “Cấu trúc dữ liệu và thuật toán”, NXB Khoa học
kỹ thuật, Hà Nội.
4. Hoàng nghĩa Tý (2014), “Cấu trúc dữ liệu và thuật toán”, NXB Khoa học xây
dựng Hà Nội.
5. Học viện cơng nghệ bưu chính viễn thông (2007), “Bài giảng cấu trúc dữ liệu
và giải thuật”, Hà Nội.

17
Ts. Huỳnh Lê Minh Uyên


Học viên: Lâm Thúy An



×