文档章节

制作简单的单词查询软件

小波刘
 小波刘
发布于 2015/04/11 17:18
字数 410
阅读 15
收藏 0
点赞 0
评论 0

BO API是一款免费的数据服务API(http://www.boapi.net/),其单词查询接口http://service.boapi.net/EnWord/EnWord.ashx?key=AppKey&type=w&word=good,其中AppKey是申请的key,word是查询的单词。详细文档查看http://www.boapi.net/enword.htm。

开发语言:C#(wpf)

工具:VS2012

关键代码

private void btnSearch_Click(object sender, RoutedEventArgs e)
        {
            string word = tbKey.Text.Trim();
            if (word == "")
                return;
            try
            {
                WebClient wc = new WebClient();
                wc.Encoding = System.Text.Encoding.UTF8;
                string json = wc.DownloadString("http://service.boapi.net/EnWord/EnWord.ashx?appkey=dd298fc40c3be17b1b94e2f3412&word=" + word);
                wc.Dispose();
                if (!string.IsNullOrEmpty(json))
                {
                    JToken jk = (JToken)JsonConvert.DeserializeObject(json);
                    if (jk != null)
                    {
                        tbWord.Text = word;
                        tbPhonetic.Text = "[" + jk["mark"].ToString() + "]";
                        tbTrans.Text = jk["explain"].ToString();
                        voice.Visibility = Visibility.Visible;
                        voice.Tag = "http://www.boapi.net/basicdata/voice/" + word.Substring(0, 1) + "/" + jk["voice"].ToString();
                        if (jk["es"] != null)
                        {
                            if (jk["es"].Count() > 0)
                                tbSentence.Text = jk["es"][0]["sentence"].ToString() + " " + jk["es"][0]["translate"].ToString();
                            if (jk["es"].Count() > 1)
                                tbSentence.Text += Environment.NewLine + jk["es"][1]["sentence"].ToString() + " " + jk["es"][1]["translate"].ToString();
                            //if (jk["es"].Count() > 2)
                            //    tbSentence.Text += Environment.NewLine + jk["es"][2]["sentence"].ToString() + " " + jk["es"][2]["translate"].ToString();
                        }
                    }
                }
            }
            catch
            { }
        }

 

代码解析:

WebClient提供资源接收数据公共方法,我们就可以从远程url地址下载数据(访问服务)。
JsonConvert.DeserializeObject将string反序列化为json对象
voice是一个播放图标,这里将单词的音频文件地址存储到voice的Tag属性中

注意:

单词查询返回的json中,Voice代表单词语音文件名。访问语音文件的url为:http://www.boapi.net/basicdata/voice/单词文件名

如:查询good单词返回的json中"voice":"good.wav",则good单词的url为http://www.boapi.net/basicdata/voice/good.wav

源码下载:单词查询软件源码

© 著作权归作者所有

共有 人打赏支持
小波刘
粉丝 0
博文 3
码字总数 707
作品 0
成都
易语言简单聊天机器人怎么做(有图,求开源高手帮忙!)

本人真的急需此软件,求广大高手教教我这个小菜鸟: 1.怎样弄:在一个小窗口里,只要打一个句子或者单词,触发到数据库(我连数据库也不会弄)作出相应回答,我不用做得太智能,只要我输入多...

allanqiu97 ⋅ 2012/06/27 ⋅ 28

背单词软件--WordJoy

WordJoy是一个用pygtk编写的背单词软件。目前只在Linux下成功测试,至于在Windows下运行需要安装哪些库,请参加其它pygtk写的程序。 WordJoy基于TualatriX大侠的MyWord改写而成,而MyWord又是...

匿名 ⋅ 2009/07/17 ⋅ 0

有道词典 纯净版 - imsoft.cnblogs

软件名称:有道词典 软件版本:5.4 正式版(5.4.46.5554) 软件主页:http://cidian.youdao.com/ 软件定制:飞扬时空 更新日期:2013年8月26日 软件简介: 有道词典是一款免费的全能翻译软件...

imzdx ⋅ 2014/04/17 ⋅ 0

如何制作AOPR软件的字典文件

Advanced Office Password Recovery简称AOPR软件,是一款十分专业的Office密码破解工具,字典攻击是其众多攻击类型之一,用户可以根据实际添加适用的字典文件,本文将介绍Advanced Office P...

Navicat数据库管理工具 ⋅ 2016/05/25 ⋅ 0

统计出现频率最高的十个单词的程序性能分析

李竹君 2011211964 0401115班 1.使用C语言。 2.整体思路:首先将一篇文章分词,分词的方法是将逐字符的判断一篇文章,如果该字符的ASCII码在“A~Z”或“a~z”之间(区分大小写),则该字符属...

大脸猫cat ⋅ 2014/03/17 ⋅ 2

小项目创意大集合

每个程序员都可以入手的小项目创意大集合 我经常看有人发帖问关于软件项目创意点子的事,也看到了很多回帖,我自己也回了一些常见的软件项目创意。不过我觉得只列出三两个是远远不够的,因此...

新年 ⋅ 2015/11/16 ⋅ 0

AlphaDict v1.3 发布,辞典软件

主要的更新是: 1) 优化了单词本, 增加"考试模式"和 "学习模式"。 2) windows 版本取消了 “鼠标悬停取词”, 增加了“双击文本” 取词——在IE,firefox等浏览器下,双击会 “选中单词",进...

kartorz ⋅ 2015/11/22 ⋅ 2

阿里Java架构师谈谈架构和如何成为一个Java架构师

架构的定义 我们来看看软件架构的一般定义: 程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。 该体系结构不是可操...

Java高级架构 ⋅ 05/12 ⋅ 0

手写DIV+CSS代码的好处我的个人见解

有些新学员或咨询课程的人他们就是搞不明白,为啥好好的Dreamweaver不用,干嘛非要 记单词手写div+css代码;在此我发表一下我的个人建议: 1.不要太多依赖Dreamweaver软件,一个劲的插入完成一张网...

金小川 ⋅ 2010/04/13 ⋅ 0

阿里十年架构师分享如何成为一个Java架构师(文末附学习路线)

架构的定义 我们来看看软件架构的一般定义: 程序和计算系统软件体系结构是指系统的一个或多个结构。 该结构包括软件的构建,构建的外部可见属性以及它们之间的相互关系。 该体系结构不是可操...

美的让人心动 ⋅ 05/14 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

磁盘管理—逻辑卷lvm

4.10-4.12 lvm 操作流程: 磁盘分区-->创建物理卷-->划分为卷组-->划分成逻辑卷-->格式化、挂载-->扩容。 磁盘分区 注: 创建分区时需要更改其文件类型为lvm(代码8e) 分区 3 已设置为 Linu...

弓正 ⋅ 10分钟前 ⋅ 0

Spring源码解析(六)——实例创建(上)

前言 经过前期所有的准备工作,Spring已经获取到需要创建实例的 beanName 和对应创建所需要信息 BeanDefinition,接下来就是实例创建的过程,由于该过程涉及到大量源码,所以将分为多个章节进...

MarvelCode ⋅ 30分钟前 ⋅ 0

a href="#"

<a href="#">是链接到本页,因为你有的时候需要有个链接的样式,但是又不希望他跳转,这样写,你可以把这个页面去试试

颖伙虫 ⋅ 37分钟前 ⋅ 0

js模拟栈和队列

栈和队列 栈:LIFO(先进后出)一种数据结构 队列:LILO(先进先出)一种数据结构 使用的js方法 1.push();可以接收任意数量的参数,把它们逐个推进队尾(数组末尾),并返回修改后的数组长度。 2....

LIAOJIN1 ⋅ 37分钟前 ⋅ 0

180619-Yaml文件语法及读写小结

Yaml文件小结 Yaml文件有自己独立的语法,常用作配置文件使用,相比较于xml和json而言,减少很多不必要的标签或者括号,阅读也更加清晰简单;本篇主要介绍下YAML文件的基本语法,以及如何在J...

小灰灰Blog ⋅ 45分钟前 ⋅ 0

IEC60870-5-104规约传送原因

1:周期循环2:背景扫描3:自发4:初始化5:请求6:激活7:激活确认8:停止激活9:停止激活确认10:激活结束11:远程命令引起的返送信息12:当地命令引起的返送信息13:文件传送20:响应总召...

始终初心 ⋅ 58分钟前 ⋅ 0

【图文经典版】冒泡排序

1、可视化排序过程 对{ 6, 5, 3, 1, 8, 7, 2, 4 }进行冒泡排序的可视化动态过程如下 2、代码实现    public void contextLoads() {// 冒泡排序int[] a = { 6, 5, 3, 1, 8, 7, 2, ...

pocher ⋅ 今天 ⋅ 0

ORA-12537 TNS-12560 TNS-00530 ora-609解决

oracle 11g不能连接,卡住,ORA-12537 TNS-12560 TNS-00530 TNS-12502 tns-12505 ora-609 Windows Error: 54: Unknown error 解决方案。 今天折腾了一下午,为了查这个问题。。找了N多方案,...

lanybass ⋅ 今天 ⋅ 0

IDEA反向映射Mybatis

1.首先在pom文件的plugins中添加maven对mybatis-generator插件的支持 ` <!-- mybatis逆向工程 --><plugin><groupId>org.mybatis.generator</groupId><artifactId>mybatis-generator-ma......

lichengyou20 ⋅ 今天 ⋅ 0

4.10/4.11/4.12 lvm讲解 4.13 磁盘故障小案例

准备磁盘分区 fdisk /dev/sdb n 创建三个新分区,分别1G t 改变分区类型为8e 准备物理卷 pvcreate /dev/sdb1 pvcreate /dev/sdb2 pvcreate /dev/sdb3 pvdisplay/pvs 列出当前的物理卷 pvremo...

Linux_老吴 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部