1、可存放256个单词,每个单词的长度不超过31 static FILE *fp;定义文件指针:内部链接,文件作用域;static char aROWSCOLS;定义数组:该数组的作用是将文件的内容复制进来,并加以处理。因为处理数组比处理文件方便。char get_option(void);接收用户的选项,防止误操作。若输入“a;”(不包括引号),那么将视为选项a int b(int count);完成选项b的作用接收新单词;void c(char *pt, int count);完成选项c的作用通过指针对数组排序,实际数组元素位置未改变;int check(char arr, int count
2、);对输入的单词进行分辨,若输入 ni hao ,将视为单词 ni ,并且提示并剔除重复的单词;void storage(char *pt, int count);在程序结束之前重新排序存储数组中的单词到文件中。1 题目要求1 能输入和显示打入的单词2 能分辨出单词3 对重复的单词和已经输入的单词能自动排除4 能按AZ的顺序排版5 能将运行结果以文本形式存储6 具有添加新单词并重新排版的能力7 数据结构采用指针数组或二维数组。以回车键或者空格键作为单词输入结束标志,对重复的单词自动排除可选第一张提到的查找方法,数据结构可采用指针和数组2 需求分析运行结果以文本形式存储,因而要提供文件的输入输出
3、操作;通过查找操作检查重复单词;提供排序操作系统实现按AZ的顺序排版;提供插入操作添加新单词并重新排版。另外通过键盘式菜单实现功能选择。3 总体设计整个系统呗设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。系统功能模块图: 单词浏览删除单词添加单词单词存储单词排序单词录入4 详细设计1.主函数 【流程图】显示一系列的功能选项 输入n,判断n是否是19根据n的值调用各功能模块函数NY【程序】stdio.h#define COLS 32 intn;
4、/*n全局变量*/charwordN20;void menu()/*主界面*/int n,w;/*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*/doputs(tt*MENU*nn);tttWelcome to djs program!nntttt 1.Add new word.tttt 2.Browse all the words.puts(tttt 3.Search the word.tttt 4.Sort the words.tttt 5.Order by A-z.tttt 6.Exit!nntt*nprintf(Choice your number(1-6):
5、bbscanf(%d,&n);if(n6)/*对选择的数字作判断*/w=1;getchar();else w=0;while(w=1);switch(n)case 1:add();break;/*追加模块*/case 2:browse();/*浏览模块*/case 3:search();/*查找模块*/case 4:sort();/*分类模块*/case 5:order();/*排序模块*/case 6:exit(0);/*退出*/void main() /*主函数*/ menu();2.公共函数int load()/*加载函数*/int i,count;int start;char *ptR
6、OWS;char ch, len;char input;if(fp=fopen(words.txt,a+)=NULL)/*以输出打开方式,在此前的记录被覆盖*/nCannot open file!nreturn NULL;for(i=0;!feof(fp);i+)fscanf(fp,%swordi);fclose(fp);return i+1;/*返回记录个数*/void save(int n)/*保存函数,保存n个记录*/FILE *fp;int i;exit(0);ifprintf(fp,3.各功能模块设计1)分类模块void sort()int i,j,k;char c20;if(n=l
7、oad()=0)for(j=0;j0)strcmp(c,wordj);strcmp(wordj,wordj+1);strcmp(wordj+1,c);save(n);Successful!_.nnNow? 1.browse all 2.backk);if(k=1)browse();else if(k=2)menu();2)排序模块 用选择法排序 保 存 返回主菜单void order() /*排序模块*/int aN,i,j,t;struct words;n=load();N;for(i=0;N-1;for(j=i+i;j+)if(aiaj)t=ai;ai=aj;aj=t;for(j=0;pr
8、intf(%3d,ai);3)修改模块输入要修改的单词是否找到此单词记录显示所有记录,让用户看哪个要修改YN显示找到的单词,调用修改函数提示没有找到询问用户是否继续修改Y返回主菜单Yvoid modify(int a) /*修改模块*/printf(Enter the new word:scanf(,c);strcpy(worda,c);save(n);4)删除模块显示所有记录,让用户看哪个需要删除输入需要删除的单词显示找到的记录 调 用 删 除 函 数询问用户是否继续删除void del(int a) /*删除模块*/int x,i,y;Are you sure to delete this word?nt1).sure 2).no and back menu bbx); /*输入要修改的单词*/if(x=1)for(i=a;n-1;i+) /*查找要修改的单词*/strcpy(wordi,wordi+1);save(n-1);_.nNow? 1).one more 2).back menuy);if(y=1)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1