📄 travel.c
字号:
get_first_last_dates(its, &first_day, &last_day);
print_accounting(date_string, name, ORN,
days, &lines, print_file,
&first_day, &last_day,
cash_advance, GTR, ts,
its, ds, rs);
lines = 0;
fclose(print_file);
#ifdef UNIX_SYSTEM
printf("\nEnter the name of the printer:");
printf(" (e.g. GE02_SPARC, ps1, ps, etc.)");
printf("\n ");
gets(printer_name);
sprintf(r, "lpr -P%s %s",
printer_name, print_file_name);
system(r);
#endif
/* changed 21 April 1994 DP */
#ifdef DOS_SYSTEM
dos_print_file(print_file_name);
#endif
unlink(print_file_name);
} /* ends if yes print */
break;
/* Process old travel accounting */
case 2:
printf("\ncase 2");
printf("\nEnter the data file name:");
gets(data_file_name);
data_file = fopen(data_file_name, "r");
if(data_file == '\0'){
printf("\nERROR: Could not open data file %s",
data_file_name);
exit(-1);
} /* ends opening data file */
fread(name, (L*sizeof(char)), 1, data_file);
fread(ORN, (L*sizeof(char)), 1, data_file);
fread(&cash_advance, sizeof(long), 1, data_file);
GTR = retrieve_GTRs(data_file);
ts = retrieve_transportation_cost(data_file);
its = retrieve_itinerarys(data_file);
ds = retrieve_daily_expenses(data_file, &days);
rs = retrieve_rental_expenses(data_file);
fclose(data_file);
printf("\nDo you want to edit ");
printf("this accounting? (y or n)");
gets(r);
if(r[0] == 'y' || r[0] == 'Y'){
review_accounting(name, ORN, &cash_advance,
GTR, ts, its, ds, rs);
} /* ends edit accounting */
printf("\nDo you want to print? (y or n)");
gets(print);
if(print[0] == 'y' || print[0] == 'Y'){
tmpnam(print_file_name);
print_file = fopen(print_file_name, "wt");
if(print_file == '\0'){
printf("\nERROR Could not open print file %s",
print_file_name);
exit(2);
} /* ends if could not open print file */
get_first_last_dates(its, &first_day, &last_day);
print_accounting(date_string, name, ORN,
days, &lines, print_file,
&first_day, &last_day,
cash_advance, GTR, ts,
its, ds, rs);
lines = 0;
fclose(print_file);
#ifdef UNIX_SYSTEM
printf("\nEnter the name of the printer:");
printf(" (e.g. GE02_SPARC, ps1, ps, etc.)");
printf("\n ");
gets(printer_name);
sprintf(r, "lpr -P%s %s",
printer_name, print_file_name);
system(r);
#endif
/* changed 21 April 1994 DP */
#ifdef DOS_SYSTEM
dos_print_file(print_file_name);
#endif
unlink(print_file_name);
} /* ends if yes print */
printf("\nDo you want to save ");
printf("this edited accounting? (y or n)");
gets(r);
if(r[0] == 'y' || r[0] == 'Y'){
get_data_file_name(name, date_string, data_file_name);
data_file = fopen(data_file_name, "w");
if(data_file == '\0'){
printf("\nERROR: Could not create data file %s",
data_file_name);
exit(-1);
} /* ends opening data file */
/* save the data to the data file */
fwrite(name, (L*sizeof(char)), 1, data_file);
fwrite(ORN, (L*sizeof(char)), 1, data_file);
fwrite(&cash_advance, sizeof(long), 1, data_file);
save_GTRs(GTR, data_file);
save_transportation_cost(ts, data_file);
save_itinerarys(its, data_file);
save_daily_expenses(ds, data_file);
fclose(data_file);
printf("\n\nWrote your data to file: %s",
data_file_name);
} /* ends if save edited accounting */
break;
default:
printf("\n\nSorry, cannot understand your ");
printf("choice, try again.");
break;
} /* ends switch choice */
} /* ends while not_finished */
/* free up the memory you allocated */
free(GTR);
free(ts);
free(its);
free(ds);
} /* ends main */
/*****************************************************/
/*****************************************************/
/*****************************************************/
/*PAGE review_accounting
This function is the main routine for the
review process. It shows menus, interprets
the responses and calls other functions to make
changes as desired.
*/
review_accounting(name, ORN, cash_advance,
GTR, ts, its, ds, rs)
char name[], ORN[];
long *cash_advance;
struct daily_struct *ds;
struct GTR_struct *GTR;
struct itinerary_struct *its;
struct trans_struct *ts;
struct rental_struct *rs;
{
char r[L];
int choice, not_finished = 1;
while(not_finished){
show_review_menu();
gets(r);
choice = atoi(r);
switch(choice){
case 0:
not_finished = 0;
break;
case 1: /* name and ORN */
edit_name_orn(name, ORN);
break;
case 2: /* cash advance */
edit_cash_advance(cash_advance);
break;
case 3: /* GTR */
edit_GTRs(GTR);
break;
case 4: /* Transportation cost */
edit_trans_cost(ts);
break;
case 5: /* Itenerary */
edit_itinerary(its);
break;
case 6: /* Daily Expenses */
edit_daily_expenses(ds);
break;
case 7: /* Rental Car Use */
edit_rental_expenses(rs);
break;
default:
printf("\n\nSorry, cannot understand your");
printf(" choice, try again.");
break;
} /* ends switch choice */
} /* ends while not_finished */
} /* ends review_accounting */
/*****************************************************/
/*****************************************************/
/*PAGE edit_name_orn
This function allows the user to edit the
traveller's name and ORN.
*/
edit_name_orn(name, ORN)
char name[], ORN[];
{
char r[L];
int choice, not_finished = 1;
while(not_finished){
printf("\n");
printf("\n\t1. Name is %s", name);
printf("\n\t2. ORN is %s", ORN);
printf("\n\n\tEnter number to make a change, 0 to quit");
printf("\n\t");
gets(r);
choice = atoi(r);
switch(choice){
case 0:
not_finished = 0;
break;
case 1:
get_name(name);
break;
case 2:
get_orn(ORN);
break;
default:
printf("\n\nSorry, cannot understand your");
printf(" choice, try again.");
break;
} /* ends switch choice */
} /* ends not_finished */
} /* ends edit_name_ORN */
/*****************************************************/
/*****************************************************/
/*PAGE edit_cash_advance
This function allows the user to edit the
cash advance.
*/
edit_cash_advance(cash_advance)
long *cash_advance;
{
char r[L];
int choice, not_finished = 1;
long temp;
temp = *cash_advance;
while(not_finished){
printf("\n");
printf("\n\t1. Cash advance is $%8.2f", dollars_of(temp));
printf("\n\n\tEnter number to make a change, 0 to quit");
printf("\n\t");
gets(r);
choice = atoi(r);
switch(choice){
case 0:
not_finished = 0;
break;
case 1:
printf("\n\tCash Advance Amount? ");
temp = get_money();
break;
default:
printf("\n\nSorry, cannot understand your");
printf(" choice, try again.");
break;
} /* ends switch choice */
} /* ends while not_finished */
*cash_advance = temp;
} /* ends edit_cash_advance */
/*****************************************************/
/*****************************************************/
/*PAGE edit_GTRs
This function allows the user to edit the
GTRs.
*/
edit_GTRs(GTR)
struct GTR_struct *GTR;
{
char r[L];
int choice, not_finished = 1;
long temp;
struct GTR_struct *g;
g = GTR;
while(not_finished){
printf("\n");
printf("\n\t1. GTR is $%8.2f",
dollars_of(g->GTR));
printf("\n\n\tEnter 1 to change this GTR");
printf("\n\tEnter 2 to go on to next GTR");
printf("\n\t");
gets(r);
choice = atoi(r);
if(choice == 1){
printf("\nEnter new GTR:");
temp = get_money();
g->GTR = temp;
} /* ends if choice == 1 */
if(choice == 2){
if(g->next == END_OF_LIST){
printf("\nNo more advances to edit");
not_finished = 0;
} /* ends if END_OF_LIST */
else
g = g->next;
} /* ends if choice == 2 */
} /* ends while not_finished */
} /* ends edit_GTRs */
/*****************************************************/
/*****************************************************/
/*PAGE edit_trans_cost
This function allows the user to edit the
transportation costs.
*/
edit_trans_cost(ts)
struct trans_struct *ts;
{
char r[L];
int choice, j, not_finished = 1;
struct trans_struct *t;
t = ts;
while(not_finished){
printf("\n");
printf("\n\t1. Mode: %s", t->mode);
printf("\n\t2. Carrier: %s", t->carrier);
printf("\n\t3. Class: %s", t->travel_class);
printf("\n\t4. Amount: $%8.2f",
dollars_of(t->amount));
printf("\n\t5. Go on to the next transportation");
printf("\n\t6. Quit editing transportation costs");
printf("\n");
printf("\n\tEnter the number to change:");
gets(r);
choice = atoi(r);
switch(choice){
case 1:
printf("\n\tMode:");
printf("(enter 0 to quit)");;
gets(t->mode);
break;
case 2:
printf("\n\tCarrier:");
gets(t->carrier);
break;
case 3:
printf("\n\tTravel Class:");
gets(t->travel_class);
break;
case 4:
printf("\n\tAmount:");
t->amount = get_money();
break;
case 5:
if(t->next == END_OF_LIST){
printf("\n\nNo more to edit");
not_finished = 0;
} /* ends if END_OF_LIST */
else
t = t->next;
break;
case 6:
not_finished = 0;
break;
default:
printf("\n\nSorry, cannot understand your");
printf(" choice, try again.");
break;
} /* ends switch choice */
} /* ends while not_finished */
} /* ends edit_trans_cost */
/*****************************************************/
/*****************************************************/
/*PAGE edit_itinerary
This function allows the user to edit the
itinerary.
*/
edit_itinerary(its)
struct itinerary_struct *its;
{
char r[L], s[L];
int choice, i, not_finished = 1;
struct itinerary_struct *t;
struct MDY_struct dummy;
t = its;
while(not_finished){
printf("\n");
printf("\n\t1. Departure: %2d-%2d-%2d",
t->depart_date.month,
t->depart_date.day,
t->depart_date.year);
printf("\n\t2. Leaving: %s", t->leave_loc);
printf("\n\t3. Time: %ld", t->depart_time);
printf("\n\t4. Via: %s", t->depart_via);
printf("\n\t5. Arrival: %2d-%2d-%2d",
t->arrive_date.month,
t->arrive_date.day,
t->arrive_date.year);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -