fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <time.h>
  5.  
  6. #define MAX_MENU 50
  7. #define MAX_USERS 100
  8.  
  9. // Structure Definitions
  10. typedef struct {
  11. char name[50];
  12. char ingredients[200];
  13. float price;
  14. } MenuItem;
  15.  
  16. typedef struct {
  17. char username[50];
  18. char password[50];
  19. char address[200];
  20. } User;
  21.  
  22. // Global Variables
  23. MenuItem riceMenu[MAX_MENU], noodleMenu[MAX_MENU], drinkMenu[MAX_MENU], dessertMenu[MAX_MENU], snackMenu[MAX_MENU];
  24. int riceCount = 0, noodleCount = 0, drinkCount = 0, dessertCount = 0, snackCount = 0;
  25. User users[MAX_USERS];
  26. int userCount = 0;
  27. int loggedInUser = -1;
  28.  
  29. // Function Declarations
  30. void initializeMenus();
  31. void showMenu(MenuItem menu[], int count, const char *category);
  32. void customizeOrder(MenuItem *item);
  33. void orderFood(MenuItem menu[], int count);
  34. void login();
  35. void signup();
  36. void checkout(float total);
  37. void randomSuggestion();
  38.  
  39. // Main Function
  40. int main() {
  41. int choice;
  42. initializeMenus();
  43.  
  44. printf("\n=== ระบบสั่งอาหาร ===\n");
  45.  
  46. while (1) {
  47. if (loggedInUser == -1) {
  48. printf("กรุณาเข้าสู่ระบบก่อนใช้งาน\n");
  49. printf("1. ล็อกอิน\n2. สมัครสมาชิก\n3. ออกจากโปรแกรม\n");
  50. printf("เลือกตัวเลือก: ");
  51. scanf("%d", &choice);
  52.  
  53. if (choice == 1) {
  54. login();
  55. } else if (choice == 2) {
  56. signup();
  57. } else if (choice == 3) {
  58. printf("ขอบคุณที่ใช้บริการ\n");
  59. break;
  60. } else {
  61. printf("ตัวเลือกไม่ถูกต้อง\n");
  62. }
  63. } else {
  64. printf("\n--- เมนูหลัก ---\n");
  65. printf("1. ดูเมนูข้าว\n2. ดูเมนูเส้น\n3. ดูเมนูน้ำดื่ม\n4. ดูเมนูของหวาน\n5. ดูเมนูของทานเล่น\n6. สุ่มอาหาร\n7. ออกจากระบบ\n");
  66. printf("เลือกตัวเลือก: ");
  67. scanf("%d", &choice);
  68.  
  69. if (choice >= 1 && choice <= 5) {
  70. MenuItem *menu;
  71. int count;
  72. const char *category;
  73.  
  74. switch (choice) {
  75. case 1:
  76. menu = riceMenu;
  77. count = riceCount;
  78. category = "ข้าว";
  79. break;
  80. case 2:
  81. menu = noodleMenu;
  82. count = noodleCount;
  83. category = "เส้น";
  84. break;
  85. case 3:
  86. menu = drinkMenu;
  87. count = drinkCount;
  88. category = "น้ำดื่ม";
  89. break;
  90. case 4:
  91. menu = dessertMenu;
  92. count = dessertCount;
  93. category = "ของหวาน";
  94. break;
  95. case 5:
  96. menu = snackMenu;
  97. count = snackCount;
  98. category = "ของทานเล่น";
  99. break;
  100. }
  101.  
  102. showMenu(menu, count, category);
  103. orderFood(menu, count);
  104.  
  105. } else if (choice == 6) {
  106. randomSuggestion();
  107. } else if (choice == 7) {
  108. loggedInUser = -1;
  109. printf("ออกจากระบบสำเร็จ\n");
  110. } else {
  111. printf("ตัวเลือกไม่ถูกต้อง\n");
  112. }
  113. }
  114. }
  115.  
  116. return 0;
  117. }
  118.  
  119. // Function Implementations
  120. void initializeMenus() {
  121. strcpy(riceMenu[0].name, "ข้าวผัดหมู");
  122. strcpy(riceMenu[0].ingredients, "ข้าว, หมู, ไข่, หอมใหญ่, ซอสปรุงรส");
  123. riceMenu[0].price = 50;
  124. riceCount++;
  125.  
  126. strcpy(noodleMenu[0].name, "ก๋วยเตี๋ยวเรือ");
  127. strcpy(noodleMenu[0].ingredients, "เส้นเล็ก, เนื้อหมู, ต้นหอม, ถั่วงอก, น้ำซุป");
  128. noodleMenu[0].price = 40;
  129. noodleCount++;
  130.  
  131. strcpy(drinkMenu[0].name, "ชาไทย");
  132. strcpy(drinkMenu[0].ingredients, "ชา, นม, น้ำแข็ง");
  133. drinkMenu[0].price = 25;
  134. drinkCount++;
  135.  
  136. strcpy(dessertMenu[0].name, "บัวลอย");
  137. strcpy(dessertMenu[0].ingredients, "แป้งข้าวเหนียว, น้ำกะทิ, น้ำตาล");
  138. dessertMenu[0].price = 30;
  139. dessertCount++;
  140.  
  141. strcpy(snackMenu[0].name, "ปอเปี๊ยะทอด");
  142. strcpy(snackMenu[0].ingredients, "แป้งปอเปี๊ยะ, ผัก, วุ้นเส้น");
  143. snackMenu[0].price = 35;
  144. snackCount++;
  145. }
  146.  
  147. void showMenu(MenuItem menu[], int count, const char *category) {
  148. printf("\n--- เมนู%s ---\n", category);
  149. for (int i = 0; i < count; i++) {
  150. printf("%d. %s (%.2f บาท)\nส่วนประกอบ: %s\n", i + 1, menu[i].name, menu[i].price, menu[i].ingredients);
  151. }
  152. }
  153.  
  154. void customizeOrder(MenuItem *item) {
  155. int choice;
  156. printf("\nคุณต้องการเพิ่มหรือลดส่วนประกอบของ %s หรือไม่?\n", item->name);
  157. printf("1. เพิ่มส่วนประกอบ\n2. ลดส่วนประกอบ\n3. ไม่ปรับแต่ง\nเลือกตัวเลือก: ");
  158. scanf("%d", &choice);
  159.  
  160. if (choice == 1) {
  161. char extra[50];
  162. printf("ป้อนส่วนประกอบที่ต้องการเพิ่ม: ");
  163. scanf("%s", extra);
  164. strcat(item->ingredients, ", ");
  165. strcat(item->ingredients, extra);
  166. item->price += 5;
  167. printf("เพิ่ม %s สำเร็จ ราคาใหม่: %.2f บาท\n", extra, item->price);
  168. } else if (choice == 2) {
  169. char remove[50];
  170. printf("ป้อนส่วนประกอบที่ต้องการลด: ");
  171. scanf("%s", remove);
  172. item->price -= 5;
  173. printf("ลด %s สำเร็จ ราคาใหม่: %.2f บาท\n", remove, item->price);
  174. }
  175. }
  176.  
  177. void orderFood(MenuItem menu[], int count) {
  178. int menuChoice;
  179. float total = 0;
  180. printf("\nเลือกเมนูที่ต้องการ (0 เพื่อเสร็จสิ้น): ");
  181.  
  182. while (1) {
  183. scanf("%d", &menuChoice);
  184.  
  185. if (menuChoice == 0) {
  186. break;
  187. }
  188.  
  189. if (menuChoice > 0 && menuChoice <= count) {
  190. MenuItem *item = &menu[menuChoice - 1];
  191. customizeOrder(item);
  192. total += item->price;
  193. } else {
  194. printf("ตัวเลือกไม่ถูกต้อง\n");
  195. }
  196. }
  197.  
  198. checkout(total);
  199. }
  200.  
  201. void login() {
  202. char username[50], password[50];
  203. printf("\n--- ล็อกอิน ---\n");
  204. printf("ชื่อผู้ใช้: ");
  205. scanf("%s", username);
  206. printf("รหัสผ่าน: ");
  207. scanf("%s", password);
  208.  
  209. for (int i = 0; i < userCount; i++) {
  210. if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
  211. loggedInUser = i;
  212. printf("เข้าสู่ระบบสำเร็จ\n");
  213. return;
  214. }
  215. }
  216.  
  217. printf("ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง\n");
  218. }
  219.  
  220. void signup() {
  221. char username[50], password[50], address[200];
  222. printf("\n--- สมัครสมาชิก ---\n");
  223. printf("ชื่อผู้ใช้: ");
  224. scanf("%s", username);
  225. printf("รหัสผ่าน: ");
  226. scanf("%s", password);
  227. printf("ที่อยู่: ");
  228. scanf("%s", address);
  229.  
  230. strcpy(users[userCount].username, username);
  231. strcpy(users[userCount].password, password);
  232. strcpy(users[userCount].address, address);
  233. userCount++;
  234.  
  235. printf("สมัครสมาชิกสำเร็จ\n");
  236. }
  237.  
  238. void checkout(float total) {
  239. printf("\nยอดรวมทั้งหมด: %.2f บาท\n", total);
  240. printf("ส่งไปที่: %s\n", users[loggedInUser].address);
  241. printf("ขอบคุณที่ใช้บริการ\n");
  242. }
  243.  
  244. void randomSuggestion() {
  245. srand(time(NULL));
  246. int category = rand() % 5;
  247. MenuItem *menu;
  248. int count;
  249.  
  250. switch (category) {
  251. case 0:
  252. menu = riceMenu;
  253. count = riceCount;
  254. break;
  255. case 1:
  256. menu = noodleMenu;
  257. count = noodleCount;
  258. break;
  259. case 2:
  260. menu = drinkMenu;
  261. count = drinkCount;
  262. break;
  263. case 3:
  264. menu = dessertMenu;
  265. count = dessertCount;
  266. break;
  267. case 4:
  268. menu = snackMenu;
  269. count = snackCount;
  270. break;
  271. }
  272.  
  273. int randomIndex = rand() % count;
  274. printf("\nเมนูแนะนำ: %s (%.2f บาท)\nส่วนประกอบ: %s\n", menu[randomIndex].name, menu[randomIndex].price, menu[randomIndex].ingredients);
  275.  
Success #stdin #stdout 0.02s 25908KB
stdin
Standard input is empty
stdout
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

#define MAX_MENU 50
#define MAX_USERS 100

// Structure Definitions
typedef struct {
    char name[50];
    char ingredients[200];
    float price;
} MenuItem;

typedef struct {
    char username[50];
    char password[50];
    char address[200];
} User;

// Global Variables
MenuItem riceMenu[MAX_MENU], noodleMenu[MAX_MENU], drinkMenu[MAX_MENU], dessertMenu[MAX_MENU], snackMenu[MAX_MENU];
int riceCount = 0, noodleCount = 0, drinkCount = 0, dessertCount = 0, snackCount = 0;
User users[MAX_USERS];
int userCount = 0;
int loggedInUser = -1;

// Function Declarations
void initializeMenus();
void showMenu(MenuItem menu[], int count, const char *category);
void customizeOrder(MenuItem *item);
void orderFood(MenuItem menu[], int count);
void login();
void signup();
void checkout(float total);
void randomSuggestion();

// Main Function
int main() {
    int choice;
    initializeMenus();

    printf("\n=== ระบบสั่งอาหาร ===\n");

    while (1) {
        if (loggedInUser == -1) {
            printf("กรุณาเข้าสู่ระบบก่อนใช้งาน\n");
            printf("1. ล็อกอิน\n2. สมัครสมาชิก\n3. ออกจากโปรแกรม\n");
            printf("เลือกตัวเลือก: ");
            scanf("%d", &choice);

            if (choice == 1) {
                login();
            } else if (choice == 2) {
                signup();
            } else if (choice == 3) {
                printf("ขอบคุณที่ใช้บริการ\n");
                break;
            } else {
                printf("ตัวเลือกไม่ถูกต้อง\n");
            }
        } else {
            printf("\n--- เมนูหลัก ---\n");
            printf("1. ดูเมนูข้าว\n2. ดูเมนูเส้น\n3. ดูเมนูน้ำดื่ม\n4. ดูเมนูของหวาน\n5. ดูเมนูของทานเล่น\n6. สุ่มอาหาร\n7. ออกจากระบบ\n");
            printf("เลือกตัวเลือก: ");
            scanf("%d", &choice);

            if (choice >= 1 && choice <= 5) {
                MenuItem *menu;
                int count;
                const char *category;

                switch (choice) {
                    case 1:
                        menu = riceMenu;
                        count = riceCount;
                        category = "ข้าว";
                        break;
                    case 2:
                        menu = noodleMenu;
                        count = noodleCount;
                        category = "เส้น";
                        break;
                    case 3:
                        menu = drinkMenu;
                        count = drinkCount;
                        category = "น้ำดื่ม";
                        break;
                    case 4:
                        menu = dessertMenu;
                        count = dessertCount;
                        category = "ของหวาน";
                        break;
                    case 5:
                        menu = snackMenu;
                        count = snackCount;
                        category = "ของทานเล่น";
                        break;
                }

                showMenu(menu, count, category);
                orderFood(menu, count);

            } else if (choice == 6) {
                randomSuggestion();
            } else if (choice == 7) {
                loggedInUser = -1;
                printf("ออกจากระบบสำเร็จ\n");
            } else {
                printf("ตัวเลือกไม่ถูกต้อง\n");
            }
        }
    }

    return 0;
}

// Function Implementations
void initializeMenus() {
    strcpy(riceMenu[0].name, "ข้าวผัดหมู");
    strcpy(riceMenu[0].ingredients, "ข้าว, หมู, ไข่, หอมใหญ่, ซอสปรุงรส");
    riceMenu[0].price = 50;
    riceCount++;

    strcpy(noodleMenu[0].name, "ก๋วยเตี๋ยวเรือ");
    strcpy(noodleMenu[0].ingredients, "เส้นเล็ก, เนื้อหมู, ต้นหอม, ถั่วงอก, น้ำซุป");
    noodleMenu[0].price = 40;
    noodleCount++;

    strcpy(drinkMenu[0].name, "ชาไทย");
    strcpy(drinkMenu[0].ingredients, "ชา, นม, น้ำแข็ง");
    drinkMenu[0].price = 25;
    drinkCount++;

    strcpy(dessertMenu[0].name, "บัวลอย");
    strcpy(dessertMenu[0].ingredients, "แป้งข้าวเหนียว, น้ำกะทิ, น้ำตาล");
    dessertMenu[0].price = 30;
    dessertCount++;

    strcpy(snackMenu[0].name, "ปอเปี๊ยะทอด");
    strcpy(snackMenu[0].ingredients, "แป้งปอเปี๊ยะ, ผัก, วุ้นเส้น");
    snackMenu[0].price = 35;
    snackCount++;
}

void showMenu(MenuItem menu[], int count, const char *category) {
    printf("\n--- เมนู%s ---\n", category);
    for (int i = 0; i < count; i++) {
        printf("%d. %s (%.2f บาท)\nส่วนประกอบ: %s\n", i + 1, menu[i].name, menu[i].price, menu[i].ingredients);
    }
}

void customizeOrder(MenuItem *item) {
    int choice;
    printf("\nคุณต้องการเพิ่มหรือลดส่วนประกอบของ %s หรือไม่?\n", item->name);
    printf("1. เพิ่มส่วนประกอบ\n2. ลดส่วนประกอบ\n3. ไม่ปรับแต่ง\nเลือกตัวเลือก: ");
    scanf("%d", &choice);

    if (choice == 1) {
        char extra[50];
        printf("ป้อนส่วนประกอบที่ต้องการเพิ่ม: ");
        scanf("%s", extra);
        strcat(item->ingredients, ", ");
        strcat(item->ingredients, extra);
        item->price += 5;
        printf("เพิ่ม %s สำเร็จ ราคาใหม่: %.2f บาท\n", extra, item->price);
    } else if (choice == 2) {
        char remove[50];
        printf("ป้อนส่วนประกอบที่ต้องการลด: ");
        scanf("%s", remove);
        item->price -= 5;
        printf("ลด %s สำเร็จ ราคาใหม่: %.2f บาท\n", remove, item->price);
    }
}

void orderFood(MenuItem menu[], int count) {
    int menuChoice;
    float total = 0;
    printf("\nเลือกเมนูที่ต้องการ (0 เพื่อเสร็จสิ้น): ");

    while (1) {
        scanf("%d", &menuChoice);

        if (menuChoice == 0) {
            break;
        }

        if (menuChoice > 0 && menuChoice <= count) {
            MenuItem *item = &menu[menuChoice - 1];
            customizeOrder(item);
            total += item->price;
        } else {
            printf("ตัวเลือกไม่ถูกต้อง\n");
        }
    }

    checkout(total);
}

void login() {
    char username[50], password[50];
    printf("\n--- ล็อกอิน ---\n");
    printf("ชื่อผู้ใช้: ");
    scanf("%s", username);
    printf("รหัสผ่าน: ");
    scanf("%s", password);

    for (int i = 0; i < userCount; i++) {
        if (strcmp(users[i].username, username) == 0 && strcmp(users[i].password, password) == 0) {
            loggedInUser = i;
            printf("เข้าสู่ระบบสำเร็จ\n");
            return;
        }
    }

    printf("ชื่อผู้ใช้หรือรหัสผ่านไม่ถูกต้อง\n");
}

void signup() {
    char username[50], password[50], address[200];
    printf("\n--- สมัครสมาชิก ---\n");
    printf("ชื่อผู้ใช้: ");
    scanf("%s", username);
    printf("รหัสผ่าน: ");
    scanf("%s", password);
    printf("ที่อยู่: ");
    scanf("%s", address);

    strcpy(users[userCount].username, username);
    strcpy(users[userCount].password, password);
    strcpy(users[userCount].address, address);
    userCount++;

    printf("สมัครสมาชิกสำเร็จ\n");
}

void checkout(float total) {
    printf("\nยอดรวมทั้งหมด: %.2f บาท\n", total);
    printf("ส่งไปที่: %s\n", users[loggedInUser].address);
    printf("ขอบคุณที่ใช้บริการ\n");
}

void randomSuggestion() {
    srand(time(NULL));
    int category = rand() % 5;
    MenuItem *menu;
    int count;

    switch (category) {
        case 0:
            menu = riceMenu;
            count = riceCount;
            break;
        case 1:
            menu = noodleMenu;
            count = noodleCount;
            break;
        case 2:
            menu = drinkMenu;
            count = drinkCount;
            break;
        case 3:
            menu = dessertMenu;
            count = dessertCount;
            break;
        case 4:
            menu = snackMenu;
            count = snackCount;
            break;
    }

    int randomIndex = rand() % count;
    printf("\nเมนูแนะนำ: %s (%.2f บาท)\nส่วนประกอบ: %s\n", menu[randomIndex].name, menu[randomIndex].price, menu[randomIndex].ingredients);