C语言英文词典排版.doc_第1页
C语言英文词典排版.doc_第2页
C语言英文词典排版.doc_第3页
C语言英文词典排版.doc_第4页
C语言英文词典排版.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

课程设计(论文)任务书学 院理 学 院专 业信息与计算科学学生姓名陈基政班级学号 1009010217课程名称C语言程序设计课程设计课 程 设 计(论文)题目 一种简单的英文词典排版系统设计要求(技术参数):通过本教学环节的编程实践,进一步熟悉和巩固C语言语法知识和程序设计的基本方法。了解结构化程序设计,培养自顶而下、逐步细化的编程思维方式。加深学生对理论知识的理解,提高对所学知识的综合运用能力。设计任务:1.一种简单的英文排版 2.能输入和显示打入的单词 3.能分辨出单词,并按A-Z的顺序排版 4.对重复单词和已输入单词能自动排除 5.具有添加新单词并重新排版的能力计划与进度安排:第一天:查资料 第二天:程序设计第三、四天:调试程序 第五天:论文答辩成绩:指导教师(签字):年 月 日专业负责人(签字):年 月 日主管院长(签字) 年 月 日摘 要在英文词典排版当中,人工统计的速度很慢,且容易出现差错。本英文词典排版系统的自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。本程序实现了所有设计要求。关键词:英文词典排版系统;结构体;排版;单词目录1主要符号表42 题目要求53 需求分析54 总体设计54.1.叙述54.2.系统功能模块图55 详细设计65.1流程图65.1.1主函数65.1.2排序65.1.3修改75.1.4删除75.1.5追加85.1.6浏览85.1.7查找95.2程序源代码96 运行结果(附带图)167总结188 参考文献189 致谢181 主要符号表#include stdlib.h 为exit()函数提供原型; #include string.h字符串处理函数原型; #include ctype.h字符处理函数原型; #define ROWS 256 #define COLS 32定义“字典”的大小:可存放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);对输入的单词进行分辨,若输入 ni hao ,将视为单词 ni ,并且提示并剔除重复的单词; void storage(char *pt, int count);在程序结束之前重新排序存储数组中的单词到文件中。2 题目要求1.能分辨出单词;2.对重复的单词和已经输入的单词能自动排除;3.能按AZ的顺组排序,能输入和显示打入的单词;4.能将运行结果以文本形式存储;5.具有添加新单词并重新排版的能力;6.数据结构采用指针数组或二维数组。以回车键或者空格键作为单词输入结束标 志,对重复的单词自动排除可选第一张提到的查找方法,数据结构可采用指针 和数。3 需求分析运行结果以文本形式存储,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作系统实现按AZ的顺序排版;提供插入操作添加新单词并重新排版。另外通过键盘式菜单实现功能选择。4 总体设计4.1.叙述整个系统呗设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。4.2.系统功能模块图一种简单的英文词典排版系统 添加单词单词存储删除单词单词排序单词浏览单词录入5 详细设计5.1流程图5.1.1主函数显示一系列的功能选项 根据n的值调用各功能模块函数输入n,判断n是否是19NY5.1.2排序 返回主菜单 保 存 用选择法排序5.1.3修改显示所有记录,让用户看哪个要修改输入要修改的单词是否找到此单词记录YN显示找到的单词,调用修改函数提示没有找到询问用户是否继续修改Y返回主菜单 YN5.1.4删除显示所有记录,让用户看哪个需要删除输入需要删除的单词是否找到此单词记录YN提示没有找到显示找到的记录 调 用 删 除 函 数返回主菜单询问用户是否继续删除YN5.1.5追加询问用户是否继续追加单词保存追加的单词输入用户要追加的的单词调用加载函数n=load();并计算可以记录个数n 返回主菜单YN5.1.6浏览用户进行选项显示所有单词记录返回主菜单回到分类模块5.1.7查找是否找到该单词记录输入需要查找的单词YN返回主菜单让用户选择1).查找另一个2).返回询问用户是否继续查找提示没有找到显示找到的记录YN5.2程序源代码#include stdio.h #include stdlib.h #include string.h #include ctype.h #define ROWS 256 #define COLS 32 #define N 5static 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);intn;/*n全局变量*/charwordN20;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 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:browse();break;/*浏览模块*/case 3:search();break;/*查找模块*/case 4:sort();break;/*分类模块*/case 5:order();break;/*排序模块*/case 6:exit(0);/*退出*/void main() /*主函数*/ menu();int load()/*加载函数*/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;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=fopen(words.txt,a+)=NULL)/*以输出打开方式,在此前的记录被覆盖*/printf(nCannot open file!n);exit(0);for(i=0;in;i+)fprintf(fp,%s,&wordi);fclose(fp);void sort() /*单词从A到Z排序*/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(wordj+1,c);save(n);printf(Successful!_.n);printf(nNow? 1.browse all 2.back);scanf(%d,&k);if(k=1)browse();else if(k=2)menu();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);void modify(int a) /*修改模块*/char c20;printf(Enter the new word:);scanf(%s,c);strcpy(worda,c);save(n);void del(int a) /*删除模块*/int x,i,y;printf(Are you sure to delete this word?nt1).sure 2).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 more 2).back menu);scanf(%d,&y);if(y=1)search();else if(x=2)menu();else if(x=2)menu();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);printf(nnWhat do you want to do?nt1).enter one more 2).back menu bb);scanf(%d,&x);if(x2)w1=1;elsew1=0;while(w1=1);elsew2=1;strcpy(wordi,c);save(n+1);printf(Successful!_.Now choose what you will do next?nt1).add another 2).back menu bb);doscanf(%d,&x);if(x2)w2=1;elsew2=0;while(w2=1);switch(x)case 1:add();break;case 2:menu();break;void browse() /*浏览(全部)模块*/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 menu 2.sort);scanf(%d,&w);if(w=1)menu();else if(w=2)sort();void search() /*查找模块*/int i,x,y;char vs20;if(n=load()=0) /*加载记录*/printf(nCannot open file!n);exit(0);printf(Enter the word what you want to search!);scanf(%s,vs); /*输入要查找的单词*/for(i=0;in;i+) /*查找要修改的单词*/if(strcmp(wordi,vs)=0)printf(Successful!_.nThe word is:%sn,wordi);/*找到需要修改的单词*/printf(What would you like to do with the word?nt1).modify 2).delrte 3).nothing bb);scanf(%d,&y);if(y=1)modify(i

温馨提示

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

评论

0/150

提交评论