⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 非常完善的小型操作系统代码!是学习操作系统的最好的一个
💻 C
📖 第 1 页 / 共 3 页
字号:
	closefile(f_ret); //关闭文件
	return;
}

void
Void_Download_data()
{
char	option[2],passwd[9],ret;

	init_rs232(3);
	while(1){
		cls();
		display_cen(1,"下传售票基础数据");
		display_cen(2,"------------------------------");
		display(3,"1. 下传站点票价信息");
		display(4,"2. 下传售票员信息");
		display(5,"3. 下传车辆信息");
		display(6,"4. 下传字库");
		display(7,"5. 输入设备号");
		display(8,"0. 退出并关机");
		display(9,"请选择:");
		getstrn( 9, 9, 0, 0, 1, option);
		cls();
		switch(option[0]){
		case '1':
			display_cen(1,"下传站点票价信息");
			Void_Download( "F_STAT" );
			break;
		case '2':
			display_cen(1,"下传售票员信息");
			Void_Download( "F_MANS" );
			break;
		case '3':
			display_cen(1,"下传车辆信息");
			Void_Download( "F_DRIV" );
			break;
		case '4':
		cls();
                memset( passwd, 0,sizeof(passwd));
		display( 4, "请输入设置密码");
		display( 6, "密码:");
		do{
                        keyoff();
			ret = getstrn(6,7,0,0,8,passwd);
			keyon();
                        if( passwd[0] == ( char )0xff && ret == 1)
				return;
		}while( ret != 8 );
		if ( memcmp( passwd, "01234567", 8 ) == 0 ){
                        cls();
			display_cen(1,"下传字库");
			load_dots( );
	}
			break;
		case '5':
		cls();
                memset( passwd, 0,sizeof(passwd));
		display( 4, "请输入设置密码");
		display( 6, "密码:");
		do{
                        keyoff();
			ret = getstrn(6,7,0,0,8,passwd);
			keyon();
                        if( passwd[0] == ( char )0xff && ret == 1)
				return;
		}while( ret != 8 );
		if ( memcmp( passwd, "01234567", 8 ) == 0 ){
                        cls();
                        memset( sbh, 0,sizeof(sbh));         	
                  	display( 4, "请输入设备号(不能重复):");
	        	display( 6, "设备号:");
	do{
		ret = getstrn(6,7,0,1,1,sbh);

		if( sbh[0] == (char )0xff && ret == 1)
			return;
	}while( ret > 5 || ret < 1 );
                        
	}
                cls();
       		display( 4, "该设备号为%s",sbh);
                 
			break;

		case '0':
			power_off();
			return;
		default:
			break;
		}
	}
}
void
Void_make_ticket_data()
{
long		ticket_no;
char		buffer[10];
int		len, f_ret;

		cls();
		display_cen(1,"售票员作废客票");
		display(2,"售票员: %8.8s",Busman.busman_name);
		display(4,"请输入作废客票号");
		display(5,"客票号:");
		getstrn(5,9,0,1,8,buffer);
		if( buffer[0] == ( char )0xff )
			return( US_FAIL );
		ticket_no = atol( buffer );
		
		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);
		do{
			memset( (char *)&trans_rec, 0, LEN_Sale_Ticket);
			readfile (f_ret, LEN_Sale_Ticket, (char *)&trans_rec);
			if ( trans_rec.ticket_no == ticket_no ){
				if( trans_rec.settle_flag == 1){
					cls();
					display_cen ( 4 , "此客票已经结算不能作废" ) ;
					display_cen ( 5 , "按任意键返回");
					inkey(0);
					closefile( f_ret );
					return;
				}
				break;
			}
		}while( eoffile( f_ret ) != 1);
		if ( trans_rec.ticket_no == ticket_no ){
			trans_rec.void_flag = 1;
			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 ){
				cls();
				display_cen ( 4 , "流水文件系统出错" ) ;
				display_cen ( 5 , "不能正常工作");
				display_cen ( 6 , "按任意键将自动关机" ) ;
				systemsound ( 400 ) ;
				inkey(0);
				enable_poweroff();
				power_off();
			}
			cls();
			display_cen ( 5 , "作废客票操作成功" ) ;
			display_cen ( 6 , "按任意键返回");
			inkey(0);
			closefile( f_ret );
			return;
		}
		cls();
		display_cen ( 4 , "流水文件中无此票号" ) ;
		display_cen ( 5 , "按任意键返回");
		inkey(0);
		closefile( f_ret );
		return;
}
void
Void_print_Sale_Data()
{
char	bus_bc[6], bus_no[7];
char	buffer[50], buffer1[50];
long 	l;
int 	i, sum, f_ret, len;
	if ( get_printer_status() != 0 ){
		cls();
		display_cen(5,"请安装好打印纸");
		display_cen(6,"按任意键,重新操作");
		inkey(0);
		return;
	}
	cls();
	display_cen(1,"售票员打印交款单");
	display(2,"售票员: %8.8s  ",Busman.busman_name);
	display_cen(5,"正在统计中");
	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);
	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.jk_flag == 1)
//			continue;
		if(strcmp( trans_rec.busman, Busman.busman) != 0 )
			continue;
		if( trans_rec.void_flag == 1){
			settle_data[1] += trans_rec.bus_fare;
			settle_num[1] += 1;
			continue;
		}
		settle_data[0] += trans_rec.bus_fare;
		settle_data[2] += trans_rec.stat_fare;
		settle_num[0] += 1;
//		trans_rec.jk_flag = 1;
//		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);
	init_printer( 638 );
	clear_printer();
	fill_ticket_dot(12,0,"---售票员交款单---",DOT40);
	fill_ticket_dot(12,44,"售票员",DOT32);
	fill_ticket_dot(12,57,Busman.busman,DOT32);
	sprintf( buffer, "售票张数:%03ld  售票金额:%ld.%01ld元", settle_num[0], settle_data[0]/10, settle_data[0]%10);
	fill_ticket_dot(20,0,buffer,DOT32);
	sprintf( buffer, "废票张数:%03ld  废票金额:%ld.%01ld元", settle_num[1], settle_data[1]/10, settle_data[1]%10);
	fill_ticket_dot(24,0,buffer,DOT32);
	sprintf( buffer, "站 务 费:%ld.%01ld元", settle_data[2]/10, settle_data[2]%10);
	fill_ticket_dot(28,0,buffer,DOT32);
	get_date( buffer1 );
	sprintf( buffer, "售票日期:%4.4s年%2.2s月%2.2s日", buffer1, buffer1+4, buffer1+6);
	fill_ticket_dot(36,4,buffer ,DOT32);
	get_time( buffer1 );
	sprintf( buffer, "交款时间:%2.2s时%2.2s分%2.2s秒", buffer1, buffer1+2, buffer1+4);
	fill_ticket_dot(41,4,buffer ,DOT32);
	set_printer();
	feed_printer(32);	
	return;
}
void
main(){    //1
char	option[2], f_ret, ret, passwd[9],ret1;
	if( getproflag() == 0 ){
                kpph=0;
                jsdh=0;
                memset( sbh, 0,sizeof(sbh));
		memset( (char *)&config, 0, LEN_Config);
		memset( (char *)&trans, 0, LEN_Sale_Ticket);
		if ( first_setup() == US_FAIL)
			return;
	}
	test_vol();
	cls ( ) ;
	display_inv ( 1 , "系统自检" ) ;
	display_cen ( 4 , "系统正在");
	display_cen ( 5, "工作前的自检" ) ;
	display_cen ( 6 , "请稍候" ) ;
	init_rs232( 3 );
	cls();
	display( 5 , "设备正常 设备号为%s",sbh);
	if ( inkey (9) == (char)0x1D ){
		cls();
		display( 4, "请输入设置密码");
		display( 6, "密码:");
		do{
                        keyoff();
			ret = getstrn(6,7,0,0,8,passwd);
			keyon();
                        if( passwd[0] == ( char )0xff && ret == 1)
				return;
		}while( ret != 8 );
		if ( memcmp( passwd, "12345678", 8 ) == 0 )
			Void_Download_data();
	}
///////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////					
	config.terminal_login_flag = NOLOGIN;
	if ( get_line_name() == US_FAIL )
		Void_Download_data();
	disable_poweroff();
	while(1){
		check_printer();
		if ( config.terminal_login_flag != LOGIN){
			busman_login();
			continue;
		}
	f_ret=openfile("F_MANS");
	if (check_openfile( f_ret ) == US_FAIL ) 
		return;
	seekfile(f_ret,0,SEEK_SET);
	do{
		memset( (char *)&Busman1, 0,  LEN_Busman );
		readfile (f_ret, LEN_Busman, (char *)&Busman1);
		if ( strcmp ( Busman1.busman, "9999") == 0){
			//config.terminal_login_flag = LOGIN1 ;
			break;
		}
	}while( eoffile( f_ret ) != 1);
	closefile( f_ret  );
		while(1){
			cls();
			display_cen(1,"**************主菜单**************");
			display(2,"售票员: %8.8s",Busman.busman_name);
			display(3,"1. 售票员销售客票");
			display(4,"2. 售票员作废客票");
			display(5,"3. 售票员打印交款单");
			display(6,"4. 进退打印纸");
			display(7,"5. 交款上传售票数据");
			display(8,"0. 售票员结束售票关机");
			display(9,"请选择:");
			getstrn( 9, 9, 0, 0, 1, option);
			cls();
			switch(option[0]){
			case '1':
				VOID_Sale_Ticket();
				break;
			case '2':
				Void_make_ticket_data();
				break;
			case '3':
				Void_print_Sale_Data();
				break;
			case '4':
                                 cls();
                                 while(1){
                                 display(5,"按进纸键 前进   按退纸键 后退");
                                  ret1=inkey(10);
	                         if ( ret1 == (char)0x11 )
                                     feed_printer (8);
 	                         if ( ret1 == (char)0x10 )
                                     back_printer (8);
	                         if ( ret1 == (char)0x03 ){
                                    cls();  
                                    break;
                                  }
                                  }
		                     cls();
				break;
			case '5':
				Void_Up_Sale_Ticket_Data();
				break;
			case '0':
				config.terminal_login_flag = NOLOGIN;
				enable_poweroff();
				display_cen( 5,"稍候将自动关机");
				display_cen( 6, "或按关机键关机");
				inkey(3);
				power_off();
				break;   
			default:
				break;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -