搜索
有爱,有技术,有你^_^)y
╱人◕‿‿◕人╲订下契约(注册新用户)

合作站点账号登陆

QQ登录

只需一步,快速开始

快捷导航
查看: 284|回复: 1
收起左侧

关于设计电子词典的

[复制链接]

签到天数: 48 天

连续签到: 1 天

[LV.5]常住居民I

11

主题

14

好友

1万

积分

第一章

积分
10032
发表于 2016-3-10 22:59:17 | 显示全部楼层 |阅读模式

╱人◕‿‿◕人╲定下契约

您需要 登录 才可以下载或查看,没有账号?╱人◕‿‿◕人╲订下契约(注册新用户)

x
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define szWORD 32
#define szSTRN 224
#define szITEM sizeof(struct TItem)
char fileDict[szSTRN];
typedef struct TItem
{
  char word[szWORD];
  char mean[szSTRN];
} Item;
fpos_t lookup(char *word, char *mean)
{
  FILE * f = 0; Item 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, szITEM, 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 append(void)
{
  Item i; FILE * f = 0; fpos_t p = 0;
  memset(&i, 0, szITEM);
  printf("请输入单词:"); scanf("%s", i.word );
  p = lookup(i.word, 0 );
  if(p)
  {
     printf("字典内已经有该单词记录!\n");
     return;
   }
  printf("请输入释义,按回车结束:");
  fflush(stdin);
  gets(i.mean );
  f = fopen(fileDict, "ab");
  fwrite(&i, szITEM, 1, f);
  fclose(f);
  printf("词条已新增\n");
}
void erase(void)
{
  Item i; FILE * f = 0; fpos_t p = 0;
  memset(&i, 0, szITEM);
  printf("请输入单词:"); scanf("%s", i.word );
  p = lookup(i.word, 0 );
  if(p==0)
   {
     printf("字典内没有该单词记录!\n");
     return;
   }
  p--;
  memset(&i, 0, szITEM);
  f = fopen(fileDict, "rb+");
  fsetpos(f, &p);
  fwrite(&i, szITEM, 1, f);
  fclose(f);
  printf("词条已删除\n");
}
void edit(void)
{
  Item i; FILE * f = 0; fpos_t p = 0;
  memset(&i, 0, szITEM);
  printf("请输入单词:"); scanf("%s", i.word );
  p = lookup(i.word, 0 );
  if(p==0)
  {
    printf("字典内没有该单词记录!\n");
    return;
  }
  p--;
  printf("请输入释义,按回车结束(输入abort放弃修改):");
  fflush(stdin);
  gets(i.mean );
  if(strstr(i.mean ,"abort"))
   {
     printf("已放弃修改!\n");
     return ;
   }
  f = fopen(fileDict, "rb+");
  fsetpos(f, &p);
  fwrite(&i, szITEM, 1, f);
  fclose(f);
  printf("词条已保存\n");
}
void query(void)
{
  Item i; fpos_t p = 0;
  memset(&i, 0, szITEM);
  printf("请输入单词:");
  scanf("%s", i.word );
  p = lookup(i.word, i.mean );
  if(p==0)
   {
     printf("字典内没有该单词记录!\n");
     return;
   }
  printf("【词条】%s\n【释义】%s", i.word , i.mean );
}
void set(void)
{
int cmd = 0;
printf("当前字典为%s,需要改变吗(选择yY改变)?", fileDict);
cmd = getch();
if(cmd == 'y' || cmd == 'Y')
  {
    printf("请输入字典文件名称(包含路径):");
    scanf("%s", fileDict);
    printf("设置成功!\n");
  }
}
int main(int argc, char * argv[])
{
  int cmd = 0;
  if(argc >1)
     strcpy(fileDict, argv[1]);
  else
   strcpy(fileDict, "c:\\dict.txt");
/*end if*/
for(;;)
{
   printf("\n\
   ************************\n\
   ** 欢迎使用迷你字典!**\n\
   ************************\n\
   ** 0 - 设置字典 **\n\
   ** 1 - 查询词条 **\n\
   ** 2 - 新增词条 **\n\
   ** 3 - 编辑词条 **\n\
   ** 4 - 删除词条 **\n\
   ** 5 - 退出字典 **\n\
   ************************\n");
   cmd = getch() - '0';
   switch(cmd)
    {
      case 0: set(); break;
      case 1: query(); break;
      case 2: append(); break;
      case 3: edit(); break;
      case 4: erase(); break;
      default: return 0;
    }
}
return 0;
}有谁可以帮我详细的解释一下  
以下是要求 (1)、采用结构体数组,每个数据的结构应当包括:单词的英文拼写,单词的中文释义。
(2)、系统功能:
           a. 词条录入:即添加单词记录。
           b. 信息显示:将所有的单词按字母顺序显示。
           c. 词条修改:对已经输入的单词信息进行修改。
           d. 词条删除:删除某个单词记录。
           e. 单词查询: 输入单词英文拼写,输出该单词的中文释义。
           f. 信息保存:将单词信息保存到文件。
           g. 退出系统


签名被小宅喵吞掉了~~~~(>_<)~~~~
回复

使用道具 举报

签到天数: 62 天

连续签到: 1 天

[LV.6]常住居民II

181

主题

18

好友

6万

积分

第三章

流光一瞬,离愁一身。

积分
68492
发表于 2016-3-13 00:21:13 | 显示全部楼层
哪里不懂直接问。没工夫帮你一条一条写注释。
你这应该是应付作业吧。
以后如果自己写代码记得敲好备注。
自己看好看,别人帮你找BUG也方便。
昔年种柳,依依汉南。
回复 支持 反对

使用道具 举报

本版积分规则

小黑屋|手机版|技术宅(Z站|基宅) ( 粤ICP备18082987号-1 )

GMT+8, 2025-6-16 11:59 , Processed in 0.117000 second(s), 14 queries , Redis On.

Copyright © 2018 技术宅社区

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表