본문 바로가기

CS Study/Projects

Project 4 : Bill Calculator

Bill Calculator

#첫 화면

1. 요금제 출력(basic plan / more data plan)

2. 지난 두 달간 사용 내역 출력

3. 이번 달 사용 내역 입력

4. 지난 세 달간 총 요금 출력

5. 추천 요금제 안내

6. 종료

#1번 클릭

1. basic plan / more data plan 을 출력한다. (default 요금제는 basic plan)

2. 두 요금제는 통화 / 문자 / 데이터의 기본 제공량이 다르다.

3. 단위 사용량 당 책정 되는 금액과 기본 요금이 다르다.

#2번 클릭

1. 지난 두 달간 사용 내역을 출력한다.

#3번 클릭

1. 이번 달의 사용 내역을 입력받는다.

#4번 클릭

1. 이번 달과 지난 두달의 통화 / 문자 / 데이터 사용 내역을 출력한다.

2. 월 별 지불해야하는 요금을 하단에 출력한다.

#5번 클릭

1. 사용자에게 더 유리한 요금제를 추천한다.

#6번 클릭

1. 프로그램 종료

 

built by C

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void main_menu();
void displaying_plans();
void past_usage(int plan, int voice1[], int voice2[], int text1[], int text2[], double data1[], double data2[]);
void current_usage(int *voice3, int *text3, double *data3);
void total_fee(int plan, int voice1[], int voice2[], int voice3[], int text1[], int text2[], int text3[], double data1[], double data2[], double data3[]);
void recommendation(int plan, int voice1[], int voice2[], int voice3[], int text1[], int text2[], int text3[], double data1[], double data2[], double data3[]);
int main(void) {
	int plan;
	int ent;
	char ans;
	int voice1[1], text1[1];
	int voice2[1], text2[1];
	double data1[1], data2[1];
	int voice3[1], text3[1];
	double data3[1];

	srand((unsigned)time(NULL));
	plan = rand() % 2;
	voice1[0] = rand() % 700 + 1;
	voice2[0] = rand() % 700 + 1;
	text1[0] = rand() % 300;
	text2[0] = rand() % 300;
	data1[0] = rand() % 150;
	data2[0] = rand() % 150;
	main_menu();
	do {
		printf("Enter a number : ");
		scanf_s("%d", &ent);

		switch (ent) {
		case 1:
			system("cls");
			displaying_plans();
			break;
		case 2:
			system("cls");
			past_usage(plan, voice1, voice2, text1, text2, data1, data2);
			break;
		case 3:
			system("cls");
			current_usage(voice3, text3, data3);
			break;
		case 4:
			system("cls");
			total_fee(plan, voice1, voice2, voice3, text1, text2, text3, data1, data2, data3);
			break;
		case 5:
			system("cls");
			recommendation(plan, voice1, voice2, voice3, text1, text2, text3, data1, data2, data3);
		case 6:
			break;

		}
	} while (ent != 6);

	
}
void main_menu() {
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | KU Moblie Phone Bill Calculator           |\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | 1 : Display plans                         |\n");
	printf(" | 2 : Usage information for past two months |\n");
	printf(" | 3 : Input this month usage                |\n");
	printf(" | 4 : Total fee for past 3 months           |\n");
	printf(" | 5 : Best plan recommendation              |\n");
	printf(" | 6 : Exit                                  |\n");
	printf(" ������������������������������������������������������������������������������������������\n");
}
void displaying_plans() {
	char ans;
	printf("������������������������������������������������������������������������������������������\n");
	printf(" |                 Basic Plan                |\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | Included in plan   | Additional usages    |\n");
	printf(" | Voice     | 500m free     | \\50 / 1m     |\n");
	printf(" | Text      | 100t free     | \\10 / 1t     |\n");
	printf(" | Data      | 2.00GB free   | \\1000 / 0.1GB|\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | Basic fee |	\\20000                      |\n");
	printf(" ������������������������������������������������������������������������������������������\n");
	printf("\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" |                 More Data Plan            |\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | Included in plan   | Additional usages    |\n");
	printf(" | Voice     | 300m free     | \\10 / 1m     |\n");
	printf(" | Text      | 100t free     | \\30 / 1t     |\n");
	printf(" | Data      | 30.00GB free  | \\500 / 0.1GB|\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | Basic fee |	\\45000                      |\n");
	printf(" ������������������������������������������������������������������������������������������\n");
	do {
		printf("Back to main menu Y/N : ");
		scanf_s(" %c", &ans);
		system("cls");
		main_menu();
	} while (ans != 'Y');
}
void past_usage(int plan, int voice1[], int voice2[], int text1[], int text2[], double data1[], double data2[]) {
	char ans;
	if (plan == 0) {

		printf("������������������������������������������������������������������������������������������\n");
		printf(" | My Plan : Basic Plan                      |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |           |   February    |     March     |\n");
		printf(" | Voice     | %d min        | %d min        |\n", voice1[0], voice2[0]);
		printf(" | Text      | %d text       | %d text       |\n", text1[0], text2[0]);
		printf(" | Data      | %6.2f GB        | %6.2f GB        |\n", data1[0], data2[0]);
		printf(" ������������������������������������������������������������������������������������������\n");
	}
	if (plan == 1) {
		printf("������������������������������������������������������������������������������������������\n");
		printf(" | My Plan : More Data Plan                  |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |           |   February    |     March     |\n");
		printf(" | Voice     | %3d min       | %3d min       |\n", voice1[0], voice2[0]);
		printf(" | Text      | %3d text      | %3d text      |\n", text1[0], text2[0]);
		printf(" | Data      | %6.2f GB      | %6.2f GB     |\n", data1[0], data2[0]);
		printf(" ������������������������������������������������������������������������������������������\n");
	}
	do {
		printf("Back to main menu Y/N : ");
		scanf_s(" %c", &ans);
		system("cls");
		main_menu();
	} while (ans != 'Y');
}
void current_usage(int *voice3, int *text3, double *data3) {
	char ans;
	printf("Input your usages of voice : ");
	scanf_s("%d", &voice3[0]);
	printf("Input your usages of text : ");
	scanf_s("%d", &text3[0]);
	printf("Input your usages of data : ");
	scanf_s("%lf", &data3[0]);
	do {
		printf("Back to main menu Y/N : ");
		scanf_s(" %c", &ans);
		system("cls");
		main_menu();
	} while (ans != 'Y');
}
void total_fee(int plan, int voice1[], int voice2[], int voice3[], int text1[], int text2[], int text3[], double data1[], double data2[], double data3[]) {
	char ans;
	int fee1;
	int fee2;
	int fee3;
	double extra_data1;
	double extra_data2;
	double extra_data3;

	if (plan == 0) {
		double std = 2;
		fee1 = 20000;
		fee2 = 20000;
		fee3 = 20000;
		if (data1[0] - std >= std / 10) {
			extra_data1 = 0.2;
			std += extra_data1;
			fee1 += ((data1[0] - std) / 0.1) * 1000;
		}
		if (data1[0] - std <= std / 10 && data1[0] - std > 0) {
			extra_data1 = data1[0] - std;
			std += extra_data1;
			fee1 += ((data1[0] - std) / 0.1) * 1000;
		}
		if (data1[0] - std <= 0) {
			extra_data1 = 0;
			std += extra_data1;
		}
		if (data2[0] - std >= std / 10) {
			extra_data2 = std / 10;
			std += extra_data2;
			fee2 += ((data2[0] - std) / 0.1) * 1000;
		}
		if (data2[0] - std <= std / 10 && data2[0] - std > 0) {
			extra_data2 = data2[0] - std;
			std += extra_data2;
			fee2 += ((data2[0] - std) / 0.1) * 1000;
		}
		if (data2[0] - std <= 0) {
			extra_data2 = 0;
			std += extra_data2;
		}
		if (data3[0] - std >= std / 10) {
			extra_data3 = std / 10;
			std += extra_data3;
			fee3 += ((data3[0] - std) / 0.1) * 1000;
		}
		if (data3[0] - std <= std / 10 && data3[0] - std > 0) {
			extra_data3 = data3[0] - std;
			std += extra_data3;
			fee3 += ((data3[0] - std) / 0.1) * 1000;
		}
		if (data3[0] - std <= 0) {
			extra_data3 = 0;
			std += extra_data2;
		}

		if (voice1[0] > 500) {
			fee1 += (voice1[0] - 500) * 50;
			if (text1[0] > 100) {
				fee1 += (text1[0] - 100) * 10;
			}
		}
		if (voice2[0] > 500) {
			fee2 += (voice2[0] - 500) * 50;
			if (text2[0] > 100) {
				fee2 += (text2[0] - 100) * 10;
			}
		}
		if (voice3[0] > 500) {
			fee3 += (voice3[0] - 500) * 50;
			if (text3[0] > 100) {
				fee3 += (text3[0] - 100) * 10;
			}
		}
	}
	if (plan == 1) {
		double std = 30;
		fee1 = 45000;
		fee2 = 45000;
		fee3 = 45000;
		if (data1[0] - std >= std / 10) {
			extra_data1 = 3;
			std += extra_data1;
			fee1 += ((data1[0] - std) / 0.1) * 500;
		}
		if (data1[0] - std <= std / 10 && data1[0] - std > 0) {
			extra_data1 = data1[0] - std;
			std += extra_data1;
			fee1 += ((data1[0] - std) / 0.1) * 500;
		}
		if (data1[0] - std <= 0) {
			extra_data1 = 0;
			std += extra_data1;
		}
		if (data2[0] - std >= std / 10) {
			extra_data2 = std / 10;
			std += extra_data2;
			fee2 += ((data2[0] - std) / 0.1) * 500;
		}
		if (data2[0] - std <= std / 10 && data2[0] - std > 0) {
			extra_data2 = data2[0] - std;
			std += extra_data2;
			fee2 += ((data2[0] - std) / 0.1) * 500;
		}
		if (data2[0] - std <= 0) {
			extra_data2 = 0;
			std += extra_data2;
		}
		if (data3[0] - std >= std / 10) {
			extra_data3 = std / 10;
			std += extra_data3;
			fee3 += ((data3[0] - std) / 0.1) * 500;
		}
		if (data3[0] - std <= std / 10 && data3[0] - std > 0) {
			extra_data3 = data3[0] - std;
			std += extra_data3;
			fee3 += ((data3[0] - std) / 0.1) * 500;
		}
		if (data3[0] - std <= 0) {
			extra_data3 = 0;
			std += extra_data2;
		}

		if (voice1[0] > 300) {
			fee1 += (voice1[0] - 500) * 10;
			if (text1[0] > 100) {
				fee1 += (text1[0] - 100) * 30;
			}
		}
		if (voice2[0] > 300) {
			fee2 += (voice2[0] - 500) * 10;
			if (text2[0] > 100) {
				fee2 += (text2[0] - 100) * 30;
			}
		}
		if (voice3[0] > 500) {
			fee3 += (voice3[0] - 500) * 10;
			if (text3[0] > 100) {
				fee3 += (text3[0] - 100) * 30;
			}
		}
	}
	if (plan == 0) {
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |           My three months usage           |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" | My Plan : Basic Plan                      |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |        |  February  |  March   |  April   |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |Voice     | %4d min | %4d min |%4d min  |\n", voice1[0], voice2[0], voice3[0]);
		printf(" |Text      | %4d text| %4d text|%4d text |\n", text1[0], text2[0], text3[0]);
		printf(" |Data      | %5.2f GB | %5.2f GB | %5.2f GB |\n", data1[0], data2[0], data3[0]);
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |Extra Data| %5.2f GB | %5.2f GB | %5.2f GB |\n", extra_data1, extra_data2, extra_data3);
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |Total Fee | %5d \\ | %5d \\ | %5d \\ |\n", fee1, fee2, fee3);
		printf(" ������������������������������������������������������������������������������������������\n");
	}
	if (plan == 1) {
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |           My three months usage           |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" | My Plan : More Data Plan                  |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |        |  February  |  March   |  April   |\n");
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |Voice     | %4d min | %4d min |%4d min  |\n", voice1[0], voice2[0], voice3[0]);
		printf(" |Text      | %4d text| %4d text|%4d text |\n", text1[0], text2[0], text3[0]);
		printf(" |Data      | %5.2f GB | %5.2f GB | %5.2f GB |\n", data1[0], data2[0], data3[0]);
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |Extra Data| %5.2f GB | %5.2f GB | %5.2f GB |\n", extra_data1, extra_data2, extra_data3);
		printf("������������������������������������������������������������������������������������������\n");
		printf(" |Total Fee | %5d \\ | %5d \\ | %5d \\ |\n", fee1, fee2, fee3);
		printf(" ������������������������������������������������������������������������������������������\n");

	}
	do {
		printf("Back to main menu Y/N : ");
		scanf_s(" %c", &ans);
		system("cls");
		main_menu();
	} while (ans != 'Y');
}
void recommendation(int plan, int voice1[], int voice2[], int voice3[], int text1[], int text2[], int text3[], double data1[], double data2[], double data3[]) {
	char ans;
	int basic_fee = 20000;
	int md_fee = 45000;
	double voice_aver = (voice1[0] + voice2[0] + voice3[0]) / 3;
	double text_aver = (text1[0] + text2[0] + text3[0]) / 3;
	double data_aver = (data1[0] + data2[0] + data3[0]) / 3;

	if (plan == 0) {
		if (voice_aver > 500) {
			basic_fee += (voice_aver - 500) / 50;
			if (text_aver > 100) {
				basic_fee += (text_aver - 100) / 10;
				if (data_aver > 2) {
					basic_fee += ((data_aver - 2) / 0.1) * 1000;
				}
			}
		}
	}
	if (plan == 1) {
		if (voice_aver > 300) {
			md_fee += (voice_aver - 300) / 10;
			if (text_aver > 100) {
				md_fee += (text_aver - 100) / 30;
				if (data_aver > 30) {
					md_fee += ((data_aver - 30) / 0.1) * 500;
				}
			}
		}
	}
	printf("������������������������������������������������������������������������������������������\n");
	printf(" |     Average usage of 3-month              |\n");
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | My Plan : Basic Plan                      |\n");
	printf(" | Average usage of voice : %6.2lf           |\n", voice_aver);
	printf(" | Average usage of text  : %6.2lf           |\n", text_aver);
	printf(" | Average usage of data  : %6.2lf           |\n", data_aver);
	printf(" ������������������������������������������������������������������������������������������\n");
	printf(" | Basic Plan Fee :     \\  %d             |\n", basic_fee);
	printf(" | More Data Plan Fee : \\  %d             |\n", md_fee);
	printf("������������������������������������������������������������������������������������������\n");
	printf(" | We recommend to use %13s       |\n", basic_fee > md_fee ? "Basic Plan" : "More Data Plan");
	printf(" ������������������������������������������������������������������������������������������\n");
	do {
		printf("Back to main menu Y/N : ");
		scanf_s(" %c", &ans);
		system("cls");
		main_menu();
	} while (ans != 'Y');
}

 

'CS Study > Projects' 카테고리의 다른 글

Project 6 : 마우스 클릭 연습  (0) 2022.04.08
Project5 : Gambling game  (0) 2022.04.08
Project 3 : 뿌요뿌요 게임  (0) 2022.04.06
Project 2 : 직원 등록 시스템  (0) 2022.04.06
Project 1 : 성적 관리 시스템  (0) 2022.04.06