版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
软件学院课程设计报告书课程名称嵌入式系统课程设计设计题目快译通电子词典专业班级嵌入式软件09-2班学号8,9,10,11,12,14姓名刘磊,刘振宁,宋盼盼,唐骏,田雨,王翀指导教师王老师2023年6月目录1设计时间32设计目的33设计任务34设计内容44.1需求分析54.1.1功能分析54.1.2性能分析54.2总体设计5快译通总体设计5查询单词模块总体设计54.3详细设计6〔单词查询〕系统流程图6功能流程图6〔链表创立〕系统流程图6〔比拟查询〕系统流程图6〔进入内存链表取数据〕系统流程图64.4测试与分析114.5附录Ⅰ程序清单12参考文献16成绩评定161设计时间2023年6月11日——2023年6月152设计目的全面熟悉,掌握C语言根本知识,增强对不同的问题运用和灵活选择适宜的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析,结果的假设干有效方法,进一步提高上级动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和标准编程的思想,为日后自主完成设计任务打下扎实的根底。将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比拟和总结,结合设计题目进行综合性应用,对所学知识到达融会贯穿的程度。通过课程设计,在下述各方面的能力应该得到锻炼:对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。掌握自顶而下的设计方法,将大问题进行模块化,领会结构化程序设计的方法。熟练掌握C语言的根本语法,灵活运用各种数据类型。进一步掌握在集成环境下如何调试程序〔单步调试,设置断点、观察表达式,分块调试〕和修改程序。3设计任务给定文本文件“dict.txt〞,该文件用于存储词库。词库为“英-汉〞,“汉-英〞双语词典,每个单词和其解释的格式固定,如下所示:#单词Trans:解释1@解释2@…解释n每个新单词由“#〞开头,解释之间使用“@〞隔开。一个词可能有多个解释,解释均存储在一行里,行首固定以“Trans:〞开头。下面是一个典型的例子:#abyssinianTrans:a.阿比西尼亚的@n.阿比西尼亚人;依索比亚人该词有两个解释,一个是“a.阿比西尼亚的〞;另一个是“n.阿比西尼亚人;依索比亚人〞。要求编写程序将词库文件读取到内存中,接受用户输入的单词,在字典中查找单词,并且将解释输出到屏幕上。用户可以反复输入,直到用户输入“exit〞字典程序退出。程序执行格式如下所示:./app–text-text表示使用文本词库进行单词查找。4设计内容4.1需求分析功能分析1、在计算机中建立有限规模的电子英汉词典〔文件〕,利用程序实现电子英汉词典的单词查找,建立索引,使用索引进行查找,添加新词等功能。2、词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用假设干空格符分开;前一个是单词字符串〔英文〕,后一个是释义字符串〔中文〕,使用分号作为多个释义的分隔符〔无空格〕。3、对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。4、采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,那么重复同一操作,不退回到菜单;如输入其它信息,那么回到菜单等待另一次选择。仅中选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。5、要求整个设计以人为本,用户界面友好。性能分析英译汉功能块,可以实现对英文单词对中文单词的查询功能,给定文本文件“dict.txt〞,该文件用于存储词库。用户文本框中输入要查询的单词。如该单词存在于词库中,那么会在文件对话框中显示其词性及中文翻译;如该单词没有存在于词库中,那么会弹出“警告〞,说明“查无此词〞;假设没有输入,直接点击“查询〞,那么会弹出“警告〞说明查询对象不能为空。4.2总体设计快译通总体设计建建立索引使用索引进行查询添加新词快译通单词查询图1快译通总体设计4.2.2查询单词模块总体设计单词查询单词查询输入单词进入词库查找输出查询结果图2查询单词模块总体设计4.3详细设计〔单词查询〕系统流程图开始开始进入数组查找N是否找到Exit输出词义解释查无此词结束YYN退出Y从文件dict.txt读取并存到内存,内存以链表形式存储输入单词图3〔单词查询〕系统流程图4.3.2功能流程图开始开始创立链表翻开文件dict.txtEof?为节点分配空间从文件读取到节点将节点插入链表关闭文件dict.txt结束YN图4功能流程图4.3.3〔链表创立〕系统流程图开始开始开始建立头指针head,指针p1,p2给p1,p2分配相同的空间,head指向p1,p2用fgets〔〕得到dict.txt中的word,trans。p1指向word,p2指向trans是否到文件尾头结点head指回NY图5〔链表创立〕系统流程图4.3.4〔比拟查询〕系统流程图从数组第一个元素开始字符串比拟从数组第一个元素开始字符串比拟是否匹配输出结果NY查无此词开始结束进入内存查找图6〔比拟查询〕系统流程图〔进入内存链表取数据〕系统流程图图7〔进入内存链表取数据〕系统流程图4.4测试与分析测试截图图8代码局部截图图9输入单词,显示输出结果图10假设词库中找不到所要查找的单词,显示查无此词4.5附录Ⅰ程序清单#include<stdio.h>#include<malloc.h>#include<stdlib.h>#include<string.h>structnode//定义结构体//{charword[30];chartrans[120];structnode*next;};structnode*creat(void)//定义一个可以返回头指针的函数//{ord,ch);strcpy(p1->trans,st)FILE*fp;charch[30],st[120];structnode*head;structnode*p1;structnode*p2;intn;fp=fopen("dic0.txt","r");//以只读的方式翻开词库,把词库的地址赋给fp//if(fp==NULL){printf("cannotopenfile\n");exit(1);}head=NULL;//冗错//p1=p2=(structnode*)malloc(sizeof(structnode));//创立链表,给p1,p2分配空间//n=0;fgets(ch,30,fp);//从词库中取“#单词〞赋给ch//fgets(st,120,fp);//从词库中取“trans〞赋给st//strcpy(p1->w;while(!feof(fp)){n=n+1;if(n==1)head=p1;elsep2->next=p1;p2=p1;p1=(structnode*)malloc(sizeof(structnode));fgets(ch,20,fp);fgets(st,20,fp);strcpy(p1->word,ch);//把“#单词〞拷贝到链表中//strcpy(p1->trans,st);//把“trans〞拷贝到链表中//}p2->next=NULL;return(head);}intcmpChar(char*dst,char*src){if(strcmp(src,dst)==0)return1;elsereturn0;}char*getOut(structnode*wp,charword[]){inti=0;char*q;for(i=0;i<30;i++){word[i]=wp->word[i];if(word[i]=='\n')word[i]='\0';}q=word;return(q);}IntoutPut(structnode*wp){inti=0;printf("查询结果:");for(i=0;i<30;i++){printf("%c",wp->word[i]);}printf("\n");for(i=0;i<=30;i++){printf("%c",wp->trans[i]);}return0;}intmain(intargc,char*argv[]){structnode*c1;structnode*c2;charin[30];charout[30];inti=0;c1=creat();//翻开文件,创立链表//c2=c1;printf("\n\n请输入要查找的单词:");scanf("%s",in);//输入要查找的单词//if((in[0]=='e')&&(in[1]=='x')&&(in[2]=='i')&&(in[3]=='t'))//判断是否为exit如果是那么退出,不是进行下一步//exit(1);while(!cmpChar(getOut(c1,out),in))//判断字符串是否为要查找的单词,是的话停止循环,getout()从节点中取出,cmpchar比拟取出的节点的单词是否与输入的单词一致,一致的话退出停止循环,//{if(c1->next!=NULL){c1=c1->next;outPut(c1);}//如果循环停止时c1指向的节点不为空,那么调用output函数输出查找结果//elsebreak;}if(c1->next!=NULL)outPut(c1);elseprintf("\n查无此词");c1=c2;gotoa;return0;}5总结与展望通过本次课题的课程设计,让我感到获益匪浅的。这是再学习完C语言这门课程后,对其知识的稳固与拓展。这次实训的目的就是为了稳固C语言所学根本课程;提高C语言编程的综合应用能力;以及C语言程序的编译、调试方法。这次我们组的实训内容就是电子生词库的编程。内容要求就是掌握C语言中的根本数据输入、输出;熟练掌握C语言中的三种根本结构的使用;熟练使用C语言中的函数;熟练使用C语言中的结构体;和熟练掌握C语言中的文件使用。这次的实训,让我感触最深的就是:上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。所以,对于当今缺少动手实践的大学生们,这次的实训就显得更有意义。历时一周的实训,马上结束了,在这几天编程的过程中暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。通过这两周的实训和学习,我知道了此次实训的目的,也清楚目前自己的缺乏,那就是缺乏相应的知识与经验,对所学的C语言知识不能够很好地运用于实践操作。但是我也有许多收获,在这次实训中,我第一次体会到编译上百条语句有多么的困难,也发现了很多以前不曾注意到的细节。相信这对我接下来所要学习专业知识会起到很有效的帮助。总之,这次实训,让我体会了与众不同的学习方法,从书本被动的学习改为自身实践的主动学习,再这次的实训操作中,我总结出一些属于自己的实践经验,我想,任何一个单位也不愿意聘请一位没有实践经验的员工。所以我们要从现在就开始,多多参与类似这样的锻炼,严格自我,完善自我。我相信通过我们的努力奋斗,不管在以后的社会工作中遇到多少困难,我们一定会克服困难,开拓一片属于我们自己的新天地。同组同学熟悉并掌握C语言根本知识,增强对不同的问题运用和灵活选择适宜的数据结构以及算法描述的本领,熟悉编制和调
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 承包合同中的发包人责任
- 车险调节协议书
- 车辆出入安全协议书
- 环境应急项目合同
- 二零二四年度手工艺品加工与出口合同
- 购货年合同范本
- 2024年度委托开发手机应用程序合同
- 2024年度车位冠名权转让合同
- 二零二四年技术服务合同技术支持范围及服务期限
- 2024年度大连市二手房交易合同违约金计算方式
- 2024-2030年中国风电运维行业发展现状规划分析报告
- 统编版(2024)七年级上册道德与法治第三单元《珍爱我们的生命》测试卷(含答案)
- 2024年秋季学期新苏科版七年级上册数学课件 4.3 用一元一次方程解决问题
- 职业生涯规划大赛公务员
- 实用针灸学-经络养生与康复-暨南大学中国大学mooc课后章节答案期末考试题库2023年
- 入团志愿书(2016版本)(可编辑打印标准A4) (1)
- 第三方安全检查报告模板
- 公司内部市场化实施方案
- 浙江省公路山岭隧道机械化装备应用指导手册
- 医师定期考核简易程序练习及答案
- 人才培养方案实施总结
评论
0/150
提交评论