版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、课程设计报告 课 题: 电子英汉字典 学 院: 电子工程与自动化 专 业: 测控技术与仪器 学生姓名: 学 号: 指导老师 : 2013年3月18目录1、 内容摘要与关键词-32、 设计任务与关键词-43、 总体设计-5 1、程序设计组成框图-5 2、各函数主要功能-5 3、主要功能的实现-6 3.1、菜单显示-6 3.2、显示函数-7 3.3、查找函数-8 3.4、修改函数-9 3.5、删除函数-10 3.6、录入函数-12四、调试分析-13五、总结与体会-16六、参考文献-17七、附件-18内容摘要:电子英汉字典的主要功能是进行单词的添加、显示、查找、删除、修改、保存等。该课题使用结构体数
2、组实现,每个数据的结构应包括:单词的英文拼写,单词的中文释义。(程序见附件)关键词:字典、c语言编程、单词添加、添加、显示、查找、删除、修改、保存设计任务与要求一、课程设计总结报告包括如下内容:编写课程设计总结报告的目的是训练同学撰写科学论文和科研总结报告的能力。课程设计报告不仅应把设计调试的内容进行全面的总结,而且应将实践内容上升到理论高度。(1) 课程名称(2) 目录、内容摘要、关键字。(3) 设计任务及要求。(4) 总体设计(程序设计组成图、流程图)(5) 详细设计(模块功能说明如函数功能、入口 及出口参数说明、函数调用关系描述等)(6) 调试与测试:调用方法、测试结果的分析与讨论,测试
3、过程中遇到的主要问题及采取的解决措施。(7) 总结收获与体会。(8) 参考文献。(9) 源程序清单和执行结果:清单中应有足够的注释。总体设计开始1、程序设计组成框图 mod函数veiw函数del函数add函数return函数find函数输出结果 (1) 开始显示菜单输入指令 输入6输入5输入4输入3输入2输入1录入删除修改显示查找退出继续输入指令 (2)2、各函数的主要功能电子英汉词典设计系统能完成一个简单的电子英汉词典的功能,这个系统有六个功能,如:查找、增加、删除、修改、显示、结束 。把这六功能编该成六个子函数。在主函数当中对这六个子数调用,来实现对整个系统的操作。 使用结构体数组实现,每
4、个数据的结构应包括:单词的英文拼写,单词的中文释义。 各个函数的主要功能: 菜单函数main():显示系统主菜单。 查找函数find():能够随时查找某个单词 增加函数add():能够随时增加想要增加的单词 删除函数del():能够删除某单词信息 修改函数mod():能随时修改单词信息 显示函数veiw():能够浏览所有单词3、主要功能的实现 整个系统除了主函数外,实现七个功能:查找功能、增加功能、删除功能、修改功能、显示功能、结束功能。各个函数的详细设计说明如下: 3.1、主函数main()通过scanf函数显示菜单,利用switch语句实现各函数的调用,根据系统提示输入的数字选项来调用相应
5、的函数。while(1) /按6退出,否则无限循环printf(请输入选择菜单:n);scanf(%d,&key);switch(key) case 1:find();break;case 2:view();break;case 3:mod();break;case 4:del();break;case 5:add();break;case 6: printf(33333欢迎再次使用3333n);return 0; default:return 0;开始mod函数veiw函数del函数add函数return函数find函数 图3.13.2 显示函数 veiw()首先清空结构体,再打开磁盘文件,
6、把磁盘文件内的信息进行冒泡排序后再显示在屏幕上。for (i=0;i0)k=p; if(k!=j)strcpy(temp,wordj.english);strcpy(temp1,wordj.mean);strcpy(wordj.english ,wordk.english );strcpy(wordj.mean ,wordk.mean );strcpy(wordk.english ,temp);strcpy(wordk.mean ,temp1);fclose(fp); fp=fopen(f:word.txt,wb);for(i=0;wordi.english0!=0;i+)fwrite(&wo
7、rdi,sizeof(struct dia),1,fp);printf(%6s %-6s n,wordi.english,wordi.mean);具体流程图如下 开始菜单显示输入指令输入2输入非2进行其他指令进行排序并显示 3.3查找函数find()首先读入文件内容,利用输入函数scanf输入要查找的单词,如果找到则显示出所找的单词和中文意思,如果没有找到则显示出该单词不存在,返回主菜单。printf(请输入要查找的单词:n);scanf(%s,a);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.eng
8、lish,a)=0)printf(%s的中文意思是:%sn,wordi.english,wordi.mean);break;if(i=20)printf(该单词不存在n);具体流程图如下开始 菜单显示 输入指令输入非1进行其他指令输出“不存在此单词”输入1进行查找指令输入要查找的单词是否存在该单词否 是输出该单词及其意译 3.4修改函数mod()首先打开文件,输入选择,按1输入要修改的单词,如果找到单词,就输入单词新的意思,存储之后再返回主菜单,如果没有找到则显示该单词不存在,返回主菜单。按2则输入要修改的意思,如果找到则输入要修改的意思,如果没有找到则显示该单词不存在,返回主菜单。print
9、f(修改单词请按1,修改意思请按2:n);scanf(%d,&a);if(a=1)printf(请输入要修改的单词:n);scanf(%s,mod);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.english,mod)=0)printf(输入修改后的单词:n);scanf(%s,mod);strcpy(wordi.english,mod);printf(修改完成n);fp=fopen(g:word.txt,wb);for(j=0;j20;j+)fwrite(&wordj,sizeof(struct d
10、ia),1,fp);fclose(fp);break; if(i=20) printf(该单词不存在n);fclose(fp);return;else if(a=2)printf(请输入要修改的意思:n);scanf(%s,mod2);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.mean,mod2)=0)printf(输入修改后的意思:n);scanf(%s,mod2);strcpy(wordi.mean,mod2);printf(修改完成n);break;if(i=20)printf(该单词不存在n
11、);修改模块流程图如下开始菜单显示输入指令输入非3进行其他指令输入3进行修改指令输出“不存在此单词”修改单词按1,修改意思按21?2? 1 2是否存在该单词 否 是 修改单词或者是意译 保存修改 3.5 删除函数 del()首先以只读方式打开文件,输入要删除的单词,如果找到并按1确定删除则利用strcpy函数对它进行复制覆盖,打开文件进行复制到磁盘文件,显示已删除。返回主菜单,如果没有找到,则显示该单词不存在。printf(请输入要删除的单词:n);scanf(%s,del);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(str
12、cmp(wordi.english,del)=0)printf(确定删除请按1,否则退出n);scanf(%d,&b);if(b=1) for(j=i+1;j20;i+,j+)strcpy(wordi.english,wordj.english);strcpy(wordi.mean,wordj.mean);for(k=0;k20;k+)wordj.englishk=0;wordj.meank=0;fp=fopen(f:word.txt,wb);for(i=0;wordi.english0!=0;i+)fwrite(&wordi,sizeof(struct dia),1,fp);fclose(f
13、p);printf(已删除n);break;if(i=20)printf(该单词不存在n);删除模块流程图开始菜单显示输入指令输入非4进行其他指令输出“不存在此单词”输入4进行删除指令输入要删除的单词是否存在该单词 否 是确定删除1 否 否 进行删除操作 是3.6 添加函数add() 首先以追加方式打开打开文件,利用输入函数输入要增加的单词,再判断该单词是否存在,如果存在,则显示“该单词已经存在,输入任何字符返回”,否则输入该单词的意思,返回主菜单。若储存空间已满,显示“空间已满,不能录入”,返回主菜单。for(i=0;i20;i+)if(wordi.english0!=0)continue;
14、elsefp=fopen(f:word.txt,ab);printf(请输入要录入的单词:n);scanf(%s,c);for(j=0;j20;j+)if(strcmp(c,wordj.english)=0)printf(这个单词已经存在,输入任何字符返回n);getch();return;printf(请输入录入单词的意思:n);scanf(%s,d);strcpy(wordi.english,c);strcpy(wordi.mean,d);fseek(fp,0l,1); /定位fwrite(&wordi,sizeof(struct dia),1,fp);printf(成功添加n);fclo
15、se(fp);return;if(i=20)printf(空间已满,不能录入n);开始菜单显示输入指令输入非5进行其他指令输入5进行增加指令输出“已存在此单词”输入要增加的单词是否存在该单词 是 将所添加单词及其意译保存至文件中输入该单词及其意译 否 4、 调试分析 4.1、进入选择菜单页面以后,有六个选项,1、查找单词;2、显示单词;3、修改单词;4、删除单词;5、添加单词;6、结束。 4.2、输入5,按回车就进入添加函数程序了,如果里面存储的单词达到20个了,就会提醒你“空间已满,不能录入”。否则,就引导输入想增加的单词及其意思。 4.3、输入1进入查找函数按回车就会出现提示语,然后输入你
16、想查询的单词,并按回车。如果程序里面存有这个单词就会输出它的中文意思。如果不存在就显示“不存在这个单词”。 4.4、 输入3,修改单词请按1,修改意思请按2,若不存在该单词则显示该单词不存在。修改单词:修改意思: 4.5、输入4,回车,在出现“请输入要删除的单词”,后面输入你想删除的单词,然后若确定删除输入1,之后就会显示“已删除”了。 4.6 输入6,结束 总结与体会程序代码我是借鉴别人的,从网上查看其他同学的相关程序,给了我一个程序设计的方向。首先要明确自己程序设计的目的;根据目的,设置思路框架;再根据思路框架分步骤写出相关调用函数和主函数。我没把握自己完全原创,借鉴时候难免出现这样那样的
17、错误。如开始设计出来的菜单不是预想的那样,而是总出现混乱,解决的这个问题的办法是调试。我尝试自己设计一个程序。经过几个夜晚冥想与数次上机操作,程序初步能够运行。但实用度很底,数据修改,增减都是临时的,退出程序后不能保存。所查的单词也只能是当次输入的单词,查阅范围有限。经过老师的一番指导和与同学们的交流,我也找到了初步解决的方案:以文件的形式保存词条,这样就能初步保存修改后的词典,在调试的时候,由于对文件的操作并不是很熟悉,基本上每一步的进行都影响其他子函数。尤其是修改和删除那部分,每个子函数的调试总是和显示那部分一起调试,才能保证不出错。在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次
18、做的,难免会遇到各种各样的问题,同时在设计过程中发现了自己的不足之处,对以前的所学过的知识理解的不够深刻,掌握的不够牢固。通过这次课程设计之后,觉得以前学过的知识要重新温习才能够达到查漏补缺的效果。我会在今后的日子里,努力学好c语言,并使c语言成为自己的长项。这次课程设计终于完成了,在设计中遇到了许多的问题,但在老师的指导和同学们的帮助下终于完成了,总的来说还不是很完善,但我不会放弃继续完善这份程序,我会在课余时间里继续修改完善这份程序。感谢所有帮助过我的同学和指导老师。参考文献:1 谭浩强著.c程序设计(第四版).北京:清华大学出版社,20102 林锐著.高质量c编程指南.北京:电子工业出版
19、社,20013stephen a.maguire.编程精粹:编写高质量c语言代码.人民邮电出版社,2009附件/*课设1:电子英汉字典编写人:朱彩玲编写日期:2012-3-4*/#include#include#include#includefile *fp;struct diachar english20;char mean20;word20;void init() /*初始化函数*/int i; for (i=0;i20;i+)memset(wordi.english,0,20); memset(wordi.mean,0,20);/fp=fopen(g:word.txt,w); fp=fo
20、pen(f:word.txt,r+); i=0;while( fscanf(fp,%s %sn,wordi.english,wordi.mean)!=eof) i+;fclose(fp); void add() /词条录入int i,j;char c20,d20;fp=fopen(f:word.txt,rb); for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,ab); for(i=0;i20;i+)if(wordi.english0!=0)continue;elsefp=fo
21、pen(f:word.txt,ab);printf(请输入要录入的单词:n);scanf(%s,c);for(j=0;j20;j+)if(strcmp(c,wordj.english)=0)printf(这个单词已经存在,输入任何字符返回n);getch();return;printf(请输入录入单词的意思:n);scanf(%s,d);strcpy(wordi.english,c);strcpy(wordi.mean,d);fseek(fp,0l,1); /定位fwrite(&wordi,sizeof(struct dia),1,fp);printf(成功添加n);fclose(fp);re
22、turn;if(i=20)printf(空间已满,不能录入n);fclose(fp);return;void find() /查找函数int i;char a20;fp=fopen(f:word.txt,rb);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb); printf(请输入要查找的单词:n);scanf(%s,a);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.engl
23、ish,a)=0)printf(%s的中文意思是:%sn,wordi.english,wordi.mean);break;if(i=20)printf(该单词不存在n);fclose(fp);void view() /信息显示函数int i,j;int k,p;char temp20,temp120;for(i=0;i20;i+) /清空结构体for(j=0;j20;j+)wordi.englishj=0;wordi.meanj=0; fp=fopen(f:word.txt,rb);for(i=0;wordi.english0!=0;i+)fread(&wordi,sizeof(struct
24、dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb);for (i=0;i0)k=p; if(k!=j)strcpy(temp,wordj.english);strcpy(temp1,wordj.mean);strcpy(wordj.english ,wordk.english );strcpy(wordj.mean ,wordk.mean );strcpy(wordk.english ,temp);strcpy(wordk.mean ,temp1);fclose(fp); fp=fopen(f:word.txt,wb);for(i=0;wordi.eng
25、lish0!=0;i+)fwrite(&wordi,sizeof(struct dia),1,fp);printf(%6s %-6s n,wordi.english,wordi.mean);fclose(fp);return;void mod() /词条修改int a,i,j;char mod20,mod220;fp=fopen(f:word.txt,rb);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb); printf(修改单词请按1,修改意思请按2:n);scan
26、f(%d,&a);if(a=1)printf(请输入要修改的单词:n);scanf(%s,mod);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.english,mod)=0)printf(输入修改后的单词:n);scanf(%s,mod);strcpy(wordi.english,mod);printf(修改完成n);fp=fopen(g:word.txt,wb);for(j=0;j20;j+)fwrite(&wordj,sizeof(struct dia),1,fp);fclose(fp);brea
27、k; if(i=20) printf(该单词不存在n);fclose(fp);return;else if(a=2)printf(请输入要修改的意思:n);scanf(%s,mod2);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);if(strcmp(wordi.mean,mod2)=0)printf(输入修改后的意思:n);scanf(%s,mod2);strcpy(wordi.mean,mod2);printf(修改完成n);fp=fopen(f:word.txt,wb);for(j=0;j20;j+)fwrite(&wordj,
28、sizeof(struct dia),1,fp);fclose(fp);break;if(i=20)printf(该单词不存在n); fclose(fp);return;void del() /删除词条int b,i,j,k;char del20;fp=fopen(f:word.txt,r);for(i=0;i20;i+)fread(&wordi,sizeof(struct dia),1,fp);fclose(fp);fp=fopen(f:word.txt,rb); printf(请输入要删除的单词:n);scanf(%s,del);for(i=0;i20;i+)fread(&wordi,sizeof(struct di
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年广东省珠海市中小学教师招聘考试题库及答案
- 2026年及未来5年中国中兽药行业发展运行现状及投资战略规划报告
- 2026及未来5年中国少儿读物行业市场供需形势及投资策略研究报告
- 2026年基于遥感的气象监测技术
- 2026年振动管理在设备维护中的重要性
- 疫苗接种AI管理系统
- 2026年机械修理中的创新思维
- 人工智能与教学深度融合
- 2026秋招:重庆农商银行题库及答案
- 2026秋招:中国中化试题及答案
- 2026年内蒙古化工职业学院单招综合素质考试题库及一套参考答案详解
- 2026年湖南九嶷职业技术学院单招职业技能考试题库及答案解析
- 2026年南京铁道职业技术学院单招职业适应性考试题库附答案详解(夺分金卷)
- 2026年春季人教PEP版五年级下册英语教学计划含教学进度表
- 2018新会计准则培训
- 湖北2025年湖北科技学院招聘19人笔试历年参考题库附带答案详解
- 收单外包服务合作相关制度
- 2025-2026学年广东省深圳市龙华区四年级(上)期末数学试卷
- 2026年春节后复工复产安全教育培训
- 2023年考研考博-考博英语-中央美术学院考试历年真题摘选含答案解析
- 广西版六年级下册《美术》全册教案
评论
0/150
提交评论