网站首页 工具软件 操作系统 办公软件 网页制作 PHP教程 script脚本专栏 photoshop教程 其他精品教程
我发布的文章 - 教程搜索 - 交流论坛 - 帮助中心 - 网站首页 网络工具 - 常用工具 - 媒体工具 - 系统工具 - 实用工具 NT/2003 - Win Xp - Win2000 - DOS/Win9x - IE/注册表 - Linux - 苹 果 Office - Word - Excel - PowerPoint - 输入法 - 邮件处理 Flash - Dreamweaver - Fireworks - FrontPage - HTMLCSS 基础文章 - PHP函数 - PHP技巧 - 数据库相关 - 高级应用 - PHP安装 - 转载精华 - 常见问题 综 合 类 - 状 态 栏 - 游 戏 类 - 页面背景 - 页面特效 - 页面导航 - 文本操作 - 文本特效 - 图形特效 - 鼠标特效 - 时间日期 - 密 码 类 文字特效 - 按钮与图标 - 色彩运用 - 滤镜魔法 - 综合实例 XML教程 - DELPHI基础教程 - VB教程
首页 -> 其他精品教程 -> VB教程

TOP

用VC实现在线订货
文章内容
相关信息
用户评论
文章内容


目前电子商务采用的处理模式大多是订货用户在网页上填写订单,发出订货请求,接着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/HTML\n\n";
//输出回显给用户的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;
}


上述程序只是一个获取英文电子订单并向服务器发送订单数据的CGI程序,假设服务器程序已经运行于服务器上,并在1025端口上进行侦听,验证后发送交易成功与否的信息。

以上程序在Windows 98、VC++ 6.0环境下调试通过,在OmniHTTPd 2.0 Alpha 8 服务器上运行正常。


相关信息
用VC实现在线订货
发布者:mmcbbs
浏览量:260
发布日期:2005-04-10 10:28:14
所属专题:
用户评论
称  呼:
内  容:

广告位

广告招租,欢迎抢订

热门信息

·什么是ODBC
·初识WTL(上)
·理解ActiveX控件的一些背景..
·VB.NET 的新特点:变..
·探讨VB.Net中的数据绑定
·用VB.NET打造NameSpace
·VB.NET中的面向对象编程特征
·用VB和MTS开发多层数据库应..

推荐信息