C语言实现电子英汉词典:基于文件存储的增删改查系统

月亮慢半拍
月亮慢半拍
发布时间:2026-10-15 | 3人浏览过
原创

本文展示如何利用 C 语言结合标准文件 I/O 库,开发一款具备完整生命周期管理的电子英汉词典系统。通过结构体封装单词与释义,实现数据的持久化存储与检索。

系统设计目标

该程序旨在提供一个轻量级的词汇管理工具,主要解决单词信息的本地存储与快速访问问题。系统需支持以下核心功能:

  1. 词条录入:支持添加新的英语单词及其对应释义。
  2. 信息查询:根据输入的英文拼写,实时输出对应的中文释义。
  3. 信息维护:允许对已存在的词条进行修改或彻底删除。
  4. 列表浏览:能够将词典中所有单词按逻辑顺序展示。
  5. 数据持久化:所有更改自动保存至指定文件,重启后不丢失。

界面与功能流程

程序启动后呈现主菜单,用户可通过数字选项触发不同功能模块。以下是典型的操作场景演示:

内部架构逻辑

系统的核心在于数据结构设计与文件指针的管理。为了直观理解各模块的协作关系,请参考以下思维导图:

关键代码实现解析

以下为完整的源代码实现。程序采用二进制模式(`rb`/`ab`/`rb+`)处理 .txt 文件(实际上作为二进制块存储),每次读取一个固定大小的结构体记录。请注意,在实际生产环境中,建议增加输入缓冲区清理以防止缓冲区溢出,并考虑使用排序算法优化显示顺序。

#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");
}

以上就是C语言实现电子英汉词典系统的详细内容,更多关于C语言文件操作与数据结构应用的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表