?? mon_add.c
字號:
{
move_finger(1,1);
move_finger(2,4);
}
break;
default:
sound_alarm();
break;
}/* END OF SWITCH */
Newlen = phone_tbl_len();
message_end();
return;
}
/* function : save the fee table
* called by : input_fee_tbl()
* date : 1993.9.23
*/
void save_fee_tbl(void)
{
FILE *fp;
message_disp(8,"正在存盤,請稍候..."); /* saving, please wait... */
fp = fopen(ChargeDataFile[PHONE_CASH], "wb");
fwrite(Phone_top, sizeof(PHONE_STRUCT), Newlen, fp);
fclose(fp);
message_end();
return;
}
/* function : locate according to phone_no
* called by : input_fee_data()
* date : 1993.9.23
* note : using the binary-search method
*/
void loc_fee_tbl(void)
{
PHONE_STRUCT *tbl;
UC locate_no[7] = "";
UC result;
UC *msg="定位分機號"; /* DING WEI hua ji HAO */
UC *warn="沒有該分機號碼!"; /* WU CI QU HAO! */
message_disp(8," 輸入分機號 Enter 確認"); /*phone no.*/
pop_back(250, 295, 420, 335, 7);
draw_back(345, 304, 410, 326, 11);
outf(260, 308, 7, 0, "%s", msg);
/***** LOCATE ACCODING TO THE PAGE No. USERS INPUT. *****/
set_get_color(11, 0, 12, 11, 0);
result = get_no(350, 306, 18, 24, 0, 6, locate_no, 0x00);
message_end();
rid_pop();
if(!result) /* IF USER TYPE "Esc", RETRUN. */
return;
/***** Locate the position in the fee table according
to the phone number user typed. *****/
tbl = binary_search(locate_no);
if(tbl == NULL) /* can not find the phone_number, then warn */
{
warn_mesg("", warn);
return;
}
Count = ((UI)(tbl-Phone_top)/16)*16+1;
hide_finger();
brush_tbl(7, 16, 7);
disp_fee_tbl(&Phone_top[Count-1], Count);
locate_finger(tbl-Phone_top-Count+1, 2); /* LOCATTED */
return;
}
/* Function: Change a page towards up.
Calls: clr_fee_tbl,disp_fee_tbl
Called by: input_fee_data
Input: None
Output: None
Return: None
Date : 1993.9.23
*/
void pgup_fee_tbl(void)
{
/***** IF THE FIRST PAGE, RETURN. *****/
if((Count-16) < 0)
{
sound_bell();
return;
}
/***** DISPLAY THE LAST PAGE. *****/
hide_finger();
brush_tbl(7, 16, 7);
Count = Count-16;
disp_fee_tbl(&Phone_top[Count-1], Count);
locate_finger(15,2);
return;
}
/* Function: Change a page towards down.
Calls: clr_fee_tbl,disp_fee_tbl
Called by: input_data
Input: None
Output: None
Return: None
Date : 1993.9.23
*/
void pgdn_fee_tbl(void)
{
UC *title = "注意:";
UC *warn = "最多只能有這么多分機號碼!";
/***** IF MORE THAN THE MAX LENGTH, WARN AND RETURN. *****/
if( (Count+16) > MAX_USERS)
{
warn_mesg(title, warn);
return;
}
/***** IF END OF TABLE, RETURN. *****/
if((Count+16) > Newlen)
{
sound_bell();
return;
}
/***** DISPLAY THE NEXT PAGE. *****/
Count = Count+16;
hide_finger();
brush_tbl(7, 16, 7);
disp_fee_tbl(&Phone_top[Count-1], Count);
locate_finger(0,2);
return;
}
/* Function: Locate according to the page No..
Calls: clr_fee_tbl,disp_fee_tbl
Called by: input_fee_data()
Input: None
Output: None
Return: None
Date : 1993.9.23
*/
void loc_fee_page(void)
{
UL locate_no=500;
UI page_no;
UC result;
UC *msg="定位頁號";
UC *warn="沒有該頁號!";
/***** DISPLAY THE PAGE LOCATE WINDOW. *****/
message_disp(8," 輸入頁號 Enter 確認"); /*page no.*/
pop_back(250, 295, 400, 335, 7);
draw_back(330, 304, 390, 326, 11);
outf(260, 308, 7, 0, "%s", msg);
/***** LOCATE ACCODING TO THE PAGE No. USERS INPUT. *****/
set_get_color(11, 0, 12, 11, 0);
result=get_dec(335, 306, 18, 24, 0, 3, &locate_no, 0x00);
message_end();
rid_pop();
if(!result) /* "Esc" */
return;
if(!(Newlen%16) && Newlen) /* calculate the total pages */
page_no = Newlen/16;
else
page_no = (UI)(Newlen/16)+1;
if(!locate_no || locate_no > page_no)
{
warn_mesg("", warn);
return;
}
/***** DISPLAY THE PAGE. *****/
hide_finger();
brush_tbl(7, 16, 7);
Count = (UI)(locate_no-1)*16+1;
disp_fee_tbl(&Phone_top[Count-1], Count);
locate_finger(0,2); /* LOCATTED */
return;
}
/* function : Locate the phone number using the binary search method
* calls : None
* called by : loc_fee_tbl(), search_area_no()
* input : input_no -- telephone number
* return : The position of location. If not find, return NULL
* note : using binary search method
* date : 1993.9.23
*/
PHONE_STRUCT *binary_search(UC *input_no)
{
PHONE_STRUCT *tbl, *tbl_top;
UI tbllen, top, bottom, middle;
int result;
tbl_top = Phone_top;
tbl = Phone_top;
if(Newlen == 0)
tbllen = phone_tbl_len();
else
tbllen = Newlen;
top = 0;
bottom = tbllen-1;
/***** Compare with the first item. *****/
if(strcmp(tbl->phone_no, input_no) < 0 &&\
strcmp((tbl+1)->phone_no, input_no) > 0)
return(NULL);
if(strcmp(tbl->phone_no,input_no) > 0)
return(NULL);
/***** Compare with the last item. *****/
if(strcmp(tbl[bottom].phone_no,input_no) < 0)
return(NULL);
/***** Compare and locate in the fee table. *****/
while(top <= bottom)
{
middle = (UI) (top+bottom)/2;
tbl = &tbl_top[middle];
result = strcmp(tbl->phone_no, input_no);
if(!result) /* find! */
return(tbl);
else if(result < 0) /* tbl->phone_no < input_no */
top = middle+1;
else if(result > 0) /* tbl->phone_no > input_no */
bottom = middle-1;
}
return(NULL); /* not find! */
}
void copy_last_afee(void)
{
UC i;
UI seq_no;
UNIT_STRUCT cur_unit;
get_current(&cur_unit);
seq_no = Count+cur_unit.unit_x; /* sequence no of item being edited */
if(seq_no==1 || seq_no>MAX_USERS || \
!strlen(Phone_top[seq_no-1].phone_no) )
return;
Phone_top[seq_no-1].month_lease = Phone_top[seq_no-2].month_lease;
for(i=0; i<4; i++)
Phone_top[seq_no-1].addfee[i] = Phone_top[seq_no-2].addfee[i];
hide_finger();
disp_one_afee(cur_unit.unit_x);
if(seq_no < MAX_USERS)
{
move_finger(1,1);
move_finger(2,cur_unit.unit_y-1);
}
echo_finger();
Newlen = phone_tbl_len();
return;
}
/* function : display one row of the rate table
* date : 1993.11.19
*/
void disp_one_afee(UC row)
{
UI j;
UI x, y;
UNIT_STRUCT cer_unit;
PHONE_STRUCT *tbl;
tbl = Phone_top+Count+row-1;
cer_unit.unit_x = row;
for(j = 1; j < 7; j++)
{
cer_unit.unit_y = j;
get_certain(&cer_unit);
x = cer_unit.dot_sx;
y = cer_unit.dot_sy+1;
switch(j)
{
case 1: /* telephone no */
if(!strcmp(tbl->phone_no,""))
break;
outf(x+10,y,BK_CLR,CHR_CLR,"%-s",tbl->phone_no);
break;
case 2: /* month lease */
outf(x+10,y,BK_CLR,CHR_CLR,"%6.2f",((double)tbl->month_lease)/100);
break;
case 3: /* new service fee */
outf(x+2,y,BK_CLR,CHR_CLR,"%7.2f",((double)tbl->addfee[0])/100);
break;
case 4: /* manly long call fee */
outf(x+2,y,BK_CLR,CHR_CLR,"%7.2f",((double)tbl->addfee[1])/100);
break;
case 5: /* reparing fee */
outf(x+2,y,BK_CLR,CHR_CLR,"%7.2f",((double)tbl->addfee[2])/100);
break;
case 6: /* other fee */
outf(x+2,y,BK_CLR,CHR_CLR,"%7.2f",((double)tbl->addfee[3])/100);
break;
} /* END SWITCH */
} /* END FOR2 */
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -