正文

手机拼音输入法头文件和主函数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;
}

 


 

阅读(5696) | 评论(15)


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

评论

loading...
您需要登录后才能评论,请 登录 或者 注册