【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)

承接上文。

我们采用自顶而下的方式开发,因此,今天就解决程序的主要架构:main.py的开发。

自顶而下的方式,意味着我们需要假设已经开发好了两个模块:一个是LocalDB,一个是WebDict。LocalDB存储已经在网上查过的单词,而WebDict则在新词出现时,从网上获取回相应的资料。

比如我要查process这个单词的意思,第一次是由WebDict模块返回的意思,但第二次查process就是由LocalDB完成了。

然后定义输入输出。鉴于模块和main架构之间已经解偶了,因此,就不着急进行gui的开发,第一个版本先采用CLI的方式。输入单词直接查询,输入-1退出,输入#号就显示所有难词。所谓难词,如上文所说,由LocalDB定义,目前是重复查过4次的单词。

在数据库中,有一个word table,列名分别是:word、explain、net_explain、sentence、times。分别是单词、释义、网络释义、例句和查询次数。

LocalDB开放的接口如下:

0、get_hard_word:返回所有难词的列表。

1、get_eng_word_from_db:返回在本地数据库中保存的单词

2、insert_word_to_db:将单词插入本地数据库中。

3、update_word_times:更新某个单词的查询次数

4、turn_off_db:关闭本地数据库

WebDict开放的接口如下:

0、get_dict_data:从网络获取相应单词的所需信息。(释义、网络释义、例句)

下面是全部代码:

# -*- coding:utf-8 -*-
__author__ = ‘wmydx‘

from LocalDB import LocalDIct
from WebDict import getResponse

def show_result(ans):
    names = [‘word‘, ‘explain‘, ‘net_explain‘, ‘sentence‘, ‘times‘]
    for item in ans:
        for key in names:
            print key + ‘: \n‘ + str(item[key])
        if item[‘times‘] > 1:
            print ‘CAREFUL!! this is a hard word!!‘

def show_hard_word(ans):
    for item in ans:
        print item[‘word‘] + ‘\n‘

def main():
    db = LocalDIct.LocalDict()
    response = getResponse.GetResponse()
    input_word = ‘‘
    try:
        while True:
            input_word = raw_input("plz input words: ")
            if input_word == str(-1):
                break
            if input_word == ‘#‘:
                ans = db.get_hard_word()
                show_hard_word(ans)
            else:
                ans = db.get_eng_word_from_db(input_word)
                if not ans:
                    print ‘here‘
                    ans = response.get_dict_data(input_word)
                    for item in ans:
                        db.insert_word_to_db(item, ‘words‘)
                else:
                    for item in ans:
                        item[‘times‘] += 1
                        db.update_word_times(item)
                        if db.is_a_hard_word(item):
                            db.insert_word_to_db(item, ‘hard‘)
                show_result(ans)
        db.turn_off_db()
        print ‘END.‘
    except:
        db.turn_off_db()

main()

  

时间: 2024-12-20 12:02:05

【原创】shadowebdict开发日记:基于linux的简明英汉字典(二)的相关文章

【原创】shadowebdict开发日记:基于linux的简明英汉字典(三)

全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdict开发日记:基于linux的简明英汉字典(三) [原创]shadowebdict开发日记:基于linux的简明英汉字典(四) 项目的github地址 承接上文. 现在来进行response模块的开发. 这一模块所完成的任务是,如果本地的词库中没有用户需要查询的词汇,那么就去网络上寻找到相应的词条作为

【原创】shadowebdict开发日记:基于linux的简明英汉字典(四)

全系列目录: [原创]shadowebdict开发日记:基于linux的简明英汉字典(一) [原创]shadowebdict开发日记:基于linux的简明英汉字典(二) [原创]shadowebdict开发日记:基于linux的简明英汉字典(三) [原创]shadowebdict开发日记:基于linux的简明英汉字典(四) 项目的github地址 实习的工作都这么忙,真是的.. 好不容易有时间写点博客,一鼓作气完成算了 承接上文 本文完成对本地数据库模块的开发. 由于只是非常轻量级的应用,就不劳

【原创】shadowebdict开发日记:基于linux的简明英汉字典(一)

现在基本都在Linux下工作学习了,在看英文书籍的时候往往需要查字典,但是网查的话一是点来点去非常麻烦,二是广告多烦死人,加上linux平台上没有不错的字典,于是就产生了做一个本地的命令行web字典来满足自己的需求. 感谢pycharm这个精彩的IDE和Python这个强大而简单的语言,1天时间内帮助我开发了全部的功能. shadowebdict的实现思路是这样的: 0.输入中文或者英文 1.去本地数据库寻找相应的结果并显示. 2.如果本地数据库不存在该单词,则去互联网中寻找答案并存入数据库.

Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台 Seesaw

负载均衡系统 Seesaw Seesaw是由我们网络可靠性工程师用 Go 语言开发的基于 Linux 虚拟服务器的负载平衡平台,就像所有好的项目一样,这个项目也是为了解决实际问题而产生的. Seesaw发布的博客中这样写道:“我们需要能够处理单播(unicast)和任播(anycast)虚拟 IP (VIPs) 流量,使用 NAT 和 DSR (也被称为 DR) 执行负载均衡,执行针对后端的健康检查.特别是,我们需要一个容易管理的平台,可以自动部署配置的变化.在评估了一些包括现有的开源项目的平台

基于linux操作系统Mysql的基本操作(二)

下面开始动手创建一个库,步骤如下: 先创建一个库,命令: #create database wu: 查看新建的库,命令: #show databases: 使用wu这个数据库,在里面创建表,表名是test,命令: #use wu: # create table test (id int(3),name char (10)); 创建表的格式:Create table 表名字(表栏名1  数据类型,表栏名2  数据类型....) 查看下test表,命令: #show create table tes

[转载][献给想深入学习Linux开发的网友] Linux 应用程序开发到内核开发的简明指南

[献给想深入学习Linux开发的网友] Linux 应用程序开发到内核开发的简明指南. 前言,Linux/Unix 社区的版块不热闹,新手太多,高手太忙,偶把自己这几年的Linux学习的过程讲讲,希望能给大家有点帮助, 引导初学者学习的方向,少走弯路,事半功倍,同时也是抛砖引玉,请过来人热烈发言. 1. 首先熟悉 Linux  建议在 Windows 上安装 VMware Workstation 6.5.0(以下简称VM), 下载种子在 http://www.verycd.com上找. 安装好 

基于Linux的OJ系统的设计与开发(一)

最近在研究基于linux的OJ系统,然后想自己写一系列文章记录自己这段时间的学习成果. 首先,从原理上讲,OJ功能实现并不难,最主要解决的是安全性问题.总结一下,而安全性方面问题主要是用户可能提交恶意不友好的代码.关于如何过滤这些不安全的代码,我从网上收集整理了许多资料,大体上思路如下: 先说错误的做法: 1.所有的字符串过滤都是不靠谱儿的,坑人坑自己,C语言强大的宏几乎没有绕不过的字符串过滤,而且误伤也是很常见的,比如,你在程序里要是不小心定义一个叫做fork的变量,那么你的程序别指望可以AC

基于Linux的智能家居的设计(1)

写在前面:做了半年的毕业设计,找到的工作与这个完全无关,发现自己现在有写不甘心,但是我还是在关注这方面的发展,自己的摸索和前人的帮助我完成了智能家居的一部分,希望这个能够给一些初学者 能够一些便利,毕竟技术是一个开放的,不属于某一个人的. 摘要 本课题主要目的是设计和实现一个基于Linux开发平台的智能家居系统.本系统主要使用PVC板做成的家居模型.本系统硬件使用基于ARM架构的samsung S3C6410芯片做成的OK6410开发板为手持终端,利用Zigbee实现网络通讯,并结合各种电子元器

基于Linux的智能家居的设计(3)

2  硬件设计 本课题的硬件设计包括主控制器.数据传输设计.数据采集设计.控制驱动设计.显示设计,门禁设计. 2.1  主控制器 根据方案三选择S3C6410主控芯片,S3C6410是由Samsung公司推出的一款低功耗.高性价比的RSIC处理器 ,基于ARM11内核,内置强大的硬件加速,显示处理和缩放,运动视频处理,音频处理[9].这个作为智能家居的处理器是不二之选,硬件性能上完全可以实现.本设计选用的基于S3C6410的OK6410开发板.开发板上拥有如下特征[10]: (1)  12MHz