자동차 관리 프로그램

여러 자동차의 정보를 입력 받고 이 리스트를 출력 및 수정할 수 있는, 자동차 관리 프로그램 내지 플랫폼을 개발하고자 한다! 다음 조건에 맞추어 결과화면과 같이 출력이 되도록 프로그램을 작성하십시오.

조건1

  • 자동차 정보를 담고있는 구조체를 다음과 같이 정의한다.(struct 및 typedef 필수)
struct datetype{
	int year;
	int month;
};

struct car{
	struct datetype release;

	char model[STRING_SIZE];
	char maker[STRING_SIZE];
	int value;
	double mileage;
};
typedef struct car CAR;
  • 프로그램을 처음 실행시키면 [메뉴]가 나오며, 이에 각각 ‘신규입력’, ‘리스트’, ‘종료’를 번호로 선택할 수 있게끔 한다.
  • ‘신규입력’을 선택 시, ‘모델명’, ‘제조사’, ‘가격(만원)’, ‘연비(km/l)’, ‘출시일(yyyy mm)’을 입력 받아 자동차 정보 구조체 배열 변수에 저장한다.
    ex)
CAR cars[size];
  • ‘리스트’를 선택 시, 지금까지 입력(저장)했던 자동차 정보를 순차적으로 출력한다.
  • ‘종료’ 선택 시 ‘종료합니다’라는 문구가 출력되며 프로그림이 종료된다.

image

조건2

  • [메뉴]에서 ‘리스트’를 선택 시, 내용 출력 후 [메뉴]로 바로 돌아가지 않고, 별도로 ‘정보수정’, ‘조건검색’, ‘메뉴’를 변호로 선택할 수 있게끔 출력시키도록 한다.
  • 위 서브메뉴는 출력된 ‘리스트’ 내용 중에서 어떤 정보를 수정하거나 조건을 주고 검색한 내용만을 보기 위함이다.
  • ‘정보수정’을 선택 시, 수정할 자동차 정보 번호(자동차 정보 구조체(CAR) 배열 변수의 n번째 배열)를 입력 받은 후, 해당 배열 구조체에 입력되어 있는 정보를 순차적으로 보여주고, 새로이 입력 받아 각 멤버변수에 저장한다.
  • ‘조건검색’을 선택 시, ‘가격대(MIN MAX)’, ‘연비(MAX)’, ‘출시연도(yyyy)’를 각각 입력 받는다. 이 때, MIN은 검색하고자 하는 값의 최소를 말하고, MAX는 그 값의 최대를 말한다.

image

image

Source

#include<stdio.h>

#define STRING_SIZE 30
#define SIZE 10

struct datetype {
	int year;
	int month;
};

struct car {
	struct datetype release;

	char model[STRING_SIZE];
	char maker[STRING_SIZE];
	int value;
	double mileage;
};

typedef struct car CAR;

int main(void) {
	CAR cars[SIZE];

	int index = 0;
	int input1 = 0;
	int input2 = 0;
	int input3 = 0;
	int input_value1 = 0;
	int input_value2 = 0;
	double input_mileage = 0;
	int input_release_year = 0;

	printf("[자동차 관리 프로그램]\n\n");

	while (1) {
		printf("[메뉴]\n");
		printf("1) 신규입력\t2) 리스트\t3) 종료\n");
		printf("선택 > ");
		scanf("%d", &input1);

		if (input1 == 1) {
			printf("[신규입력]\n\n");
			printf("모델명 > ");
			scanf("%s", cars[index].model);
			printf("제조사 > ");
			scanf("%s", cars[index].maker);
			printf("가격(만원) > ");
			scanf("%d", &cars[index].value);
			printf("연비 > ");
			scanf("%lf", &cars[index].mileage);
			printf("출시일 > ");
			scanf("%d %d", &cars[index].release.year, &cars[index].release.month);
			index++;
		}
		else if (input1 == 2) {
			printf("[리스트]\n");
			printf("======================================================\n");
			for (int i = 0; i < index; i++) {
				printf("No.%d\t모델명: %s\t제조사: %s\t가격: %d\t연비: %lf (km/l)\t출시일: %d년 %d월\n"
					, i, cars[i].model, cars[i].maker, cars[i].value, cars[i].mileage, cars[i].release.year, cars[i].release.month);
			}
			printf("======================================================\n");

			printf("1) 정보수정\t2) 조건검색\t3) 메뉴\n\n");
			printf("선택 > ");
			scanf("%d", &input2);

			if (input2 == 1) {
				printf("\n[정보수정]\n");
				printf("수정할 자동차 정보 번호(No.) > ");
				scanf("%d", &input3);
				printf("\n모델명: %s -> ", cars[input3].model);
				scanf("%s", cars[input3].model);
				printf("\n제조사: %s -> ", cars[input3].maker);
				scanf("%s", cars[input3].maker);
				printf("\n가격(만원): %d -> ", cars[input3].value);
				scanf("%d", &cars[input3].value);
				printf("\n연비: %lf -> ", cars[input3].mileage);
				scanf("%lf", &cars[input3].mileage);
				printf("\n출시일(yyyy mm): %d %d -> ", cars[input3].release.year, cars[input3].release.month);
				scanf("%d %d", &cars[input3].release.year, &cars[input3].release.month);
			}
			else if (input2 == 2) {
				printf("\n[조건검색]\n");
				printf("가격대(MIN MAX) > ");
				scanf("%d %d", &input_value1, &input_value2);
				printf("연비(MAX) > ");
				scanf("%lf", &input_mileage);
				printf("출시년도(yyyy) > ");
				scanf("%d", &input_release_year);

				printf("======================================================\n");
				for (int i = 0; i < index; i++) {
					if (input_value1 <= cars[i].value && cars[i].value < input_value2) {
						if (cars[i].mileage <= input_mileage) {
							if (input_release_year == cars[i].release.year) {
								printf("No.%d\t모델명: %s\t제조사: %s\t가격: %d\t연비: %lf (km/l)\t출시일: %d년 %d월\n"
									, i, cars[i].model, cars[i].maker, cars[i].value, cars[i].mileage, cars[i].release.year, cars[i].release.month);
							}
						}
					}
				}
				printf("======================================================\n");
			}
		}
		else if (input1 == 3) {
			index = 0;
			break;
		}
	}

	return 0;
}

태그:

카테고리:

업데이트: