正文

手机拼音输入法头文件和主函数2006-10-21 20:04:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/goal00001111/19586.html

分享到:

//*
  Name: 手机拼音输入系统头文件
  Copyright:
  Author:
  Date: 20-10-06 07:23
  Description:手机拼音输入系统头文件
*/

#define SIZE 500

struct Node{
 char data[10];
 struct Node *next;
};
typedef struct Node SPELL;
typedef SPELL *LNode;

char *storage[SIZE];

//////////////////////////////////////////////////////////////////////////////////
/*
函数声明:void ReadFile(const char fileName[]);
函数功能:从指定的文件中把所有汉语拼音及对应汉字读入一个指针数组*storage[](全局变量),
  数组的每个元素指向文件中的一行。
输入变量: const char fileName[],指定的文件名,其中存储了汉字库
输出变量:*storage[],全局变量,每个元素指向一个包含某拼音组合及其对应汉字的字符串
返回值: 无 
*/
void ReadFile(const char fileName[]);
///////////////////////////////////////////////////////////////////////////////
/*
函数声明:void ReadValue(char value[]);
函数功能:读取用户输入的字符串buf,并对其进行适当的转换。
    转换规则:先找到结束键'1',删除结束键之后的字符。
    若无结束键'1',value[i] = '\0';;并结束程序;
    然后在buf中逆序查找#号,直到找到#号或遇到buf的第一个元素为止。
    若找到#号,则把#号之后的合法字符(数字)复制到value;
    若未找到#号,则把buf的所有合法字符(数字)复制到value;
    若只输入结束键'1',表示用户选择离开。
输入变量: char value[],用来存储用户输入的合法字符的字符串
输出变量: char value[],用来存储用户输入的合法字符的字符串
返回值: 无 
*/
void ReadValue(char value[]);
//////////////////////////////////////////////////////////////////////////////
/*
函数声明:LNode GetLetterList(const char value[]); 
函数功能:首先创建一个指针数组用来存储键盘上的数字字母组合,以该数字为下标,即
const char *keyboard[10] = {NULL, NULL,"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
创建一个空的线性链表LNode letterList。
然后调用函数RecursionAnalyse,采用递归的方法,求出数字字符串对应的所有拼音组合,并把它们添加到链表letterList。
输入变量: const char value[],用来存储用户输入的合法字符的字符串
输出变量: 无
返回值: LNode letterList,由拼音组合所组成的链表,它的空间在程序执行过程中动态分配
*/
LNode GetLetterList(const char value[]);
///////////////////////////////////////////////////////////////////////////////////
/*
  Name: void OutPutSpell(char letters[],const char value[])
  Copyright:
  Author:
  Date: 21-10-06 14:38
  Description:
函数声明:void OutPutSpell(char letters[],const char value[]);
函数功能:根据整理后得到的字符串value,找出对应的所有拼音组合,创建一个线性链表letterList。
把所有满足条件的拼音组合添加到letterList。把存储在letterList中的拼音组合按顺序显示到屏幕,
请用户选取一个组合,并把用户选择的拼音存储到letters。 然后销毁线性链表。
输入变量:char letters[],用来存储用户选择的拼音组合 
  const char value[],用来存储用户输入的合法字符的字符串 
输出变量:char letters[],用来存储用户选择的拼音组合
返回值: 无
*/
void OutPutSpell(char letters[], const char value[]);
/////////////////////////////////////////////////////////////////////////////////
/*
函数声明:void DistroyList(LNode List);
函数功能:销毁链表letterList。
输入变量:LNode *List,指向线性链表letterList的指针
输出变量:无
返回值: 无
*/
void DistroyList(LNode *List);
///////////////////////////////////////////////////////////////////////////////////
/*
函数声明:void OutPutCharacters(const char letters[], char character[]);
函数功能:到*storage[]中找到与letters匹配的元素,将相应的汉字按顺序输出到屏幕,
  请用户选取一个汉字,
  若用户输入#号或非法字符,存储NULL到character;
  若用户输入*号,则继续输出后面的汉字,直到全部输出,然后存储NULL到character;
  若用户输入了有效的选择,存储所选择的汉字到character。
输入变量:const char letters[],用来存储用户选择的拼音组合 
  char character[],用来存储用户选择的汉字 
输出变量:char character[],用来存储用户选择的汉字 
返回值: 无
*/
void OutPutCharacters(const char letters[], char character[]);
////////////////////////////////////////////////////////////////////////////
/*
函数声明:void PrintCharacter(const char character[], const char fileName[]);
函数功能:显示用户选取的汉字到屏幕,同时按照追加的方式输出到指定文件 。
输入变量:const char character[],用来存储用户选择的汉字
  const char fileName[],指定的文件名,用来追加存储用户选择的汉字
输出变量:char character[],用来存储用户选择的汉字 
返回值: 无
*/
void PrintCharacter(const char character[], const char fileName[]);
////////////////////////////////////////////////////////////////////////////
/*
  Name: void Introduce(void)
  Copyright:
  Author:
  Date: 19-10-06 20:27
  Description:
函数声明:void Introduce(void);
函数功能: 介绍文档
输入变量:无
输出变量:无
返回值: 无
*/
void Introduce(void);
///////////////////////////////////////////////////////////////////////////////
/*
  Name: void Presentation(void)
  Copyright:
  Author:
  Date: 19-10-06 20:27
  Description:
函数声明:void Introduce(void);
函数功能: 帮助文档 ,告诉用户如何使用此输入法
输入变量:无
输出变量:无
返回值: 无
*/
void Presentation(void);
/////////////////////////////////////////////////////////////////////////////
/*
  Name: void ShowScreen(void)
  Copyright:
  Author:
  Date: 19-10-06 20:27
  Description:
函数声明:void Introduce(void);
函数功能: 显示手机屏幕
输入变量:无
输出变量:无
返回值: 无
*/
void ShowScreen(void);
///////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////

/*
  Name: 手机拼音输入法
  Copyright: free
  Author: goal
  Date: 21-10-06 19:44
  Description: 版本号1.10
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "SPELL.h"

extern char *storage[SIZE];

int main(int argc, char *argv[])
{
 char inFile[] = "汉字库.txt";
 char outFile[] = "输出文件.txt";
 char value[81];
 char letters[10];
 char character[3];
 
 ReadFile(inFile); //读取汉字库 
 
 //Introduce();
 Presentation(); //告诉用户如何使用此输入法
 
 while (1) //死循环,直到用户选择退出
 {
  ShowScreen(); // 显示手机屏幕
  
  ReadValue(value); //用户输入数据
  
  if (strcmp(value, "QUIT") == 0) //用户选择退出
   break;
  
  if (value[0] == '\0') //输入无效数据,重新输入数据
  {
   puts("错误:无效数据! 重新输入数据 ");
   continue;
  }
   
  OutPutSpell(letters, value); //显示拼音列表,供用户选择
  
  if (letters[0] == '\0')  //无效选择,重新输入数据  
   continue;
   
  OutPutCharacters(letters, character); //显示汉字列表,供用户选择
  
  if (character[0] == '\0') //无效选择,重新输入数据
   continue;
   
  PrintCharacter(character, outFile);  //显示汉字,并输出到文件
 }
 
   system("PAUSE"); 
   return 0;
}

 


 

阅读(5765) | 评论(15)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

评论人: 发布时间: 2011-07-27 13:06:00
求原码 418517260@qq.com,谢谢
评论人: 发布时间: 2011-07-08 08:53:00
求源码一份,402539931@qq.com,谢谢,你懂的
评论人: 发布时间: 2011-07-07 22:59:00
您能给我发一份源码吗?我的邮箱415609328@qq.com。
评论人:zhongkunyu 发布时间: 2010-10-26 16:50:00
您好,能发一份代码给我吗?谢谢.
评论人:nihao 发布时间: 2010-03-31 14:28:00
学习手机输入法中,麻烦给我发一份源码
评论人:flyxuer 发布时间: 2009-11-18 21:31:00
你好,请问你能给我发一份输入法源码吗?非常感谢
评论人:飞扬 发布时间: 2008-12-23 11:41:00
发一份给我呀。。大哥。。谢谢
评论人:dragon 发布时间: 2008-12-15 12:09:00
我现在在学习手机汉语拼音输入法的编程,能否得到您的源代码,让我学习学习呀?谢谢你了
评论人:大树 发布时间: 2008-09-30 22:20:00
这是一种新的非键盘拼音输入法的输入,速度很快。我想移植到手机上,请发给一份源吗。9_00@163.com,非常感谢!大树。 2008-9-30 22:17:46
评论人:jw 发布时间: 2007-12-28 15:53:00
最近在学习手机输入法编程,希望得到源码,
我的邮箱是:zhujianwen@gdeii.com.cn,谢谢
评论人:重归蛮荒 发布时间: 2007-04-18 16:58:00
你好,(不知道该怎么称呼~~) 我刚刚接触数据结构,最近学矩阵时候想用十字链表实现矩阵的转置乘法的功能,自己太笨研究不出来..看完了你的文章了 受益非浅啊,如果可以的话 麻烦把程序完整发来一下 行吗?  非常感谢!!!!!!!!!
评论人:goal00001111 发布时间: 2007-04-15 14:02:00
请发信息给我,告知你的邮箱,我发给你
评论人:leeross 发布时间: 2007-04-14 11:31:00
最近在学习手机输入法编程,希望得到源码,谢谢
评论人: 发布时间: 2006-12-18 21:31:00
最近在玩这个游戏,想编程实现,如果能获取您的源代码,将不胜感激
评论人:goal00001111 发布时间: 2006-10-21 20:06:00
谢谢你阅读了本篇文章!想要获取全部原代码的请发消息给我!
您需要登录后才能评论,请 登录 或者 注册