C语言实现电子英汉词典系统

 更新时间:2022年06月02日 10:04:55   作者:普通学长  
这篇文章主要为大家详细介绍了C语言实现电子英汉词典系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了C语言实现电子英汉词典系统的具体代码,供大家参考,具体内容如下

一、设计功能(文章仅供参考)

a. 词条录入:即添加单词记录。 
b. 信息显示:将所有的单词按字母顺序显示。 
c. 词条修改:对已经输入的单词信息进行修改。 
d. 词条删除:删除某个单词记录。 
e. 单词查询: 输入单词英文拼写,输出该单词的中文释义。 
f. 信息保存:将单词信息保存到文件。 
g. 退出系统 

二、功能展示

三、思维导图

四、程序源码

#include <stdio.h>    //引入库函数
#include <stdlib.h>
#include <string.h>
#define szWORD 50    //单词长度最大50
#define szSTRN 200    //释义长度最大200
#define szProject sizeof(struct Dictionary)
char fileDict[szSTRN];
typedef struct   Dictionary{
char word[szWORD];
char mean[szSTRN];
} Project ; //定义字典结构体,定义两个字符型变量单词和释义
fpos_t consult(char *word, char *mean)
{
FILE * f = 0; Project  i; 
int r = 0; fpos_t p = 0;
if(!word) return 0;
f = fopen(fileDict, "rb");
if (!f) return 0;
while(!feof(f)) {
  fgetpos(f, &p);
  r = fread(&i, szProject , 1, f);
  if(r < 1) break;
  if(i.word[0] == 0) continue;
  if(strcmp(i.word , word)) continue;
  if(mean) strcpy(mean, i.mean );
  fclose(f);
  return p+1; }
fclose(f);
return 0;}
void Search(void);
void Append(void);
void Delete(void);
void Update(void);
 
int main(int argk, char * argh[])
{
int m= 0;
if(argk>1) 
  strcpy(fileDict, argh[1]);
else
  strcpy(fileDict, "c:\\dict.txt");
for(;;) {
printf("\n\
--------------------\n\
欢迎使用电子英汉词典!\n\
--------------------\n\
1 - 查询词条\n\
2 - 新增词条\n\
3 - 删除词条\n\
4 - 修改词条\n\
5 - 退出词典\n\
--------------------\n");
  m = getchar() - '0';
  switch(m) {
case 1: Search();break;
case 2: Append();break;
case 3: Delete();break;
case 4: Update();break;
default : return 0;}
}
return 0;
}
 
void Search(void)
{
 Project i; fpos_t p = 0;
memset(&i, 0, szProject );
printf("please input the word  you want:"); scanf("%s", i.word );
p = consult(i.word, i.mean );
if(p==0) {
  printf("sorry do not find what you want!\n");
  return;
}
printf("单词:%s\n释义:%s", i.word , i.mean );
}
void Append(void)
{
Project  i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szProject );
printf("please input the word you want:"); scanf("%s", i.word );
p = consult(i.word,0);
if(p)     {
  printf("sorry do not find what you want!\n");
  return;
}
printf("please giving the meaning,按确认结束:"); 
fflush(stdin);
gets(i.mean );
f = fopen(fileDict, "ab");
fwrite(&i, szProject , 1, f);
fclose(f);
printf("词条已新增\n");
}
void Delete(void)
{
 Project  i; FILE * f = 0; fpos_t p = 0;
memset(&i, 0, szProject );
printf("please input the word you want:"); scanf("%s", i.word );
p = consult(i.word, 0 );
if(p==0) {
  printf("sorry do not find what you want!\n");
  return;
}
p--;
memset(&i, 0, szProject);
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szProject , 1, f);
fclose(f);
printf("词条已删除\n");
}
void Update(void)
{
 Project  i; FILE * f = 0; fpos_t p = 0; 
memset(&i, 0, szProject );
printf("please input the word you want:"); scanf("%s", i.word );
p = consult(i.word, 0 );
if(p==0) {
  printf("sorry do not find what you want!\n");
  return;
}
p--;
printf("please giving the meaning,按确认结束(输入drop放弃修改):"); 
fflush(stdin);
gets(i.mean );
if(strstr(i.mean ,"drop")) {
  printf("已放弃修改!\n");
  return ;
}
f = fopen(fileDict, "rb+");
fsetpos(f, &p);
fwrite(&i, szProject , 1, f);
fclose(f);
printf("词条已保存\n");
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:

相关文章

  • 利用Matlab实现图像亮度分布统计图

    利用Matlab实现图像亮度分布统计图

    这篇文章主要介绍了如何利用Matlab实现图像亮度分布统计图的绘制,文中的示例代码讲解详细,对我们学习Matlab有一定的帮助,感兴趣的可以了解一下
    2022-05-05
  • Qt 使用 canon edsdk 实现实时预览的示例代码

    Qt 使用 canon edsdk 实现实时预览的示例代码

    这篇文章主要介绍了Qt 使用 canon edsdk 实现实时预览的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • C++学习之线程详解

    C++学习之线程详解

    多线程是开发中必不可少的,往往我们需要多个任务并行,就需要多线程开发。本文将带大家深入学习一下C++中的常用的一些知识点,感兴趣的同学可以了解一下
    2021-12-12
  • C++/CLI在vs上的安装和初步使用教程

    C++/CLI在vs上的安装和初步使用教程

    本文给大家介绍C++/CLI在vs上的安装和初步使用,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-07-07
  • C语言递归函数与汉诺塔问题简明理解

    C语言递归函数与汉诺塔问题简明理解

    递归(recursive)函数是“自己调用自己”的函数,无论是采用直接或间接调用方式。间接递归意味着函数调用另一个函数(然后可能又调用第三个函数等),最后又调用第一个函数。因为函数不可以一直不停地调用自己,所以递归函数一定具备结束条件
    2022-07-07
  • c++如何保存vector到文件

    c++如何保存vector到文件

    这篇文章主要介绍了c++如何保存vector到文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • C++高级数据结构之优先队列

    C++高级数据结构之优先队列

    这篇文章主要介绍了C++高级数据结构之优先队列,文章围绕主题的相关资料展开详细介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-05-05
  • C++中String的语法及常用接口的底层实现详解

    C++中String的语法及常用接口的底层实现详解

    在C语言中,string是一个标准库类(class),用于处理字符串,它提供了一种更高级、更便捷的字符串操作方式,string 类提供了一系列成员函数和重载运算符,以便于对字符串进行操作和处理,本编文章会对C++中的 string 进行详解,希望本篇文章会对你有所帮助
    2023-06-06
  • 谈谈C语言中位运算你要知道的那些事儿

    谈谈C语言中位运算你要知道的那些事儿

    C语言中的各种运算都是以字节的形式进行,在编写很多系统程序时,如驱动程序、磁盘文件管理程序等,常要求将数据按位(bit)进行运算或者处理,下面这篇文章主要给大家介绍了关于C语言中位运算的相关资料,需要的朋友可以参考下
    2022-02-02
  • C语言实现简单扫雷小程序

    C语言实现简单扫雷小程序

    这篇文章主要为大家详细介绍了C语言实现简单扫雷小程序,一款大众类的益智小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10

最新评论