自己平时有睡前记录10个英语单词的习惯,每天在本子上记录下来。有一天忽然感觉不对啊,我是个程序猿,怎么能用笔纸这么原始的方式来做呢?所以闲着无聊就开发了这个小工具,如果你也有每天记英语单词的习惯,那么这个小工具也应该很适合你。
程序还是蛮简单的,大致上界面如下:
记录单词:这个没什么好说的,add一条数据,都懂的。可以看一下验证处理,还有这里调用了百度翻译接口,输入英文的时候,词义自动会出来了,代码如下:
1 ///2 /// 翻译方法 3 /// 4 /// 需要翻译的内容 5 /// 被翻译的语言 6 /// 翻译成的语言 7 ///8 public static string GetGoogtextStr(string textstr) 9 {10 string url = string.Format("http://openapi.baidu.com/public/2.0/bmt/translate");11 string requestStr = string.Format("client_id=gRyhqRABKe1rvYr8Krcxik5B&q={0}&from=en&to=zh", textstr);12 AdmAccessToken token = HttpPost(url, requestStr);13 if (token.trans_result[0].dst.Equals(token.trans_result[0].src))14 {15 return "";16 }17 else 18 {19 return token.trans_result[0].dst;20 }21 }22 23 /// 24 /// 采用Post方式提交数据25 /// 26 /// 目标网址27 /// 参数字符串28 ///29 private static AdmAccessToken HttpPost(string DatamarketAccessUri, string requestDetails)30 {31 //Prepare OAuth request 32 WebRequest webRequest = WebRequest.Create(DatamarketAccessUri);33 webRequest.ContentType = "application/x-www-form-urlencoded";34 webRequest.Method = "POST";35 byte[] bytes = Encoding.ASCII.GetBytes(requestDetails);36 webRequest.ContentLength = bytes.Length;37 using (Stream outputStream = webRequest.GetRequestStream())38 {39 outputStream.Write(bytes, 0, bytes.Length);40 }41 using (WebResponse webResponse = webRequest.GetResponse())42 {43 DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(AdmAccessToken));44 //Get deserialized object from JSON stream45 AdmAccessToken token = (AdmAccessToken)serializer.ReadObject(webResponse.GetResponseStream());46 return token;47 }48 }
单词查询列表:查询显示你所记录的所有单词。这里有一个比较恶心的地方是sqlite数据库的rowid取得的是逻辑行号索引,而grid分页处理的时候需要的是物理行号索引。,我是用这种办法解决这个问题的,有兴趣的朋友可以看一下。
单词测试:可以在记录下的单词中抽查你的掌握情况,根据中文词义,回答英语单词,也可以根据英语单词回答中文词义。
学习情况:显示今天和总共记录单词的数量。
做这个小程序用到了devExpress,所以想看源码的朋友可以先下载devExpress,又好看又好用,后期还会加上语音朗读,单词分类统计等功能。
运行程序下载: