WEB开发网
开发学院软件开发VC 用VC实现在线订货 阅读

用VC实现在线订货

 2008-11-13 19:30:30 来源:WEB开发网   
核心提示:目前电子商务采用的处理模式大多是订货用户在网页上填写订单,发出订货请求,用VC实现在线订货,接着WEB服务器上运行CGI程序对用户填写的数据进行一定的处理后,发送到专用的电子商务服务器中,意味着用户填写的一个项的开始Col=0;p++;while(*p!='&&') { //若在字串中遇到“

目前电子商务采用的处理模式大多是订货用户在网页上填写订单,发出订货请求,接着WEB服务器上运行CGI程序对用户填写的数据进行一定的处理后,发送到专用的电子商务服务器中,服务器则对发来的用户数据进行一系列校验,验证用户身份及证实所需的订货信息完整后,将订单写入数据库中,并向WEB服务器中的CGI程序发回一个交易成功的信息,证实交易完成。 

我们利用VC++的AppWizard创建一个支持MFC类的控制台模式程序(An application that support MFC),命名为“Eshopping”,修改主程序文件EShopping.cpp如下: 

  #include "stdafx.h" 
  #include "EShopping.h" 
  #include "afxsock.h" 
  typedef struct OrderSet //用户自己定义的一个订货单结构 
  { 
   char UserName[24]; 
   char Password[12]; 
   char Goods[24]; 
   int Count; 
   char Addr[256]; 
  }ORDER; 
  ……//省略部分机器生成代码 
  int _tmain(int argc, TCHAR* argv[], TCHAR* envp[]) 
  { if (!AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0)) 
   {……//省略部分机器生成代码 
   }else //程序处理的主体 
  {cout〈〈"Content-type:Text/HTMLnn"; 
  //输出回显给用户的HTML的头 
   cout〈〈"〈HTML〉〈HEAD〉〈TITLE〉〈/TITLE〉〈/HEAD〉〈BODY〉n"; 
   char *StreamSize=getenv("CONTENT_LENGTH"); //开始取得用户填写的信息 
   long dataSize=atol(StreamSize); 
   char* buffer[dataSize]=new char[dataSize]; 
   ::memset(buffer,0,dataSize); 
   cin〉〉buffer; //取得用户填写的信息 
   char Ware[5][256]; //这个数组用于从获取的字串中分离用户填写的数据 
   ::memset(Ware,0,5256); 
   char* p=buffer; 
   int Row=0,Col=0; 
   while(Row〈5)//开始处理获取的字串 
   {if(*p= ='='){//若在字串中遇到“=”号,意味着用户填写的一个项的开始 
  Col=0; 
  p++; 
  while(*p!='&&') { //若在字串中遇到“&&”号,意味着用户填写的一个项的结束 
  if(*p= ='+') *p=' '; //字串中的“+”号要转成空格 
  Ware[Row][Col++]=*p; 
  p++; } 
   Row++; } 
   p++; 
   } 
   ORDER Order;//处理完字串后,把用户填写的数据填写到一个ORDER结构中 
   memcpy(Order.UserName,Ware[0],24); 
   memcpy(Order.Password,Ware[1],12); 
   memcpy(Order.Goods,Ware[2],24); 
   int Counts=atoi(Ware[3]); 
   Order.Count=Counts; 
   memcpy(Order.Addr,Ware[4],256); 
   WORD wVersionRequested; //开始连接到服务器上 
   WSADATA wsaData; 
   hostent FAR *hp; 
   wVersionRequested = MAKEWORD( 2, 0 ); 
   WSAStartup( wVersionRequested, &&wsaData ); 
   SOCKET sockClient= INVALID_SOCKET; 
   sockaddr_in addr; //填写一个sockaddr_in结构 
   hp = gethostbyname("Alex"); //假设服务器名为“Alex” 
   memcpy(&&(addr.sin_addr),hp-〉h_addr,hp-〉h_length); 
   addr.sin_family = AF_INET; 
   addr.sin_port =htons(1025); //假设服务器侦听端口为1025 
  sockClient= socket(AF_INET, SOCK_STREAM, 0); 
   connect(sockClient, (sockaddr *)&&addr, sizeof(addr)); 
  //连接到服务器 
   send(sockClient,(char*)&&Order,sizeof(ORDER),0); 
  //发送用户填写的信息 
  while(TRUE) 
  //等待服务器发来确认信息,完成交易 
   {if(int length=recv(sockClient,buffer,dataSize)〉0) 
   {……//省略校验回送信息的代码 
  cout〈〈"cout〈〈"We have got your order!"; 
   break; 
   } 
   } 
   closesocket(sockClient); //关闭socket 
   WSACleanup( ); 
   cout〈〈"〈/BODY〉〈/HTML〉"; 
   return 0; 
   } 
   return nRetCode; 
  } 

1 2  下一页

Tags:VC 实现 在线

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接