Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * Name : Huynh Quang Thao
- * Id : SE60963
- * Description : Assigment 3
- */
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <ctype.h>
- #define MAX 20
- void display();
- void viewJournal(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]);
- int makeTransaction(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]);
- void viewBalance(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]);
- void viewIncome(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]);
- int validate();
- double validateD();
- void display() {
- printf("Options available :\n");
- printf("1 - Enter a transaction\n");
- printf("2 - View the general journal\n");
- printf("3 - View the balance sheet\n");
- printf("4 - View the income stament\n");
- printf("q - Quit the program\n");
- printf("Please enter 1,2,3,4 or q: ");
- }
- int makeTransaction(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]) {
- int accNum, i, exis = 0;
- char typeCash;
- double amount;
- char des[31];
- fflush(stdin);
- printf("Please enter an account number(1000~5999) : ");
- do {
- accNum = validate();
- if (accNum < 1000 || accNum > 5999)
- printf("**Out of range\n**Try Again : ");
- } while (accNum < 1000 || accNum > 5999);
- for (i = 0; i < n; i++) {
- if (arrAccount[i] == accNum) {
- exis = 1;
- break;
- }
- }
- if (exis == 1) {
- printf("Your Description : %s\n", accDescript[i]);
- } else {
- do {
- fflush(stdin);
- printf("Enter Description : ");
- scanf("%[^\n]s", &accDescript[n]);
- if (strlen(accDescript[n]) > 30)
- printf("Only 30 character avai.");
- } while (strlen(accDescript[n]) > 30);
- }
- do {
- fflush(stdin);
- printf("Enter Description For Transaction : ");
- scanf("%[^\n]s", &tranDescript[n]);
- if (strlen(tranDescript[n]) > 30)
- printf("Only 30 character avai.");
- } while (strlen(tranDescript[n]) > 30);
- fflush(stdin);
- printf("Enter d (debit) or c (credit): ");
- do {
- typeCash = getch();
- putch(typeCash);
- if (typeCash != 'd' && typeCash != 'D' && typeCash != 'c' && typeCash != 'C')
- printf("\n**Invalid input\n**TryAgain :");
- } while (typeCash != 'd' && typeCash != 'D' && typeCash != 'c' && typeCash != 'C');
- fflush(stdin);
- printf("\nEnter transaction amount: ");
- amount = validateD();
- fflush(stdin);
- //luu xuong
- arrAccount[n] = accNum;
- arrDebit[n] = 0;
- arrCredit[n] = 0;
- if (typeCash == 'd' || typeCash == 'D')
- arrDebit[n] = amount;
- else
- arrCredit[n] = amount;
- n++;
- return n;
- }
- void viewJournal(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]) {
- int i;
- printf("\n General Journal \n");
- printf("Account Description Debit Credit\n");
- printf("------- ------------------------------ ---------- ----------\n");
- for (i = 0; i < n; i++) {
- if (arrDebit[i] == 0)
- printf("%-8d%-31s%21.3lf\n", arrAccount[i], tranDescript[i], arrCredit[i]);
- else
- printf("%-8d%-31s%9.3lf\n", arrAccount[i], tranDescript[i], arrDebit[i]);
- }
- }
- void viewBalance(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]) {
- int i, j, high = 2000, low = 1000;
- double totalL = 0, totalE = 0, totalA = 0;
- char *accDes[MAX];
- double arrMoney1[MAX];
- double arrMoney2[MAX];
- double arrMoney3[MAX];
- int arrAcc1[MAX];
- int arrAcc2[MAX];
- int arrAcc3[MAX];
- int m = 0;
- printf("\n Balance Sheet \n");
- printf("Account Description Debit Credit\n");
- printf("------- ------------------------------ ---------- ----------\n");
- for (i = 0; i < n; i++) {
- if (arrAccount[i] < high && arrAccount[i] >= low) {
- arrAcc1[m] = arrAccount[i];
- accDes[m] = accDescript[i];
- arrMoney1[m] = arrCredit[i] - arrDebit[i];
- m++;
- }
- }
- if (m != 0) {
- for (j = 0; j <= m - 1; j++) {
- for (i = j + 1; i < m; i++) {
- if (arrAcc1[j] == arrAcc1[i]) {
- arrAcc1[i] = 0;
- arrMoney1[j] += arrMoney1[i];
- }
- }
- if (arrAcc1[j] != 0) {
- if (arrMoney1[j] < 0)
- printf("%-9d%-31s%9.3lf\n", arrAcc1[j], accDes[j], -arrMoney1[j]);
- else
- printf("%-9d%-31s%18.3lf\n", arrAcc1[j], accDes[j], arrMoney1[j]);
- totalA += arrMoney1[j];
- }
- }
- if (totalA >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total Asset : %36.3lf\n", totalA);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total Asset : %27.3lf\n", -totalA);
- }
- }
- high += 1000;
- low += 1000;
- m = 0;
- for (i = 0; i < n; i++) {
- if (arrAccount[i] < high && arrAccount[i] >= low) {
- arrAcc2[m] = arrAccount[i];
- accDes[m] = accDescript[i];
- arrMoney2[m] = arrCredit[i] - arrDebit[i];
- m++;
- }
- }
- if (m != 0) {
- for (j = 0; j <= m - 1; j++) {
- for (i = j + 1; i < m; i++) {
- if (arrAcc2[j] == arrAcc2[i]) {
- arrAcc2[i] = 0;
- arrMoney2[j] += arrMoney2[i];
- }
- }
- if (arrAcc2[j] != 0) {
- if (arrMoney2[j] < 0)
- printf("%-9d%-31s%9.3lf\n", arrAcc2[j], accDes[j], -arrMoney2[j]);
- else
- printf("%-9d%-31s%18.3lf\n", arrAcc2[j], accDes[j], arrMoney2[j]);
- totalL += arrMoney2[j];
- }
- }
- if (totalL >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total Liabilities : %37.3lf\n", totalL);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total Liabilities : %24.3lf\n", -totalL);
- }
- }
- high += 1000;
- low += 1000;
- m = 0;
- for (i = 0; i < n; i++) {
- if (arrAccount[i] < high && arrAccount[i] >= low) {
- arrAcc3[m] = arrAccount[i];
- accDes[m] = accDescript[i];
- arrMoney3[m] = arrCredit[i] - arrDebit[i];
- m++;
- }
- }
- if (m != 0) {
- for (j = 0; j <= m - 1; j++) {
- for (i = j + 1; i < m; i++) {
- if (arrAcc3[j] == arrAcc3[i]) {
- arrAcc3[i] = 0;
- arrMoney3[j] += arrMoney3[i];
- }
- }
- if (arrAcc3[j] != 0) {
- if (arrMoney3[j] < 0)
- printf("%-9d%-31s%9.3lf\n", arrAcc3[j], accDes[j], -arrMoney3[j]);
- else
- printf("%-9d%-31s%18.3lf\n", arrAcc3[j], accDes[j], arrMoney3[j]);
- totalE += arrMoney3[j];
- }
- }
- if (totalL >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total Equity : %37.3lf\n", totalE);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total Equity : %24.3lf\n", -totalE);
- }
- if (totalE + totalL >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total Equity and Liabilities %25.3lf\n", totalE + totalL);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total Equity and Liabilities %14.3lf\n", -(totalE + totalL));
- }
- }
- }
- void viewIncome(int n, int arrAccount[], double arrDebit[], double arrCredit[], char accDescript[][31], char tranDescript[][31]) {
- int i, j, high = 5000, low = 4000;
- double totalL = 0, totalE = 0;
- char *accDes[MAX];
- double arrMoney1[MAX];
- double arrMoney2[MAX];
- int arrAcc1[MAX];
- int arrAcc2[MAX];
- int m = 0;
- printf("\n View Income \n");
- printf("Account Description Debit Credit\n");
- printf("------- ------------------------------ ---------- ----------\n");
- for (i = 0; i < n; i++) {
- if (arrAccount[i] < high && arrAccount[i] >= low) {
- arrAcc1[m] = arrAccount[i];
- accDes[m] = accDescript[i];
- arrMoney1[m] = arrCredit[i] - arrDebit[i];
- m++;
- }
- }
- if (m != 0) {
- for (j = 0; j <= m - 1; j++) {
- for (i = j + 1; i < m; i++) {
- if (arrAcc1[j] == arrAcc1[i]) {
- arrAcc1[i] = 0;
- arrMoney1[j] += arrMoney1[i];
- }
- }
- if (arrAcc1[j] != 0) {
- if (arrMoney1[j] < 0)
- printf("%-9d%-31s%9.3lf\n", arrAcc1[j], accDes[j], -arrMoney1[j]);
- else
- printf("%-9d%-31s%18.3lf\n", arrAcc1[j], accDes[j], arrMoney1[j]);
- totalE += arrMoney1[j];
- }
- }
- if (totalE >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total Revenue : %36.3lf\n", totalE);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total Revenue : %27.3lf\n", -totalE);
- }
- }
- high += 1000;
- low += 1000;
- m = 0;
- for (i = 0; i < n; i++) {
- if (arrAccount[i] < high && arrAccount[i] >= low) {
- arrAcc2[m] = arrAccount[i];
- accDes[m] = accDescript[i];
- arrMoney2[m] = arrCredit[i] - arrDebit[i];
- m++;
- }
- }
- if (m != 0) {
- for (j = 0; j <= m - 1; j++) {
- for (i = j + 1; i < m; i++) {
- if (arrAcc2[j] == arrAcc2[i]) {
- arrAcc2[i] = 0;
- arrMoney2[j] += arrMoney2[i];
- }
- }
- if (arrAcc2[j] != 0) {
- if (arrMoney2[j] < 0)
- printf("%-9d%-31s%9.3lf\n", arrAcc2[j], accDes[j], -arrMoney2[j]);
- else
- printf("%-9d%-31s%18.3lf\n", arrAcc2[j], accDes[j], arrMoney2[j]);
- totalL += arrMoney2[j];
- }
- }
- if (totalL >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total Expensive : %37.3lf\n", totalL);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total Expensive : %24.3lf\n", -totalL);
- }
- }
- if (totalE + totalL >= 0) {
- printf(" ---------- ----------\n");
- printf(" Total NET INCOME %45.3lf\n", totalE + totalL);
- } else {
- printf(" ---------- ----------\n");
- printf(" Total NETINCOME %34.3lf\n", -(totalE + totalL));
- }
- }
- void main() {
- char accDescript[MAX][31];
- char tranDescript[MAX][31];
- int n = 0;
- int i;
- int arrAccount[MAX];
- double arrDebit[MAX];
- double arrCredit[MAX];
- char a[31] = "sad";
- char c, d;
- int cont = 0, end = 0;
- int validate;
- for (i = 0; i < MAX; i++) {
- arrAccount[i] = 0;
- }
- do {
- display();
- do {
- fflush(stdin);
- validate = scanf("%c%c", &c, &d);
- if (validate != 2 || d != '\n')
- printf("**Trailing character meet.Again : ");
- else
- switch (c) {
- case '1':n = makeTransaction(n, arrAccount, arrDebit, arrCredit, accDescript, tranDescript);
- cont = 1;
- break;
- case '2':
- viewJournal(n, arrAccount, arrDebit, arrCredit, accDescript, tranDescript);
- cont = 1;
- break;
- case '3':
- viewBalance(n, arrAccount, arrDebit, arrCredit, accDescript, tranDescript);
- cont = 1;
- break;
- case '4':
- viewIncome(n, arrAccount, arrDebit, arrCredit, accDescript, tranDescript);
- cont = 1;
- break;
- case 'q':
- case 'Q':
- end = 1;
- cont = 1;
- break;
- default:
- cont = 0;
- fflush(stdin);
- printf("**Invalid input.Again : ");
- }
- } while (cont == 0);
- } while (end == 0);
- }
- int validate() {
- int a = 0;
- int flag, cont = 1;
- char c[20];
- char input;
- int i, j;
- do {
- flag = 1;
- i = 0;
- input = ' ';
- while (input != '\n') {
- input = getchar();
- if (input != '\n') {
- c[i] = input;
- i++;
- }
- }
- //after get all the input
- for (j = 0; j < i; j++) {
- if (!isdigit(c[j])) {
- flag = 0;
- if (c[0] != '-')
- printf("**Trailing character meet\n**Try again : ");
- else
- printf("**Negative is unacceptable\n**Try again : ");
- break;
- }
- }
- } while (flag == 0);
- //output
- int u;
- for (j = 0; j < i; j++) {
- u = ((int) c[j]) - 48;
- a = a + u * (int) round(pow(10, i - j - 1));
- }
- return a;
- }
- double validateD() {
- double a = 0;
- int flag, cont = 1;
- char c[20];
- char input;
- int i, j, dot;
- do {
- dot = 0;
- flag = 1;
- i = 0;
- input = ' ';
- while (input != '\n') {
- input = getchar();
- if (input != '\n') {
- c[i] = input;
- i++;
- }
- }
- //after get all the input
- for (j = 0; j < i; j++) {
- if (!isdigit(c[j])) {
- flag = 0;
- if (c[0] != '-' && c[j] != '.')
- printf("\n**Trailing character meet\nTry again : ");
- else if (c[0] == '-')
- printf("\n**Negative is unacceptable\nTry again : ");
- else if (c[j] == '.') {
- flag = 1;
- dot++;
- continue;
- }
- break;
- }
- }
- if (dot > 1) {
- flag = 0;
- printf("Wrong format only 1 dot (.) allow\nTry again : ");
- }
- if (i == 0) {
- flag = 0;
- printf("Please enter value : ");
- }
- // if(dot==0){
- // flag =0;
- // printf("format .2 (*.??)\nTry again : ");
- // }
- } while (flag == 0);
- //output
- double u;
- for (j = 0; j < i; j++) {
- if (c[j] == '.')
- break;
- }
- int k;
- for (k = 0; k < j; k++) {
- u = ((double) c[k]) - 48;
- a = a + u * pow(10, j - k - 1);
- }
- int m = k;
- k++;
- for (k; k < i; k++) {
- u = ((double) c[k]) - 48;
- a = a + u * pow(10, -(k - m));
- }
- return a;
- }
Advertisement
Add Comment
Please, Sign In to add comment