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

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1中国地质大学本科生课程论文封面课程名称C语言课程设计教师姓名本科生姓名本科生学号本科生专业所在院系日期:2课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总成绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。3目录课程设计评语......................................................................................................................................2目录....................................................................................................................................................31.课程论文题目................................................................................................................................42.程序设计思路................................................................................................................................43.功能模块图....................................................................................................................................54.数据结构设计................................................................................................................................55.算法设计........................................................................................................................................56.程序代码......................................................................................................................................167.程序运行结果..............................................................................................................................218.编程中遇到的困难及解决方法..................................................................................................249.总结心得及良好建议..................................................................................................................2410.致谢............................................................................................................................................2441.课程论文题目一种简单的英文词典排版系统的实现:【要求】(1)能输入和现实打入的单词;(2)能分辨出单词;(3)对重复的单词和已经输入的单词能自动排除;(4)能按A~Z的顺序排版;(5)能将运行结果以文本形式储存;(6)具有添加新单词重新排版的能力。[提示](1)需求分析:运行结果以文本形式储存,因而要提供文件的输入输出操作;通过查找操作检查重复单词;提供排序操作现实按A~Z的顺序排版;提供插入操作添加新单词并重新排版。另外通过键盘式菜单实现功能选择。(2)总体设计:整个系统被设计为单词录入模块,文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词,检查是否重复,排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。(3)数据结构采用指针数组或二维数组。以【Enter】键或者空格键作为单词输入结束标志,对重复的单词自动排除可选用查找方法,数据结构可采用指针和数组。2.程序设计思路在英文词典排版当中,人工统计的速度很慢,且容易出现差错。本英文词典排版系统的自动化加速了排版工作,提高工作效率本程序主要采用对零散的单词进行自动读取,然后按单词首字母顺序讲单词保存到文档,这样的结构化非常便于程序后续的排版工作。排版具体过程涉及到自动排除重复单词与添加新单词并重新排版等问题,将于正问中详细介绍。本程序实现了所有设计要求。整个系统被设计为单词录入模块、文件存储模块和单词浏览模块。其中单词录入模块要完成输入单词、检查是否重复、排序操作。文件存储模块把存放单词的数组中的数据写入文件。单词浏览模块完成英文词典的输出,即文件的输出操作。53.功能模块图4.数据结构设计数据结构采用指针数组或二维数组:char*dictionary[N];或chardictionary[N][20]。其中N是宏定义#defineN256(表示单词个数)。(1)单词录入模块输入一个单词,存放在一个临时字符数组中,以空格或回车表示单词的结束(这也是默认操作),然后换行输出刚刚输入的单词。采用插入排序算法的思想把该单词插入单词数组中,不同的是如果两个单词相同则不插入。(2)文件存储模块采用fwrite或fprintf把单词数组输入到文件中。(3)单词浏览模块采用fread或fscanf把单词从文件中读出,然后输出。5.算法设计(1)主函数【流程图】NY一种简单的英文词典排版系统单词录入单词浏览单词排序显示一系列的功能选项输入n,判断n是否是1—9根据n的值调用各功能模块函数6【程序】#includestdio.h#includestdlib.h#includestring.h#includectype.h#defineROWS256#defineCOLS32staticFILE*fp;staticchara[ROWS][COLS];charget_option(void);intb(intcount);voidc(char*pt[],intcount);intcheck(chararr[],intcount);voidstorage(char*pt[],intcount);intn;//****n全局变量*****//charword[N][20];voidmenu()//***主界面***//{intn,w;//*变量n保存选择菜单数字,w判断输入的数字是否在功能菜单对应数字范围内*//do{puts(\t\t********************MENU********************\n\n);puts(\t\t\tWelcometodj'sprogram!\n\n);puts(\t\t\t\t1.Addnewword.);puts(\t\t\t\t2.Browseallthewords.);puts(\t\t\t\t3.Searchtheword.);puts(\t\t\t\t4.Sortthewords.);puts(\t\t\t\t5.OrderbyA-z.);puts(\t\t\t\t6.Exit!);puts(\n\n\t\t****************************************\n);printf(Choiceyournumber(1-6):[]\b\b);scanf(%d,&n);if(n1||n6)//*对选择的数字作判断*//{w=1;getchar();}elsew=0;7}while(w==1);switch(n){case1:add();break;//*追加模块*//case2:browse();break;//*浏览模块*//case3:search();break;//*查找模块*//case4:sort();break;//*分类模块*//case5:order();break;//*排序模块*//case6:exit(0);//*退出*//}}voidmain()//********主函数*********//{menu();}(2)公共函数【程序】intload()//*加载函数*//{inti,count;intstart;char*pt[ROWS];charch,len;charinput;if((fp=fopen(words.txt,a+))==NULL)//*以输出打开方式,在此前的记录被覆盖*//{printf(\nCannotopenfile!\n);returnNULL;}for(i=0;!feof(fp);i++)fscanf(fp,%s,&word[i]);fclose(fp);returni+1;//*返回记录个数*//}voidsave(intn)//*保存函数,保存n个记录*//{FILE*fp;8inti;if((fp=fopen(words.txt,a+))==NULL)//*以输出打开方式,在此前的记录被覆盖*//{printf(\nCannotopenfile!\n);exit(0);}for(i=0;in;i++)fprintf(fp,%s,&word[i]);fclose(fp);}(3)各功能模块设计1)分类模块【程序】voidsort(){inti,j,k;charc[20];if((n=load())==0){printf(\nCannotopenfile!\n);exit(0);}for(i=0;in;i++)for(j=0;jn-i-1;j++);if(strcmp(word[j],word[j+1])0){strcmp(c,word[j]);strcmp(word[j],word[j+1]);strcmp(word[j+1],c);}save(n);printf(Successful!^_^.\n);printf(\nNow?1.browseall2.back);scanf(%d,&k);if(k==1)browse();elseif(k==2)9menu();}2)排序模块【流程图】【程序】voidorder()//*排序模块*//{inta[N],i,j,t;structwords;n=load();for(i=0;iN;i++)for(i=0;iN-1;i++)for(j=i+i;jN;j++)if(a[i]a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(j=0;jN;j++)printf(%3d,a[i]);}用选择法排序保存返回主菜单103)修改模块【流程图】YNYY【程序】voidmodify(inta)//*修改模块*//{charc[20];printf(

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功