VC开发(共12篇)
VC开发 篇1
Cadence软件是一款大型EDA软件,可完成包括ASIC、FPGA和PCB板的设计。并在仿真、电路图设计、自动布局布线、版图设计及验证等方面有着一定的优势。此外,Cadence还开发了自己的编程语言SKILL,并为其编写了编译器。同时考虑到单一语言功能的局限性,SKILL提供进程间通信函数集以支持与C语言之间的通信,这样就可以利用C语言强大的字符及数值处理函数来完成在SKILL中难以完成的任务。并且用户可以利用VC轻松地编写出各种复杂的操作界面,使得用SKILL开发的新功能具有更好的操作性。
本文以Cadence软件的SigXplorer为例,在SigXplorer界面的菜单栏中嵌入自己的菜单项,调出VC界面,通过VC界面浏览要仿真的拓扑文件,点击确定后,SigXplorer会自动导入浏览的拓扑文件并仿真。通过这一简单的例子,介绍了基于VC的Cadence二次开发的步骤。
1 SKILL语言简介
Cadence公司开发的SKILL语言,是基于人工智能语言Lisp发展而来,语法似于C语言。SKILL是一种解释性语言,使用该语言开发的程序必须提交给SKILL解释器才能运行。用户可通过窗口、菜单、组合键和Cadence的命令输入窗口等完成提交工作,如图1所示[1]。
从图1可以看出,在Cadence中调用任何一个菜单命令、或者在命令输入窗中输入任何一个命令都会激活一段SKILL的程序来完成所要求的功能。SKILL语言允许用户根据需要快速和轻松地定制和扩展现有的软件环境;它提供一个安全、高级的编程环境,可以自动处理传统的系统编程操作,例如内存管理等;SKILL编写的程序无须编译即可立即在Cadence环境运行。
2 SigXplorer二次开发步骤
2.1 创建VC界面
启动VisualC++6.0,使用MFC AppWizzard(exe)按照默认选项创建一个基于对话框的工程,工程名命名为VC UI。将默认的控件删除,添加两个按钮控件,其中一个控件的名称改为“浏览”,另一个改为“自动仿真”。编译,并将生成的可执行文件VC UI.exe复制到一个路径下,如E:下。路径可任意,但是其中不能包含汉字。
此时的用户界面只是一个框架,并没有添加实际的代码,所以仅能被调用弹出,但不能完成任何功能。
2.2 启动SKILL命令行解释器界面
在SigXplorer界面最下面的Command命令行中直接输入settelskill,就会弹出一个新的界面,如图2所示。
这个界面就是用来运行SKILL函数和命令的解释器。当然,也可以直接在命令行中输入SKILL函数或命令,但这时输入的函数和命令必须都要在前面加上字符串“skill”,才可以正常执行。退出命令行解释器可以直接输入“exit”。
2.3 编写SKILL函数,调出VC界面
在某一个路径下,新建一个文本文档,将后缀的.txt改成.il。例如在C盘下,名字为Call VC.il。路径可任意,但是不能包含汉字。用记事本打开文件,输入如下内容
Procedure函数用来定义一个有参数的函数[2],本例中函数名为Call VC,参数列表在函数名之后的括号内,但是本例中没有使用参数。Procedure函数的返回值是定义的函数名,在本例中就是Call VCIpcBeginProcess函数[3]的作用是调出一个子进程。括号内的参数,第1个参数表示子进程的全路径。这个全路径也不能有汉字。第2个参数只在网络模式中才有用,本例中子进程在本机运行,所以该参数不用设置。第3个参数是一个回调函数,当父进程(即SigXplorer)从子进程(即VC进程)接收数据时,该回调函数被调用。所以可以编辑回调函数,使VC进程传输给SigXplorer的命令在回调函数中被执行。但此时VC代码并没有完成任何功能,所以暂时不编辑回调函数,那么第3个参数也暂时不用设置。
Call VC.il文件编辑完成,在命令行解释器中输入load(“c:/Call VC.il”)。注意SKILL全路径中的分隔符不是“”,而是“/”或是“”,也就是说输入load(“c:Call VC.il”)结果也是一样。如果返回t,说明导入成功,此时相当于定义了一个函数Call VC(),在命令行解释器中输入Call VC,就会调用该函数,结果是调出了VC进程VC UI.exe,弹出相应的界面。
2.4 将SKILL函数注册为Cadence命令
SKILL编写的函数虽然能在命令行解释器中直接输入,但是如上所述,如果要在命令行中输入该函数,需要在前面加上字符创串“skill”,否则就会报错。例如上面编写的Call_VC()函数,如果在命令行中输入Call_VC,就会出现错误提示“E-Command notfound:Call_VC”。
注册成Cadence命令的另一个原因,是因为只有在命令行中可以直接输入执行的命令,才能作为菜单项的执行命令,也是为下面创建自己的菜单项作准备。
将SKILL函数注册为Cadence的命令用的是axlCmdRegister(“ShowVC”'Call_VC?cmdType“interactive”)。这个命令是将SKILL函数Call VC注册为相应的ShowVC。这样在Cadence中运行ShowVC就相当于是运行了Call_VC。参数cmdType用来说明注册命令的类型“interactive”,“general”,“sub_cmd”。通常都会选择“interactive”。
在命令行解释器中输入axlCmdRegister(“ShowVC”'Call_VCcmdType“interactive”)。然后在命令行中输入ShowVC,就能调出VC界面。
2.5 在SigXplorer菜单栏上创建自己的菜单项
SKILL的函数axlUIMenuDump(t_MenuFile)的作用是把当前窗口的菜单下载到一个指定文件里,t_MenuFile就是指定文件的全路径,菜单文件的后缀名为.men,但是在指定全路径时,也可以不用加后缀。axlUIMenuLoad(t_MenuFile)是用t_MenuFile所指向的菜单文件替换当前菜单。
利用以上两个函数可以实现菜单栏的编辑。
在命令行解释器中输入axlUIMenuDump(“e:/SigXPMenu.men”),将当前菜单下载到E盘,菜单名为SigXPMenu。用记事本方式打开该菜单文件,可以看到关键词Popup之后是弹出式菜单的菜单名,如Popup“&File”;关键词Menuitem之后是子菜单项的菜单名,如Menuitem“&New….”,“new”,New是菜单项显示的名字,逗号后面是执行的命令,只要是在命令行可以输入运行的命令都可以在这里设置。在最后一个END之前,输入
以上代码的作用是新建一个名称为NewPOPUP的弹出式菜单,这个菜单下只有一个子菜单,名称为InvokeVC,功能是调出VC界面。
在命令行解释器中输入axlUIMenuLoad(“e:/SigXPMenu.men”),用编辑过的菜单替换当前菜单,结果如图3所示。
点击InvokeVC子菜单项,就会弹出VC界面。
2.6 编写SKILL回调函数dataH和VC函数,实现VC与Cadence的通信
SKILL回调函数定义如下
将以上代码添在Call_VC.il文件的后面,并将ipcBeginProcess语句改为cid=ipcBeginProcess(“e:/VC UI.exe”“”“dataH”),然后重新导入该文件。
VC用于和Cadence通信的函数为
函数的参数SkillStr是要执行的SKILL命令,用Printf语句将命令传给SKILL,但是此时命令字符串是在输出缓存中的,所以用fflush(stdout)清空输出通道,此时SKILL接收到子进程传来的命令,就会调用回调函数dataH,evalstring执行命令。将该函数作为CVC_UIDlg的成员函数。
2.7 编写VC控件的响应函数
本例完成的功能是,点击“浏览”,查找要导入的拓扑文件,点击“自动仿真”,该拓扑文件就会自动导入并仿真。所以控件“浏览”的响应函数为
AfxGetMainWnd());//新建对话框类浏览拓扑文件
上述代码中SkillOrder1~4都是要SigXplorer执行的SKILL命令,在VC代码中将它们变成字符串,再通过RunSkill函数将字符串传给SigXplorer。axlShell函数是把只能在命令行中执行的命令放到命令框中执行,所以可以用这个函数执行菜单项对应的命令。注意VC中路径的分隔符是””,而SKILL中路径的分隔符是”/”,所以要用Replace(“”,“/”)替换掉VC路径中的分隔符””。
编译,并将生成的可执行文件VC UI.exe复制到一个原路径E:下。
2.8 在SigXplorer启动时加载SKILL文件和语句
完成到这一步,已经可以通过点击新菜单项“InvokeVC”来导入和仿真拓扑了,但是SKILL函数的编写、新菜单的加载等工作都是通过手动在命令行解释器中输入的,或导入文件,或直接输入命令。所以要实现SKILL语句的自动加载,这样当SigXplorer启动时,所有SKILL语句就已经导入了。
具体方法是修改Cadence的init文件。Cadence安装的过程中,会让用户选择一个Home文件夹,这个文件夹存储的是Cadence的一些初始化信息,并且当Cadence启动时,初始的工作目录就是用户选择的Home文件夹。
如果用户不知道Home文件夹位置,可以在命令行解释器中输入getSkillPath(),得到的几个路径中,第一个就是Home文件夹的路径。
在Home文件夹中的Pcbenv文件夹下,有一个allegro.ilinit文件,它是Cadence的初始化文件,每当打开Cadence,就会从这个文件启动,所以可以通过这一文件实现SKILL语句的自动加载。如果用户这一文件夹下没有这个文件,可以新建一个,名称为allegro.ilinit。
综上所述,SKILL语句共完成了:定义一个函数Call_VC,并将其注册为Cadence命令;装载新的菜单;定义一个回调函数dataH。将相应语句都放到Call_VC.il文件中,并在allegro.ilinit文件中增加语句:load(“C:/Call VC.il”)。
这时再重新打开SigXplorer,会看到新增加的菜单项,点击菜单项,会弹出VC界面,用“浏览”控件查找想要导入的拓扑文件,点击“自动仿真”,会看到拓扑文件自动导入SigXplorer,并完成仿真。
3 结束语
通过一个实例,说明基于VC的Cadence二次开发的过程。通过二次开发,用户可以利用VC编写出复杂的操作界面,使得用SKILL开发的新功能具有较好的操作性,并能代替人力,实现许多复杂的功能,比如自动批量仿真等,提高了设计的效率,节省了时间。
摘要:Cadence的二次开发,可以实现新功能的定制,增强可操作性,并可代替开发人员完成许多重复性强的工作,节省了人力和时间。文中研究了用VC对Cadence做二次开发,使用VC编写操作界面,通过VC与SK ILL语言通信,实现了VC界面对Cadence软件的控制,完成特定操作,给出了实现的代码。
关键词:二次开发,Visual C++,SKILL,Cadence
参考文献
[1]白宇佳.信号完整性分析及基于Cadence EDA的仿真自动化技术研究[D].西安:西安电子科技大学,2006.
[2]Cadence Design Systems.SKILL Language Reference[Z].Canada:Cadence Design Systems,2009.
[3]Cadence Design Systems.Interprocess Communication SKILLFunction Reference[Z].Canada:Cadence DesignSystems,2009.
VC开发 篇2
创业的山寨和VC的山寨风光是大相径庭、各有千秋、风味各异的。
创业苦,但是苦中有甜。创业是自主的,你有原创的Idea,可以选择自己喜欢的行当,自己的孩子自己喜欢,不管赚钱多少,你可以5年甚至一辈子富有激情地去为之奋斗、与之厮守;赚钱的公司通常目标明确,流程清晰,纪律严明,出了问题可以大刀阔斧该换人换人,该炒人炒人;创业也可以是做好事,创造就业机会,创造产品和服务满足社会需求,创造收入创造利润,有利润就更加好玩了,可以和全体团队分享,可以捐助希望小学……创业是创业者当家作主的干活,创业爽!
当VC也苦,而且有苦说不出。VC是被动的,被别人牵着鼻子走,VC要出去到处转悠,看看谁有好的Idea,找到好的项目往里面砸把钱买张门票,搭人家的车去兜风,方向盘在别人手里,开对开错方向,自己只能在后车厢里嚷嚷,使不上劲儿;VC心急,只想快钱进快钱出,陪不了业主去创建百年老店;团队出了问题,VC也只能干瞪眼,没法把闯祸了的团队给一锅端全炒了,重起炉灶;VC赚了大钱,大部分是要拿去给LP们交公粮的,自己所剩无几……说得极端些,当VC是为他人做嫁衣裳、自己哄自己、自己安慰自己的干活,当VC郁闷!
1. VC脑子里没别的,想的只是钱,而且都是大钱,不能赚大钱的项目VC是不会去问津的,VC的理想是天天撞上可以让你轻轻松松赚得盆翻钵满的项目,当然,世界上这样的项目也真的不太多,即使有的话创业者难道自己不会要去赚这份快钱热钱easy钱,谁会把好事儿全留着给VC?
2. 所以VC要趁虚而入,趁一个潜在的伟大公司还没有开始大桶大桶地进钱来,一把将钱先砸进去,抢占一个将来可以分钱的沙发、板凳……只要这家公司能赚大钱,坐不到沙发板凳,躺地上也行。
3. 所以VC要挖空心思算计,试图能给世界的未来把脉,抢在时间前面、抢在上帝前面跑到终点。电信3G后面是4G、5G……互联网2.0后面是3.0、4.0……VC每天晚上睁大了眼睛裹在温暖的被窝里听《一千零一夜》……故事里的世界比现实中的世界美妙多了,下一个美妙的故事又是什么呢?
4. 天亮了,VC去敲创业者的门,“芝麻芝麻开门”……门开了,创业者在里面正拿着石斧石镰艰苦创业,正苦熬着哪……VC往心里的公式上一套,皱皱眉头:模式太旧,规模化很难,没有爆发性增长,算了算了,换频道吧。
5. VC换了扇门又去敲“芝麻芝麻开门”……门开了,创业者是两个小娃娃在里面在办家家玩游戏玩得正欢,有星球大战,有SNS,视频,虚拟人生……VC皱皱眉头:概念太新,没法赚钱,陪俩孩子玩游戏,还得要砸进去多少银子才能把他们抚养成人啊?不行不行,再看看其它的吧。
6. VC再叫“芝麻芝麻……”,话音没落,门自动地开了,面前出现的是范伟同学手里拎一个“分歧终端机”,嘴里口口声声自语“非诚勿扰”……哎,有了,这玩意儿不错,有创意有想象空间,成熟的市场里的颠覆性产品,14亿人民人人都得买,天天都用得上,说不定哪天还会像iPod那样会跑遍全世界……外加上范伟同学圆头圆脑人也长得不错,简历上名牌学校、大公司的名字比比皆是,就是它了,砸钱!
下面的游戏大伙儿们自己去想象吧……但愿范伟同学走运成功噢!
当VC好累,创业者能被VC看得上眼的实属凤毛麟角,VC呢,能有幸撞上范伟同学的、真的敢于领先砸钱索性砸出它几个刺激故事的也不多,大家还是愿意跟跟风,凑个热闹,图个安全。于是VC也就不Venture了,餐厅、美容院、洗脚店也有VC投……中国就是中国嘛,中国是特殊的地方、特殊的时代、特殊的机遇,没法用美国的现成模式来套,只要能赚钱,什么不能投?!
“VC”和“创业”之间好像总有那么一些对接不上的地方,导致成了致命伤:
* 创业者都理解成功是意外的偶然的,成功的道路上有无数不确定性、机缘、曲折、失败等等,但是VC的判断逻辑是:成功 = 名牌大学学位 + 简历上著名跨国公司的名字 + Idea + 概念 + 故事 + 模式 + 预测……与其说这是成功的轨迹,不如说这是MBA学生的课堂练习,这道公式里是不是缺少了一个不确定的系数?当然VC的这个成功逻辑也不能说有什么大的错误,问题是:VC投资后的所作所为是否尽职,是否能对得起自己的良心,
* 比如说,VC投资后,团队的实际业绩和商业计划书相差十万八千里,VC管不管?VC们大家来盘点一下自己投资的公司吧,数数看有几个是能基本按原定计划甚至超额达标的?少说80%VC所投的公司远远达不到原先故事里的预测,有几个VC敢于站出来发脾气,为投资人的利益义正词严、大刀阔斧采取果断措施终止流血的?VC们多数欲说还羞,一副“犹抱琵琶半遮面”的姿态,继续放断线风筝,希冀风筝在空中飘的时间越长越好……这样的事情在健康的创业企业里、在一个没有VC投资的公司里是绝不容许的,哪个部门经理来找你忽悠,一会儿东一会儿西,只要他不出业绩,创业者你会容许此人长期在公司里这样呆下去吗?!相信你不是客气地放他一条活路让他自己走路,就是毫不留情把他拖到菜市口去斩首。
* 某些VC的纵情红颜矫作,造就了一个可爱的奶妈形象,社会上嗷嗷待哺的孩子们吃上了VC的奶就指望着一辈子含着VC的奶头永不断奶。拿不到VC钱的创业者,羡慕的、眼红的有之,冷嘲热讽的也不少,因为他们看不惯那些“有钱人家的孩子”的作风;本来好端端的一个创业者,拿到了VC的钱就变坏,本来穷人的孩子早当家,一旦遇上了个VC奶妈,照样也被养肥惯坏,永远长不大。还有更聪明的“创业者”,他们根本没想过如何去赚顾客的钱,他们挖空心思想的就是如何忽悠VC砸一大把钱,然后风风光光地活上几年,等这个VC的钱被糟蹋光了,再另起炉灶去忽悠别的VC。
* VC反正是拿别人LP的钱去赌博,砸一把过过瘾,输了赔了也不是自己的钱。VC们以把钱投出去为目的,什么时候赚进钱来了,那都是后话。天下哪一个人不晓得钱出去是容易的,钱能不能再回来呢?花钱容易进钱难,如果当VC有昂贵的门槛,砸投资人的钱有条件,钱砸出去了、钱没有回来之前,VC除非把自己的钱垫进去解套,否则谁也不得拍拍屁股摇身一变又换到另一个VC的寨子里混去了,那样的话,别说中欧、长江的MBA们,就连从美林、雷曼出来的投行家们中会有几个愿意把VC作为自己未来职业生涯的第一选择?VC的寨子里,你要时间待久了就不难发现,有几只肥肥的大老鼠在暗地里窜……话要说回来,我们VC中大多数的同志是好的,是有理想的,是努力工作、要求上进、积极靠近组织的。VC里的大老鼠毕竟是少数,但是一粒老鼠屎弄脏了一锅粥。
* 世界上没有十全十美的东西,VC也这样。VC犯的最大的错误是放松在思想上的警惕性,VC喜欢说“我投10个可以死九个,只要一个成了就行”,这句话把VC犯错误的借口都讲绝了,好像VC再犯错误都是特有道理的。创业就不一样了,你到创业的山寨里去混混看,你敢不敢对你老婆说,我有10个创业的Idea,其中9个都是胡扯,可能有一个是可以执行的,看看你老婆愿不愿意砸钱陪你去干?创业是要想好了决一死战的,不成功便成仁。
罪过、罪过……身为VC,时常自感困惑,免不了常常会“身在曹营心在汉”,怀念和羡慕创业生活。我有两个心语心愿,吐出来分享给大家吧:
一. 有朝一日会有人站出来,学习互联网创业者起草《中国互联网行业自律公约》那样,发起起草一份《中国VC从业自律公约》,把不合格、不负责的大老鼠VC逮住关进笼子,不准他们胡乱地砸投资人的钱,不准他们咬死创业者,不准他们连累我们好人VC一起背黑锅;这样的话,VC的山寨会干净很多,VC们再去忽悠LP的钱大概也会容易很多;
二. 有朝一日会有一批成功的创业者来自建“创业者的VC”,重新制定创业投资的游戏规则,由创业者自己来挑选、支持、投资、辅导、监管、提携新一代的创业者和创业企业,创业者自己管理“创业基金”可能更加驾熟就轻,大老鼠“创业者”们是休想到这里来忽悠到钱的;
如果能这样,“创业的山寨”和“VC的山寨”不再各自独立,自相矛盾,各做各的黄粱美梦,VC和创业也不必演“双城记”了,二者将会跑在同一个操作系统上了。
VC开发 篇3
作为女性投资人,我很庆幸自己生在中国。虽然男女仍有天然的性别差异,我们在现代以脑力劳动为主的工作中,已经很少感觉到因为性别产生的歧视。这都要感谢毛主席,妇女解放得彻底。其他国家的女性vc就没有这么幸运。我的一名同事,在日本是恐龙级的女性投资人,前两年不得不离开我所在的投资机构,被迫的……听说在日本以男性为主的投资圈子里,她很难抢到案子。在美国,这个我们认为最自由平等的地方,女性似乎也很难在投资圈子里独挡一面。
我曾经问过一位美国的基金主管合伙人和一位中国的基金主管合伙人同样的问题:你认为女性在这个行业的就业前景如何?美国的那位显得更悲观,强调了更多的性别因素。而中国的这位则似乎不太在意性别差异。或许,因为中国人更婉转一些也说不定……但我在美国确实没有见到或听到如国内业界那几位一般有影响力的女性投资人。
中国投资界的大姐大颇有几位,其中包括T君和c君。两人都入道早,也都各自有投资的成功案例,而且成立了自己的基金。出于私心,我常希望业界多几位成功的女性投资人,也希望成功的那几位在不断的竞争中能够继续胜出。不幸的是,进入2011年以来,她们两位各有各的烦恼。T君所在的T基金又出走了两位合伙人。此前已经有两位合伙人离开了;至此与T君共同创立T基金的创始团队只剩下她一人。c君投资的公司则纠纷不断,A公司因为夫妻财产官司影响了上市进程,B公司则家族内斗激烈,官司缠身。
这些放在一般资人身上,也许不会这样被人深入细致地挖掘却因为是女性投入而受到性格外的关注,因止而放大。女性投资人的弱点以乎毒暴露无遗。做事过于细节,管理人不够手腕,等等。
确实,做投资人难,做女性投资人更难。不能与企业家称兄道弟,不会与其他投资人一醉方休,如何抢到案子,培养感情,产生影响?女性投资人无法像男性同事们那样无牵无挂地在外奔波。家庭和孩子的则自责任我们总是尽量推掉非“不得不参加的”会议,缩短行程,来减少些心中对孩子的负疚感。更不要说管理一个基金,带领一个团队,让一群ego同样很强的男同胞们心服口服。中国五千多年历史上就出了一个穆桂英吗?
但是,千万不要因此就心灰意冷。女性做投资也是有其优势的。
比如说,女性通常善于聆听与沟通,能与企业家建立更为信任的关系。信任的力量是强大的。企业家更愿意选择他们信任的人投资,和他们信任的人一起奋斗。而且成功的企业家在这方面的判断力是超强的,他们可能信任一个见过一面的人胜于喝过无数次酒的朋友。
女性一般也多一些耐心,更容易成功于执着,心无旁骛。比较少今天游戏项目,明天又改投瘦猪饲养,较少盲目跟风,适于守着专业的一两个行业,做深做细。
VC开发 篇4
TTS是text-to-speech的缩写即文语转换, 英文也称Speech Synthesis即语音合成。语音合成就是一个将文本转化为语音输出的过程, 这个过程的主要工作是将输入的文本按字或词分解为音素, 并对文本中的数字、货币单位、单词变形以及标点等需要特殊处理的符号进行分析, 将音素生成数字音频, 然后用扬声器播放出来或者保存为声音文件用音频播放器播放。Microsof Speech SDK提供一套关于语音处理的应用程序编程接口SAPI (Speech Application Programming Interface) , SAPI提供了开发文语转换 (Text-to-Speech) 程序和语音识别 (Speech Recognition) 程序的基本函数, 大大简化语音编程的难度, 降低语音编程的工作量。在下文中通过开发一个简单的TTS程序, 给出文语转换程序的编写方法, 程序开发环境为VC++6.0、Windows XP SP3。
2 Microsoft Speech SDK
目前常用的Microsoft Speech SDK有3种版本:5.1、5.3和5.4。5.1版本支持XP系统和Server 2003系统, 需要下载安装, XP系统默认只带了Microsoft Sam英文男声语音库。5.3版本支持Vista系统和Server 2008系统, 已经集成到系统里, 默认带了Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。5.4版本支持Win7系统, 已经集成到系统里, 同样带了Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。Microsoft lili支持中英文混读。
SAPI全称The Microsoft Speech API, 即微软语音API, 由Microsoft Speech SDK提供。SAPI是架构在COM基础上的, 包括以下几类组件对象 (接口) :
(1) Voice Commands API, 对应用程序进行控制, 一般用于语音识别系统中, 识别某个命令后, 调用相关接口使应用程序完成对应功能。
(2) Voice Dictation API, 听写输入, 即语音识别接口。
(3) Voice Text API, 完成从文字到语音的转换, 即语音合成。
(4) Voice Telephone API, 语音识别和语音合成综合运用到电话系统上, 利用此接口可以建立一个电话应答系统, 可以通过电话控制计算机。
(5) Audio Objects API, 封装了计算机发音系统。实现文语转换需要Voice Text API。
3 软件设计
软件实现的功能:一是将文本转换为语音进行播放, 二是将文本转换为语音保存为WAV文件。软件运行界面如图1所示。
界面的上端为编辑框, 在这里可以输入需要朗读的文本, 也可以直接将文本粘贴进去。在编辑框下面, 左边是4个按钮, 依次是播音、暂停、停止和保存, 右边是一个列表框, 列出了当前系统里安装的所有语音库, 点击可以选择相应语音库。界面的最下端是语速和音量调节滑动条。
程序的源代码中已经包含了SAPI需要的头文件和库文件, 不需要再下载安装Microsoft Speech SDK 5.1了, 只需在使用语音引擎前包含头文件和lib库:
#include"sapi.h"
#include"sphelper.h"
#pragma comment (lib, "sapi.lib")
4 代码实现
一个简单的文语转换过程是: (1) 初始化语音引擎, 获取ISp Voice接口; (2) 获取ISp Voice接口后, 通过接口指针m_Ip Voice调用SAPI函数Speak朗读文本; (3) 使用完语音引擎后, 释放资源。
4.1 初始化语音引擎
在使用语音引擎之前进行初始化, 在类CTts定义如下成员变量:
4.2 使用ISp Voice接口
4.2.1 主要成员函数
(1) HRESULT Speak (const WCHAR*pwcs, DWORD dw Flags, ULONG*pul Stream Number) ;
功能:朗读文本。
参数:
*pwcs输入的文本字符串, 必须为Unicode, 如果是ansi字符串必须先转换为Unicode。
dw Flags用来标志Speak的方式, 其中SPF_IS_XML表示输入文本含有XML标签。
Pul Stream Number输出, 用来获取当前文本输入的等候播放队列的位置, 只有在异步模式才有用。
(2) HRESULT Pause (void) ;
(3) HRESULT Resume (void) ;
功能:暂停/恢复朗读文本。
(4) HRESULT Set Rate (long Rate Adjust) ;
(5) HRESULT Get Rate (long*p Rate Adjust) ;
功能:设置/获取语速, 范围是[-10, 10]。
(6) HRESULT Set Volume (USHORT us Volume) ;
(7) HRESULT Get Volume (USHORT*pus Volume) ;
功能:设置/获取音量, 范围是[0, 100]。
(8) HRESULT Set Sync Speak Timeout (ULONG ms Timeout) ;
(9) HRESULT Get Sync Speak Timeout (ULONG*pms Timeo ut) ;
功能:设置/获取同步超时时间。由于在同步模式中, 调用Speak后程序就会进入阻塞状态等待Speak返回, 为免程序长时间无响应, 应设置超时时间, 单位为毫秒。
(10) HRESULT Set Output (IUnknown*p Unk Output, BOOL f Allow Format Changes) ;
功能:设置输出。
这些函数的返回类型都是HRESULT, 如果成功则返回S_OK。
4.2.2 朗读编辑框中的文本
4.2.3 保存语音为WAV文件
4.2.4 TTS消息响应
4.2.5 获取/设置语音库
4.3 退出语音引擎
使用完语音引擎后, 退出程序前, 释放资源:
5 语音库
TTS软件只是一个文本朗读软件, 要想达到比较好的语音输出效果, 还需要语音库的支持。打个比方, 微软的Word软件, 实现了所见即所得, 但是要想实现漂亮的文字输出效果, 必须有相关字体库支持, 包括各种英文字体库和中文字体库。所以, 除了系统自带的语音库, 建议TTS软件使用者在自己的系统中安装几个较好的第三方语音库, 配合TTS朗读软件, 会收到比较满意的输出效果。
第三方语音库有很多, 推荐如下:
可以在网址http://www.q1qq2.com/tts/tts.html下载, 也可以自行到网上搜索下载。
6 结语
热血Vc++ 篇5
第一章 基础构建平台
一.Vc++项目文件
.dsp 整个工程的项目文件
我需要手动添加.h(c++的头文件,一般是类的声明文件)和.cpp(c++的源文件,是类的函数定义和整个程序实现文件)
二. C++的输入输出
cin 和 >> 配合使用,cout 和 << 配合使用
由于cout 和cin 定义在头文件 iostream.h 中。编写程序是需要此文件包含在程序中。体现为#include “iostream.h”
三. C++的面向对象的编程
类的关键词class
对象是类的一个实例,就像int和 i 的关系
构造函数和析构函数(需要熟悉!)
1.析构函数加 ~ ; 析构函数实现和构造函数相反的功能。
2.友元函数不是类的成员函数,而是独立于当前类的外部函数,但它可以访问该类的所有成员。(程序中如非必要,应尽量减少友元的使用);使用时,需要在函数名or 前面加friend
四. mfc和windows 编程基础
1.mfc是微软的基础类库,其核心是以C++类的形式封装了 windows的 API(application program interface 应用程序接口)函数。
2.c++的控制台程序中,每一个程序的入口程序是main()函数,同样在windows 程序中也有一个入口程序,即winmain()函数,其功能:
a.注册窗口类。建立窗口及做一些初始化工作
b.进入消息循环,接受消息并进行处理
c. 当检索到退出消息时,销毁窗口,推出程序并进行扫尾工作。
第二篇可视化程序设计
一.对话框应用程序设计
a.
二. 单文档和多文档
三.Windows标准控件的应用
四.菜单、工具栏和状态栏设计
五.Windows图形处理和文本输入输出
第三章 windows编程篇
一.文件操作
二.注册表和INI文件
三.DLL动态链接库
四.多线程编程
第四章 VC++开发篇
一.数据库应用程序设计
二.网络编程
三.多媒体编程
第五章 实例篇
一.图书管理系统的实现
二.简单邮件客户端实现
涂志云:爱恨VC 篇6
2010年7月底的一天,尚诺集团董事会,涂志云被下了最后通牒。
“给你两天时间考虑,这个东西我们不要了。你做了好几年也没什么起色,我们股东不想再烧钱了。”
“这个东西”,指的是尚诺集团的“我爱卡”业务。2005年,涂志云成立尚诺,主打信用卡营销和房贷担保服务,希望做成个人信贷领域的当当、携程。2007年,尚诺获得软银主投的1000万美元融资。
然而,三年后,投资人“逼宫”了。涂志云面临两个选择:一,放弃“我爱卡”;二,放弃尚诺,主持“我爱卡”,从此自己去找盈利之道。
“当时就是战略方面的事情没有沟通清楚,所以才会发生信用卡业务剥离的事情。”差不多一年后,涂志云对《创业家》说,“VC都说自己是长期投资人,但VC的‘长期’可能是三年,而我们可能是十年,这是没有沟通清楚的。你早点告诉我‘长期’是三年,我的打法就会不一样。”
涂承认,自己的问题是没把握好公司运曹的节奏,如果当初知道投资者能接受的时间仅是三年,自己会使用更本土化的做法,加快跑马圈地的步伐。
他争辩道,“中国未来会有几万种信用卡,不需要一个信用卡的超市吗?旅游产品需要超市,书要超市,个人金融信贷产品也需要超市。中国已经发了两亿张信用卡,十年内将超过10亿甚至15亿张,超过美国成为世界第一大信用卡超级大国,不需要这样一个垂直门户吗?老百姓不需要服务吗?”
最终,涂选择放弃尚诺,专注于“我爱卡”。通过换股,涂志云获得了“我爱卡”的大部分股权,而他在尚诺集团的股份,由此前的将近30%稀释到不到10%。
过去十年,正是涂志云从一个海归科学家向本土创业者蜕变的过程。
作为“干人计划”的专家,涂志云认为科学家和创业家的特质分别为“精耕细作”和“跑马圈地”,而这是两个不同的本事。“美国最强的是精耕细作,中国几乎是什么都没有,迅速占领市场,以最低成本获得最高效率。科学家需要在某个领域钻研特别深,创业家需要了解特别广的领域,思路是不一样的。要去平衡精耕细作和跑马圈地的关系,还要花大量时间去做人的关系市场的关系,这是一个遍体鳞伤的过程。”
在尚诺之前,涂志云曾经有过一次失败的创业经历。2002年,他从美国回来,创办了国内第一家针对银行的消费信贷管理咨询公司。但是他遇到了与很多海归同样的问题:水土不服。“从美国带来的技术很超前,但是技术在天上,现实在地上。”
2003年,涂志云再次创业,推行信用卡营销业务,之后便是尚诺和“我爱卡”的故事。2007年8月,尚诺完成第二轮1000万美元的融资——由软银中印集团主投,SIG海纳基金和eGarden基金跟投。此前,后两家曾向尚诺提供600万美元的资金。
“懵懵懂懂的感觉,不谨慎,也没有经过什么挑选。有点像结婚,没有结过婚,看着挺美的,就结了。”涂志云这样总结与资本的关系。
“单飞”后,涂志云承受着巨大压力,但仍然很乐观。他相信国内的信用卡业务已经到了快速发展的阶段。“公司进入商业状态是从去年到现在,现在盈亏基本能够做到持平。我爱卡的网上申请量是57万,会员超过200万,这还是在没有做过推广的情况下,可见需求非常旺盛。”
“创业家”涂志云身上的“科学家”特质开始凸显。他觉得,在“跑马圈地”的时代,自己的优势没能发挥出来,“现在到时候了。信用卡发了五年,跑马圈地圈了一遍,可以开始精耕细作了。当然,一边继续圈,一边精耕细作。”
VC开发 篇7
关键词:数字地图,OLE,集成开发
1 引言
MapInfo作为一个功能强大的地理信息系统(GIS)开发工具,被广泛应用在统计、测绘、水利、军事、环保等领域。它为用户提供了先进的数据可视化、信息地图化技术,并且提供了集成数字地图开发方式,方便用户在其他应用程序(如Visual C++、Visual Basic、Delphi等)中利用MapInfo的地图元素进行集成数字地图编程开发。
通过在VC++环境下完成MapInfo的集成数字地图开发功能,详细介绍了在集成数字地图环境下应用C++和MFC的编程过程。这种在VC++环境下的集成开发方式极大地发挥了VC++和MapInfo两种应用软件的优点,为数字地图信息系统的应用提供了广阔的平台。
2 开发环境
目前计算机技术发展迅速,大多数计算机软硬件性能都能满足应用软件开发要求。一般性的构建编程环境如下:在Windows 2000/XP操作系统下安装Visual C++6.0和MapInfo6.0软件,另外需安装MapBasic开发软件获取mapbasic.h文件,在开发中便于使用;硬件要求必须有足够的内存可以同时运行客户程序和MapInfo,客户程序采用OLE自动控制。
3 开发实例
本软件采用VC++面向对象编程语言实现,主要步骤如下:
(1)创建框架程序,实现OLE自动化客户支持。
1)启动Visual C++,利用MFC AppWizard应用程序向导创建一个单(多)文档应用程序projectname。创建过程中各选项可保留默认选择,创建完成后按如下步骤在程序中加入自动化支持代码:
(1)在stdafx.h中原有#include后加入代码:
2)利用MFC添加MapInfo支持类,为该类创建一个对象,并获取存放当前可执行文件的完全路径。
(1)选择“View”->“ClassWizard”菜单,再选择“Add Class”标签下的“From a type library”,弹出“import a type library”对话框,在查找范围选项里打开MapInfo安装路径下的“professional”文件夹下的“mapinfow.tlb”文件,单击“OK”按钮确定所选中的类,这样创建的类将允许通过OLE自动界面访问MapInfo。
(2)打开projectname.cpp文件,添加如下代码:
(3)为满足程序通用性,先将mapbasic.h文件拷贝到工程文件夹下,打开mapinfow.h文件,在该文件尾部加上如下代码:
此时,已经成功添加了MapInfo,并可访问OLE自动化对象。
(2)创建含有MapInfo数字地图元素的子窗口,获取该子窗口标识及句柄,实现应用程序与该子窗口的交互。
1)在类视图头文件(projectnameView.h)中加入成员变量:
2)在工程debug文件夹下创建map文件夹,将待装入的数字地图文件(假设文件名为ditu)存放在其中,在类视图实现文件(projectnameView.cpp)中添加如下代码:
(3)在OnInitialUpdate方法中,装入数字地图文件,并获得其标识及句柄。
(3)添加Mapinfo的数字地图编辑工具,这里添加“选择”、“拖动”、“放大”、“缩小”4个工具。
1)创建四个菜单命令项:Selector、Grabber、Zoom-In、Zoom-Out。定义它们的ID号为ID_TOOLS_SELECTOR、ID_TOOLS_RECENTER、ID_TOOLS_EXPAND和ID_TOOLS_SHRINK。对于每个工具命令,在MapBasic.h中有相应的状态定义标识M_TOOLS_SELECTOR、M_TOOLS_RECENTER、M_TOOLS_EXPAND和M_TOOLS_SHRINK。
2)为跟踪当前选择的每个工具,在CprojectnameView中定义一个私有成员变量:
int m_eMouseMode;
3)在构造器中初始化该变量,将数字地图工具的初始状态定义为“选择”。
m_eMouseMode=M_TOOLS_SELECTOR;
4)利用ClassView向导为每个工具添加COMMAND和UPDATE_COMMAND_UI函数,下面以Selector工具为例进行添加,其他类似。
(4)编译并运行程序。成功之后MapInfo在VC++环境下的集成开发平台就搭建好了,用户可以根据自己的需要添加各种算法实现数字地图应用功能,如路径规划、地理信息查询等。
如图1所示是一个路径规划的例子,为其添加了路径规划按钮G和保存按钮S,在路径规划按钮响应函数中添加路径规划算法。这里以北京到呼和浩特的飞机航线为例,规划好的路径可以通过保存按钮保存成Mapinfo数字地图文件,方便二次开发和利用。
4 结语
从实用性出发,详细介绍了在应用广泛的VC++环境下完成MapInfo集成数字地图的开发过程,该开发过程通用性较好,为数字地图信息系统应用程序开发提供了良好的平台。用户可以根据实际需要添加各种算法以实现数字地图的应用功能。
参考文献
[1]高强,朱安国.Visual C++高级编程技巧[M].北京:人民邮电出版社,2000.
[2]侯俊杰.深入浅出MFC[M].北京:华中科技大学出版社,2001.
VC开发 篇8
轧辊是轧钢机上的重要零件, 利用一对或一组轧辊滚动时产生的压力来轧碾钢材。它主要承受轧制时的动静载荷、磨损和温度变化的影响。一旦采用不合理的制造方法, 将会因制造中产生过大的残余应力而断裂。合理设计轧辊的制造工艺以及减少设计中的事务性工作, 对提高轧辊工艺编制效率、控制产品质量是非常重要的。
1 轧辊制造工艺CAPP系统
传统的轧辊制造工艺是由工艺师手工查询数据资料根据经验设计安排, 这就使工艺设计过程事务繁琐, 并且受到了工艺师经验的限制, 导致编制工艺的效率低, 产品的质量得不到保证。为解决上述问题, 采用计算机辅助工艺规程设计 (CAPP:computer aided process planning) , 借助计算机软硬件和支撑环境, 利用计算机进行数值计算、逻辑判断和推理等功能来建立包括工艺卡片、工艺内容及工艺规程在内的计算机辅助系统[4]。同时与人工智能相结合充分利用工艺专家的经验和知识, 从实际出发提供备选的工艺方案。利用VC++可视化程度高的优点, 为轧辊制造工艺CAPP系统提供了简明方便的人机交互式平台。
不考虑传统轧辊制造原有的环境和模式就去构建具体的CAPP模式是不合理的, 所以需要将轧辊制造工艺CAPP系统的功能分解成一个个相对独立的工具, 用户根据轧辊具体情况输入数据和知识, 通过VC++形成特定的制造和管理环境的轧辊制造工艺CAPP系统, 提高通用性。
现阶段随着轧辊制造过程信息化的不断深入, 传统制造工艺各环节之间的信息却得不到有效的交流, 很大一部分信息需要重新输入, 这是降低生产轧辊工作效率的主要原因。这时, 轧辊制造工艺CAPP系统在整个信息交流中要起到桥梁的作用。VC++软件开发平台给不同的软件留有接口, 通过接口实现对各种软件的操作, 大大提升了轧辊制造CAPP系统的集成性。
2 轧辊工艺设计CAPP系统开发的总体功能结构
为了实现自动选择加工工艺和计算加工切削用量, 系统包括材料的选择、数据的输入, 通过几项选择和可视化界面数据的输入, 可以实现人机交互式CAPP系统, 并得到Auto CAD绘制的毛坯图、Word输出的机械加工工序卡片和工艺设计说明书文档, 系统功能结构如图1所示[2]。
3 轧辊制造CAPP系统功能介绍
3.1 信息的输入与整合
VC++具有可视化程度高的特点[1], 数据的输入可以实现人机交互式输入, 图2是名称数据输入对话框。需要输入的信息包括产品名称及型号、零件名称、零件材料、零件基本尺寸。
输入产品名称及型号, 注明零件所应用什么型号的产品, 这里所用的是输入方式, 当企业实际应用时, 还可以把这里设计成选择方式, 程序中规定各选项的保存路径, 这样该区域输入的数据将会给整个计算各结果的输出做好标记和归类, 可以方便保存和查找。
输入零件名称, 将为整个工艺设计进行命名。选择零件材料, 材料的种类可根据企业制造要求的实际情况进行完善。
以上3个选项输入好后, 点击下一步, 进行轧辊基本尺寸的输入, 如图3。轧辊基本尺寸的输入包括工作段和轴承段的长度, 端面直径, 外圆粗糙度, 端面粗糙度。这些数据以轧辊JC128*082*15*R2.2-C为例, 设定了初值。当改变初值时, 编辑框内的粗略图会随着数据而变化。
零件基本尺寸输入完成后, 点击下一步。设计程序时, 将计算所用到的知识和逻辑算法编入程序, 这样输入的数据会在程序内部进行计算、圆整, 得到毛坯的有关数据和机械加工工艺顺序以及切削用量。并且得到简略的工艺安排, 如图4所示。
3.2 毛坯图的生成
毛坯图的生成是利用参数绘图实现的, 采用命令文件作为参数绘图接口, 控制Auto CAD软件自动出图, 极大地提高设计效率。本例中输入的数据经过计算作为绘图函数参数, 点击“毛坯图CAD”, 系统自动运行Auto CAD, 绘制零件毛坯图, 如图5。
3.3 机械加工工序卡片的生成
机械加工工序卡片的生成是利用模板法生成参数化计算书。输入的数据经过计算和工艺顺序的排序作为生成机械加工工序卡片函数的参数, 点击“工艺卡片”, 系统自动运行Word, 并调用编程时编制的模板, 生成机械加工工序卡片, 如图6。
3.4 工艺说明书的生成
工艺说明书的生成是利用VC++生成纯文本文件。输入的数据经过工艺顺序的排序, 切削用量的计算作为生成工艺说明书函数的参数, 点击“工艺说明书”, 系统根据函数自动生成纯文本文件的工艺说明书, 把工艺设计过程和切削用量计算结果都保存下来, 以便核对, 如图7。
4 结语
轧辊制造工艺CAPP系统集成了操作简便、运行速度快、可视化程度高的优点, 方便了制造轧辊工艺编制中各环节的交流和规范化, 减少了重复输入这种事务性的工作, 使轧辊工艺编制效率大为提高, 并且更有效地保证轧辊质量。因此开发轧辊CAPP系统的技术路线是可行的, 可供开发其他CAPP系统参考。
参考文献
[1]陶元芳.机械工程软件技术基础[M].北京:机械工业出版社, 2010.
[2]陶元芳.机械CAD应用技术[M].北京:机械工业出版社, 2012.
[3]艾兴, 肖诗纲.切削用量手册[M].北京:机械工业出版社, 1985.
[4]陶元芳, 王芳, 陈琴芬.C语言命令文件式参数绘图函数集[J].太原重型机械学院学报, 2002, 23 (2) :107-112.
[5]陶元芳, 卫良保.VC++命令文件式参数绘图类库[J].太原重型机械学院学报, 2003, 24 (4) :284-289.
[6]陶元芳, 张长利, 苗苗.实现文档自动化的几种方法[J].机械工程与自动化, 2009, 157:193-195.
VC开发 篇9
伴随世界经济飞速发展和全球经济一体化步伐加快,国际贸易显得日益频繁,进出口化工产品数量也在逐年加大,给检验检疫工作带来越来越大的压力。面对庞大的进出口商品数据,传统简单的电子表格很难满足检验检疫业务对数据的管理需求。为了更好更快地查询和管理进出口商品信息,针对检验检疫业务开发专业管理信息系统软件显得很有必要,其广泛应用的结果必然大大提高数据管理效率,节约业务操作时间。
2 系统设计
系统的使用对象是国家质检总局及各分支局的统计工作者。系统需要实现的总体目标是实现对全中国出口化工产品数据的快捷查询、统计和管理。由于数据来源于国家质检总局下属的各个出入境检验检疫分支局,系统还需要完成对各个分支局数据的汇总、导入和导出。为了实现信息管理工作的系统化、规范化和自动化,系统需要达到如下要求:
(1)界面友好、直观、易操作。
(2)查询快捷方便,支持多条件、模糊查询。
(3)支持多种统计方式,统计准确,支持多条件、模糊统计和汇总功能。
(4)实现数据从Access到Excel的互相导入。
(5)分支局数据相互独立,对数据的操作权限明晰。
3 系统模型
Microsoft Access提供了表、查询、窗体、报表、页、宏、模块7种用来建立数据库系统的对象。采用Access建立后台基本数据库用于支撑前台应用系统,具有安装容易,占用系统资源小,访问速度快等优点。前台数据库应用系统采用Visual C++可视化开发工具,以MFC结合ADO数据库编程方法,基于OOP(面向对象编程)思想模块化开发完成。系统基本模型如图1所示。
4 数据库系统
数据库在一个管理信息系统中占有非常重要的地位,数据结构设计的好坏将直接影响到应用系统的效率、功能的扩展和最终使用效果。合理的数据库结构设计可以提高存储的效率,保证数据的完整和一致,同时也有利于应用系统的设计。针对出入境化工产品管理信息系统目标和功能需求,设计如下所示数据表和数据结构。
机构信息:检验检疫机构、区域代码、机构介绍。
CIQ商品编码:CIQ编码、上级编码、编码级别、商品名称。
TDGMSDS描述:商品名称、TDG描述、MSDS描述。
用户信息:用户名、所在单位、密码、使用数据库。
分支局信息:地区,企业名称,主要出口产品,年出口量(吨),主要出口国家(地区),企业所在地。
考虑到出入境化工产品的全国数据表过于庞大,同时考虑到数据源的相对独立性,系统对各个分支局数据单独建表,共建立了35张同种格式数据表(表结构如上面分支局信息)。实现了数据的有效分割。
由于总局数据表只是各个分支局数据的集合,所以在设计总局数据表时只用了一个视图,在Access环境下可以通过创建查询的方式完成。本系统使用带外连接的SQL查询语句完成创建,语句格式如下:
SELECT*FROM北京局
UNION SELECT*FROM天津局
UNION SELECT*FROM上海局
…(依次完成35个分支局);
5 应用系统
5.1 数据库访问公共模版类
Visual C++6.0为ADO操作提供了库支持,在利用Visual C++6.0进行ADO编程时,可以借助Visual C++6.0的import宏,将msado*.dll库文件引用到工程里,从而使msado*.dll库里的数据和函数声明被应用的代码所使用。
在公共模板类中定义了数据库连接函数、记录集获取函数、SQL语句执行函数等数据库基本操作函数。出于篇幅限制,这里只列出连接函数代码:
5.2 查询模块
化工产品信息查询模块包括总局数据查询、分支局数据查询、自定义条件查询和TDG/MSDS查询等子模块。总局数据查询与分支局数据查询分别提供了3种常用查询方式:按化工产品名称、企业名称和出口国家地区。总局数据查询界面截图如图2所示。
由于用户对所要了解的信息不够完整,考虑到操作上的友好性,系统对用户的输入信息提供了模糊识别支持,即按设定的模糊查询方式将所有与之相似的内容全部显示出来。图2为当用户选择按化工产品名称查询的时候进入的查询提示。用户输入“硫酸”的时候,系统列出了“硫酸锌”、“硫酸锰”等全部信息。该功能的实现需要重载编辑框的EN_CHANGE消息。
分支局查询模块除了提供上述3种查询方式支持外,还可以限定查询的数据源,用户只需双击所要查询的分支局即可进入相应的数据表中。
自定义条件查询提供给用户可供选择自选条件查询,用户可以最多选择5种条件进行多条件查询。
TDG/MSDS查询提供用户查询化工产品详细信息(包括TDG和MSDS描述)。
5.3 统计模块
化工产品信息统计模块包括总局数据统计、分支局数据统计和分类汇统计等子模块。如图3所示为总局数据统计界面截图。
在总局数据统计模块下,系统默认了按化工产品类别统计,用户只需要在树目录下双击所要查询的类别,系统就会查询整个类别的全部信息(包含全部子集)如图3所示为当用户双击了“氧化物”的时候,系统查询到了整个氧化物类别下的全部化工产品信息。该功能的实现使用了嵌套循环查询算法,需要根据树控件中的选择字符串反求对应CIQ编码,然后在下级CIQ编码中查找类似编码,查出全部子类化工产品,保存到一个临时字符数组中,最后从数组中逐条取出字符,在数据库中查找全部信息。主要实现代码如下:
分支局数据统计功能用于统计各分支局的出口化工产品信息。和分支局数据查询类似,系统仍然提供了提供3种查询方式,使用统计前需要给定条件将数据查询结果显示出来,然后通过选择快捷菜单“在列表中统计”即可完成统计。
分类汇总模块实现了4种常用汇总方式:按企业分类汇总、按地区分类汇总、按出口国家分类汇总和按产品汇总企业。界面截图如图4所示。
图4所示为用户选择“地区+出口总量”时,系统将统计出了每一种化工产品在各个地区的出口总量。
使用汇总功能需要用到SQL聚集函数。所幸的是Access2003以后的版本提供了聚集函数支持。使用SQL聚集函数需要熟练掌握SQL语言语法格式,否则容易导致运行错误。下面列出一条示例语句,该语句表示执行按地区分类汇总。
sql.Format("transform sum(%s.年出口量(吨))as年出口量(吨)之总计select%s.主要出口产品,sum(%s.年出口量(吨))as[总计年出口量(吨)]from%sgroup by%s.主要出口产品pivot%s.地区",useragency,useragency,useragency,useragency,useragency,useragency);
5.4 编辑模块
数据编辑模块包括化工产品数据编辑、TDGMSDS信息编辑两个子模块。数据编辑模块包含了数据添加、修改和删除等常用操作。对于总局用户系统还提供了数据表批量删除等操作。
5.5 数据库管理模块
数据库管理模块包括数据导入导出、数据库备份还原,系统管理员设置等常用子模块。数据导入是将符合数据库基本表格式要求的Excel表格导入到Access数据库中,导入时需要选择即将导入的Excel表格和接受数据的分支局数据表,该操作限于总局用户使用。导出操作提供给分支局用户使用,用于将分支局数据库中的Access表格导出到Excel表格中。
6 结语
本系统采用面向对象的方法设计,使用可视化开发工具,具有视窗界面、布局设计符合一般习惯,操作友好方便。实现了快捷查询、统计、管理等常用功能,尤其是灵活的数据导入导出,更加方便了数据管理工作,实现了信息管理工作的系统化、规范化和自动化,达到了预期要求。
参考文献
[1]萨师煊,王珊.数据库系统概论[M].北京:高等教育出版社,2000.
[2]李禹生.Access数据库技术[M].北京:清华大学出版社,2006.8.
[3]刘锐宁,宋坤等.Visual C++从入门到精通[M].北京:清华大学出版社,2008.
[4]明日科技.Visual C++程序开发范例宝典[M].北京:人民邮电出版,2007.
[5]宋静.学生信息管理系统设计与实现[J].计算机与数字工程.2008,Vol.36,No.8:201-203.
[6]姚万军.VC下利用ADO访问SQLServer技术[J].微计算机应用,2004,25:1.
[7]张永奇.图书信息管理系统的设计与实现[D].大连:大连理工大学,2005.
VC开发 篇10
随着信息技术的发展,数据信息处理技术在人们的日常生活中的应用日益普及。列车查询系统就是用现代的、发展的思想和观念,运用数据信息处理技术而设计出来的。在火车交通高速发展的今天,列车查询系统为人们的出行提供了更便捷、更准确、更省钱的最佳参考路线。Visual C++是一门面向对象的程序设计语言,随着Visual C++的推广,其应用领域越来越普及。Visual C++中提供了多种方便易用的数据库开发途径和功能强大的类库,其增加了数据库开发的灵活性,减轻了开发的复杂性。Visual C++开发数据库的主要方法有ODBC和DAO,列车信息查询系统应用的是Visual C++的ODBC数据库来设计与开发的。
2 列车查询系统的主要功能
列车查询系统主要实现通过输入列车的车次、线路、到站或发站信息来查询相关列车的具体信息。列车查询系统的主要功能有:
2.1 全部列车信息的显示
显示列车信息数据库中的所有信息。
2.2 查询列车信息的显示
通过输入车次、线路、到站或发站来查询满足条件所有车次,并相应的查询出该车次的始发站、终点站、发站、到站、历程、历时、发车时间、到站时间、车次类型等各种信息。
2.3 车次详细信息的显示
显示所选中车次的每一站到站时间、发站时间、历程、历时等信息。
3 列车查询系统的实现
列车查询系统是在Visual C++6.0环境下编程实现的。列车信息数据是通过Access数据库来存储的。
3.1 列车信息数据库的建立
根据列车信息,在Access上创建一名为Train的数据库,并为其添加一列车表。表的主要字段有车次、路线、始发站、终点站、发站、到站、发车时间、到时、票价等信息。数据库中采用的是“中国第六次火车提速”的最新数据。
3.2 建立数据源
在创建ODBC应用程序前,要先建立一与Train数据库对应的Query数据源,它告诉应用程序将操作哪个数据库及所使用的ODBC驱动程序。数据源的创建是通过控制面板中的管理工具的“数据源(ODBC)”来实现的。
3.3 列车查询系统应用程序的实现
利用AppWizard新建一需要数据库支持Query工程。
3.3.1 列车查询系统界面的设计
在列车查询系统界面中不需要选择目录或者菜单,而是在用户输入区里面直接输入想要的查询信息,并能立即显示查询列车信息。根据系统功能分析,系统界面设计如图1所示。其中界面上面部分显示的是全部列车的信息,中间部分是用户输入区,即用户在此处输入查询条件,下面部分显示的是所查询列车的信息。界面中信息的显示是通过DBGrid控件及Microsoft RemoteData Control控件来实现的,查询条件的输入是通过组合框实现。
3.3.2 全部列车信息显示功能的实现
在负责全部列车信息显示的控件中进行如下设置:Microsoft RemoteData Control控件,主要负责与数据源中的数据表的连接,在其Control属性中,将DataSource设置为“Query”,将SQL设置为“Select * from 列车表”;DBGrid控件,主要通过与Microsoft RemoteData Control控件的连接来实现数据表中信息的显示,将其DataSource属性设置为IDC_REMOTEDATACTL1。
3.3.3 查询功能的实现
在如图1所示的组合框中输入或选择一条或多条的信息来进行查询,查询功能的实现是通过“查询”按钮来完成的。将满足条件的结果显示在界面下面的DBGrid控件中。“查询”功能的部分代码如下:
3.3.4 查看车次详细信息的实现
在已查询到的所有信息中,任点击其中一条,便显示其对应车次的所有站的到时、发时、历程、历时等信息。该信息的显示是通过如图2所示对话框实现的。部分程序代码如下:
本程序在Visual C++6.0环境下调试通过。
4 列车查询系统的使用说明
列车查询系统操作方便。如果用户想查询N478次列车几点从日照发车,几点到济南,用户只需在系统界面用户输入区输入或选择车次为N478,始发站为日照,终点站为济南的信息,点击“查询”按钮后,便可显示查询结果,如图3所示。如果用户想查询从日照到曲阜的列车,只需输入或选择发站为日照,到站为曲阜,点击查询后,即刻显示查询结果。
当用户在已查询到的下方的信息栏中点击第一行的任意位置,便可弹出如图4所示的对话框,对话框中显示的便是N478次列车的每站信息情况。
5 结束语
应用Visual C++的ODBC数据库设计与开发的列车信息查询系统,具有良好的用户界面,操作方便快捷,功能较齐全,具有一定的可应用性。
摘要:应用Visual C++的ODBC数据库来设计与开发的列车信息查询系统,具有良好的用户界面。系统中实现了通过车次、路线、发站及到站信息来查询列车详细信息的功能。
关键词:Visual C++,ODBC,数据库,查询系统
参考文献
[1]冯华,Visual C++数据库开发技巧与实例[M],机械工业出版社,2000.
[2]Robert D.Thompson,MFC开发人员参考手册[M],机械工业出版社,1998.
如此VC系列:别了,2011 篇11
自那开始,人人网股票(NYSE: RENN)就从峰顶一路下滑。到了今天,它的市值只剩13亿美元,缩水超过75%。这只股是在美国上市的中国概念股的最好写照,因为包括当当网、优酷网等在内的中国股,几乎都经历了这样疯狂的一年,过山车般地驶过2011年。
其实,不仅是上市的公司,整个投融资市场从上半年的盛夏走入了下半年的寒冬。上市的,手握充足的资金准备过冬,心里隐隐地后怕;没来得及冲上去的,不得不担心会重重地摔下,业绩能否持续?还有那沉重的上市费用……早期的,融了一两轮,刚刚跑起了速度,面临着断炊的风险。
投资人的转变也是迅速的。开春的几个月,手上有资金的投资人都是“小李飞刀”的风格,出手都很快。我出了三张投资意向书,几天内案子都莫名其妙地被抢走,公司创始人都懒得跟我解释原因。就像花样年龄被无数人追逐的美女,这一切都是应该的。秋天开始的时候就看的人多,出手的少了。进了冬天,见了面甚至会打招呼“还在投呢?”好像此时应该停止一切活动。
2011年很热闹。除了在360卫士大战腾讯的硝烟中,周鸿祎带领360成功上市,年底又冒出了小米手机,据说3个小时售出10万台,雷军的“气”势不可挡。一群投资人欢呼找到了中国的苹果,以据称10亿美元的估值投入了9000万美元,累计投资额1.3亿美元。看不见了,电子商务网站一批批地倒下;听不见了,团购残余的哀嚎。难道泡沫还在继续?
2011年很热闹还在于业界人员的变动。年初,投资人频繁跳槽重组,JAFCO散了,KPCB老人们陆续走了,WI harper变成了Matrix……很多熟悉的老牌基金不再见踪影,冒出来无数新的基金名字都好像差不多,很难记住。还有,鼎晖创投的功权走了,又回来了……过了这个冬天,可能又有一些面孔消失于行业的视野。
2011年年底我们还纪念了乔布斯,一个伟大的企业家,让所有创业者们脱帽致敬的人物。他只能算是个枭雄,因为他的人格和行事方法如此受争议,有人恨他,有人爱他。但是他的创造,他对人类的巨大影响,无与伦比。
不管2011年是牛的一年,还是熊的一年,对于数以百万计的创业者来说都是艰苦奋斗的一年。因为他们在各自的无人小径上坚持着,走完这段还有下一段。借用Westlife 的这首《I have a dream》,,我祝福这些以自己的勤劳与耐力坚持着的创业者。别了,2011。2012年将充满新的希望。
I have a dream,a fantasy 我有一个梦想,
To help me through reality 帮我渡过现实
And my destination makes it worthwhile 我的目标值得我
Pushing through the darkness still another mile 在黑暗中摸索行进又一公里
I have a dream,a song to sing 我有一个梦,让我想唱的一首歌
To help me cope with anything 帮我面对任何事情
If you see the wonder of a fairy tale 如果你看过童话的奇迹
VC开发 篇12
MapInfo MapX是易用、高效、强大的ActiveX组件,可以很方便地集成到使用标准可视化编程工具开发的商业应用中。它支持将地图功能添加到任何应用中,提供了一种高度可视化的方法,来显示和分析基于位置的数据,从而更好地为客户服务。MapX是基于Windows操作系统的OCX组件,可以被快速集成到绝大多数标准的可视化开发环境中,如Visual C++、Visual Basic、Delphi、PowerBuilder等。在开发过程中可以选择熟悉的开发语言,轻松地将MapX中的地图功能嵌入到系统中,并且可以脱离MapInfo的软件平台运行。本系统就是在VC++环境下利用MapX控件开发的旅游信息系统。
1 系统的总体结构设计
本系统分为旅游目的地查询系统、旅游服务信息查询系统、旅游咨询系统和旅游管理系统,
系统总体结构如图1所示。
本系统的数据库设计,将空间数据和属性数据统一存放在大型关系数据库SQL Server中进行管理。
1.1 空间数据库设计
将研究区的交通旅游地图和城区图进行扫描,在MapInfo Professinal中进行数字化,经过图形编辑后得到研究区旅游电子地图。按照系统的整体设计,数据集分为面数据集、线数据集、线拓扑数据集、点数据集和文本数据集,面数据集图层包括行政区域、水系、景区和城区居民地,线数据集图层包括高速公路、一级公路、二级公路、三级公路、一般公路、铁路和市区街道,线拓扑数据集图层主要是公交线拓扑,点数据集图层包括乡镇、景点、宾馆、学校、医院、银行、商场和企事业单位,文本数据集主要是指各图层名称标注。
1.2 属性数据库设计
在数据库中,某一地理对象的属性数据与空间数据有两种连接方式:第一种是把属性数据和空间数据统一存储在同一记录中;第二种是把属性数据存储在其它表中通过关键字标识与空间数据进行连接。在本系统的属性数据库设计中,对于属性信息相对较少的地理对象就直接设置在空间数据表单里。而对于一个地理对象对应于多个不同类型的属性数据,存在“一对多”关系,则把其属性存储于其它数据表单中。
1.3 多媒体数据的存储管理
本系统包含旅游景点、宾馆饭店、旅游环境等有关旅游管理方面的图片、声音、录像、文字说明,以多种方式向游客展示研究区内的旅游资源及其相关的服务。部分多媒体数据以记录的方式直接存储在数据库中,如文字介绍、图片信息。其它多媒体数据则以文件方式存储在本地,如录像、声音文件,其存储方式是在数据库中建立相应的字段来存储文件路径,并在应用程序中以此作为索引来实现多媒体数据的调用。
2 系统功能设计
围绕系统需求分析及总体目标,系统具有旅游资源信息管理、地图基本操作、信息查询、旅游资源评价与预测、旅游信息发布、系统维护等主要功能。
2.1 旅游资源信息管理
对研究区的旅游景点、交通、宾馆、饭店、医院、学校、银行、商场、企事业单位等信息进行分层显示与管理,以图像、照片、文字、地图等多媒体信息进行介绍,并以不同的符号形象、直观地展示给用户。在程序中加载和创建图层的主要代码如下:
2.2 地图基本操作
对地图及各图层进行放大、缩小、移动、定位、标注、漫游、图层控制、图元操作、全部显示及鹰眼图导航等操作。
(1)显示主图和鹰眼图
23信息查询功能
系统应具有方便、灵活、高效的查询功能,使用户能够迅速的查找到所需的旅游资源及相关设施信息。包括在地图上显示所有景点的具体位置、名称、类别等;可按不同景点类别查询各景点数量及位置;可按星级或价位查询宾馆酒店的名称、数量,并同时在地图上显示各自位置;在地图上任一点,可计算出该点与另外一点间的直线距离等等。在程序中测距的主要代码如下:
2.4 旅游资源评价与预测功能
系统应具有旅游资源评价功能,并把评价结果以可视化方式展示给用户。此外,还应具有对研究区环境的监测功能,便于给管理者和旅客提供较多的有效的信息。
2.5 旅游信息发布功能
游客可以通过网络方便地访问该系统查询旅游目的地信息,选择较好的旅游路线和旅游团等,便于其旅游出行的安排。
2.6 系统维护功能
系统登陆角色分为系统管理员、旅游管理员和游客,支持匿名登陆,管理员级别的用户可以对系统进行维护,包括空间数据、属性数据及多媒体数据的维护等等。
3 结束语
利用组件式GIS技术、多媒体与GIS的集成技术、数据库技术、C/S的网络技术等开发的旅游信息系统,对于普通游客而言,系统有利于他们方便、高效地查询、检索和决策,而且系统查询结果形象直观,增加了旅游目的地的吸引力;对于旅游管理者而言,系统能够有效地对研究区的旅游资源进行科学、准确的预测和管理。
摘要:详细介绍了在VC++环境下利用MapX控件进行旅游信息系统开发的实现过程,并给出了一些功能的实现代码,为开发GIS提供了VC++与MapX控件进行混合编程的基本方法。
关键词:MapX,VC++,旅游信息系统
参考文献
[1]郑楠.基于GIS的旅游信息系统研究与实现[D].成都:西南交通大学硕士学位论文,2006.
[2]车建仁.VC~(++)环境下基于MapX开发的旅游信息系统[J].水利科技与经济.2004(12).
[3]袁浩涛.组件式城市旅游地理信息系统的应用[D].昆明:昆明理工大学硕士学位论文,2006.
[4]陈建春.VC~(++)开发GIS系统—开发实例剖析[M].北京:机械工业出版社,2006.
[5]杜巧玲,吴秀芹,张森.MapInfo 7中文版入门与提高[M].北京:清华大学出版社,2005.