-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmanager.c
More file actions
132 lines (116 loc) · 3.76 KB
/
manager.c
File metadata and controls
132 lines (116 loc) · 3.76 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#include <stdio.h>
#include <string.h>
#include "manager.h"
int selectMenu(){
int menu;
printf("\n*** 과일 쇼핑몰 관리 프로그램 ***\n");
printf("1. 조회\n");
printf("2. 추가\n");
printf("3. 수정\n");
printf("4. 삭제\n");
printf("5. 파일저장\n");
printf("6. 제품명 검색\n");
printf("7. 원하는 가격대의 제품 검색\n");
printf("8. 원하는 별점대의 제품 검색\n");
printf("0. 종료\n\n");
printf("=> 원하는 메뉴는? ");
scanf("%d", &menu);
return menu;
}
int selectDataNo(Product p[], int product_count){
int no;
listProduct(p, product_count);
printf("번호는? (취소:0)? ");
scanf("%d", &no);
return no;
}
void saveData(Product *p, int product_count){
FILE *fp;
fp = fopen("product.txt", "wt");
for(int i=0; i<product_count; i++){
if(p[i].gram == -1) continue;
fprintf(fp, "%s %d %d %d %d\n", p[i].name, p[i].gram, p[i].price, p[i].grade, p[i].grading_count);
}
fclose(fp);
printf("=> 데이터가 저장됨!\n");
}
int loadData(Product *p){
int i = 0;
FILE *fp;
fp = fopen("product.txt","rt");
if(fp == NULL) {
printf("=> 파일 없음\n");
return 0;
}
for(; i<10000; i++){
fscanf(fp, "%s",p[i].name);
if(feof(fp)) break;
fscanf(fp, "%d", &p[i].gram);
fscanf(fp, "%d", &p[i].price);
fscanf(fp, "%d", &p[i].grade);
fscanf(fp, "%d", &p[i].grading_count);
}
fclose(fp);
printf("=> 로딩 성공!\n");
return i;
}
void searchName(Product *p, int product_count){
int scnt = 0;
char search[20];
printf("검색할 제품명은? ");
scanf("%s", search);
printf("\nNo| Name | gram| price| grade| grading_count\n");
printf("========================================================\n");
for(int i=0; i<product_count; i++){
if(p[i].gram == -1) continue;
if(strstr(p[i].name, search)){
printf("%2d ", i+1);
readProduct(p[i]);
scnt++;
}
}
if(scnt == 0) printf("=> 해당 과일은 판매하지 않습니다!");
printf("\n");
} // 사용자가 원하는 상품(명)이 해당 쇼핑몰에 있는지 검색하는 함수
void searchPrice(Product *p,int product_count){
int scnt = 0;
int min_price, max_price;
while(1){
printf("원하는 가격대의 상품은? \n=> minimum price, maximum price를 차례대로 입력하세요 : ");
scanf("%d %d", &min_price, &max_price);
if(min_price <= max_price) break;
}
printf("\nNo| Name | gram| price| grade| grading_count\n");
printf("========================================================\n");
for(int i=0; i<product_count; i++){
if(p[i].price == -1) continue;
if(p[i].price >= min_price && p[i].price <= max_price){
printf("%2d ", i+1);
readProduct(p[i]);
scnt++;
}
}
if(scnt == 0) printf("=> 원하는 가격대의 상품이 없습니다!");
printf("\n");
} //사용자가 원하는 가격대의 상품을 찾아주는 function
void searchGrade(Product *p,int product_count){
int scnt = 0;
int min_grade, max_grade;
while(1){
printf("원하는 별점대의 상품은? \n=> minimum grade, maximum grade를 차례대로 입력하세요 : ");
scanf("%d %d", &min_grade, &max_grade);
if(min_grade <= max_grade) break;
}
printf("\nNo| Name | gram| price| grade| grading_count\n");
printf("========================================================\n");
for(int i=0; i<product_count; i++){
if(p[i].grade == -1) continue;
if(p[i].grade >= min_grade && p[i].grade <= max_grade){
printf("%2d ", i+1);
readProduct(p[i]);
scnt++;
}
}
if(scnt == 0) printf("=> 원하는 별점대의 상품이 없습니다!");
printf("\n");
} // 사용자가 원하는 별점대의 상품을 찾아주는 function