Exemple #1
0
void RohonDealer::placeOrder(Order *order)
{
    int ref;
    //放入map中,执行相应动作,开启等待线程
    TRACE_LOG("RohonDealer::placeOrder, orderid:%s.",order->getId().c_str());
    if(!started)
    {
        TRACE_LOG("RohonDealer::placeOrder failed. RohonDealer not started.");
        order->setRejected();
        return;
    }
    //放入map中
    EnterCriticalSection(&cs);
    RohonDealerInventory* pInventory = addInventory(order);
    if(pInventory == NULL)
    {   //orderID与正在处理中的重复,要拒绝这次下单请求
        LeaveCriticalSection(&cs);
        TRACE_LOG("RohonDealer::placeOrder failed. orderID is duplicated.");
        //order->setRejected();
        return;
    }
    //分配localRef
    ref = pUserSpi->getCurOrderRef();
    pInventory->localRef = ref;
    LeaveCriticalSection(&cs);
    //执行下单动作
    if(0 != pUserSpi->InsertOrder(ref,order))
    {   //下单直接失败
        EnterCriticalSection(&cs);
        delInventory(pInventory);
        LeaveCriticalSection(&cs);
        TRACE_LOG("RohonDealer::placeOrder failed. 下单直接失败");
        order->setRejected();
        return;
    }
    return;
}
Exemple #2
0
void menuInventory()
{
	fclose(fdel);	
	fclose(fi1);
	FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin);
	system("cls");
	fclose(fi1);
	system("color 3f");
	printBorders(95,31);
	printline(95,4);
	gtc(30,2); printf("INVENTORY MANAGEMENT SYSTEM FOR POS");
	gtc(5,6); printf ("ID                       ITEM NAME                                     PRICE");
	fi1=fopen("mainInv.data","rb");
	int start=8;
	int twopage=0;
	while(fread(&inv1,sizeof(inv1),1,fi1)==1)
	{
		gtc(5,start);
		printf("%d",inv1.itemID);
		gtc(30,start);
		printf("%s",inv1.pName);
		gtc(76,start);
		printf("PHP %.2f",inv1.price);
		start++;
		if(start==29)
		{
			twopage=1;
			break;
		}
	}
	gtc(4,29); printf("\xb10"); gtc(6,29);printf("Add an Item.");
	gtc(26,29);printf("Delete an Item."); ; gtc(46,29);printf("Edit an Item.") ; gtc(66,29);printf("Go back to menu.");
	if (twopage==1)
	{


		gtc(30,3);printf("2nd Page available [PRESS DOWN ARROW]");
	}
	else
	{
	}
	int a,curs=4;
	while(getch()!=13) //THIS PART OMG.
	{
		FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin);			
		a=getch();

		if (a==0 || a==0xE0) a=getch();
		
		if (a==27) 
			{
			break;
			}
			
		else if (a==75)
		{
			FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin);			
			if(curs!=4)
			{
				gtc(curs,29);
				printf(" ");
				curs-=20;
				gtc(curs,29);
				printf("\xb10");
			}	
		}
		else if (a==77)
			{
				FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin);				
				if (curs!=64)
				{
					gtc(curs,29);
					printf(" ");
					curs+=20;	
					gtc(curs,29);
					printf("\xb10");
				}
			}
		else if(a==80)
		{
			if(twopage==1)
			{
				FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); fflush(stdin);
				system("cls");
				system("color 3f");
				printBorders(95,31);
				printline(95,4);
				gtc(30,2); printf("INVENTORY MANAGEMENT SYSTEM FOR POS");
				gtc(5,6); printf ("ID                       ITEM NAME                                     PRICE");
				int start1=8;
				while(fread(&inv1,sizeof(inv1),1,fi1)==1)
				{
					gtc(5,start1);
					printf("%d",inv1.itemID);
					gtc(30,start1);
					printf("%s",inv1.pName);
					gtc(76,start1);
					printf("PHP %.2f",inv1.price);
					start1++;
				}
				int a1,curs1=4;
				while(getch()!=13) //THIS PART OMG.
				{		
					a1=getch();
			
					if (a1==0 || a1==0xE0) a1=getch();
		
					if (a1==27) 
						{
						break;
						}
					
					else if (a1==72)
					{
						menuInventory();
					}
				}
				}
		}
	}
	switch(curs)
	{
		case 4:
			addInventory();
			break;
		case 24:
			delInventory();
			break;
		case 44:
			editInventory();
			break;
		case 64:
			menu();
			exit(0);
			break;
	}
	getch();
}
void EditInventory::deleteInventory(const Inventory &inventory) {
    addInventory(inventory);
}