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 |