/************************************************** Module: Operator Interface **************************************************/ /* include statements */ #include #include #include #include #include "constants.h" #include "screen_output.h" #include "main_.h" #include "getch.h" #include "operator_interface.h" /* functions */ char opr_OperatorInterface(void) { int exit_condition = 0; long int cash_in_abm_100x = -1; double cash_in_abm = -1; do { io_DrawTopLine(); printf ("ABM Operator Interface\n\n"); printf ("e - enter new cash level\n"); printf ("v - view cash level\n"); printf ("c - cancel\n"); io_DrawBottomLine(); switch(getch()) { case 'e': cash_in_abm_100x = opr_EnterCashLevel(); m_WriteABMCashLevel((long int)(cash_in_abm_100x/100)); break; case 'v': io_DrawTopLine(); cash_in_abm = (double)m_ReadABMCashLevel(); if (cash_in_abm >= 0) { printf ("Cash in ABM: $%10.2f\n", cash_in_abm); } else { printf ("Invalid cash value\n"); } printf ("Press any key to continue...\n"); io_DrawBottomLine(); getch(); break; case 'c': exit_condition = 1; break; default : {/* invalid input */} } } while(exit_condition != 1); return 0; } long int opr_EnterCashLevel(void) { int exit_condition = 0; int dollar_array_position = 0; int warn_20s = 0; int warn_MIN = 0; int correct_value_entered = 0; char abm_dollars[MDD+1]; char ch; char print1[MDD-1], print2[3]; // hold the split up dollar value int i,j; abm_dollars[dollar_array_position] = '\0'; do { io_DrawTopLine(); printf ("Enter ABM Cash Level:\n\n"); printf ("e - enter\n"); printf ("b - backspace\n"); printf ("c - cancel\n"); if (warn_20s == 1) { printf ("Must be a multiple of $20\n"); warn_20s = 0; } if (warn_MIN == 1) { printf ("Must stock with >= $%d\n", MIN_CASH_IN_ABM); warn_MIN = 0; } io_DrawMidLine(); /* Split up string "ab" into two strings "a" and "b" b is of length 2, a is variable. Display as cash. */ j = 0; for (i=0;i<=(int)strlen(abm_dollars);i++) { if ((int)strlen(abm_dollars)-i > 2) print1[i] = abm_dollars[i]; else { print1[i] = '\0'; print2[j] = abm_dollars[i]; j++; } } //print2[j-1] = '\0'; printf ("$%10s.%2s\n", print1, print2); io_DrawBottomLine(); ch = getch(); if (isdigit(ch)) { if (ch != '0' || dollar_array_position != 0) { abm_dollars[dollar_array_position] = ch; dollar_array_position++; } } else if (ch == 'c') { exit_condition = 1; } else if (ch == 'e') { if (atoi(abm_dollars)%(20*100) != 0) { /* reset dollar amount to zero and warn user */ dollar_array_position = 0; warn_20s = 1; } if (atoi(abm_dollars)= 1) { dollar_array_position--; } } /* limit dollar amount allowed to < 1 million */ if (dollar_array_position > MDD) { dollar_array_position = MDD; } abm_dollars[dollar_array_position] = '\0'; } while (exit_condition != 1); if (correct_value_entered == 1 && atoi(abm_dollars)) { return atoi(abm_dollars); } else { return -1; /*return -1 if operator cancelled operation */ } }