《C语言课设之英文词典排标准系统》由会员分享,可在线阅读,更多相关《C语言课设之英文词典排标准系统(21页珍藏版)》请在人人文库网上搜索。
1、1 / 19一种简单的英文词典排版系统摘要在英文词典排版当中,人工统计的速度很慢,且容易出现差错。本英文词典排版系统的 自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然 后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。本程序实现了所有设计要求。关键词:英文词典排版系统,结构体,排版,单词目录中文摘要I主要符号表W1 题目要求11.1. 12 需 求 分 析3 总体设计4 详细设计4.1 主函数4.2 各功能模块设计 5运行结果(附带抓图) 6总结参考文献致。
2、谢主要符号表#include stdlib.h 为 exit() 函数提供原型;#include string.h 字符串处理函数原型;#i nclude ctype.h字符处理函数原型;#define ROWS 256#define COLS 32定义 “字典”的大小:可存放 256个单词,每个单词的长度不超过31static FILE *fp。定义文件指针:内部链接,文件作用域;static char aROWSCOLS 。定义数组:内部链接,文件作用域;该数组的作用 是将文件的内容复制进来,并加以处理。因为处理数组比处理文件方便。char get_option(void)。接收用户的选项。
3、,防止误操作。若输入“。”(不包括引号) 那么将视为选项 aint b(int count)。完成选项b的作用接收新单词;void c(char *pt, int count) 。完成选项 c 的作用通过指针对数组排序,实际数 组元素位置未改变;int check(char arr, int count) 。对输入的单词进行分辨,若输入 ni hao ,将视为单 词 ni ,并且提示并剔除重复的单词;void storage(char *pt, int count) 。在程序结束之前重新排序存储数组中的单词到 文件中。1 题目要求1能输入和显示打入的单词2能分辨出单词3对重复的单词和已经输入的。
4、单词能自动排除4能按 AZ 的顺序排版5能将运行结果以文本形式存储 6具有添加新单词并重新排版的能力 7数据结构采用指针数组或二维数组。以回车键或者空格键作为单词输入结束标志, 对重复的单词自动排除可选第一张提到的查找方法,数据结构可采用指针和数组2 需求分析 运行结果以文本形式存储,因而要提供文件的输入输出操作;通过查找操作检查重 复单词;提供排序操作系统实现按 AZ 的顺序排版;提供插入操作添加新单词并重新 排版。另外通过键盘式菜单实现功能选择 。3总体设计整个系统呗设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模 块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放。
5、单词的数组中的数 据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作 。系统功能模块图:一种简单的英文词典排版系统111单词录入单词浏览单词排序删除单词单词存储添加单词4详细设计1.主函数【流程图】NY【程序】#include stdio.h #include stdlib.h #include string.h #include ctype.h #define ROWS 256 #define COLS 32 static FILE *fp 。 static char aROWSCOLS 。 char get_option(void) 。 int b(int count) 。 vo。
6、id 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保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内doputs(tt*MENU*nn)puts(tttWelcome to djs program!nn) 。puts(tttt 1.Add new word.) 。puts(tttt 2.Browse 。
7、all the words.) 。 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)。scanf(%d,&n) 。if(n6)/* 对选择的数字作判断 */w=1。getchar() 。else w=0 。while(w=1) 。 switch(n)case 1:add()。 break。 /* 追加模块 */ case 2:brow。
8、se()。 break 。 /* 浏览模块 */ case 3:search()。 break 。 /* 查找模块 */ case 4:sort()。 break。 /* 分类模块 */case 5:order()。 break。 /* 排序模块 */case 6:exit(0)。II* 退出 */void main()menu()。II*主函数*II2. 公共函数【程序】int load()II* 加载函数 *IIint i,count 。int start。char *ptROWS 。char ch, len。char input。if(fp=fopen(words.txt,a+)=NUL。
9、L)II* 以输出打开方式,在此前的记录被覆盖 *II printf(nCannot open file!n) 。return NULL 。 for(i=0 。 !feof(fp) 。 i+)fscanf(fp,%s,&wordi) 。fclose(fp) 。return i+1。II*返回记录个数*IIvoid save(int n)II* 保存函数,保存 n 个记录 *IIFILE *fp 。int i 。*IIif(fp=fopen(words.txt,a+)=NULL)II* 以输出打开方式,在此前的记录被覆盖 printf(nCannot open file!n) 。exit(0) 。
10、。for(i=0 。 i0)strcmp(c,wordj)。 strcmp(wordj,wordj+1)。 strcmp(wordj+1,c)。save (n)。printf(Successful!A_A.n)。printf(nNow?I.browse all 2.back)。scanf(%d,&k)。if(k=1)browse()。 else if(k=2)menu()。 2)排序模块【流程图】【程序】void order()II* 排序模块 */int aN,i,j,t。struct words。n=load()。for(i=0。 iaj)t=ai。 ai=aj。aj=t ofor(j=0。
11、。j2)w1=1。elsew1=0。while(w1=1) 。elsew2=1。 strcpy(wordi,c) 。 save(n+1)。2).backprintf(SuccessfulL_A.Nowchoose what you will do next?nt1).add anothermenu bb) 。doscanf(%d,&x) 。if(x2)w2=1 。elsew2=0。while(w2=1) 。switch(x)case 1:add()。break。case 2:menu()。break。 6)浏览(全部)模块【流程图】【程序】void browse() /* 浏览(全部)模块 *。
12、/int i,w。if(n=load()=0)/* 加载记录 */prin tf(nCa nnot ope n file!n)。exit(0)。for(i=0。 in-1。i+)prin tf(%s/n,wordi)。puts(SuccessfulL_A.Now l.back menu 2.sort)。 scanf(%d,&w)。if(w=1)menu()。else if(w=2)sort()。7)查找模块YNYN【流程图】【程序】void search。/* 查找模块 */int i,x,y。char vs20。if(n=load()=0)/* 加载记录 */prin tf(nCann ot。
13、 open file!n)。exit(0)。prin tf(E nter the word what you want to search!)。scanf(%s,vs)。/*输入要查找的单词*/for(i=0。in。i+)/*查找要修改的单词 */if(strcmp(wordi,vs)=0)*/3). nothingprintf(SuccessfulL_A.nThe word is:%sn,wordi)。 /* 找到需要修改的单词printf(What would you like to do with the word?nt1).modify 2).delrte bb)。scanf(%d,&。
14、y)。if(y=1)modify(i)。elsedel(i)。if(i=n)printf(HOHO!SorryNot found)。printf(Now.1).one more2).back 3).exit)。scanf(%d,&x)。switch(x)case 1:search()。 break。case 2:menu()。break。case 3:exit(0)。5运行结果(附带抓图)输入单词显示打入的单词能分辨出单词并对重复的单词和已经输入的单词能自动排除-lx按AZ的顺序排版|对单讦井彳諒 序; autlioi* experience hoe makemiddle progress similar 鮭要做些什么?添加新单词并重新排版将运行结果以文本形式(word.txt)存储17 / 19。