📄 main.c
字号:
#include "main.h"
#include "var.h"
void
VOID_Sale_Ticket()
{
char bus_bc[10], in_st[6], buffer1[50], buffer2[50];
int fdr,st_n,b_j, d_n, str_len, i, ticket_n, ticket_n_f, len, input, j;
char ls[8],display_buf[5][31], f_ret, ticket_num_half[10], ticket_num[10];
long l, sum,ls1,ljje,lj1,lj2,jsq;
memset( (char *)&trans, 0 ,LEN_Sale_Ticket);
strcpy( trans.busman, Busman.busman);
get_date(trans.date_time);
get_time(trans.date_time+9);
trans.date_time[15]=0;
trans.settle_flag = 0;
trans.jsdh=0;
trans.jk_flag = 0;
cls();
display_cen(1,"请选择售票线路");
display(2,"售票员: %8.8s ",Busman.busman_name);
display(4,"请输入班次");
display(5,"班次:");
do{
input = getstrn(5,7,0,0,5,bus_bc);
if( bus_bc[0] == (char )0xff && input == 1)
return;
}while( input > 5 || input < 1 );
strcpy( trans.bus_bc, bus_bc);
display(7,"请输入班车编号");
display(8,"班车编号:");
do{
memset( ls, 0,sizeof(ls));
input = getstrn(8,11,0,0,7,ls);
if( ls[0] == (char )0xff && input == 1)
return;
}while( input > 7 || input < 1 );
ls1=atol(ls);
sprintf( trans.bus_no, "%07ld", ls1);
fdr=get_driver_name( trans.bus_no ); // 寻找车姓名
if (fdr!=0){
cls();
display_cen(5,"该车号没有注册,不能售票");
inkey(0);
return;
}
//display(2,"%-8.8s 车%-8.8s 车%-3.3s",drive.driver_name, drive.car_no, drive.car_home);
//inkey(0);
st_n = 0;
b_j=0;
f_ret=openfile("F_STLS");
if (check_openfile( f_ret ) == US_FAIL ){
cls();
display_cen ( 4 , "流水文件系统出错" ) ;
display_cen ( 5 , "不能正常工作");
display_cen ( 6 , "按任意键将自动关机" ) ;
systemsound ( 400 ) ;
inkey(0);
enable_poweroff();
power_off();
}
seekfile( f_ret, 0, SEEK_SET);
jsq=0;
do{
memset( (char *)&trans_rec, 0, LEN_Sale_Ticket);
readfile (f_ret, LEN_Sale_Ticket, (char *)&trans_rec);
if( trans_rec.settle_flag == 0)
break;
jsq=jsq+1;
}while( eoffile( f_ret ) != 1);
closefile(f_ret);
while (1) {
display_cen(1,"请选择售票线路");
display(2,"%-8.8s 车次%-5.5s %-8.8s",Busman.busman_name, trans.bus_bc , drive.car_no);
memset( (char *)&stat_line, 0, LEN_Station);
for( i = 3; i <10; i++)
display( i, "");
for ( d_n = 0; d_n < 5; d_n++){
memset( buffer2, 0, sizeof( buffer2 ));
memset( buffer1, 0, sizeof( buffer1 ));
if ( station_display[st_n].line_no == 999){
b_j=99;
st_n=0;
break;
}
if ( station_display[st_n].line_no != 999 && b_j!=99){
sprintf(buffer1, "%03d.%-10.10s", station_display[st_n].line_no, station_display[st_n].line_name);
}
if ( station_display[st_n+1].line_no == 999){
b_j=99;
st_n=0;
break;
}
if (station_display[st_n+1].line_no != 999 && b_j!=99){
sprintf(buffer2, "%03d.%-10.10s", station_display[st_n+1].line_no, station_display[st_n+1].line_name);
}
sprintf(display_buf[d_n]," %14.14s%14.14s ", buffer1, buffer2);
if (b_j!=99){
st_n = st_n + 2;
}
if (b_j != 99){
display( 3+ d_n, display_buf[d_n] );
}
}
b_j=0;
sprintf(display_buf[d_n]," %14.14s%14.14s ", buffer1, buffer2);
display( 3+ d_n, display_buf[d_n] );
display(8,"全0翻页,线路编号:");
display(9,"当前票号: %07ld", kpph+1);
do{
input = getstrn( 8, 18, 0, 0, 3, in_st);
if( in_st[0] == (char )0xff && input == 1)
return;
}while( input>3 || input < 1);
str_len = atoi( in_st );
if ( str_len == 0){
if ( st_n == LINE_NUM_MAX || station_display[st_n].line_no == 999)
st_n = 0;
continue;
}
for( i = 0; i< LINE_NUM_MAX; i++){
if ( station_display[i].line_no == 999 )
break;
if ( station_display[i].line_no==str_len){
memcpy( (char *)&stat_line, (char *)&station_display[i], LEN_Station);
break;
}
}
if ( stat_line. line_no != 0 ){
st_n = i;
break;
}
}
/*
fileseek=LEN_Station;
for( i= 0; i< st_n ; i++ ){
fileseek = fileseek + LEN_Station *( i+1) + LEN_Bus_Fare * station_display[i].station_num;
}
*/
get_sta_name( stat_line. line_no );
f_ret=openfile("F_STLS");
if (check_openfile( f_ret ) == US_FAIL ){
cls();
display_cen ( 4 , "流水文件系统出错" ) ;
display_cen ( 5 , "不能正常工作");
display_cen ( 6 , "按任意键将自动关机" ) ;
systemsound ( 400 ) ;
inkey(0);
enable_poweroff();
power_off();
}
seekfile( f_ret, 0, SEEK_END);
while(1){
st_n = 0;
while(1){
display_cen(1,"请选择到站站点");
display(2,"%-8.8s车次%-5.5s %-8.8s",Busman.busman_name, trans.bus_bc , drive.car_no);
for( i = 3; i <10; i++)
display( i, "");
for ( d_n = 0; d_n < 5; d_n++){
memset( buffer2, 0, sizeof( buffer2 ));
memset( buffer1, 0, sizeof( buffer1 ));
if (strlen(bus_fare[st_n].station_name) != 0){
sprintf(buffer1, "%02d.%-10.10s", st_n+1, bus_fare[st_n].station_name);
}
if (strlen(bus_fare[st_n+1].station_name) != 0){
sprintf(buffer2, "%02d.%-10.10s", st_n+2, bus_fare[st_n+1].station_name);
}
sprintf(display_buf[d_n]," %13.13s%13.13s ", buffer1, buffer2);
st_n = st_n + 2;
display( 3+ d_n, display_buf[d_n] );
}
display(8,"00翻页99打结算单,站点号:");
display(9,"当前票号: %07ld", kpph+1);
do{
input = getstrn( 8, 25, 0, 0, 2, in_st);
if( in_st[0] == (char )0xff && input == 1){
closefile(f_ret);
return;
}
}while( input > 2 ||input <1);
str_len = atoi( in_st );
if ( str_len == 99 ){
cls();
display_cen(5,"正在统计数据");
display_cen(6,"请等待");
if ( get_printer_status() != 0 ){
cls();
closefile(f_ret);
display_cen(5,"请安装好打印纸");
display_cen(6,"按任意键,重新操作");
return;
}
jsdh=jsdh+1;
//seekfile(f_ret,0,SEEK_SET);
seekfile(f_ret,(long)(jsq*LEN_Sale_Ticket), SEEK_SET);
for ( i = 0; i < LINE_ST_MAX ; i++ ){
memset( settle_name[i], 0, sizeof( settle_name[i] ));
settle_data[i] = 0L;
settle_num[i] = 0L;
}
do{
memset( (char *)&trans_rec, 0, LEN_Sale_Ticket);
readfile (f_ret, LEN_Sale_Ticket, (char *)&trans_rec);
if( trans_rec.settle_flag == 1)
continue;
if(strcmp( trans_rec.bus_no, trans.bus_no) != 0 )
continue;
//if(strcmp( trans_rec.bus_bc, trans.bus_bc ) != 0 )
// continue;
if( trans_rec.void_flag == 1)
continue;
for ( i = 0; i < LINE_ST_MAX ; i++ ){
if ( strlen( settle_name[i] ) == 0)
strcpy( settle_name[i], trans_rec.end_station );
if (strcmp( settle_name[i], trans_rec.end_station ) == 0 ){
settle_data[i] += trans_rec.bus_fare-trans_rec.stat_fare;
settle_num[i] += 1;
break;
}
}
trans_rec.settle_flag = 1;
trans_rec.jsdh = jsdh ;
if ( trans_rec.jsdh > 99999 || trans_rec.jsdh < 0 ){
trans_rec.jsdh = 1;
}
jsdh = trans_rec.jsdh;
seekfile(f_ret, (long)(0L-LEN_Sale_Ticket), SEEK_CUR);
len=writefile(f_ret, LEN_Sale_Ticket, (char*)&trans_rec);
if ( len != LEN_Sale_Ticket ){
break;
}
}while( eoffile( f_ret ) != 1);
sum = 0;
l = 0L;
for ( j = 0; j < 4; j ++ ){
sum = 0;
l = 0L;
if ( strlen( settle_name[j*8] ) == 0)
break;
display( 5, " 按确认键打印第%d页结算单",j+1);
inkey(0);
init_printer( 0 );
cprinter("%6.6s%-4.4s次结算单第%d页", Busman1.busman_name,trans.bus_bc, j+1);
cprinter("车牌: %8.8s%8.8s", drive.car_no,drive.driver_name);
for( i = j*8; i < (j+1)*8; i ++ ){
strcpy( buffer1, " ");
if ( strlen( settle_name[i] ) != 0){
print_amount( settle_data[i], buffer2 );
sprintf( buffer1,"%-8.8s %02ld人 %s", settle_name[i], settle_num[i], buffer2);
sum += settle_num[i];
l += settle_data[i];
}
cprinter( buffer1 );
}
print_amount( l, buffer2 );
sprintf( buffer1,"合计: %03ld 人 %s", sum, buffer2);
cprinter( buffer1 );
get_date(buffer1);
get_time(buffer2);
cprinter( "日期:%2.2s年%2.2s月%2.2s日%2.2s时%2.2s分", buffer1+2, buffer1+4, buffer1+6, buffer2, buffer2+2);
cprinter( "结算号%3.3s%s%1.1s%05ld", Busman1.password,Busman.busman,sbh,jsdh);
cprinter( "--");
init_printer( 0 );
cprinter( "--");
init_printer( 0 );
cprinter( "--");
}
closefile(f_ret);
fdr=feed_printer(32);
return;
}
if ( str_len == 0){
if ( strlen( bus_fare[st_n].station_name ) == 0 )
st_n = 0;
continue;
}
if ( str_len-1 < stat_line.station_num ){
strcpy( trans.end_station, bus_fare[str_len-1].station_name );
trans.bus_fare = bus_fare[str_len-1].bus_fare;
trans.stat_fare = bus_fare[str_len-1].stat_fare;
break;
}
}
cls();
ljje=0;lj1=0;lj2=0;
display_cen(1,"请选择售票张数");
display(2,"%-8.8s车次%-5.5s %-8.8s",Busman.busman_name, trans.bus_bc , drive.car_no);
display(9,"当前票号: %08ld", kpph+1);
memset( ticket_num_half, 0, sizeof( ticket_num_half));
memset( ticket_num, 0, sizeof( ticket_num));
print_amount( trans.bus_fare, buffer1);
lj1=trans.bus_fare;
lj2 = lj1/2;
if ( lj2 % 10 > 0 )
lj2 = (lj2 /10 + 1) * 10;
display(4," 到达站 单价");
display(5,"%10.10s %ld.%01ld元",trans.end_station, trans.bus_fare/10, trans.bus_fare%10);
display(7,"全票数: ");
input = getstrn(7,9,0,0,2,ticket_num);
if(ticket_num[0] == (char )0xff && input == 1){
closefile(f_ret);
return;
}
disp(7,15,"半票数:");
input = getstrn(7,24,0,0,1,ticket_num_half);
if(ticket_num_half[0] == (char )0xff && input == 1) {
closefile(f_ret);
return;
}
ticket_n = atoi( ticket_num );
ticket_n_f = atoi( ticket_num_half );
if (ticket_n > 8 || ticket_n_f > 8 ){
ticket_n = 0;
ticket_n_f = 0;
}
ljje=lj1*ticket_n+lj2*ticket_n_f;
disp(8,4,"合计 %ld.%01ld元 确认打票",ljje/10,ljje%10);
inkey(0);
seekfile( f_ret, 0, SEEK_END);
for ( i = 0; i < ticket_n; i++ ){
if ( get_printer_status() != 0 ){
cls();
closefile(f_ret);
display_cen(5,"请安装好打印纸");
display_cen(6,"按任意键,重新操作");
inkey(0);
return;
}
trans.ticket_no = kpph + 1;
if ( trans.ticket_no > 9999999 || trans.ticket_no < 0){
trans.ticket_no = 1;
}
kpph = trans.ticket_no;
trans.void_flag = 0;
trans.half_flag = 0;
len=writefile(f_ret, LEN_Sale_Ticket, (char*)&trans);
if ( len != LEN_Sale_Ticket ){
cls();
closefile(f_ret);
display_cen ( 4 , "流水文件系统出错" ) ;
display_cen ( 5 , "不能正常工作");
display_cen ( 6 , "按任意键将自动关机" ) ;
systemsound ( 400 ) ;
inkey(0);
enable_poweroff();
power_off();
}
feed_printer(8);
Void_Print(0);
}
if (ticket_n_f>0){
trans.bus_fare = trans.bus_fare /2;
if ( trans.bus_fare % 10 > 0 )
trans.bus_fare = (trans.bus_fare /10 + 1) * 10;
}
for ( i = 0; i < ticket_n_f; i++){
if ( get_printer_status() != 0 ){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -