一种简单的英文词典排版系统——C语言_第1页
一种简单的英文词典排版系统——C语言_第2页
一种简单的英文词典排版系统——C语言_第3页
一种简单的英文词典排版系统——C语言_第4页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一种简单的英文词典排版系统目录中 文 摘 要 主 要 符 号 表 1 题目要求 11.1. .12需求分析3 总体设计 4 详细设计 4.1 主函数 4.2 各功能模块设计5运行结果(附带抓图)6总结 参考文献 致谢 主要符号表#include stdlib.h为exit() 函数提供原型;#include string.h 字符串处理函数原型;#include ctype.h 字符处理函数原型;#define ROWS 256#define COLS 32 定义 “字典 ”的大小:可存放 256 个单词,每个单词的长度不超过 31 static FILE *fp; 定义文件指针:内部链接,文

2、件作用域;static char aROWSCOLS; 定义数组:内部链接,文件作用域;该数组的作用是将文件的内容复制进来,并加以处理。因为处理数组比处理文件方便。char get_option(void); 接收用户的选项,防止误操作。若输入“ a;(”不包括引号),那么将视为选项aint b(int count); 完成选项b 的作用接收新单词;void c(char *pt, int count);完成选项c 的作用通过指针对数组排序,实际数组元素位置未改变;int check(char arr, int count); 对输入的单词进行分辨,若输入ni hao ,将视为单词ni,并且提

3、示并剔除重复的单词;void storage(char *pt, int count); 在程序结束之前重新排序存储数组中的单词到文件中。- 1 -1 题目要求1能输入和显示打入的单词2能分辨出单词3对重复的单词和已经输入的单词能自动排除4能按 A Z 的顺序排版5能将运行结果以文本形式存储6具有添加新单词并重新排版的能力7数据结构采用指针数组或二维数组。以回车键或者空格键作为单词输入结束标志,对重复的单词自动排除可选第一张提到的查找方法,数据结构可采用指针和数组2 需求分析运行结果以文本形式存储,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作系统实现按 A Z 的顺序排

4、版;提供插入操作添加新单词并重新排版。另外通过键盘式菜单实现功能选择。3 总体设计整个系统呗设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。系统功能模块图:一种简单的英文词典排版系统单词录入单词浏览单词排序删除单词单词存储添加单词- 2 -4 详细设计1. 主函数【流程图】显示一系列的功能选项输入 n,判断 n 是否是 1 9NY根据 n 的值调用各功能模块函数【程序】#include stdio.h#include stdlib.h#incl

5、ude string.h#include ctype.h#define ROWS 256#define COLS 32static FILE *fp;static char aROWSCOLS;char get_option(void);int b(int count);void c(char *pt, int count);int check(char arr, int count);void storage(char *pt, int count);int n;/*n全局变量 */char wordN20;void menu()/*主界面 */int n,w;/* 变量 n 保存选择菜单数

6、字,w 判断输入的数字是否在功能菜单对应数字范围内*/doputs(tt*MENU*nn);puts(tttWelcome to djs program!nn);puts(tttt 1.Add new word.);puts(tttt 2.Browse all the words.);- 3 -puts(tttt 3.Search the word.);puts(tttt 4.Sort the words.);puts(tttt 5.Order by A-z.);puts(tttt 6.Exit!);puts(nntt*n);printf(Choice your number(1-6): bb

7、);scanf(%d,&n);if(n6)/* 对选择的数字作判断*/w=1;getchar();else w=0;while(w=1);switch(n)case 1:add();break;/* 追加模块 */case 2:browse();break;/* 浏览模块 */case 3:search();break;/* 查找模块 */case 4:sort();break;/* 分类模块 */case 5:order();break;/* 排序模块 */case 6:exit(0);/* 退出 */void main()/*主函数 */menu();2. 公共函数【程序】int load

8、()/* 加载函数 */int i,count;int start;char *ptROWS;char ch, len;char input;if(fp=fopen(words.txt,a+)=NULL)/*以输出打开方式,在此前的记录被覆盖*/printf(nCannot open file!n);return NULL;- 4 -for(i=0;!feof(fp);i+)fscanf(fp,%s,&wordi);fclose(fp);return i+1;/* 返回记录个数*/void save(int n)/* 保存函数,保存n 个记录 */FILE *fp;int i;if(fp=fo

9、pen(words.txt,a+)=NULL)/*以输出打开方式,在此前的记录被覆盖*/printf(nCannot open file!n);exit(0);for(i=0;in;i+)fprintf(fp,%s,&wordi);fclose(fp);3. 各功能模块设计1)分类模块【程序】void sort()int i,j,k;char c20;if(n=load()=0)printf(nCannot open file!n);exit(0);for(i=0;in;i+)for(j=0;j0)strcmp(c,wordj);strcmp(wordj,wordj+1);strcmp(wor

10、dj+1,c);save(n);printf(Successful!_.n);printf(nNow?1.browse all2.back);scanf(%d,&k);- 5 -if(k=1)browse();else if(k=2)menu();2)排序模块【流程图】用选择法排序保存返回主菜单【程序】void order()/* 排序模块 */int aN,i,j,t;struct words;n=load();for(i=0;iN;i+)for(i=0;iN-1;i+)for(j=i+i;jaj)t=ai;ai=aj;aj=t;for(j=0;jN;j+)printf(%3d,ai);-

11、6 -3)修改模块【流程图】显示所有记录,让用户看哪个要修改输入要修改的单词是否找到此单词记录YN显示找到的单词, 调用提示没有找到修改函数YY询问用户是否继续修改返回主菜单【程序】void modify(int a)/* 修改模块 */char c20;printf(Enter the new word:);scanf(%s,c);strcpy(worda,c);save(n);4)删除模块- 7 -【流程图】显示所有记录, 让用户看哪个需要删除输入需要删除的单词是否找到此单词记录YN显示找到的记录提示没有找到调用删除函数Y询问用户是否继N续删除返回主菜单【程序】void del(int a

12、)/* 删除模块 */int x,i,y;printf(Are you sure to delete this word?nt1).sure2).no and back menu bb);scanf(%d,&x);/* 输入要修改的单词*/if(x=1)for(i=a;in-1;i+)/* 查找要修改的单词*/strcpy(wordi,wordi+1);save(n-1);printf(Successful!_.nNow? 1).one more2).back menu);scanf(%d,&y);if(y=1)search();else if(x=2)menu();else if(x=2)m

13、enu();5)追加模块- 8 -【流程图】调用加载函数n=load() ;并计算可以记录个数n输入用户要追加的的单词保存追加的单词Y询问用户是否继续追加单词N返回主菜单【程序】void add()/* 追加模块 */int i,x,w1,w2,w;char c20;if(n=load()=0)exit(0);elseputs(Enter the new word!n);scanf(%s,c);/* 输入要追加的单词*/for(i=0;in;i+)if(strcmp(wordi,c)=0)break;if(in)w=1;doprintf(The word has already exit!n)

14、;printf(nnWhat do you want to do?nt1).enter one more2).back menu bb);scanf(%d,&x);if(x2)- 9 -w1=1;elsew1=0;while(w1=1);elsew2=1;strcpy(wordi,c);save(n+1);printf(Successful!_.Nowchoose what you willdo next?nt1).add another2).backmenu bb);doscanf(%d,&x);if(x2)w2=1;elsew2=0;while(w2=1);switch(x)case 1:

15、add();break;case 2:menu();break;6)浏览(全部)模块【流程图】显示所有单词记录用户进行选项回到分类模块返回主菜【程序】void browse()/* 浏览(全部)模块*/-10-int i,w;if(n=load()=0)/* 加载记录 */printf(nCannot open file!n);exit(0);for(i=0;in-1;i+)printf(%s/n,wordi);puts(Successful!_.Now 1.back menu2.sort);scanf(%d,&w);if(w=1)menu();else if(w=2)sort();7)查找模

16、块【流程图】输入需要查找的单词是否找到该单Y词记录N显示找到的记录提示没有找到询问用户是否Y继续查找N让用户选择1).查找返回主菜单另一个 2) .返回【程序】void search()/* 查找模块 */int i,x,y;char vs20;if(n=load()=0)/* 加载记录 */printf(nCannot open file!n);exit(0);-11-printf(Enter the word what you want to search!);scanf(%s,vs);/* 输入要查找的单词*/for(i=0;in;i+)/* 查找要修改的单词*/if(strcmp(wo

17、rdi,vs)=0)printf(Successful!_.nThe word is:%sn,wordi);/* 找到需要修改的单词 */ printf(What would you like to do with the word?nt1).modify 2).delrte 3).nothingbb);scanf(%d,&y);if(y=1)modify(i);elsedel(i);if(i=n)printf(HOHO!Sorry.Not found);printf(Now.1).one more2).back3).exit);scanf(%d,&x);switch(x)case 1:search();break; case 2:menu();break; case 3:exit(0);5 运行结果(附带抓图)主菜单-12-输入新单词退出-13-14-6 总结通

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论