毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 论文 >> 正文

移动终端汉语拼音输入法及本地搜索接口实现技术 第6页

更新时间:2010-6-19:  来源:毕业论文
移动终端汉语拼音输入法及本地搜索接口实现技术 第6页
图3-9  客户端设计模块
本设计中使用的模拟器的按钮控件作了23个按钮。左右键:选择列表中拼音;上下键:对同一拼音的汉字序列翻页;‘*’键:输入标点符号;“2”到“9”键:用于输入拼音或确认时的选择;“确认”键:找到目标汉字后的确认输入;“0”按钮:取消输入的拼音或删除输入文本。下面就左右键作简单介绍,流程如图 3-10 所示。
图3-10  左右键操作简介
由于数字键盘中1个数字键对应多个字母,因此在用户输入的过程中必然会生成许多键盘按键方式相同,但拼音不同的汉字。 而用户需要的拼音又往往不是第一个,因此需要用1 对左右键进行选择。 主要是使用了 个标志UDorder,通过它对保存在数组中的查询结果进行选择。
3.5  本章小结
本章对整个课题的主要模块也框架进行了概要的分析。针对拼音输入法系统这一具体课题,进行了概要的设计分析,为后续章节的模块设计奠定了基础。在以上分析的同时,本章得出了一个合理的软件结构,这对软件的整体布局和深入理解,有很大的作用。总之,本章内容讲述的是软件设计和具体实现前的重要步骤,合理的软件需求分析,会给后续的开发带来极大的便利。
第四章  输入法的详细设计与实现
整个输入法分为3大模块,分别是文字库处理模块,输入法输入处理模块,主控制模块,下面分别对其进行详细的分析。
4.1  输入法的文字库处理模块的设计
文字库处理模块是本论文研究的重点,主要涉及到文字库的设计,按键事件的处理,对输入的拼音的搜索与匹配。该模块的类结构主要由CharLibrary_1类,CharLibrary_2类,CharLibrary_3类,Spell2Chars类,等四大类构成。
CharLibrary_1类,CharLibrary_2类,CharLibrary_3类中设计汉字库,每组汉字由对应的汉语拼音索引,根据传递过来的输入法虚拟按键来处理按键。
Spell2Chars类根据拼音选择汉字组获得该拼音下的汉字序列如果拼音为空,就返回空否则取拼音的长度并把拼音的每个字符放在定义的一个数组里里然后根据不同长度拼音不同处理。在此模块中同样要在处理判断当前的输入状态。如果是汉字输入状态,则把它发送给汉字输入处理模块,它调用汉字编码转换引擎来处理。如果是其他输入状态,则把它发送给英文数字处理模块,它调用英文数字转换引擎来处理。(1)汉字处理模块:把 0-9 对应的候选汉字发送给应用程序,同时汉字编码转换引擎中的编码清0。然后调用汉字编码转换引擎的缓存调整模块,把选择的汉字调整到缓存词组的第一个位置。当按键为后退键时,删除汉字编码转换引擎中的最后一个编码,然后用删除后的编码搜索,并把搜索结果通过候选窗口显示出来。(2).数字输入时,当按键0-9 号键、#号键和*号键时,直接把按键对应的字符‘0’-‘9’,‘*’,‘#’发送给应用程序。当按键为后退键时,删除上一个输入字符。其他按键不进行处理。(3).英文输入时,当前按键与上一个按键不同时,当前按键为*则进入符号输入模式,当前按键不为*时则退出符号输入模式。然后把当前编辑字符串里的字符发送给应用程序。主要是因为英文输入时支持多重按键(即按下 2 号键输入字母a,再按一下输入字母b),这些多重按键字符是保存在编辑字符串中的,所以要把这些编辑字符串中的内容发送到应用程序,再存放新的字符,以避免被新的字符覆盖。当前按键为0号键时,直接发送字符‘0’给应用程序。当前按键为#号键时切换英文大小写模式。当前按键为后退键时,如果编辑字符串中有字符,则删除编辑字符串中的字符,如果编辑字符串中没有字符,则删除应用程序中的一个字符。当前按键为*键时,获取下一个符号。把它放到编辑字符串中。当前按键为 2-9 号键时,根据当前按键、上一个按键和当前大小写输入模式,获取当前输入字符放到编辑字符串中。其他按键,当前编辑字符串中有字符时,把当前编辑字符串中的字符发送给应用程序。不对按键进行其他任何处理。
CharLibrary_1类,CharLibrary_2类,CharLibrary_3类,Spell2Chars类,这四个类的类图如图4-1所示
图4-1  CharLibrary_1类、CharLibrary_2类、CharLibrary_3类、Spell2Chars类类图
本模块时本次设计的重点,根据输入法此模块设计的结果对各个类进行编码实现。考虑到此模块的整体代码行非常长,在此仅对部分关键代码进行分析。Spell2Chars类中getInput2Spell函数实现拼音索引表,拼音索引表根据不同的内码转换为相应的拼音。其相应的代码如下:
毕业论文http://www.Lwfree.cn/        else
        if(spellNumber == 3464)
            result = "DING";
  类public class CharsLibrary_1,public class CharsLibrary_2 ,public class CharsLibrary_3,存储了本次输入法设计的文字库。本次定义一个字符数组存储每组拼音所对应的汉字。并通过unsigned char mge_ime char * mgePY_ime_mb实现了在拼音索引表中检索匹配的索引,通过索引检索到相应的汉字数组。文字库部分代码如下:
public class CharsLibrary_1 {
 private CharsLibrary_1(){
 }
 public static final char[] A = {
  '啊','阿','呵','吖','嗄','腌','锕'};
 public static final char[] AI = {
  '爱','矮','挨','哎','碍','癌','艾','唉','哀','蔼','隘','埃','皑','呆','嗌','嫒','瑷','暧','捱','砹','嗳','锿','霭','乃','剀','呃','噫','奇','阂'};
 public static final char[] AN = {
  '按','安','暗','岸','俺','案','鞍','氨','胺','厂','广','庵','揞','犴','铵','桉','谙','鹌','埯','黯','干','盒','钳','顸'};
 public static final char[] ANG = {
  '昂','肮','盎','仰'};
 public static final char[] AO = {
  '袄','凹','傲','奥','熬','懊','敖','翱','澳','嚣','拗','媪','廒','骜','嗷','坳','遨','聱','螯','獒','鏊','鳌','鏖','岙','噢','棍','浇'};
 public static final char[] BA = {
  '把','八','吧','爸','拔','罢','跋','巴','芭','扒','坝','霸','叭','靶','笆','疤','耙','捌','粑','茇','岜'
,'鲅','钯','魃','菝','灞','伯','捭','杷','湃','萆'};
 public static final char[] BAI = {
  '百','白','摆','败','柏','拜','佰','伯','稗','捭','呗','掰','扒','排','派','薜','鞴'};
 public static final char[] BAN = {
  '半','办','班','般','拌','搬','版','斑','板','伴','扳','扮','瓣','颁','绊','癍','坂','钣','舨','阪','瘢','分','彬','豳','辨','辩'};
 public static final char[] BANG = {
  '帮','棒','绑','磅','镑','邦','榜','蚌','傍','梆','膀','谤','浜','蒡','彭','旁','纺','螃'}; public static final char[] BAO = {
  '包','抱','报','饱','保','暴','薄','宝','爆','剥','豹','刨','雹','褒','堡','苞','胞','鲍','炮','瀑','龅','孢','煲','褓'
,'鸨','趵','葆','勹','呆','簿','袍','裒'};
 public static final char[] BEI = {
  '被','北','倍','杯','背','悲','备','碑','卑','贝','辈','钡','焙','狈','惫','臂','褙','悖','蓓','鹎','鐾','呗','邶','鞴','孛','陂',
'碚','俾','埤','怫','波','菩','萆','葡','蜚','跋'};
 public static final char[] BEN = {
  '本','奔','苯','笨','夯','锛','贲','畚','坌','体'};
 public static final char[] BENG = {
  '蹦','绷','甭','崩','迸','蚌','泵','甏','嘣','俸','傍','唪','堋','平','抨','旁','榜'};
 public static final char[] BI = {
  '比','笔','闭','鼻','碧','必','避','逼','毕','臂','彼','鄙','壁','蓖','币','弊','辟','蔽','毙','庇','敝','陛','毖','痹','秘','泌','秕','薜'
,'荸','芘','萆','匕','裨','畀','俾','嬖','狴','筚','箅','篦','舭','荜','襞','庳','铋','跸','吡','愎','贲','滗','濞','璧','哔','髀','弼','妣','婢',
'仳','佛','卑','埤','复','媲','幅','庀','拂','捭','服','枇','檗','殍','波','瞥','纰','脾','虑','被','费','跛','鐾','陂','陴','馥'};
函数unsigned char mge_ime char * mgePY_ime_mb实现了在拼音索引表中检索匹配的索引,通过索引检索到相应的汉字数组,unsigned char mge_ime作用是用来将完全匹配的索引都存到cpmgePY_Mb里,并找出完全匹配的组数,char * mgePY_ime_mb函数的作用是如果有匹配的索引组数,则取第一组里的PY_mb,即取输入的数字组合对应的汉字。如果没有匹配的索引组,则返回空字符串。unsigned char mge_ime相应的代码如下及相应的注解如下:
unsigned char mge_ime(char *strInput_mge_str)
{
    struct mge_index *cpHZ;//首字母索引
 struct mge_index *cpHZedge;//指向了最后一个索引
 structmge_index *cpHZTemp;
    unsigned char i,j;
 unsigned char cInputStrLength=strlen(strInput_mge_str);//输入拼音串长度//
    cpmgePY_Mblen=0;                                //完全匹配组数
    j=0;                                        //j为匹配最大值
    if(*strInput_mge_str=='\0')return(0);       //如果输入空字符返回0//
毕业论文http://www.Lwfree.cn/
        {
               if(*(strInput_mge_str+i)!=*((*cpHZ).mge_T9+i))    //检查字符串匹配本文源自优文论文网,就是看输入的数字字符是否和索引表中的数字一一相对应`
            {
                if (i+1 > j)
                {
                    j=i+1;                    //j为匹配最大值
                    cpHZTemp=cpHZ;
                }
                break;                        //发现字母串不配,退出//
            }           
        }
        if((i==cInputStrLength) && (cpmgePY_Mblen<16))    //字母串全配,最多8组
        {
            cpmgePY_Mb[cpmgePY_Mblen]=cpHZ;
            cpmgePY_Mblen++;
        }
        cpHZ++;
    }
     if(j!=cInputStrLength)                 //不完全匹配输出最多匹配的1组
        cpmgePY_Mb[0]=cpHZTemp;
    return (cpmgePY_Mblen);                //输出完全匹配组数,0为无果而终//
}
4.2  输入法输入模块的设计
输入法用户输入模块主要包括状态窗口、编辑窗口和候选窗口。而一般状态窗口不用一个窗口来显示,而是用右上角的一个图标来显示当前的输入法状态。所以主要实现编辑窗口和候选窗口。输入法用户界面模块类结构主要有InputEdit类CutString类。InputEdit类和CutString类实现对用户界面的编辑和光标的移动,右侧滑竿光标索引超出屏幕文字行数每行文字的半段,填充区高度显示区域,显示文字的行数,可绘制区域最大高度可绘制区域最大宽度,文本编辑区域每行字数,拼音编辑区宽度输入类型,显示区域宽度,当前拼音对应的字符的输入框的高度显示,当前拼音对应字符的输入框宽度,输入框间隔输,入超时时间等等的处理。InputEdit类、CutString类的类图如图4-2所示:

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

移动终端汉语拼音输入法及本地搜索接口实现技术 第6页下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。