Closed SoejeongWoo closed 1 year ago
완전한 코드구현은 아직이지만 계획했던 아이디어 대부분 실행되는 코드입니다. (메뉴관리에서 수정과 삭제 부분의 코드는 아직 더 짜야할 것 같습니다. )
수정된 부분-> 사용자와 이용자가 사용할 수 있는 메뉴를 구분하였습니다. 사용자 매뉴랑 관리자 메뉴로 두개로 나누어서 사용자면 사용자모드 관리자면 관리자 모드 두개로 나누워서 사용자가 매뉴를 수정하거나 추가하거나 삭제할 수 있는 능력을 주는 것이 아닌 주문만할 수 있도록 하게 짜보았습니다.
[dietrev.c] 라는 파일명으로 올려두었습니다.
include
include
include
define MENU_SIZE 50
define BUFFER_SIZE 50
typedef struct { char name[BUFFER_SIZE]; // 이름 int type; // 종류 (1.샐러드 2.라이스 3.면 4.빵 5.음료) int price; // 가격 double calorie; // 칼로리 }Product;
int adminMenu(); // int userMenu(); // int selectMode(); // 관리자 모드인지 사용자 모드인지 입력받을 함수 int selectProductMenu(); int getCalorie(); int selectProduct(Product p[], int productMenu); int selectProductByCategoryAndCalorie(Product p[], int productMenu, int calorie); int createProduct(Product p); // 제품을 추가하는 함수 => 메뉴 선택 void readProduct(Product p); // 하나의 제품 출력 함수 => 구매 목록 보기 int updateProduct(Product p); // 제품을 수정하는 함수 => 구매 목록 수정 int deleteProduct(Product p[], int count); // 제품을 삭제하는 함수 => 구매 취소 [환불] void saveProduct(Product *p[], int count); //데이터를 파일에 저장 하는 함수 int loadProduct(Product *p); // 저장된 데이터를 불러오는 함수 int selectDataNo(Product p[], int count); // 수정, 삭제 할 번호 선택하는 함수 void listProduct(Product *p[], int count); // 제품 리스트 출력
// void searchProductTypeAndCalories(Product *p[], int count); // 메뉴 종류, 칼로리 검색
char categoryNames[5][100] = { "샐러드", "라이스", "면", "빵", "음료" };
int main(){ Product *sp[MENU_SIZE] = {0};
}
int getCalorie() { int calorie; printf("칼로리를 입력해주세요: "); scanf("%d", &calorie); return calorie; }
int selectProduct(Product *p[], int productMenu) { int index = 0; int menu; printf("0. 칼로리 선택\n"); int number = 1;
}
int selectProductByCategoryAndCalorie(Product *p[], int productMenu, int calorie) { int index = 0; int menu; int number = 1;
}
int selectProductMenu() { int productMenu; printf("\n 다이어트 식당 메뉴 \n"); printf("1. 샐러드\n"); printf("2. 라이스\n"); printf("3. 면\n"); printf("4. 빵\n"); printf("5. 음료\n\n"); printf("=> 원하는 메뉴는? "); scanf("%d", &productMenu); return productMenu; }
int selectMode(){ int mode; printf("\n 모드 선택 \n"); printf("1. 사용자 모드\n"); printf("2. 관리자 모드\n"); printf("0. 종료\n\n"); printf("=> 원하는 메뉴는? "); scanf("%d", &mode); return mode; }
int userMenu(){ int menu; printf("\n 사용자 메뉴 \n"); printf("1. 메뉴 종류 + 칼로리 검색\n"); printf("0. 종료\n\n"); printf("=> 원하는 메뉴는? "); scanf("%d", &menu); return menu; }
int adminMenu(){ int menu; printf("\n 메뉴 관리 \n"); printf("1. 추가\n"); printf("2. 수정\n"); printf("3. 삭제\n"); printf("4. 저장\n"); printf("0. 종료\n\n"); printf("=> 원하는 메뉴는? "); scanf("%d", &menu); return menu; }
int selectDataNo(Product *p[], int count){ int no; listProduct(p, count); printf("번호는 (취소:0)? "); scanf("%d", &no); return no; }
int createProduct(Product p){ printf("메뉴 종류는? (1.샐러드 2.라이스 3.면 4.빵 5.음료) "); scanf("%d", &p->type); getchar(); // 엔터 제거 printf("메뉴 이름은? "); fgets(p->name, BUFFER_SIZE, stdin); p->name[strlen(p->name) - 1] = '\0'; // 엔터 제거 printf("가격은? "); scanf("%d", &p->price); printf("칼로리는? "); scanf("%lf", &p->calorie); return 1; } void listProduct(Product p[], int count){ printf("****\n"); for(int i=0; i<count; i++){ if(p[i] == NULL) continue; printf("%2d ", i+1); readProduct(p[i]); } printf("\n"); }
void readProduct(Product *p){ printf("%20s | ", p->name); printf("%10s | ", categoryNames[p->type - 1]); printf("%5d | ", p->price); printf("%7.1lf", p->calorie); printf("\n"); }
int updateProduct(Product *p){ int result = createProduct(p); return 1; }
int deleteProduct(Product *p[], int count){ if(p[count-1]) free(p[count-1]); p[count-1] = NULL; printf("=> 삭제됨!\n"); return 0; }
void saveProduct(Product p[], int count){ FILE fp; fp = fopen("menu.txt", "wt");
}
int loadProduct(Product *p){ // 이 함수 수정 필요 FILE fp; fp = fopen("menu.txt", "rt"); if(fp == NULL) return 0; // 파일이 없는 경우 int i = 0; while(!feof(fp)) { p[i] = (Product *) malloc(sizeof(Product)); // 메모리 할당 fgets(p[i]->name, BUFFER_SIZE, fp); p[i]->name[strlen(p[i]->name) - 1] = '\0'; fscanf(fp, "%d", &p[i]->type); fscanf(fp, "%d", &p[i]->price); fscanf(fp, "%lf\n", &p[i]->calorie); // printf("%s %d %d %lf", p[i]->name, p[i]->type, p[i]->price, p[i]->calorie); i++; } fclose(fp); printf("=> 로딩 성공!\n"); return i; }