#include <stdio.h>
#include <stdlib.h>
#include <string.h> struct Word
{char sEnglish[20];     //英文单词char sChinese[40];        //中文意思char sWordKind[10];       //词性struct Word* pNext;         //指向下一个节点指针
};struct Word* pShead = NULL;//链表头指针
struct Word* pSSearch;//用于查询信息的指针
struct Word* pSFormer;//用于保存前一个节点的指针
struct Word* pSToThis;//用于指向新开辟的节点//===============================菜单函数================================
char Menu()
{char nChoose;printf("-------------------------------------------------------------\n");printf("|                        欢迎使用英汉辞典                   |\n");printf("-------------------------------------------------------------\n");printf("|                                                           |\n");printf("|                           a.单词查询                      |\n");printf("|                           b.添加单词                      |\n");printf("|                           c.退出系统                      |\n");printf("|                                                           |\n");printf("|请选择功能:                                               |\n");scanf("%c", &nChoose);return nChoose;
}//==============================查询单词函数============================
void Search()
{char nChoose;int nCheck = 0;//用于判断是否查询到单词char sSearchWord[20];//需要查询的单词while (1){printf("-------------------------------------------------------------\n");printf("|   请输入需要查询的单词:\n");scanf("%s", sSearchWord);pSSearch = pShead;while (pSSearch != NULL){if (strcmp(pSSearch->sEnglish, sSearchWord) == 0){nCheck = 1;printf("-------------------------------------------------------------\n");printf("|       英文单词:%s\n", pSSearch->sEnglish);printf("|       词    性:%s\n", pSSearch->sWordKind);printf("|        中文意思:%s\n", pSSearch->sChinese);printf("-------------------------------------------------------------\n");break;}pSSearch = pSSearch->pNext;}if (nCheck == 0){printf("-------------------------------------------------------------\n");printf("|                      词库中不含该单词                     |\n");printf("-------------------------------------------------------------\n");}printf("是否继续?(Y/N)\n");getchar();scanf("%c", &nChoose);if (nChoose=='N'||nChoose=='n'){break;}}
}//==============================添加单词函数============================
void Insert()
{char nChoose;char sEnglish[20];        //英文单词char sChinese[40];        //中文意思char sWordKind[10];       //词性while (1){printf("-------------------------------------------------------------\n");printf("|    请输入英文单词:\n");scanf("%s", sEnglish);printf("|    请输入中文意思:\n");scanf("%s", sChinese);printf("|    请输入词性:\n");scanf("%s", sWordKind);pSToThis = (struct Word*)malloc(sizeof(struct Word));//开辟一个新节点来保存信息//将刚输入的信息保存到节点中strcpy(pSToThis->sEnglish, sEnglish);strcpy(pSToThis->sChinese, sChinese);strcpy(pSToThis->sWordKind, sWordKind);pSToThis->pNext = NULL;//指向下一个节点的指针置空,即放在链表最后if (pShead == NULL)//判断头指针是否指空,{pShead = pSToThis;//如果指空,则表示链表为空,头指针指向新加的节点}else{pSSearch = pShead;//从链表头开始遍历找到链表的最后一个节点while (pSSearch != NULL)//如果指向当前的节点不为空,则循环{pSFormer = pSSearch;//让指向前一个节点的指针指向当前找到的节点pSSearch = pSSearch->pNext;//指向当前的节点指向下一个节点}pSFormer->pNext = pSToThis;//原最后一个节点指向下一个节点的指针指向下一个节点}printf("-------------------------------------------------------------\n");printf("|                       新单词添加成功!                    |\n");printf("-------------------------------------------------------------\n");printf("|英文单词:%s\n", pSToThis->sEnglish);printf("|词    性:%s\n", pSToThis->sWordKind);printf("|中文意思:%s\n", pSToThis->sChinese);printf("-------------------------------------------------------------\n");printf("是否继续?(Y/N)\n");getchar();scanf("%c", &nChoose);if (nChoose == 'N' || nChoose == 'n'){break;}}
}//==============================拆分单词的函数==========================
int GetWord(int w, char str[], int n, char cC[], int m)
{int i;for (i = 0; w + i < 1000; i++){if (str[w + i] == '-'){cC[i] = '\0';//第一个;前面存储的姓名信息w = w + i + 1;//r用于记录读取的一行,数据处理到第几位break;}cC[i] = str[w + i];//在不是;的时候将值赋给需要存储的变量}return w;//将变化的r值返回,用于下一次调用
}//==============================读取信息函数============================
void Read()
{int i;int r = 0;char str[200];            //读取一行字符串char sEnglish[20];     //英文单词char sChinese[40];        //中文意思char sWordKind[10];       //词性FILE *fp;if ((fp = fopen("Word.txt", "r")) == NULL){printf("-------------------------------------------------------------\n");printf("|                                                           |\n");printf("|                      暂无词库数据记录                     |\n");printf("|                                                           |\n");printf("-------------------------------------------------------------\n");}else{while (fgets(str, 200, fp)){r = 0;//记录一行数据读取到哪一位r = GetWord(r, str, 1000, sEnglish, 20);//调用子函数拆分数据r = GetWord(r, str, 1000, sChinese, 20);r = GetWord(r, str, 1000, sWordKind, 40);pSToThis = (struct Word*)malloc(sizeof(struct Word));//开辟一个新节点来保存信息//将刚输入的信息保存到节点中strcpy(pSToThis->sEnglish, sEnglish);strcpy(pSToThis->sChinese, sChinese);strcpy(pSToThis->sWordKind, sWordKind);pSToThis->pNext = NULL;//指向下一个节点的指针置空//将新读取出的信息插入链表中if (pShead==NULL)//如果头指针指向空{pShead = pSToThis;//头指针指向新节点pSFormer = pSToThis;//记录前一个节点的指针指向当前节点} else{pSFormer->pNext = pSToThis;//将新的节点添加在上一个节点的后面pSFormer = pSToThis;//记录前一个节点的指针指向当前节点}}printf("-------------------------------------------------------------\n");printf("|                                                           |\n");printf("|                        词库数据装载成功                   |\n");printf("|                                                           |\n");printf("-------------------------------------------------------------\n");fclose(fp);}
}//==============================保存信息函数============================
void Save()
{FILE *fp;//读取文件fp = fopen("Word.txt", "w");//打开文件。w代表写入操作pSSearch = pShead;//从链表头开始,逐个节点保存信息while (pSSearch!=NULL){fputs(pSSearch->sEnglish, fp);fputs("-", fp);fputs(pSSearch->sChinese, fp);fputs("-", fp);fputs(pSSearch->sWordKind, fp);fputs("-", fp);fputs("\n", fp);pSSearch = pSSearch->pNext;//指向下一个节点}fclose(fp);
}
//主函数 int main()
{char nChoose2;int nChoose;int nEnd = 1;Read();while (nEnd){nChoose = Menu();switch (nChoose){case 'c':printf("是否将系统单词保存到文件?(Y/N)\n");getchar();scanf("%c", &nChoose2);if (nChoose2=='Y'||nChoose2=='y'){Save();}nEnd = 0;break;case 'a':Search();break;case 'b':Insert();break;default:printf("-------------------------------------------------------------\n");printf("|                          错误的选项号                     |\n");printf("-------------------------------------------------------------\n");break;}}return 0;
}

【数据结构课设】英汉互译词典相关推荐

  1. c语言英汉互译编程,用C语言编辑简单英汉互译词典.doc

    疥详刁呆害獭荆羞哈沮蒜赫夜内淮牺彻蔼纤凤虹锥硝够唬古进淋牡振拘铅笺元扳与醒靳蹋销钡胶致石衙钦目妈而炸赚鹤邓穷窍瘴笼旬房殆查恨蠢煌沧祥斥瞩骤敌晤屏莲匆目穷妖暗屹码冬息摊挎傍啡坟范给羹哥皱做斋绥甭焕睫苍苫 ...

  2. 小学生英汉互译c语言编程,用C语言编辑的简单的英汉互译词典

    用C语言编辑的简单的英汉互译词典,部分带注释 源程序主要代码(关键语句加注释) #include "stdio.h" #include "string.h" v ...

  3. python小项目--》英汉互译词典

    #导入模块 import tkinter#创建窗口 window = tkinter.Tk()#设置窗口属性 window.geometry("500x300") window.t ...

  4. python英汉互译词典下载_python字典如何实现英汉互译

    我靠,你到底会不会python. 你下载个ide 集成开发环境吧. pycharm 这个很不错.至于安装注册什么的自己搜~ 还有,自己多思考,思考完再问.比如英译汉,那么你将英当成汉.汉当成英,不就是 ...

  5. python英汉互译词典下载_Python教程-字典(1)

    d = {key1 : value1, key2 : value2 } dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'} dict1 ...

  6. python爬虫之英汉互译(爬虫+pyqt5)

    简单的爬虫与图形化界面的结合 源码转载自[https://blog.csdn.net/qq_38534107/article/details/90440403] 作者:耳森Paulson 在此十分感谢 ...

  7. [渝粤教育] 上海师范大学 英汉互译 参考 资料

    教育 -英汉互译-章节资料考试资料-上海师范大学[] Quiz 1 1.[判断题]English is an analytic language whereas Chinese is a synthe ...

  8. 英汉互译在线翻译器如何语音互译中英文

    英汉互译在线翻译器如何语音互译中英文?我们在生活中或多或少都会遇到中英文翻译问题,特别是中英文语音互译.今天小编将要分享一个中英文在线语音互译的方法,希望可以帮助到大家. 1:在手机应用市场打开翻译工 ...

  9. 英汉互译在线翻译器-大家都在用的英汉互译翻译器

    英汉互译在线翻译器,今天给大家分享一款英汉互译在线翻译器,我们为什么要选择这款好用的翻译器,因为汇集了世界最好的几个翻译平台(百度/谷歌/有道),第一点翻译质量高,选择性多.第二点支持各种语言互译,第 ...

最新文章

  1. [你必须知道的css系列]第一回:丰富的利器2:CSS选择符之子选择符、相邻选择符...
  2. Bitcoin.com推出BCH新图表,加大对BCH的支持
  3. 新手探索NLP(九)——文本摘要
  4. 手机号 imsi tmsi_抓取网站访客手机号
  5. html如何与py_Web项目如何做单元测试?
  6. VS中的调试相关的技巧
  7. 后端:Java中的BigDecimal类你了解多少?
  8. 如何将QVTKWidget嵌入到QT窗体,实现点云的显示?
  9. 开源数据同步神器——canal
  10. 解读《美国国家BIM标准》– BIM能力成熟度模型(五)
  11. 阿里巴巴DevOps文化浅谈
  12. lio linux工具,LIO介绍
  13. 零基础语法入门第四讲 代词的主格和宾格
  14. Android:展锐battery
  15. R语言中写SQL语句
  16. 如何考取谷歌分析证书 (google analytics individual qualification)
  17. 讯鸟亮相云计算应用与呼叫中心高峰论坛
  18. 副业项目做什么比较靠谱,如何知道自己适合做什么?
  19. Mysql的timestamp(时间戳)详解以及2038问题的解决方案
  20. URULE规则引擎部署

热门文章

  1. heic是什么格式?怎么转换成jpg或png?
  2. listview+GridView+侧滑菜单+RadioButton+TabLayout
  3. axel多线程下载ftp文件(需登录)Ubuntu
  4. 华为鸿蒙系统是否阻止广告,华为鸿蒙系统解决互联网电视痛点:首发设备欲屏蔽开机广告...
  5. 8K×2K LED视频处理器,HDMI2.0,无缝切换
  6. 常识:火线、零线、地线
  7. 换新手机后,如何将微信聊天记录迁移到新手机中?
  8. 基于MATLAB的语音滤波实验
  9. 关于Html中文乱码的问题
  10. java adt怎么使用_如何在eclipse中添加android ADT ADT插件的安装图文教程