#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
void loadCSV() {
if (!fp) return;
while (fscanf(fp
, "%49[^,],%49[^,],%19[^,],%d\n",booker
[count], package
[count], date[count], &people
[count]) == 4) { }
}
void saveCSV() {
for (int i
= 0; i
< count; i
++) { fprintf(fp
, "%s,%s,%s,%d\n", booker
[i
], package
[i
], date[i
], people
[i
]); }
}
void displayAll() {
for (int i
= 0; i
< count; i
++) { printf("%d. %s | %s | %s | %d คน\n",i
+ 1, booker
[i
], package
[i
], date[i
], people
[i
]); }
}
void addBooking() {
scanf
(" %[^\n]", booker
[count]); scanf
(" %[^\n]", package
[count]); scanf
("%d", &people
[count]); saveCSV();
}
void searchBooking() {
char name[50];
printf("กรอกชื่อที่ต้องการค้นหา: "); scanf(" %[^\n]", name);
for (int i
= 0; i
< count; i
++) { if (strcmp(booker
[i
], name
) == 0) { printf("เจอ: %s | %s | %s | %d คน\n", booker
[i
], package
[i
], date[i
], people
[i
]); return;
}
}
}
void updateBooking() {
char name[50];
printf("กรอกชื่อที่ต้องการแก้ไข: "); scanf(" %[^\n]", name);
for (int i
= 0; i
< count; i
++) { if (strcmp(booker
[i
], name
) == 0) { scanf("%d", &people[i]);
saveCSV();
return;
}
}
}
void deleteBooking() {
char name[50];
printf("กรอกชื่อที่ต้องการลบ: "); scanf(" %[^\n]", name);
for (int i
= 0; i
< count; i
++) { if (strcmp(booker
[i
], name
) == 0) { for (int j
= i
; j
< count - 1; j
++) { strcpy(booker[j], booker[j + 1]);
strcpy(package[j], package[j + 1]);
people[j] = people[j + 1];
}
count--;
saveCSV();
return;
}
}
}
void menu() {
int ch;
do {
printf("\n===== เมนูจองทัวร์ =====\n"); printf("1. แสดงข้อมูลทั้งหมด\n"); printf("2. เพิ่มข้อมูลการจอง\n"); scanf("%d", &ch);
switch (ch) {
case 1: displayAll(); break;
case 2: addBooking(); break;
case 3: searchBooking(); break;
case 4: updateBooking(); break;
case 5: deleteBooking(); break;
}
} while (ch != 0);
}
int main() {
loadCSV();
menu();
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0cmluZy5oPgoKI2RlZmluZSBNQVggMTAwCgpjaGFyIGJvb2tlcltNQVhdWzUwXTsKY2hhciBwYWNrYWdlW01BWF1bNTBdOwpjaGFyIGRhdGVbTUFYXVsyMF07CmludCBwZW9wbGVbTUFYXTsKaW50IGNvdW50ID0gMDsKCnZvaWQgbG9hZENTVigpIHsKICAgIEZJTEUgKmZwID0gZm9wZW4oImJvb2tpbmcuY3N2IiwgInIiKTsKICAgIGlmICghZnApIHJldHVybjsKCiAgICB3aGlsZSAoZnNjYW5mKGZwLCAiJTQ5W14sXSwlNDlbXixdLCUxOVteLF0sJWRcbiIsYm9va2VyW2NvdW50XSwgcGFja2FnZVtjb3VudF0sIGRhdGVbY291bnRdLCAmcGVvcGxlW2NvdW50XSkgPT0gNCkgewogICAgICAgIGNvdW50Kys7CiAgICB9CiAgICBmY2xvc2UoZnApOwp9Cgp2b2lkIHNhdmVDU1YoKSB7CiAgICBGSUxFICpmcCA9IGZvcGVuKCJib29raW5nLmNzdiIsICJ3Iik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKyspIHsKICAgICAgICBmcHJpbnRmKGZwLCAiJXMsJXMsJXMsJWRcbiIsIGJvb2tlcltpXSwgcGFja2FnZVtpXSwgZGF0ZVtpXSwgcGVvcGxlW2ldKTsKICAgIH0KICAgIGZjbG9zZShmcCk7Cn0KCnZvaWQgZGlzcGxheUFsbCgpIHsKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgIHByaW50ZigiJWQuICVzIHwgJXMgfCAlcyB8ICVkIOC4hOC4mVxuIixpICsgMSwgYm9va2VyW2ldLCBwYWNrYWdlW2ldLCBkYXRlW2ldLCBwZW9wbGVbaV0pOwogICAgfQp9Cgp2b2lkIGFkZEJvb2tpbmcoKSB7CiAgICBwcmludGYoIuC4iuC4t+C5iOC4reC4peC4ueC4geC4hOC5ieC4sjogIik7CiAgICBzY2FuZigiICVbXlxuXSIsIGJvb2tlcltjb3VudF0pOwogICAgcHJpbnRmKCLguYHguJ7guYfguITguYDguIHguIjguJfguLHguKfguKPguYw6ICIpOwogICAgc2NhbmYoIiAlW15cbl0iLCBwYWNrYWdlW2NvdW50XSk7CiAgICBwcmludGYoIuC4p+C4seC4meC4l+C4teC5iOC4iOC4reC4hzogIik7CiAgICBzY2FuZigiICVbXlxuXSIsIGRhdGVbY291bnRdKTsKICAgIHByaW50Zigi4LiI4Liz4LiZ4Lin4LiZ4LiE4LiZOiAiKTsKICAgIHNjYW5mKCIlZCIsICZwZW9wbGVbY291bnRdKTsKICAgIGNvdW50Kys7CiAgICBzYXZlQ1NWKCk7Cn0KCnZvaWQgc2VhcmNoQm9va2luZygpIHsKICAgIGNoYXIgbmFtZVs1MF07CiAgICBwcmludGYoIuC4geC4o+C4reC4geC4iuC4t+C5iOC4reC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o+C4hOC5ieC4meC4q+C4sjogIik7CiAgICBzY2FuZigiICVbXlxuXSIsIG5hbWUpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoYm9va2VyW2ldLCBuYW1lKSA9PSAwKSB7CiAgICAgICAgICAgIHByaW50Zigi4LmA4LiI4LitOiAlcyB8ICVzIHwgJXMgfCAlZCDguITguJlcbiIsIGJvb2tlcltpXSwgcGFja2FnZVtpXSwgZGF0ZVtpXSwgcGVvcGxlW2ldKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgIH0KICAgIHByaW50Zigi4LmE4Lih4LmI4Lie4Lia4LiC4LmJ4Lit4Lih4Li54LilXG4iKTsKfQoKdm9pZCB1cGRhdGVCb29raW5nKCkgewogICAgY2hhciBuYW1lWzUwXTsKICAgIHByaW50Zigi4LiB4Lij4Lit4LiB4LiK4Li34LmI4Lit4LiX4Li14LmI4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmB4LiB4LmJ4LmE4LiCOiAiKTsKICAgIHNjYW5mKCIgJVteXG5dIiwgbmFtZSk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CiAgICAgICAgaWYgKHN0cmNtcChib29rZXJbaV0sIG5hbWUpID09IDApIHsKICAgICAgICAgICAgcHJpbnRmKCLguIjguLPguJnguKfguJnguITguJnguYPguKvguKHguYg6ICIpOwogICAgICAgICAgICBzY2FuZigiJWQiLCAmcGVvcGxlW2ldKTsKICAgICAgICAgICAgc2F2ZUNTVigpOwogICAgICAgICAgICBwcmludGYoIuC4reC4seC4nuC5gOC4lOC4l+C5gOC4o+C4teC4ouC4muC4o+C5ieC4reC4olxuIik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICB9CiAgICBwcmludGYoIuC5hOC4oeC5iOC4nuC4muC4guC5ieC4reC4oeC4ueC4pVxuIik7Cn0KCnZvaWQgZGVsZXRlQm9va2luZygpIHsKICAgIGNoYXIgbmFtZVs1MF07CiAgICBwcmludGYoIuC4geC4o+C4reC4geC4iuC4t+C5iOC4reC4l+C4teC5iOC4leC5ieC4reC4h+C4geC4suC4o+C4peC4mjogIik7CiAgICBzY2FuZigiICVbXlxuXSIsIG5hbWUpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewogICAgICAgIGlmIChzdHJjbXAoYm9va2VyW2ldLCBuYW1lKSA9PSAwKSB7CiAgICAgICAgICAgIGZvciAoaW50IGogPSBpOyBqIDwgY291bnQgLSAxOyBqKyspIHsKICAgICAgICAgICAgICAgIHN0cmNweShib29rZXJbal0sIGJvb2tlcltqICsgMV0pOwogICAgICAgICAgICAgICAgc3RyY3B5KHBhY2thZ2Vbal0sIHBhY2thZ2VbaiArIDFdKTsKICAgICAgICAgICAgICAgIHN0cmNweShkYXRlW2pdLCBkYXRlW2ogKyAxXSk7CiAgICAgICAgICAgICAgICBwZW9wbGVbal0gPSBwZW9wbGVbaiArIDFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNvdW50LS07CiAgICAgICAgICAgIHNhdmVDU1YoKTsKICAgICAgICAgICAgcHJpbnRmKCLguKXguJrguYDguKPguLXguKLguJrguKPguYnguK3guKJcbiIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgcHJpbnRmKCLguYTguKHguYjguJ7guJrguILguYnguK3guKHguLnguKVcbiIpOwp9Cgp2b2lkIG1lbnUoKSB7CiAgICBpbnQgY2g7CiAgICBkbyB7CiAgICAgICAgcHJpbnRmKCJcbj09PT09IOC5gOC4oeC4meC4ueC4iOC4reC4h+C4l+C4seC4p+C4o+C5jCA9PT09PVxuIik7CiAgICAgICAgcHJpbnRmKCIxLiDguYHguKrguJTguIfguILguYnguK3guKHguLnguKXguJfguLHguYnguIfguKvguKHguJRcbiIpOwogICAgICAgIHByaW50ZigiMi4g4LmA4Lie4Li04LmI4Lih4LiC4LmJ4Lit4Lih4Li54Lil4LiB4Liy4Lij4LiI4Lit4LiHXG4iKTsKICAgICAgICBwcmludGYoIjMuIOC4hOC5ieC4meC4q+C4suC4guC5ieC4reC4oeC4ueC4pVxuIik7CiAgICAgICAgcHJpbnRmKCI0LiDguYHguIHguYnguYTguILguIjguLPguJnguKfguJnguITguJlcbiIpOwogICAgICAgIHByaW50ZigiNS4g4Lil4Lia4LiC4LmJ4Lit4Lih4Li54LilXG4iKTsKICAgICAgICBwcmludGYoIjAuIOC4reC4reC4gVxuIik7CiAgICAgICAgcHJpbnRmKCLguYDguKXguLfguK3guIE6ICIpOwogICAgICAgIHNjYW5mKCIlZCIsICZjaCk7CgogICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgY2FzZSAxOiBkaXNwbGF5QWxsKCk7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDI6IGFkZEJvb2tpbmcoKTsgYnJlYWs7CiAgICAgICAgICAgIGNhc2UgMzogc2VhcmNoQm9va2luZygpOyBicmVhazsKICAgICAgICAgICAgY2FzZSA0OiB1cGRhdGVCb29raW5nKCk7IGJyZWFrOwogICAgICAgICAgICBjYXNlIDU6IGRlbGV0ZUJvb2tpbmcoKTsgYnJlYWs7CiAgICAgICAgfQogICAgfSB3aGlsZSAoY2ggIT0gMCk7Cn0KCmludCBtYWluKCkgewogICAgbG9hZENTVigpOwogICAgbWVudSgpOwogICAgcmV0dXJuIDA7Cn0KCgoK
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 100
char booker[MAX][50];
char package[MAX][50];
char date[MAX][20];
int people[MAX];
int count = 0;
void loadCSV() {
FILE *fp = fopen("booking.csv", "r");
if (!fp) return;
while (fscanf(fp, "%49[^,],%49[^,],%19[^,],%d\n",booker[count], package[count], date[count], &people[count]) == 4) {
count++;
}
fclose(fp);
}
void saveCSV() {
FILE *fp = fopen("booking.csv", "w");
for (int i = 0; i < count; i++) {
fprintf(fp, "%s,%s,%s,%d\n", booker[i], package[i], date[i], people[i]);
}
fclose(fp);
}
void displayAll() {
for (int i = 0; i < count; i++) {
printf("%d. %s | %s | %s | %d คน\n",i + 1, booker[i], package[i], date[i], people[i]);
}
}
void addBooking() {
printf("ชื่อลูกค้า: ");
scanf(" %[^\n]", booker[count]);
printf("แพ็คเกจทัวร์: ");
scanf(" %[^\n]", package[count]);
printf("วันที่จอง: ");
scanf(" %[^\n]", date[count]);
printf("จำนวนคน: ");
scanf("%d", &people[count]);
count++;
saveCSV();
}
void searchBooking() {
char name[50];
printf("กรอกชื่อที่ต้องการค้นหา: ");
scanf(" %[^\n]", name);
for (int i = 0; i < count; i++) {
if (strcmp(booker[i], name) == 0) {
printf("เจอ: %s | %s | %s | %d คน\n", booker[i], package[i], date[i], people[i]);
return;
}
}
printf("ไม่พบข้อมูล\n");
}
void updateBooking() {
char name[50];
printf("กรอกชื่อที่ต้องการแก้ไข: ");
scanf(" %[^\n]", name);
for (int i = 0; i < count; i++) {
if (strcmp(booker[i], name) == 0) {
printf("จำนวนคนใหม่: ");
scanf("%d", &people[i]);
saveCSV();
printf("อัพเดทเรียบร้อย\n");
return;
}
}
printf("ไม่พบข้อมูล\n");
}
void deleteBooking() {
char name[50];
printf("กรอกชื่อที่ต้องการลบ: ");
scanf(" %[^\n]", name);
for (int i = 0; i < count; i++) {
if (strcmp(booker[i], name) == 0) {
for (int j = i; j < count - 1; j++) {
strcpy(booker[j], booker[j + 1]);
strcpy(package[j], package[j + 1]);
strcpy(date[j], date[j + 1]);
people[j] = people[j + 1];
}
count--;
saveCSV();
printf("ลบเรียบร้อย\n");
return;
}
}
printf("ไม่พบข้อมูล\n");
}
void menu() {
int ch;
do {
printf("\n===== เมนูจองทัวร์ =====\n");
printf("1. แสดงข้อมูลทั้งหมด\n");
printf("2. เพิ่มข้อมูลการจอง\n");
printf("3. ค้นหาข้อมูล\n");
printf("4. แก้ไขจำนวนคน\n");
printf("5. ลบข้อมูล\n");
printf("0. ออก\n");
printf("เลือก: ");
scanf("%d", &ch);
switch (ch) {
case 1: displayAll(); break;
case 2: addBooking(); break;
case 3: searchBooking(); break;
case 4: updateBooking(); break;
case 5: deleteBooking(); break;
}
} while (ch != 0);
}
int main() {
loadCSV();
menu();
return 0;
}