文档库 最新最全的文档下载
当前位置:文档库 › 基于C#的火车车次查询api调用代码实例

基于C#的火车车次查询api调用代码实例

基于C#的火车车次查询api调用代码实例
基于C#的火车车次查询api调用代码实例

基于C#的火车车次查询api调用代码实例

代码描述:基于php的火车时刻表接口调用代码实例

代码平台:聚合数据

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using https://www.wendangku.net/doc/7c4236253.html,;

using System.IO;

using https://www.wendangku.net/doc/7c4236253.html,;

using System.Diagnostics;

using System.Web;

//----------------------------------

// 火车时刻表调用示例代码-聚合数据

// 在线接口文档:https://www.wendangku.net/doc/7c4236253.html,/docs/79

// 代码中JsonObject类下载地址:https://www.wendangku.net/doc/7c4236253.html,/download/gcm32060 21155665/7458439

//----------------------------------

namespace ConsoleAPI

{

class Program

{

static void Main(string[] args)

{

string appkey = "*******************"; //配置您申请的appkey

//1.列次查询

string url1 = "https://www.wendangku.net/doc/7c4236253.html,/onebox/train/query";

var parameters1 = new Dictionary();

parameters1.Add("train", ""); //车次号,如:D3010

parameters1.Add("key", appkey);//你申请的key

string result1 = sendPost(url1, parameters1, "get");

JsonObject newObj1 = new JsonObject(result1);

String errorCode1 = newObj1["error_code"].Value;

if(errorCode1 == "0")

{

Debug.WriteLine("成功");

Debug.WriteLine(newObj1);

}

else

{

//Debug.WriteLine("失败");

Debug.WriteLine(newObj1["error_code"].Value+":"+newObj1 ["reason"].Value);

}

//2.站到站检索

string url2 = "https://www.wendangku.net/doc/7c4236253.html,/onebox/train/query_ab";

var parameters2 = new Dictionary();

parameters2.Add("from", ""); //出发站名称,如:北京

parameters2.Add("to", ""); //到达站名称,如:上海

parameters2.Add("key", appkey);//你申请的key

string result2 = sendPost(url2, parameters2, "get");

JsonObject newObj2 = new JsonObject(result2);

String errorCode2 = newObj2["error_code"].Value;

if(errorCode2 == "0")

{

Debug.WriteLine("成功");

Debug.WriteLine(newObj2);

}

else

{

//Debug.WriteLine("失败");

Debug.WriteLine(newObj2["error_code"].Value+":"+newObj2 ["reason"].Value);

}

}

///

/// Http (GET/POST)

///

/// 请求URL

/// 请求参数

/// 请求方法

/// 响应内容

static string sendPost(string url, IDictionary p arameters, string method)

{

if(method.ToLower() == "post")

{

HttpWebRequest req = null;

HttpWebResponse rsp = null;

System.IO.Stream reqStream = null;

try

{

req = (HttpWebRequest)WebRequest.Create(url);

req.Method = method;

req.KeepAlive = false;

req.ProtocolVersion = HttpVersion.Version10;

req.Timeout = 5000;

req.ContentType = "application/x-www-form-urlencode d;charset=utf-8";

byte[] postData = Encoding.UTF8.GetBytes(BuildQuery (parameters, "utf8"));

reqStream = req.GetRequestStream();

reqStream.Write(postData, 0, postData.Length);

rsp = (HttpWebResponse)req.GetResponse();

Encoding encoding = Encoding.GetEncoding(rsp.Charac terSet);

return GetResponseAsString(rsp, encoding);

}

catch(Exception ex)

{

return ex.Message;

}

finally

{

if(reqStream != null) reqStream.Close();

if(rsp != null) rsp.Close();

}

}

else

{

//创建请求

HttpWebRequest request = (HttpWebRequest)WebRequest.Cre ate(url + "?"+ BuildQuery(parameters, "utf8"));

//GET请求

request.Method = "GET";

request.ReadWriteTimeout = 5000;

request.ContentType = "text/html;charset=UTF-8";

HttpWebResponse response = (HttpWebResponse)request.Get Response();

Stream myResponseStream = response.GetResponseStream();

StreamReader myStreamReader = new StreamReader(myRespons eStream, Encoding.GetEncoding("utf-8"));

//返回内容

string retString = myStreamReader.ReadToEnd();

return retString;

}

}

///

/// 组装普通文本请求参数。

///

/// Key-Value形式请求参数字典

/// URL编码后的请求数据

static string BuildQuery(IDictionary parameters, string encode)

{

StringBuilder postData = new StringBuilder();

bool hasParam = false;

IEnumerator> dem = parameters. GetEnumerator();

while(dem.MoveNext())

{

string name = dem.Current.Key;

string value = dem.Current.Value;

// 忽略参数名或参数值为空的参数

if(!string.IsNullOrEmpty(name))//&& !string.IsNullOrEmp ty(value)

{

if(hasParam)

{

postData.Append("&");

}

postData.Append(name);

postData.Append("=");

if(encode == "gb2312")

{

postData.Append(HttpUtility.UrlEncode(value, En coding.GetEncoding("gb2312")));

}

else if(encode == "utf8")

{

postData.Append(HttpUtility.UrlEncode(value, En coding.UTF8));

}

else

{

postData.Append(value);

}

hasParam = true;

}

}

return postData.ToString();

}

///

/// 把响应流转换为文本。

///

/// 响应流对象

/// 编码方式

/// 响应文本

static string GetResponseAsString(HttpWebResponse rsp, Encoding encoding)

{

System.IO.Stream stream = null;

StreamReader reader = null;

try

{

// 以字符流的方式读取HTTP响应

stream = rsp.GetResponseStream();

reader = new StreamReader(stream, encoding);

return reader.ReadToEnd();

}

finally

{

// 释放资源

if(reader != null) reader.Close();

if(stream != null) stream.Close();

if(rsp != null) rsp.Close();

}

}

}

}

VFP常见编程实例(免费下载)

VFP常见编程实例 1、1-100的累加 ** 求1到100的累加值 CLEAR s=0 i=1 DO WHILE i<=100 s=s+i i=i+1 &&一定记住先累加后循环ENDDO ?s RETURN 2、阶乘 ** 求5的阶乘 CLEAR j=1 i=1 DO WHILE i<=5 j=j*i

i=i+1 ENDDO ?j RETURN 3、求阶乘和 ** 求1至5的阶乘和CLEAR s=0 i=1 j=1 DO WHILE i<=5 j=j*i s=s+j i=i+1 ENDDO ?s RETURN 4、条件定位

** 查询定位记录指针在赵伟上 CLEAR USE 学生 LOCATE FOR 姓名="赵伟" IF FOUND() DISPLAY ELSE CANCEL ENDIF CONTINUE 5、用scan语句查询定位 ** 用scan语句查询定位记录在赵伟上 CLEAR SCAN FOR 姓名="赵伟" DISPLAY ENDSCAN RETURN 6、用scan语句扫描符合条件的记录,并显示出来** 把年龄小于30岁的人显示出来

SCAN FOR 年龄<30 DISPLAY ENDSCAN RETURN 7、查找男性职工 ** 查找男性职工CLEAR LOCATE FOR 性别="男" DO WHILE FOUND() DISPLAY CONTINUE ENDDO RETURN ** 查找男性职工CLEAR LOCATE FOR 性别="男" DO WHILE NOT EOF() DISPLAY CONTINUE

VFP函数大全

VFP函数大全 %运算符用于计算并返回两个数值表达式相除之后的余数 $(包含)运算符用于进行字符表达式之间的包含关系运算,如果一个字符表达式包含在另一个字符表达式之中,则函数返回真 ABS() 计算并返回指定数值表达式的绝对值 ACLASS() 用于将一个对象的父类名放置于一个内存数组中 ACOPY() 把一个数组的元素拷贝到另一个数组中 ACOS() 计算并返回一个指定数值表达式的余弦值 ADATABASES() 用于将所有打开的数据库名和它的路径存入一个内在变量数组中 ADB OBJECT S() 用于把当前数据库中的连接、表或SQL视图的名存入内存变量数组中 ADEL() 用于从一维数据中删除一个元素,或从二维数组中删除一行或者一列元素 ADIR() 将文件的有关信息存入指定的数组中,然后返回文件数 AELEMENT() 通过元素的下标,返回元素号 AFIELDS 将当前的结构信息存入数组中,然后返回表中的字段数 AFONT() 将可用字体的信息存入数组中 AERROR() 用于创建包含VFP或ODBC错误信息的内存变量 AINS() 在一维数组中插入一个元素或在二维数组中插入一行或一列元素 AINSTANCE() 用于将类的所有实例存入内存变量数组中,然后返回数组中存放的实例数 ALEN() 返回数组中元素、行或者列数 ALIAS() 返回当前工作区或指定工作区内表的别名 ALLTRIM() 从指定字符表达式的首尾两端删除前导和尾随的空格字符,然后返回截去空格后的字符串 AMEMBERS() 用于将对象的属性、过程和成员对象存入内存变量数组中

ANSITOOEM() 将指定字符表达式中的每个字符转换为MS-DOS(OEM)字符集中对应字符 APRINTERS() 将Print Manager中安装的当前打印机名存入内存变量数组中 ASC() 用于返回指定字符表达式中最左字符的ASCII码值 ASCAN() 搜索一个指定的数组,寻找一个与表达式中数据和数据类型相同的数组元素 ASELOBJ() 将活动的Form设计器当前控件的对象引用存储到内存变量数组中 ASIN() 计算并返回指定数值表达式反正弦值 ASORT() 按升序或降序排列数组中的元素 ASUBSCRIPT() 计算并返回指定元素号的行或者列坐标 AT() 寻找字符串或备注字段在另一字符串或备注字段中的第一次出现,并返回位置 ATAN() 计算并返回指定数值表达式的反正切值 ATC() 寻找字符串或备注字段中的第一次出现,并返回位置,将不考虑表达式中字母的大小写 ATCLINE() 寻找并返回一个字符串表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号。不区分字符大小写 ATLINE() 寻找并返回一个字符表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号ATN2() 根据指定的值返回所有4个像限内的反正切值 AUSED() 用于将一次会话期间的所有表别名和工作区存入变量数组之中 BAR() 从用DEFINE POPUP命令定义的菜单中返回最近所选择的菜单项的编号,或返回一个从VFP菜单所选择的一个菜单命令 BARCOUNT() 返回DEFINE POPUP命令所定义的菜单中的菜单项数,或返回VFP系统菜单上的菜单项数 BARPROMPT() 返回一个菜单项的有关正文 BETWEEN() 确定指定的表达式是否介于两个相同类型的表达式之间 BITAND() 返回两个数值表达式之间执行逐位与(AND)运算的结果 BITCLEAR() 清除数值表达式中的指定位,然后再返回结果值 BITLSHIFT() 返回将数值表达式左移若干位后的结果值

vfp中api函数调用实例

vfp中api函数调用实例 我们在vfp编程时,为了弥补vfp本身功能的不足,常常会用到win32api函数来对vfp 的功能进行扩展,例如取得系统信息、对注册表进行操作等,但由于win32api函数是c++的数据结构形式,在调用时与vfp的数据格式有所不同,因此在调用时往往会产生问题。下面,笔者就在vfp如何调用win32api函数,并就一些常用的win32api函数调用实例作一具体介绍。 一、vfp中调用win32api函数的格式 vfp中调用win32api函数的命令主要是declare-dll和clear dlls两个。 1.declare-dll 它用于注册外部windows 32位动态链接库(.dll)中的一个函数。 语法: declare [cfunctiontype] functionname in libraryname [as aliasname] [cparamtype1 [@] paramname1, cparamtype2 [@] paramname2, ...] 说明: cfunctiontype 指定该函数返回值的类型,其类型代码如下: short16位整数 integer32位整数 single32位浮点数 double64位浮点数 string字符串 functionname指定在要注册使用的32位函数名。注意functionname区分大小写。 如果该函数名与visual foxpro的保留字相同,应使用as参数另起别名。 in libraryname 指定该函数所在的外部动态链接库文件名,如果libraryname为win32api时,vfp将依次查找:kernel32.dll、gdi32.dll、user32.dll、mpr.dll及advapi32.dll 等动态链接库文件名。 as aliasname 为当api函数的名称与visual foxpro的保留字相同时,另取aliasname别名,另取的别名是不区分大小写的。 cparametertype1 [@] paramname1, cparametertype2 [@] paramname2, ... 指定传递给被调用的32位.dll函数的参数类型及参数名称。其类型代码如cfunctiontype,如果要以传址方法传递参数则应在参数名前加上@。 2. clear dlls 释放所有利用declare-dll命令所装入的动态链接库。 一旦申明win32api函数成功,就可以和一般函数一样用?xxx()、=xxx() 来使用。 二、vfp中常用win32api函数调用实例 1.利用win32api函数获取指定磁盘的卷标: stor 0 to c—var,c—cd,c—qf c—disk=′c:\′ &&指定磁盘 declare integer getvolumeinformation in win32api string @,string @,integer,; integer @, integer @, integer @, string @, integer xx=getvolumeinformation(c—disk,″ ″,20,@c—var,@c—cd,@c—qf,0,0) clear dlls 返回值: xx〈〉0 获取指定磁盘的卷标成功,反之则未成功。

vfP 函数练习题

第二章练习题 一、选择题。 1. 就关系数据描述语言来说,Visual FoxPro属于______数据库管理系统。 A)问答式B)语言描述式 C)域描述语句式D)关系描述语句式 2. 下列______符号不能作为Visual FoxPro中的变量名。 A)ABCDEFG B)K1234 C)12ASDFG D)xyz 3. 日期型数据长度固定为______个字符。 A)10B)12 C)8 D)6 4. 在Visual FoxPro数据库文件中,逻辑型、日期型、备注型数据的宽度分别是______。 A)1,8,128 B)2,8,10 C)1,8,10 D)1,8,任意 5. 以下4个符号中,______是Visual FoxPro中的一个常量。 A)T B)TOP C).T. D)TO 6. Visual FoxPro中,表达式: 2*3^2+2*8/4+3^2的值为______。 A)64 B)31 C)49 D)22 7. 下列4个式子中,______不是Visual FoxPro中的表达式。 A)05/23/88 B)"2002" C)X+Y D)XYZ='5' AND ABC=5 8. 将逻辑值赋给内存变量X的正确方法是______。 A)X="T" B)STORE "T" TO X C)X=TRUE D)STORE .T. TO X 9. 设M="324.2",?43+&M的结果是______。 A)43 B)324.2 C)43324.2 D)367.2 10. 设A=123,B=456,K="A+B",则表达式l+&K的值是______。 A)1123456 B)580 C)1+A+B D)579 11. 顺序键入以下命令,显示结果为______。 STORE "14.31" TO X Y=INT(&X+5) ?Y A)20 B)14.315 C)14.31 D)19 12. Visual FoxPro中的索引文件分为单索引文件和复合索引文件,其中复合索引文件的扩展名为______。A)IDX B)EDX C)CDX D)NDX 13. 用于存储内存变量的文件扩展名为______。 A)FPT B)PRG C)FMT D)MEM 14. Visual FoxPro函数INT(RAND()*10)的值是在______范围内的整数。 A)(0,1)B)(1,10)C)(0,10)D)(1,9) 15. 数学式子sin25°写成Visual FoxPro表达式是______。 A)SIN25 B)SIN(25)C)SIN(25°)D)SIN(25*PI/180) 16. 设某数据库有100条记录。用函数EOF ( ) 测试结果为.T.,此时,当前记录号为______。 A)100 B)101 C)99D)1 17. 在下列表达式中,结果为日期类型的正确表达式是______。 A)DATE() + 25 B)DA TE() + TIME() C)DATE() – CTOD("06/11/2002") D)365 – DATE() 18. 执行如下命令: ?LEN(TRIM("北京市□□□")) 结果是______(其中□表示一个空格)。 A)6 B)3 C)9 D)10 19. 执行下列命令: M="ABCDabcd" ?SUBSTR(M,INT(LEN(M)/2+1),2) 输出结果是______。 A)AB B)ab C)bc D)abcd 20. Visual FoxPro数据库文件中,函数ROUND(1234.567,2)的值是______。 A)1234.57 B)1234.56 C)1235 D)1234 21. 执行下列命令后显示的结果是______。 A=CTOD("05/23/89") B=CTOD("05/03/89") ?B-A A)20 B)-20 C)“05/20/89” D)“05/-20/89” 22. 执行下列命令后显示的结果是______。 STR="VFoxPr数据库" ?SUBSTR(STR,LEN(STR)/2+1,6) A)VFoxPrB)数据库C)数据D)Pr数据 23. 执行下列命令后显示的结果是______。 X="Visual FoxPro is OK" ?AT("Fox",X) A)8B)6 C)FoxPro D)Visual 24. 函数STUFF("数据库",5,6,"管理系统")的结果是______。 A)数据库管理系统B)数据管理系统C)管理系统D)库系统 25. FoxPro数据库管理系统的数据模型是______。 A)概念型B)网状型C)关系型D)层次型 26. 下面4条叙述中,正确的叙述是______。 A)在命令窗口中被赋值的变量都是全局变量 B)在上级程序定义的变量在被调用的下级程序中无效 C)在程序中,用DECLARE定义的数组为全局变量 D)在程序中,用DIMENSION定义的数组为全局变量 27. 下面4条叙述中,正确的叙述是______。 A)在命令窗口中被赋值的变量均为局部变量 B)在命令窗口中用PRIV ATE命令说明的变量均为局部变量 C)在被调用的下级程序中用PUBLIC命令说明的变量都是全局变量 D)在程序中用PRIVA TE命令说明的变量均为全局变量 28. 下面4条叙述中,正确的叙述是______。 A)局部变量不可以与全局变量同名,但可以与上级程序中的局部变量同名 1

vfp调用word OR excel

vfp调用word OR excel(二) 10.从VFP中导出数据的几种方法! 答:当VFP处理好数据后,这时你可以用多种方法将这些数据导出,以便被其它应用程序(如Excel等)所用。下面向你简单介绍几种导出数据的方法: 1.用“导出数据”对话框。你可以从VFP主菜单中选择“文件/导出…”打开 “导出”对话框,在该对话框中的“来源”框中输入表名(c:\vfp\students.dbf ),在“类型”中指定要导出数据的类型(Microsoft Excel),在“到”框中输入 导出的路径和文件名(C:\excel\aa.xls),然后按“确定”即可。这时你如果查看command窗口,可发现以下代码: COPY TO C:\excel\aa.XLS TYPE XL5 2.用COPY TO命令。COPY TO命令的工作对象是VFP中的表,它要依据“TYPE”项才知道要产生哪一类导出文件。对于上面的导出过程,可用以下方法实现:USE students COPY TO C:\excel\aa.XLS TYPE XL5 12.在VFP6中,如何调用已经存在的WORD文件? oW = CREATEOBJECT([word.basic]) with oW .Apprestore() .Appmaximize() .fileopen("路径+文件名.扩展名") ENDWITH 13.打开word文件的控件? 用RUN /N3 C:\WORD.EXE 文档路径 C:\WORD.EXE是我自己写的,你用时换成WORD的真正路径就行了!

比如用WORD 打开SD.DOC 就写 RUN /N3 C:\WORD.EXE C:\SD.DOC 另:TXLS_EOLE = CREATEOBJECT('word.application') TXLS_EOLE.Documents.Open('文件名.doc') TXLS_EOLE.Visible=.t. 注意:别忘了关闭哦 TXLS_EOLE.Documents.close &&关闭文档 TXLS_EOLE.quit &&关闭word RELEASE TXLS_EOLE &&释放对象 再者: fw=alltrim(this.value) if file('&fw') *documents.open filename('&fw') wrdapp = createobject("word.application") wrdapp.visible=.t. *wrdapp.documents.add wrdapp.documents.open(alltrim(this.value)) else messagebox(fw+chr(13)+'文件不存在,请确认',0+16,'文件路径出错') RETURN(.F.) ENDIF 14.在表单中创建一个编辑框,用来显示WORD文档! 做一个按扭,在CLICK中写:THISFORM.EDIT1.value=FILETOSTR(GETFILE('DOC')) 这个不也行,而且还简单 15.强烈建议:直接使用ole可以在表单中打开word,建议不使用这种办法,改为利用api 用windows默认的程序打开word,数据库只存储word文档所在的位置和名字。

vfp中地常用函数与命令

VFP常用的命令和函数 1.数据库操作语言 使用可以CLOSE 命令关闭各种类型的文件。 DBC( ) 函数返回当前数据库的名称和路径。SQLCANCEL( ) 函数请求取消一条正在执行的 SQL 语句。SQLCOMMIT( ) 函数提交一个事务处理。SQLCONNECT( ) 函数建立一个对数据源的连接。SQLDISCONNECT( ) 函数结束一个对数据源的连接。SQLEXEC( ) 函数发送一条 SQL 语句到数据源中处理。SQLGETPROP( ) 函数获取一个活动连接的当前设置。 SQLMORERESULTS( ) 函数如果存在多个可用的结果集,则将另一个结果集复制到Visual FoxPro 临时表(cursor)中。 SQLROLLBACK( ) 函数取消当前事务处理期间所做的任何更改。SQLSETPROP( ) 函数指定一个活动连接的设置。SQLSTRINGCONNECT( ) 函数使用一个连接字符串建立与数据源的连接。TABLEREVERT( ) 函数放弃对缓冲行、缓冲表或临时表(cursor)的修改。 TABLEUPDATE( ) 函数提交对缓冲行、缓冲表或临时表(cursor)适配器的修改。 字段操作语言 使用可以BLANK 命令清除字段中的数据。 DELETED( ) 函数指出一个记录是否被标记为删除。FCOUNT( ) 函数返回一个表中的字段数量。 FIELD( ) 函数根据编号返回表中的字段名。 GATHER 命令用来自指定源的数据替换记录中的数据。SCATTER 命令从当前记录中复制数据到指定的目标。SET EXACT 命令指定比较不同长度两个串时的规则。

VFP中调用其他应用程序的方法

VFP中调用其他应用程序的方法 在用VFP进行应用程序设计中,经常需要调用其他的应用程序。这时候我们立即会想到RUN命令。使用RUN命令只需知道应用程序的文件名及其路径即可。 下面的示例是以最大化方式启动Windows目录下的图画板程序并同时打开c:\windows\Bubbles.bmp文件: RUN/n3 C:\Windows\Pbrush.exe c:\windows\Bubbles.bmp RUN命令的参数用法可以参考Visual FoxPro的帮助文件。 但是令人失望的是,在实际开发时我们常常无法确定所需要启动的应用程序的文件名及其安装的路径。比如我们需要启动用户机器上的浏览器并连接到某一个网址,该机器可能安装的是IE,也可能是NetScape,还有可能是其他的浏览器软件,安装的路径更是无从确定。下面给出我在工作中找到的两种解决方法,这两种方法都是通过Win32 API函数来解决问题,因此其解决思路也可以用到其他编程语言中去。 (一)从注册表中获取被调用软件的名称及路径。 我们只需要提供被调用的软件所处理的文件类型(由文件扩展名来确定),即可通过查找注册表中该软件注册的可以处理的文件类型的数据项来得到该软件的文件名及安装路径。 *主函数 PROCEDURE lookreg

Parameter filetype && 文件类型 * 申明要用到的API 函数 DECLARE Integer RegOpenKey IN Win32API ; Integer nHKey, String @cSubKey, Integer @nResult DECLARE Integer RegCloseKey IN Win32API ; Integer nHKey DECLARE Integer RegQueryvalueEx IN Win32API ; Integer nHKey, String lpszvalueName, Integer dwReserved,; Integer @lpdwType, String @lpbData, Integer @lpcbData #DEFINE HKEY_CLASSES_ROOT -2147483648 #DEFINE C_EXTNOFOUND_LOC "查找失败!" LOCAL cExtn,cAppKey,cAppName,nErrNum LOCAL oReg,regfile cAppKey = "" cAppName = "" nCurrentKey = 0 nErrNum =GetAppPath (filetype,@cAppKey,@cAppName)

VFP命令、函数及程序语句大全

VFP命令、函数及程序语句大全.txt16生活,就是面对现实微笑,就是越过障碍注视未来;生活,就是用心灵之剪,在人生之路上裁出叶绿的枝头;生活,就是面对困惑或黑暗时,灵魂深处燃起豆大却明亮且微笑的灯展。17过去与未来,都离自己很遥远,关键是抓住现在,抓住当前。VFP命令、函数及程序语句大全(1) 学过VFP(Microsoft Visual FoxPro)的朋友都知道它是微软公司开发的数据库管理系统。它 经历了从dBASE、FoxBASE、FoxPro直到VFP的发展过程。本文便以VFP 6.0为例介绍它的命令、函数 及程序语句,为学习VFP的朋友提供必要的学习参考,也为已经精通VFP的朋友提供复习的好机会。 一、主要命令: 1、CREATE 作用:建立一个新的表。 格式:CREATE [<文件>|?](注意,命令字符可取前面四个字符,后面可省略不写,即CREA,下 同;中括号表示其中的参数是可选的;|管道符号表示两个参数只能选择一个,不能同时选择,下 同。) 说明:文件指建立以.dbf为扩展名的VFP数据库文件,在命令后面加上一个问号表示系统会弹出 对话框,要求用户输入想要建立的表名。在命令中不加文件名或问号系统也会弹出对话框,要求用 户输入想要建立的表名。 2、MODIFY STRUCTURE 作用:显示表文件结构,并允许修改此表的结构。 格式:MODIFY STRUCTURE 说明:只有在用USE命令打开表文件以后,才能显示或修改表文件的结构。 3、APPEND 作用:在当前表的尾部(无论表中有无记录)追加记录(在当前表指当前正使用的表)。 格式:APPEND [BLANK] 说明:在APPEND命令后面加上BLANK参数表示在当前表的尾部添加一条空白记录。无BLANK 参数 时,表示在当前表的尾部添加一条记录并要求用户输入相应的字段内容。 4、INSERT 作用:在表文件中间插入一个新记录。 格式:INSERT [BEFORE] [BLANK] 说明:INSERT 在当前记录后插入一记录; INSERT BEFORE 在当前记录前插入一记录; INSERT BEFORE BLANK 在当前记录前插入一空记录。 INSERT - SQL命令追加记录 INSERT INTO 表名[(字段1[,字段2…])];

VFP常用命令详解

VFP常用命令详解 VFP命令、函数及程序语句大全(1) VFP命令是一种实现对数据库系统进行操作的动词或短语。VFP命令可在VFP命令窗口中单独运行,也可编制成程序成批运行,由命令和函数编制的程序可对数据库系统进行自动、复杂的操作,使数据库系统应用起来更加友好、方便。 ?VFP常用命令分类表 类别命令 建立文件类CREATE,MODIFY,COPY,SAVE等 数据库操作类USE,CLOSE,COPY,MODIFY STRUCTURE等 数据编辑类BROWSE,EDIT,CHANG,REPLACE,UPDATE等 记录指针操作类GOTO,LOCATE,SEEK,FIND,SKIP等 记录操作类APPEND,DELETE,INSERT等 数据显示类BROWSE,LIST,DISPLAY等 数据统计类SUM,COUNT,AVERAGE,TOTAL等 存变量操作类ACCEPT,INPUT,READ,SAVE等 程序控制类DO,DO WHILE…ENDDO,IF…ENDIF等 系统设置类SET TALK,SET DEFAULT TO等 ?命令格式 VFP命令一般由命令动词和控制短语构成。 一般格式: 命令动词[FROM<源文件>][TO<目标文件>][记录范围][FOR/WHILE<条件>] [FIELDS<字段名表>] [ ]表示可选,<>表示必选, / 表示或选

例如: (1)APPEND FROM C:\RSDA.DBF FOR 基本工资>100 FIELDS 编号,姓名,职称,基本工资。 从C:\RSDA.DBF 表中把基本工资大于100元的记录添加到当前表添加字段为:编号,姓名,职称,基本工资。 (2)COUNT FOR 职称="高工"TO GG 统计高工的记录数到内存变量GG。 控制短语规定了对数据库操作的限制条件: 1.指向输入输出目标 FROM/TO APPEND FROM,COPY FILE TO <目标文件> 2.限制记录范围(SCOPE) ALL 所有记录 NEXT 本记录后的第几个记录 RECORD<1> 第1个记录 REST 当前记录之后所有记录 3.选择字段 FIELDS<字段表>选择输入/输出的字段。 4.限制条件 FOR/WHILE<条件> FOR 基本工资>100 .AND.基本工资<200 命令格式规则 命令的行为单位,一行书写不完,在未尾加上“;”第二行接着写。

vfp函数大全

%运算符用于计算并返回两个数值表达式相除之后的余数 $(包含)运算符用于进行字符表达式之间的包含关系运算,如果一个字符表达式包含在另一个字符表达式之中,则函数返回真 ABS() 计算并返回指定数值表达式的绝对值 ACLASS() 用于将一个对象的父类名放置于一个内存数组中 ACOPY() 把一个数组的元素拷贝到另一个数组中 ACOS() 计算并返回一个指定数值表达式的余弦值 ADATABASES() 用于将所有打开的数据库名和它的路径存入一个内在变量数组中ADBOBJECTS() 用于把当前数据库中的连接、表或SQL视图的名存入内存变量数组中ADEL() 用于从一维数据中删除一个元素,或从二维数组中删除一行或者一列元素 ADIR() 将文件的有关信息存入指定的数组中,然后返回文件数 AELEMENT() 通过元素的下标,返回元素号 AFIELDS 将当前的结构信息存入数组中,然后返回表中的字段数 AFONT() 将可用字体的信息存入数组中 AERROR() 用于创建包含VFP或ODBC错误信息的内存变量 AINS() 在一维数组中插入一个元素或在二维数组中插入一行或一列元素 AINSTANCE() 用于将类的所有实例存入内存变量数组中,然后返回数组中存放的实例数ALEN() 返回数组中元素、行或者列数 ALIAS() 返回当前工作区或指定工作区内表的别名 ALLTRIM() 从指定字符表达式的首尾两端删除前导和尾随的空格字符,然后返回截去空格后的字符串 AMEMBERS() 用于将对象的属性、过程和成员对象存入内存变量数组中 ANSITOOEM() 将指定字符表达式中的每个字符转换为MS-DOS(OEM)字符集中对应字符APRINTERS() 将Print Manager中安装的当前打印机名存入内存变量数组中 ASC() 用于返回指定字符表达式中最左字符的ASCII码值 ASCAN() 搜索一个指定的数组,寻找一个与表达式中数据和数据类型相同的数组元素ASELOBJ() 将活动的Form设计器当前控件的对象引用存储到内存变量数组中 ASIN() 计算并返回指定数值表达式反正弦值 ASORT() 按升序或降序排列数组中的元素 ASUB script () 计算并返回指定元素号的行或者列坐标 AT() 寻找字符串或备注字段在另一字符串或备注字段中的第一次出现,并返回位置 ATAN() 计算并返回指定数值表达式的反正切值 ATC() 寻找字符串或备注字段中的第一次出现,并返回位置,将不考虑表达式中字母的大小写 ATCLINE() 寻找并返回一个字符串表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号。不区分字符大小写 ATLINE() 寻找并返回一个字符表达式或备注字段在另一字符表达式或备注字段中第一次出现的行号 ATN2() 根据指定的值返回所有4个像限内的反正切值 AUSED() 用于将一次会话期间的所有表别名和工作区存入变量数组之中 BAR() 从用DEFINE POPUP命令定义的菜单中返回最近所选择的菜单项的编号,或返回一个从VFP菜单所选择的一个菜单命令 BARCOUNT() 返回DEFINE POPUP命令所定义的菜单中的菜单项数,或返回VFP系统菜单上的菜单项数

VFP程序设计典型例题汇总

Visual FxoPro程序设计题 1.编写程序,从键盘输入一个日期,查询STUDENT表中该日期以后出生的学生信息并显示在浏览窗口中。 use student &&运行前单击教学管理数据库 input “请输入某日期:” to r q *输入时有提示,或input to rq输入时无提示,输{^1987-01-01} browse for 出生日期>rq 2.有一函数: x (x<1) y= 2x-1 (1≤x<10) 3x-11 (x≥10) 编写程序,输入x,输出y的值。 clear input "Enter x please!" to x if x<1 y=x else if x<10 y=2*x-1 else y=3*x-11 endif endif 'x=',x,'y=',y 3.编写程序,从键盘输入一个年份,判断它是否闰年。 clear input "Enter year number please!" to y if y%4=0 and y%100<>0 or y%400=0 y,"is a leap year!" else y,"is not leap year." Endif

4.编写程序,输入一个百分制成绩,要求输出成绩等级“A”、“B”、“C”、“D”、“E”。90分以上为“A”,80~89分为“B”,70~79分为“C”,60~69分为“D”,60分以下为“E”。 clear input “请输入一百分制成绩” to cj do case case cj>=90 ”A” case cj>=80 ”B” case cj>=70 ”C” case cj>=60 ”D” otherwise ”E” endcase 5.编写程序,从键盘输入一个正整数M,输出M内(包括M)所有偶数。 clear input to m for i=0 to m step 2 str(i,5) Endfor 6.编写程序,从键盘输入一个正整数M,计算M内(包括M)所有偶数之和。 clear input to m s=0 for i=2 to m step 2 s=s+i Endfor s

VFP实验 过程文件与自定义函数

实验4-4 过程文件与自定义函数 一、实验目的 加强对过程文件与自定义函数概念的理解,掌握过程文件与自定义函数在程序设计中的运用,并掌握程序之间数据传递的方法。 二、实验准备 复习教材中有关子程序与自定义函数的内容,重点掌握子程序、过程与过程文件、自定义函数等概念,理解本节给出的实例。 三、实验内容 1.用过程文件的形式编写程序,求1!+3!+5!+ + n!的值,n从键盘输入,阶乘计算用过程。 *1.用过程文件的形式编写程序,求1!+ 3!+ 5!+ + n!的值,n从键盘输入,阶乘计算用过程。 SET TALK OFF CLEAR INPUT "n=" TO n

S=0 Q="" FOR J=1 TO n STEP 2 T=1 DO jc WITH J S=S+T Q=Q+ALLTRIM(STR(J,19))+"!+" ENDFOR ?LEFT(Q,LEN(Q)-1)+"="+ALLTRIM(STR(S,19,2)) SET TALK ON PROCEDURE JC PARAMETERS X FOR I=1 TO X T=T*I ENDFOR RETURN ENDPROC 2.编写自定义函数,判断X是否是素数,返回结果为逻辑值.T. 或 .F.。 *2.编写自定义函数,判断X是否是素数,返回结果为逻辑值.T. 或 .F.。CLEAR PROCEDURE SS

PARAMETERS Q FOR N=2 TO Q-1 IF INT(Q/N)=Q/N EXIT ENDIF ENDFOR IF N>Q-1 RETURN .T. ELSE RETURN .F. ENDIF ENDPROC 3.编写程序,要求利用参数传递和过程文件求解:(m! + n!) ((m - n)!+ m^n + m^m )的值。M,N从键盘上输入且M>N,要求使用子程序和过程文件两种方式实现。 *3.编写程序,要求利用参数传递和过程文件求解:(m! + n!) ((m - n)!+ m^n + m^m )的值。 *M,N从键盘上输入且M>N,要求使用子程序和过程文件两种方式实现。

vfp编程实例

1、1-100的累加 2、阶乘 3、求阶乘和 4、条件定位 5、用scan语句查询定位 6、用scan语句扫描符合条件的记录,并显示出来 7、查找男性职工 ** 查找男性职工** 查找男性职工 8、新值换旧值 9、多位整数各个位数相加 10、找100-999之间的“水仙花数” 11、判断一个大于3的数是否为素数 12、求一个班级每个学生的平均成绩 13、计算圆的面积 14、将小写字母转换为大写字母 15、找出最大数和最小数 16、绝对值函数的实现 17、绝对值函数实现的另一种方法 18、输出成绩等级 19、求一名学生的平均成绩 20、用数组的方法,计算一个学生的平均成绩 21、用do case语句实现符号函数的功能 22、用一般选择语句实现符号函数的功能 23、用简单选择语句实现符号函数功能 24、打开数据库和数据表 25、显示表中指定信息 26、询问后再由用户按(Y/N)键执行的程序实现 27、根据exact的设置进行字符串匹配比较 28、使一个多位正整数逆序排列 29、按编号查找并列出一条记录 30、验证密码程序: 31、编程求税金 32、用三角形列出乘法口诀表: 33、将变量A、B值互换: 34、找出已知三个数的中间数: 35、调用子程序: 36、用参数传递计算圆的面积: 37、我国古代数学家张丘建

VFP常见编程实例 1、1-100的累加 ** 求1到100的累加值 CLEAR s=0 i=1 DO WHILE i<=100 s=s+i i=i+1 &&一定记住先累加后循环ENDDO ?s RETURN 2、阶乘 ** 求5的阶乘 CLEAR j=1 i=1 DO WHILE i<=5 j=j*i

VFP与文件操作相关的函数

VFP与文件操作相关的函数 VFP提供了一些对文件进行低级操作的函数,这些函数的功能及用法为: (1)GETFILE()函数。 格式:GETFILE([])。 功能:显示“打开”对话框,供用户选定一个文件并返回文件名。其中用于指定文件的扩展名。 例如,若显示一文件打开对话框,允许用户选择打开一个扩展名为.jpg类型的图形文件,则调用方法为: myfile=getfile("jpg") 若要允许用户选择的文件类型有多种,此时可用分号将各文件扩展名进行分隔,例如,若允许用户选择打开jpg和gif类型的文件,则调用方法为: myfile=getfile("jpg;gif") (2)PUTFILE()函数。 格式:PUTFILE([])。 功能:显示“另存为”对话框,供用户指定一个文件名并返回文件名。其中用于指定文件的扩展名。 (3) FOPEN()函数。 格式:FOPEN(<文件名>)。 功能:打开指定文件,返回文件句柄(控制号)。 (4) FCREATE()函数。 格式:FCREATE(<文件名>)。 功能:建立一个新文件,返回文件句柄(控制号)。 (5) FCLOSE()函数。 格式:FCLOSE(<文件句柄>)。 功能:将文件缓冲区的内容写入文件句柄所指定的文件中,并关闭该文件。 (6) FREAD()函数。 格式:FREAD(<文件句柄>,<字节数>)。 功能:从文件句柄所指定的文件中读取指定字节数的字符数据。 (7)FWRITE()函数。 格式:FWRITE(<文件句柄>,)。 功能:把表示的数据写入文件句柄所指定的文件中。 (8) FSEEK()函数。 格式:FSEEK(<文件句柄>,<移动字节数>[,])。 功能:在文件句柄所指定的打开的文件中移动文件指针,其中n表示移动的方式或方向: n=0为向文件首移动,n=1为相对位置移动,n=2为向文件尾移动。

如何在VFP中调用默认关联的程序打开文件

如何在VFP中调用默认关联的程序打开文件? (2007-01-20 17:13:12) 转载 分类:『数据库-DB』 如何在VFP中调用默认关联的程序打开文件? 怎样在一个菜单中建立一个程序或命令打开一个网页或word,excel等文件??? --------------------------------------------------------------- 打开一个网页与word,excel是不一样. 1.word,excel要用ACTIVEX的OLECONTROL控件. 2.打开一个网页要用到HYPERLINK控件. 可以在表单上加一个TEXT一个COMMANG控件,还有一个超级链接HYPERLINK控件. COMMAND.CLICK事件: THISFORM.HYPERLINK.NA VIGATETO(THISFORM.TEXT.V ALUE) 在vfp的例子中找到了一个这个问题的解决方法,使用api函数来解决,如下: 1、声明函数 DECLARE INTEGER ShellExecute ; IN SHELL32.DLL ; INTEGER nWinHandle,; STRING cOperation,; STRING cFileName,; STRING cParameters,; STRING cDirectory,; INTEGER nShowWindow 2、在程序中任何地方调用,包括菜单中,打开一个e:\a.htm文件的调用方法如下, =ShellExecute(0,"Open","e:\a.htm","","e:\",1) --------------------------------------------------------------- 在VFP中我们可以用run来调用由VFP自身生成的.exe文件。命令格式: run c:\..\*.exe 当调用非VFP自身生成的.exe文件时,需要加上绝对路径和参数。 一般来说,用VFP运行非VFP自身生成的可执行文件时,会有一个黑色的窗口显示一下。可以通过加上/n来隐藏这个窗口。例如运行Windows下的扫雷游戏,命令格式如下:RUN/n C:\Windows\Winmine.exe 下面运行一个更复杂一点的程序。用word打开c:\下的一个名为mlx.doc的word文件,命令格式如下: run /n3 C:\Program Files\Microsoft Office\Office\Winword.exe C:\mlx.doc 参数:n 在运行时隐藏VFP的黑色窗口。 3 表示以最大化的方式运行程序。0隐藏窗口、1正常方式、2最小化方式、3最大化方式在这种情况下,虽然可以通过加上参数使程序程序能够流畅运行,但还是要指定绝对路径,

1-精选VFP常见编程实例-答案

精选VFP常见编程实例-答案 1、1-100的累加 求1到100的累加值 CLEAR s=0 i=1 DO WHILE i<=100 s=s+i i=i+1 &&一定记住先累加后循环ENDDO ?s RETURN 2、阶乘 求5的阶乘 CLEAR j=1 i=1 DO WHILE i<=5 j=j*i i=i+1 ENDDO ?j RETURN 3、求阶乘和 求1至5的阶乘和 CLEAR s=0 i=1 j=1 DO WHILE i<=5 j=j*i s=s+j i=i+1 ENDDO ?s RETURN 4、条件定位 查询定位记录指针在赵伟上CLEAR USE 学生 LOCATE FOR 姓名="赵伟"

IF FOUND() DISPLAY ELSE CANCEL ENDIF CONTINUE 5、用scan语句查询定位 用scan语句查询定位记录在赵伟上 CLEAR SCAN FOR 姓名="赵伟" DISPLAY ENDSCAN RETURN 6、用scan语句扫描符合条件的记录,并显示出来把年龄小于30岁的人显示出来 CLEAR SCAN FOR 年龄<30 DISPLAY ENDSCAN RETURN 7、查找男性职工 查找男性职工 CLEAR LOCATE FOR 性别="男" DO WHILE FOUND() DISPLAY CONTINUE ENDDO RETURN 查找男性职工 CLEAR LOCATE FOR 性别="男" DO WHILE NOT EOF() DISPLAY CONTINUE ENDDO RETURN 查找男性职工 CLEAR

VFP调用Windows API函数

VFP调用Windows API函数 正式开始: 我想你可能经常看过如下这种语句,我不得不在这里重复地说一遍 DECLARE INTEGER SetWindowText IN user32; INTEGER hWnd,; STRING lpString Hwnd=thisform.hwnd customtext=space(250) lnlen=len(customtext) SetWindowText(Hwnd,customtext, lnlen) 第一个语句就是一般的api定义,意思就是注册一个user32.dll动态库中的函数SetWindowText ,接受参数integer类型hwnd, string 类型h的sWindowText 参数,,返回值为intger ,这是参数按值传递的一部分,第三个语句就是调用注册的api函数了,看起来和我们用普通的foxpro函数并无区别,只是多了一步注册的步骤. 我们再看看另一种定义,按引用传递的的方式,看到什么不同了吗? 第一个语句就是一般的api定义,意思就是注册一个user32.dll动态库中的函数SetWindowText ,接受的参数是integer类型hwnd, string 类型h的sWindowText , INTEGER 类型的cch,返回值为intger类型 DECLARE INTEGER GetWindowText IN user32; INTEGER hwnd,; STRING @lpString,; INTEGER cch Hwnd=thisform.hwnd Hwnd=thisform.hwnd Stext =space(250) lnlen=250 SetWindowText(Hwnd,@customtext, lnlen) 没错,多了一个伊妹儿的符号:@,注意调用的时候也得加入该符号,此符号的意思是说参数sWidowText是按引用传递的,为什么要这么用呢,原因是我们要用函数GetwindowText 的得到一个窗体(Form)标 题.GetwindowText 的职责就是将我们要的值填入sWidowText中,如果调用成功你就会看到sWidowText的值已经改变.此处你要明白所谓的按引用传递有如C中的指针,我们只是该内容的地址为参数传给GetwindowText,它直接在地址指向的内存单元上修改数据.所以我们才可能看到sWidowText值在调用GetwindowText()函数就发生了改变。 以上两种就是最基本的windows api定义了.对于简单的函数一般都可以这样解决. 也许此时你有疑问,你是在哪里知道这些函数的详细信息的?很好很好,有问题是好的.那么请你打开msdn,什么?你不知道MSDN,我倒..^_^简单而说msdn是涵盖了大量内容的帮助文档,大部分的api在其中都有讲述,有些还有小实例.在这里并不要求你要记住所有windows的api函数,这不可行也不可能,只要知道有它的存在,大概的功能,用时查msdn就可以,更重要的是知道怎么去把它纠出来,然后理解它. 如果你现在没有安装MSDN,我强烈建议你马上下载一个msdn2005.该帮助文档大部分都是E文,你得有点心理准备.

相关文档