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

📄 pos_ter.c

📁 mico_example_siegel c源代码
💻 C
字号:
#include <stream.h>#include "POS_Ter.h"/* #include <FindPNS.h> */#include  "FindPNS.h"/* #include <### PNS interface header file> */#include "PNS.h"POSTerminal_i:: POSTerminal_i(PseudoNameService_ptr   pns                             ,char                  * storeid                             ,POS::POSId              id){  // Load in the stringified object references from the files and  // construct references to these objects  char caStr[512];  strcpy(caStr,"Tax_");  strcat(caStr, storeid);  CORBA::Object_ptr obj = pns->ResolveName(caStr);  m_taxRef = AStore::Tax::_narrow(obj);  strcpy(caStr,"Store_");  strcat(caStr,storeid);  obj = pns->ResolveName(caStr);  m_storeRef = AStore::Store::_narrow(obj);  sprintf(caStr,"OutputMedia_%ld",id);  obj = pns->ResolveName(caStr);  m_outputMediaRef = POS::OutputMedia::_narrow(obj);  // Initialize the member variables to their appropriate values  m_itemBarcode = 0;  m_storeAccessRef = AStore::StoreAccess::_nil();  m_id = id;  m_POSTaxTotal = m_POSTotal = 0.0;  m_saleTaxableSubTotal = m_saleSubTotal = 0.0;}void  POSTerminal_i:: Login () {  if (!CORBA::is_nil(m_storeAccessRef)) {    cerr << "Can't log in twice" << endl;    return;  }  // Get a reference to the StoreAccess object for this POS  try  {     m_storeAccessRef = m_storeRef->Login(m_id);  }  catch (...)  {    cout << "Error in Login" << endl;    return;  }  m_saleSubTotal = m_POSTotal = m_POSTaxTotal = 0.0;  m_itemQuantity = 1;}//----------------------------------------------------------------------------void  POSTerminal_i:: PrintPOSSalesSummary () {  if (!LoggedIn())    return;  if ((m_itemBarcode != 0) || (m_saleSubTotal != 0.0))    return;  char caOpStr[255];  sprintf(caOpStr,"%25s %8.2f\n%25s %8.2f\n","Point of Sale Total := ",           m_POSTotal, "Tax Total := ",m_POSTaxTotal);  try  {     m_outputMediaRef->OutputText(caOpStr);  }  catch (...)  {     cerr << "Error printing Sales Summary" << endl;     return;  }}//-----------------------------------------------------------------------------void  POSTerminal_i:: PrintStoreSalesSummary () {  if (!LoggedIn())    return;  if ((m_itemBarcode != 0) || (m_saleSubTotal != 0.0))    return;  char caOpStr[255];  // Find and output the total sales and tax for the store  AStore::Store::StoreTotals tots;  try {    tots = m_storeRef->Totals();  }  catch(...) {    cerr << "Error finding store Totals" << endl;    return;  }  sprintf(caOpStr,"%s %7.2f\n%s %7.2f\n","Total Sales :=",tots.StoreTotal,				   "Total Tax   :=",tots.StoreTaxTotal);  try {    m_outputMediaRef->OutputText("STORE TOTALS");    m_outputMediaRef->OutputText(caOpStr);  }  catch(...) {    cerr << "Error with Output Media" << endl;    return;  }  // Output the Totals for each POS in turn  AStore::POSList_var PL;  try {    m_storeRef->GetPOSTotals(PL);  }  catch(...) {    cerr << "Error Getting Store Totals" << endl;    return;  }  for (CORBA::ULong i = 0; i < PL->length(); i++)  {    if (PL[i].Id>0) {       sprintf(caOpStr,"%15s %ld\n%15s %9.2f\n%15s %9.2f\n","POS   I.D.  :-",	            PL[i].Id,"Total Sales :-",PL[i].TotalSales,"Total Tax   :-",	            PL[i].TotalTaxes);       try {         m_outputMediaRef->OutputText(caOpStr);       }       catch(...) {          cerr << "Error with Output Media" << endl;          return;       }    }  }}//-----------------------------------------------------------------------------/* void  POSTerminal_i:: SendBarcode (const char *Item) *///void  POSTerminal_i:: SendBarcode (const POS::Barcode Item)void  POSTerminal_i:: SendBarcode (const char *Item){  if (!LoggedIn())    return;  AStore::ItemInfo_var ItemInf;  CORBA::Float price;  CORBA::Float taxablePrice;  delete[] m_itemBarcode;  m_itemBarcode = new char[strlen(Item) + 1];  strcpy(m_itemBarcode,Item);  try  {     m_storeAccessRef->FindPrice(m_itemBarcode,m_itemQuantity,                                 price,taxablePrice,ItemInf);  }  catch (const AStore::BarcodeNotFound &e)  {     m_itemQuantity = 1;         cerr << "Invalid Barcode Found" << endl;	  return;  }  catch(...) {    m_itemQuantity = 1;    cerr << "Error in find Price" << endl;    return;  }  CORBA::Float itemExt = (float)m_itemQuantity * price;  m_saleSubTotal += itemExt;    char caOpStr[255];  char * szFmtStr;  szFmtStr = "%3d %10s %20s %7.2f %7.2f %s";/*  sprintf(caOpStr,szFmtStr,m_itemQuantity,m_itemBarcode,          ItemInf->Name,price,itemExt,     ((taxablePrice > 0.0) ? " *" : "") );*/  sprintf(caOpStr,szFmtStr,m_itemQuantity,(char *)m_itemBarcode,          (char *)ItemInf->Name,price,itemExt,     ((taxablePrice > 0.0) ? " *" : "") );  try  {     m_outputMediaRef->OutputText(caOpStr);  }  catch (CORBA::Exception &exc)  {    cout << "Error with Output Media" << endl;    return;  }  m_saleTaxableSubTotal += taxablePrice * (CORBA::Float)m_itemQuantity;  m_itemQuantity = 1;}//-----------------------------------------------------------------------------void  POSTerminal_i:: ItemQuantity (CORBA::Long Quantity) {  if (!LoggedIn())    return;  if (Quantity > 0)    m_itemQuantity = Quantity;}//-----------------------------------------------------------------------------void  POSTerminal_i:: EndOfSale () {  char caOpStr[255];  if (!LoggedIn())    return;  sprintf(caOpStr,"Taxable Sub-Total := %8.2f",m_saleTaxableSubTotal);  m_outputMediaRef->OutputText(caOpStr);  CORBA::Float saleTax = m_taxRef->CalculateTax(m_saleTaxableSubTotal);  sprintf(caOpStr,"Taxes             := %8.2f",saleTax);  m_outputMediaRef->OutputText(caOpStr);  CORBA::Float saleTotal = saleTax + m_saleSubTotal;  sprintf(caOpStr,"Total             := %8.2f",saleTotal);  m_outputMediaRef->OutputText(caOpStr);  m_outputMediaRef->OutputText("\nAnother transaction start..\n");  m_POSTotal += saleTotal;  m_POSTaxTotal += saleTax;  try {    m_storeRef->UpdateStoreTotals(m_id,saleTotal,saleTax);  }  catch(...) {    cerr << "Error Ending sale" << endl ;  }  m_saleSubTotal = m_saleTaxableSubTotal = 0;  m_itemQuantity = 1;  if (m_itemBarcode)  {    delete[] m_itemBarcode;    m_itemBarcode = 0;  }  return;}unsigned char POSTerminal_i::LoggedIn(){  if (CORBA::is_nil(m_storeAccessRef)) {    cerr << "Need to log in first" << endl;    return 0;  }  else    return 1;}

⌨️ 快捷键说明

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