下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言课程设计报告--一种简单的英文词典排版系统的实现

C语言课程设计报告--一种简单的英文词典排版系统的实现.doc

C语言课程设计报告--一种简单的英文词典排版系统的实现

Aaron兵
2019-01-11 0人阅读 举报 0 0 暂无简介

简介:本文档为《C语言课程设计报告--一种简单的英文词典排版系统的实现doc》,可适用于IT/计算机领域

中国地质大学本科生课程论文封面课程名称  C语言课程设计 教师姓名          本科生姓名          本科生学号          本科生专业          所在院系          日期:             课程设计评语对课程论文的评语: 平时成绩:课程论文成绩:总成绩:评阅人签名:  注:、无评阅人签名成绩无效、必须用钢笔或圆珠笔批阅用铅笔阅卷无效、如有平时成绩必须在上面评分表中标出并计算入总成绩。目录课程设计评语  目录  .课程论文题目  .程序设计思路  .功能模块图  .数据结构设计  .算法设计  .程序代码  .程序运行结果  .编程中遇到的困难及解决方法  .总结心得及良好建议  .致谢  .课程论文题目一种简单的英文词典排版系统的实现:【要求】()能输入和现实打入的单词()能分辨出单词()对重复的单词和已经输入的单词能自动排除()能按A~Z的顺序排版()能将运行结果以文本形式储存()具有添加新单词重新排版的能力。提示()需求分析:运行结果以文本形式储存因而要提供文件的输入输出操作通过查找操作检查重复单词提供排序操作现实按A~Z的顺序排版提供插入操作添加新单词并重新排版。另外通过键盘式菜单实现功能选择。()总体设计:整个系统被设计为单词录入模块文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词检查是否重复排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出即文件的输出操作。()数据结构采用指针数组或二维数组。以【Enter】键或者空格键作为单词输入结束标志对重复的单词自动排除可选用查找方法数据结构可采用指针和数组。.程序设计思路在英文词典排版当中人工统计的速度很慢且容易出现差错。本英文词典排版系统的自动化加速了排版工作提高工作效率本程序主要采用对零散的单词进行自动读取然后按单词首字母顺序讲单词保存到文档这样的结构化非常便于程序后续的排版工作。排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题将于正问中详细介绍。本程序实现了所有设计要求。整个系统被设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出即文件的输出操作。.功能模块图.数据结构设计数据结构采用指针数组或二维数组:char*dictionaryN或chardictionaryN。其中N是宏定义#defineN(表示单词个数)。()单词录入模块输入一个单词存放在一个临时字符数组中以空格或回车表示单词的结束(这也是默认操作)然后换行输出刚刚输入的单词。采用插入排序算法的思想把该单词插入单词数组中不同的是如果两个单词相同则不插入。()文件存储模块采用fwrite或fprintf把单词数组输入到文件中。()单词浏览模块采用fread或fscanf把单词从文件中读出然后输出。.算法设计()主函数【流程图】显示一系列的功能选项NY【程序】#include"stdioh"#include"stdlibh"#include"stringh"#include"ctypeh"#defineROWS#defineCOLSstaticFILE*fpstaticcharaROWSCOLSchargetoption(void)intb(intcount)voidc(char*pt,intcount)intcheck(chararr,intcount)voidstorage(char*pt,intcount)int n    ****n全局变量*****  char wordNvoidmenu()***主界面***{intn,w*变量n保存选择菜单数字w判断输入的数字是否在功能菜单对应数字范围内*do{puts("tt********************MENU********************nn")puts("tttWelcometodj'sprogram!nn")puts("ttttAddnewword")puts("ttttBrowseallthewords")puts("ttttSearchtheword")puts("ttttSortthewords")puts("ttttOrderbyAz")puts("ttttExit!")puts("nntt****************************************n")printf("Choiceyournumber():bb")scanf("d",n)if(n<||n>)*对选择的数字作判断*{w=getchar()}elsew=}while(w==)switch(n){case:add()break*追加模块*case:browse()break*浏览模块*case:search()break*查找模块*case:sort()break*分类模块*case:order()break*排序模块*case:exit()*退出*}}voidmain() ********主函数*********{menu()}()公共函数【程序】intload()*加载函数*{inti,countintstartchar*ptROWScharch,lencharinputif((fp=fopen("wordstxt","a"))==)*以输出打开方式在此前的记录被覆盖*{printf("nCannotopenfile!n")return}for(i=!feof(fp)i)fscanf(fp,"s",wordi)fclose(fp)returni*返回记录个数*}voidsave(intn)*保存函数保存n个记录*{FILE*fpintiif((fp=fopen("wordstxt","a"))==)*以输出打开方式在此前的记录被覆盖*{printf("nCannotopenfile!n")exit()}for(i=i<ni)fprintf(fp,"s",wordi)fclose(fp)}()各功能模块设计)分类模块【程序】voidsort(){inti,j,kcharcif((n=load())==){printf("nCannotopenfile!n")exit()}for(i=i<ni)for(j=j<nij)if(strcmp(wordj,wordj)>){strcmp(c,wordj)strcmp(wordj,wordj)strcmp(wordj,c)}save(n)printf("Successful!^^n")printf("nNow browseall back")scanf("d",k)if(k==)browse()elseif(k==)menu()})排序模块【流程图】【程序】voidorder() *排序模块*{intaN,i,j,tstructwordsn=load()for(i=i<Ni)for(i=i<Ni)for(j=iij<Nj)if(ai>aj){t=aiai=ajaj=t}for(j=j<Nj)printf("d",ai)})修改模块【流程图】Y  NY    Y【程序】voidmodify(inta) *修改模块*{charcprintf("Enterthenewword:")scanf("s",c)strcpy(worda,c)save(n)})删除模块【流程图】Y  NYN【程序】voiddel(inta)   *删除模块*{intx,i,yprintf("Areyousuretodeletethiswordnt)sure )noandbackmenu bb")scanf("d",x) *输入要修改的单词*if(x==){for(i=ai<ni)  *查找要修改的单词*strcpy(wordi,wordi)save(n)printf("Successful!^^nNow)onemore )backmenu")scanf("d",y)if(y==)search()elseif(x==)menu()}elseif(x==){menu()}})追加模块【流程图】YN【程序】voidadd() *追加模块*{inti,x,w,w,wcharcif((n=load())==)exit()else{puts("Enterthenewword!n")scanf("s",c)   *输入要追加的单词*for(i=i<ni){if(strcmp(wordi,c)==)break}if(i<n){w=do{printf("Thewordhasalreadyexit!n")printf("nnWhatdoyouwanttodont)enteronemore )backmenu bb")scanf("d",x)if(x<||x>)w=elsew=}while(w==)}else{w=strcpy(wordi,c)save(n)printf("Successful!^^Nowchoosewhatyouwilldonextnt)addanother )backmenu bb")do{scanf("d",x)if(x<||x>)w=elsew=}while(w==)}switch(x){case:add()breakcase:menu()break}}})浏览(全部)模块【流程图】【程序】voidbrowse() *浏览(全部)模块*{inti,wif((n=load())==) *加载记录*{printf("nCannotopenfile!n")exit()}for(i=i<ni)printf("sn",wordi)puts("Successful!^^Nowbackmenu sort")scanf("d",w)if(w==)menu()elseif(w==)sort()})查找模块【流程图】Y  NY    N【程序】voidsearch() *查找模块*{inti,x,ycharvsif((n=load())==) *加载记录*{printf("nCannotopenfile!n")exit()}printf("Enterthewordwhatyouwanttosearch!")scanf("s",vs) *输入要查找的单词*for(i=i<ni) *查找要修改的单词*if(strcmp(wordi,vs)==){printf("Successful!^^nThewordis:sn",wordi)*找到需要修改的单词*printf("Whatwouldyouliketodowiththewordnt)modify )delrte )nothing bb")scanf("d",y)if(y==)modify(i)else{del(i)}}if(i==n)printf("HOHO!SorryNotfound~~~")printf("Now)onemore )back  )exit")scanf("d",x)  switch(x){  case:search()breakcase:menu()breakcase:exit() }}.程序代码#include"stdioh"#include"stdlibh"#include"stringh"#include"ctypeh"#defineROWS#defineCOLSstaticFILE*fpstaticcharaROWSCOLSchargetoption(void)intb(intcount)voidc(char*pt,intcount)intcheck(chararr,intcount)voidstorage(char*pt,intcount)intmain(void){inti,countintstartchar*ptROWScharch,lencharinputif((fp=fopen("wordstxt","a"))==){fputs("不能打开或建立文件!n",stderr)exit()}fseek(fp,L,SEEKEND)start=(int)ftell(fp)count=startrewind(fp)if(fread(a,*sizeof(char),start,fp)==){i=puts("开始创建词库")puts("请输入单词(每行一个)")puts("在新行输入END结束输入:")while(i<ROWSscanf("s",ai)==){fflush(stdin)if(strncmp(ai,"END",)==){count=ibreak}if(check(ai,i))continuei}}puts("tt*********************欢迎使用字典排版系统*******************nn")puts("                 MENU               ")puts("您要做些什么?")puts("a显示已有的单词b添加新单词")puts("c对已有的单词进行排序d退出")puts("nntt**********************************************************n")while((input=getoption())!='d'){if(input=='a'){puts("已有的单词:")for(i=i<counti){printf("")puts(ai)}}if(input=='b'){puts("开始创建词库")puts("请输入新的单词(每行一个)")puts("在新行输入END结束输入:")count=b(count)}if(input=='c'){puts("对单词进行排序:")c(pt,count)for(i=i<counti){printf("")puts(pti)}}puts("还要做些什么")}storage(pt,count)fclose(fp)puts("谢谢使用再见!")return}chargetoption(void){charchwhile((ch=getchar())<'a'||ch>'d'){while((ch=getchar())!='n')puts("请输入a,b,c或者d")}fflush(stdin)returnch}intb(intcount){intii=countwhile(i<ROWSscanf("s",ai)==){fflush(stdin)if(check(ai,i))continueif(strncmp(ai,"END",)==){count=ibreak}i}returncount}voidc(char*pt,intcount){inti,jchar*tempfor(i=i<ROWSi)pti=aifor(i=i<counti)for(j=ij<countj){if(strcmp(pti,ptj)>){temp=ptipti=ptjptj=temp}}}intcheck(chararr,intcount){intiintflag=for(i=i<strlen(arr)i)if(isalpha(arri)==){printf("s不是一个单词n",arr)flag=break}for(i=i<counti)if(strncmp(ai,acount,strlen(acount))==){puts("重复的单词!")flag=}returnflag}voidstorage(char*pt,intcount){inti,jcharptrROWSCOLSc(pt,count)for(i=i<counti)for(j=ptij!=''j)ptrij=ptijfp=fopen("wordstxt","w")rewind(fp)fwrite(ptr,*sizeof(char),count,fp)}.程序运行结果()输入单词()显示打入的单词()能分辨出单词并对重复的单词和已经输入的单词能自动排除()按AZ的顺序排版()添加新单词并重新排版()退出()将运行结果以文本形式(wordtxt)存储.编程中遇到的困难及解决方法在编程的过程中很容易出现多个小问题比如缺少“”或者“}”。按照计算机所指出的错误位置寻找是不容易找出错误的。直到重新把程序看过一遍之后才能找到其中的错误。在帮同学修改程序的过程中也遇到过一个问题。在头文件后定义了子函数可是之后忘了编写子函数在纠错时有的是不会发现错误的但是连接过程中就会报告出错。我觉得在以后的编程过程中最好用什么函数写什么函数后者在写完一个子函数后再在头文件底下声明。.总结心得及良好建议这次实习我对之前学过的C语言知识有所遗忘在重新学习了一边课本知识后我才开始进入到正式的编程实践中。通过这次的C语言程序设计实习我收获了很多。以前的学习是为了应付考试而此次的实习是将所学的知识运用到实际当中。尤其是这样一个很实用的英文词典排版系统让自己对程序设计的方法和思路有了比较清晰的认识。该次实习中我独立完成了这道题。这道题看似繁琐但思路清晰就很简单了指导书中有关文件的题目大同小异一通则百通。只要讲各功能模块融会贯通并加以适当调整即可但前提是必须对指导书里的立体熟练掌握。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/41

C语言课程设计报告--一种简单的英文词典排版系统的实现

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利