C高编课程设计报告_第1页
C高编课程设计报告_第2页
C高编课程设计报告_第3页
C高编课程设计报告_第4页
C高编课程设计报告_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

C高编课程设计报告电子英汉词典的设计电子英汉词典的设计 目录TOC\o"1-3"\h\u21556一、课程设计的要求 -1-8909二、可行性分析 -1-22047三、需求分析 -2-26483(1)程序的功能 -2-14934(2)输入输出的要求 -2-16584四、概要设计与详细设计 -2-294164.1模块分块 -2-251514.1.1查找函数search -2-160034.1.2增加函数add -2-144814.1.3修改函数modify -2-135154.1.4删除函数delete -2-317744.1.5主程序 -2-165304.2实现功能 -3-5664.3各模块流程图 -3-5151五、编码实现 -4-70785.1主函数和头文件定义 -4-133875.1.1定义变量以及初始化 -4-247975.1.2开始界面的编写 -5-21495.1.3头文件的定义 -5-44965.2各个模块的实现 -6-215175.2.1检搜模块 -6-208715.2.2修改模块 -6-171185.2.3文件路径 -7-210625.2.4增加模块 -8-16960六、系统调试 -9-144696.1包含的文件路径 -9-146126.2用设断点考虑文件的运行过程 -9-127336.2.1字母调试查找 -9-111256.2.2查找函数的调用 -10-233376.2.3修改函数的调用 -10-104426.2.4关于模糊查询的断点设置 -11-136666.2.5运行开始界面 -11-285986.2.6查询成功界面 -12-201426.2.7继续查询下一个单词界面 -12-144906.2.8修改字母和中文含义的界面 -13-51996.2.9模糊定义查询界面 -14-27384七、总结归纳 -14-18195附录:源程序代码 -15-一、课程设计的要求1、全面熟悉、掌握c语言的基本知识,增强对不同的问题运用和灵活选择合适的数据结构,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程思想。2、英汉词典:英汉词典作为一个常用的学习工具,是我们经常使用的,该系统能完成一个简单的电子英汉词典的功能,需要能够正常的查找单词,能够修改单词,增加、删减单词。功能描述:1、在计算机中建立有限规模的电子英汉词典,利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开,前一个是单词字符串,后一个是释义字符串,使用分号作为多个释义的分隔符。采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作,如果继续查询,则输入enter,查询后系统询问是否要修改此单词,如果继续查询则输入enter,如果修改单词则输入单词及其他的释义,系统将修改保存。退出则输入“#”。要求整体设计以人为本,用户界面简洁美观。测试数据:以老师所给的词库为准。可行性分析本课程主要完成的时候字典的查询、修改、添加、删除等功能,从而我选取的方案是采用的结构体的方法去实现,给出的字母出来然后一个字母一个字母的搜寻直到查询到该字母,然后直接printf输出来就行了;添加也是同样的调取添加的函数然后还是使用结构体去一一对比;修改也是调用修改的函数从而来改变对应的英译汉和汉译英。三、需求分析(1)程序的功能英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。对单词和释义字符串长度的限定分别为不少于10个与15个字符,词条数限定为不多于1000条。(2)输入输出的要求采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。要求整个设计以人为本,用户界面友好。四、概要设计与详细设计4.1程序分块4.1.1search是查找函数,用户通过系统提示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文解释。这个查找函数使用的是从头到尾的线性查找发,虽然查找效率在数据很大上午时候无法容忍的。但是因为这里涉及的数据量很小,使用线性查找对系统性能没有很大上午损害。4.1.2add是增加函数,用户可通过此函数来增加单词库单词的数量。4.1.3modify是修改函数,程序提示用户输入要修改的单词,还是用线性查找的方法查找相应的纪录,如果找到,则提示输入新单词及中文解释。4.1.4delete是删除函数,程序提示用户输入要删除的单词,使用线性查找的方法找到相应的纪录,如果找到,提示用户确认删除才做。在得到确认后,删除这个单词的纪录。4.1.5主程序通过无限循环来接收输入的命令,并且根据命令调用相应的函数处理。4.2、实现功能:(包括系统功能分析:系统功能模块划分与设计(系统功能模块图)。)系统功能分析:本系统可以查询,修改,删除,增加词条,以及退出词典。4.3各模块流程图各个功能模块实现五、编码实现5.1、主函数和头文件定义5.1.1定义变量以及初始化typedefstructDictionary{charword[szWORD];charmean[szSTRN];}Project;fpos_tconsult(char*word,char*mean){FILE*f=0;Projecti;intr=0;fpos_tp=0;if(!word)return0;f=fopen(fileDict,"rb");//fopen打开字典的源文件if(!f)return0;while(!feof(f))//当打开没有错误的时候进行查询{fgetpos(f,&p);r=fread(&i,szProject,1,f);if(r<1)break;if(i.word[0]==0)continue;if(strcmp(i.word,word))continue;if(mean)strcpy(mean,i.mean);fclose(f);returnp+1;}fclose(f);return0;}5.1.2开始界面的编写intmain(intargk,char*argh[]){intm=0;if(argk>1)strcpy(fileDict,argh[1]);elsestrcpy(fileDict,"c:\\dict.txt");//找到文件的源文件for(;;){printf("\n\\n\欢迎使用电子英汉词典!\n\\n\1-查询词条\n\2-新增词条\n\3-删除词条\n\4-修改词条\n\5-退出词典\n\\n");printf("请输入选择功能的序号:");5.1.3头文件的定义#include<stdio.h> //C语言的头文件函数#include<string.h> //字符函数#include<stdlib.h> //分配内存函数5.2各个模块的实现5.2.1检搜模块voidSearch(void){Projecti;fpos_tp=0;memset(&i,0,szProject);printf("pleaseinputtheword?youwant:");scanf("%s",i.word);p=consult(i.word,i.mean);//对单词的英译和汉译经行输出if(p==0){printf("sorrydonotfindwhatyouwant!\n");return;}printf("单词:%s\n释义:%s",i.word,i.mean);}5.2.2修改模块voidmodify(void){Projecti;FILE*f=0;fpos_tp=0;memset(&i,0,szProject);//memset:作用是在一段内存块中填充某个给定的值,它是对较大的结构体或数组进行清零操作的一种最快方法。printf("pleaseinputthewordyouwant:");scanf("%s",i.word);p=consult(i.word,0);if(p==0){printf("sorrydonotfindwhatyouwant!\n");return;}p--;printf("pleasegivingthemeaning,按确认结束(输入drop放弃修改):");fflush(stdin);gets(i.mean);if(strstr(i.mean,"drop")){printf("已放弃修改!\n");return;}f=fopen(fileDict,"rb+");fsetpos(f,&p);fwrite(&i,szProject,1,f);fclose(f);printf("词条已保存\n");}5.2.3文件路径if(argk>1)strcpy(fileDict,argh[1]);elsestrcpy(fileDict,"C:\\Users\\Administrator\\Desktop\\a.txt");5.2.4增加条目内容voidadd(void){Projecti;FILE*f=0;fpos_tp=0;memset(&i,0,szProject);printf("pleaseinputthewordyouwant:");scanf("%s",i.word);p=consult(i.word,0);if(p){printf("sorrydonotfindwhatyouwant!\n");return;}printf("pleasegivingthemeaning,按确认结束:");fflush(stdin);gets(i.mean);f=fopen(fileDict,"ab");fwrite(&i,szProject,1,f);fclose(f);printf("词条已新增\n");}六、系统调试 6.1、包含的文件路径6.2、用设断点考虑文件的运行过程6.2.1字母调试查找6.2.2、查找函数的调用的实现6.2.3修改函数的调用实现6.2.4关于模糊查询的断点设置6.2.5运行开始界面此为英汉字典的首页,使用者只需要按照提醒输入相应的英文,字典便可按照相应的程序执行操作。6.2.6查询成功界面当使用者想要查询单词时,只需输入相应的英文,按enter键就可以显示其中文释义解释。如果需要修改单词,则输入单词及要修改的内容,系统则会自动保存修改。6.2.7继续查询下一个单词界面此图显示的是当使用者在查询完第一个单词后。便可以按enter键进行下一个单词的查询。6.2.8修改字母和中文含义的界面修改中文的界面修改英文界面6.2.9模糊定义查询界面出现的单词是靠近模糊定义最近的单词,顺序按照“a、b、c的顺序来的”七、总结归纳通过本次课程设计,巩固了基本的基础知识,强化了c语言的学习能力,对于c语言的学习有很大的帮助,在这几周的时间理,我感觉自己对c语言有了更深刻的理解,也发现了自己存在很多问题,很多基本的东西都忘记了,很多基础的函数也想不起来,很多知识也不懂,但是通过本次课程设计,我学会了很多,尤其是文件的读取,函数的指针,,结构体数组。写程序时必须要有清晰的思路,要步步细化,先大局再细分最后整合为大局,只有这样才能完成一个完整的c程序,同时也看到了自己有很大的不足,只凭借书上的知识是不够的,自己平时动手能力不好,动手的机会又太少,到关键的时刻又不知道该用什么。这次课程设计也给了我一个警醒,平时要多动手多动脑,要努力去实践,一定要亲手解决,不能眼高手低,在写程序的过程中自己也请教了别人很多问题,学会了和同学交流,和别人讨论更多的问题,也要参考各种书籍,仅仅靠课堂上写的是不行的,只有多看书多和别人交流才可以,仅仅只有自己一人是不够的。附录:源程序代码/****************************************************/#include<stdio.h>#include<stdlib.h>#include<string.h>#defineszWORD50#defineszSTRN200#defineszProjectsizeof(structDictionary)charfileDict[szSTRN];typedefstructDictionary{charword[szWORD];charmean[szSTRN];}Project;fpos_tconsult(char*word,char*mean){FILE*f=0;Projecti;intr=0;fpos_tp=0;if(!word)return0;f=fopen(fileDict,"rb");if(!f)return0;while(!feof(f)){fgetpos(f,&p);r=fread(&i,szProject,1,f);if(r<1)break;if(i.word[0]==0)continue;if(strcmp(i.word,word))continue;if(mean)strcpy(mean,i.mean);fclose(f);returnp+1;}fclose(f);return0;}voidSearch(void);voidAppend(void);voidDelete(void);voidUpdate(void);/******************************主函数*******************************/intmain(intargk,char*argh[]){intm=0;if(argk>1)strcpy(fileDict,argh[1]);elsestrcpy(fileDict,"C:\\Users\\Administrator\\Desktop\\a.txt");for(;;){printf("\n\\n\欢迎使用电子英汉词典!\n\\n\1-查询词条\n\2-新增词条\n\3-删除词条\n\4-修改词条\n\5-退出词典\n\\n");printf("请输入选择功能的序号:");m=getchar()-'0';switch(m){case1:Search();break;case2:Append();break;case3:Delete();break;case4:Update();break;default:return0;}}return0;}/***************************查找函数*****************************/voidSearch(void){Projecti;fpos_tp=0;memset(&i,0,szProject);printf("pleaseinputtheword?youwant:");scanf("%s",i.word);p=consult(i.word,i.mean);if(p==0){printf("sorrydonotfindwhatyouwant!\n");return;}printf("单词:%s\n释义:%s",i.word,i.mean);}/*************************增加函数*******************************/voidAppend(void){Projecti;FILE*f=0;fpos_tp=0;memset(&i,0,szProject);printf("pleaseinputthewordyouwant:");scanf("%s",i.word);p=consult(i.word,0);if(p){printf("sorrydonotfindwhatyouwant!\n");return;}printf("pleasegivingthemeaning,按确认结束:");fflush(stdin);gets(i.mean);f=fopen(fileDict,"ab");fwrite(&i,szProject,1,f);fclose(f);printf("词条已新增\n");}/******************************删除函数*****************************/voidDelete(void){Project

温馨提示

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

评论

0/150

提交评论