版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGE课程设计报告课程名称《C语言程序设计》课题名称电子英汉词典设计专业信息管理与信息系统班级学号姓名指导教师2011年6湖南工程学院课程设计任务书
课程名称《C语言程序设》课题电子英汉词典设计专业班级信息管理与信息系统学生姓名学号指导老师审批任务书下达日期2011年6月4日任务完成日期2011年6月22日一、设计内容与设计要求1.课程设计目的全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构和数据库等课程)的实验以及课程设计打下较扎实的基础。2.课题题目⑴班级成绩管理系统⑵班级档案管理系统⑶飞机订票系统⑷猜数字游戏⑸电子英汉词典设计⑹通讯录管理系统3.设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。具体要求如下:设计课题题目:每位同学根据自己学号除以6所得的余数加一选择相应题号的课题。原则上不予换提,私自换题者不记成绩。⑵根据自己对应的课题完成以下主要工作:①完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。②完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。③完成系统详细设计:包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。④调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。⑤关键源程序(带注释)⑶按规定格式完成课程设计报告,将其打印稿(A4纸)上交给老师存档。⑷不得抄袭他人程序、课程设计报告,每个人应体现自己的个性设计。二、进度安排第17周星期一8时:00分——11时:30分星期二8时:00分——11时:30分星期四8时:00分——11时:30分星期五8时:00分——11时:30分第18周星期一8时:00分——11时:30分第18周星期二14时:30分——18时:00分目录1.系统需求分析 11.1问题描述 11.2功能要求 12.概要设计 22.1系统的总体设计 22.2各模块的功能 32.3相关数据结构设计 33.详细设计 43.1采用C语言定义相关的数据类型 43.2各功能模块的流程图 54.系统调试 105.运行结果 115.1查询单词界面 115.2新增词条界面 135.3编辑词条界面 155.4删除词条界面 175.5退出字典 176.心得体会 187.附录 187.1参考书目 187.2源程序清单 198.评分表 25PAGE251.系统需求分析1.1问题描述英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。1.2功能要求(1)在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。(2)词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。(3)对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。(4)采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。(5)要求整个设计以人为本,用户界面友好。2.概要设计2.1系统的总体设计程序共有六个子函数和一个主函数:(1)query(void)是查找函数。(2)append(void)是新增函数。(3)edit(void)是编辑函。(4)erase()是删除函数。(5)add()是一个初始化函数。(6)lookup()是用来实现单词查询的一个子函数。(7)主程序通过无限循环来接收输入的命令,并且根据命令调用相应的函数处理。主函数主函数查询函数query(void)新增函数append(void)编辑函数edit(void)删除函数erase()初始化add()查找功能函数lookup()图2.1总体设计图2.2各模块的功能(1)query是查找函数,用户通过系统提示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文解释。(2)append是新增函数,用户可通过此函数来增加单词库单词的数量。(3)edit是编辑函数,程序提示用户输入要修改的单词,如果找到,则提示输入新单词及中文解释。(4)erase是删除函数,程序提示用户输入要删除的单词,在得到确认后,删除这个单词的纪录。(5)add是一个初始化函数,让建立的词库里有一部分单词。(6)lookup是用来实现单词查询的一个子函数。2.3相关数据结构设计(1)宏定义的一些相关数据#defineszWORD32#defineszSTRN224#defineszITEMsizeof(structTItem)charfileDict[szSTRN];(2)开头定义一个结构体数组用于单词和释义的存放单词释义charchar3.详细设计3.1采用C语言定义相关的数据类型定义结构体数组:typedefstructTItem{charword[szWORD];charmean[szSTRN];}Item;宏定义的数据:#defineszWORD32#defineszSTRN224#defineszITEMsizeof(structTItem)charfileDict[szSTRN];定义的文件:File*f;3.2各功能模块的流程图开始(1)查询函数query(void)流程图开始否否输入要查询的单词调用lookup()函数是否能打开文件返回到查询函数用while函数进行单词查询关闭文件,回到查询函数是否找到单词输出没有该单词记录输出该单词和释义是否是图3.1查询函数query(void)流程图(2)新增函数append(void)流程图开始开始输入要新增的单词判断词库里是否有该单词输出字典内已有该单词记录输出请输入释义,按回车结束:把获得的字符串给i.mean打开这个文件以追加的方式写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中关闭文件词条已新增是否图3.2新增函数append(void)流程图(3)编辑函数edit(void)流程图开始开始输入要编辑的单词判断词典里是否有该单词输出字典内没有该单词记录!请输入释义,按回车结束(输入abort放弃修改):获得字符串,放在i.mean中判断是否为abort已放弃修改以读写的方式打开fileDict将&i所指向的一个szITEM字节的数据项放进f词条已保存关闭文件否是否是图3.3编辑函数edit(void)流程图(4)删除函数erase()流程图开始开始输入要删除的单词调用lookup()函数在文件中查找单词是否能查找到该单词输出字典内没有该单词记录!如果有,则打开文件,重新读写关闭文件词条已删除否是图3.4删除函数erase()流程图(5)词库初始化函数add()流程图开始开始将定义的结构体赋初值指定一个文件以追加的方式打开文件把i所指向的1*szITEM个字节输入到f所指的文件中关闭文件输出词条以初始化图3.5初始化函数add()流程图4.系统调试在程序运行时开始查不到单词,后来查找原因,是由于此库里没有单词,这样的电子词典给了用户也用不了,所以我就加了一个add子函数进行初始化,使词库里有一部分单词。这样的电子词典就比较实用。在函数的几个功能中,删除函数在运行时不能删除单词,但经过分析,删除函数中没有错误,而是其中调用的lookup()中的一条语句没有起到它应起的作用,后来我在if(strcmp(i.word,word))后面加上{p=p+szITEM;continue;}就实现了单词删除的功能。因为我加了一个初始化的功能,让所定义的文件中有部分单词,而这个功能就是要给结构体初始化,而我开始定义的结构体后就在后面直接初始化,运行的时候并没有达到我预期的效果,还是显示词库里没有单词。于是我在结构体上下工夫,我开始的赋值出现了问题,导致我定义的结构体是个非法结构体。所以我重新定义结构体,按照规范的要求重新赋值,就达到了我想要的效果了。由于主函数是运用的无限循环体,所以在运行时,友好界面会一直出现,不仅不美观,看起来结不简洁,所以我在后面加了一条清屏的语句,就是界面看起来美观大方了。5.运行结果5.1初始化界面图5.1初始化界面5.2查询单词界面(1)查询单词的界面图5.2查询单词界面(2)未初始化下查询单词界面图5.3未初始化查询单词(3)初始化后查询单词图5.4初始化后查询单词(5)查不到单词的情况图5.5查不到单词的情况5.2新增词条界面(1)新增词条界面图5.6新增词条的界面(2)输入新增的单词图5.7输入新增的单词(3)输入新增单词的释义图5.8输入新增单词的释义(4)新增成功图5.9新增成功5.3编辑词条界面(1)输入要编辑的单词和释义图5.10输入要编辑的单词和释义(2)编辑成功界面图5.11编辑成功(3)放弃编辑的界面图5.12放弃编辑5.4删除词条界面图5.13删除词条5.5退出字典图5.14退出字典6.心得体会7.附录7.1参考书目[1]谭浩强.C语言程序设计(第四版)[M].北京:清华大学出版社,20106(4)[2]姜仲秋等.C语言程序设计[M].南京:南京大学出版社,19981(2)[3]陈朔鹰等.C语言程序设计基础教程[M].北京:兵器工业出版社,19949[4]刘瑞挺.计算机二级教程[M].天津:南开大学出版社,1996107.2源程序清单/*基本的库函数*/#include<conio.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#defineszWORD32#defineszSTRN224#defineszITEMsizeof(structTItem)charfileDict[szSTRN];typedefstructTItem/*定义一个结构体*/{charword[szWORD];charmean[szSTRN];}Item;voidadd(void)/*词库初始化*/{ Itemi[2]={"you","你","me","我"};/*初始化*/ FILE*f=0;intp=0;/*定义指针型未打开的文件f,整型p=0*/f=fopen(fileDict,"ab");/*以追加的方式打开文件*/fwrite(&i,szITEM,2,f);/*写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中*/fclose(f);/*关闭文件*/printf("词条已初始化\n");}intlookup(char*word,char*mean)/*实现单词查询功能*/{FILE*f=0;Itemi;/*定义指针型未打开的文件f,i表示Item*/intr=0;intp=0;/*定义整型r=0整型p=0*/if(!word)return0;/*如果找不到该单词,则返回*/f=fopen(fileDict,"rb");/*如果有打开这个文件以rb的方式*/if(!f)return0;/*如果文件不存在,返回*/while(!feof(f))/*如果文件存在当如果未遇到输入文件的结束标志*/{r=fread(&i,szITEM,1,f);/*从f中读取长度为szITEM的一个数据项存到i所指向的内存*/if(r<1)break;/*如果r<1,则跳出该循环*/if(i.word[0]==0)continue;/*如果i.word[0]==0,则结束本次循环*/if(strcmp(i.word,word)){p=p+szITEM;continue;}/*如果要查的单词在词库里有则执行下一步否则结束本次循环*/if(mean)strcpy(mean,i.mean);/*把单词的意思copy到mean中*/fclose(f);/*关闭该文件*/returnp+1;/*返回到下一个单词*/}fclose(f);/*关闭该文件*/return0;/*返回主函数*/}voidappend(void)/*新增词条*/{Itemi;FILE*f=0;intp=0;/*定义指针型未打开的文件f,i表示Item定义整型p=0*/printf("请输入单词:");scanf("%s",i.word);p=lookup(i.word,0);/*p=要新增的单词*/if(p)/*如果p=0,则输出字典内已经有该单词记录!*/{printf("字典内已经有该单词记录!\n");return;}printf("请输入释义,按回车结束:");/*否则输出请输入释义,按回车结束:*/fflush(stdin);/*清空输入缓冲区*/gets(i.mean);/*把获得的字符串给i.mean*/f=fopen(fileDict,"ab");/*打开这个文件以追加的方式*/fwrite(&i,szITEM,1,f);/*写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中*/fclose(f);/*关闭文件*/printf("词条已新增\n");}voiderase(void)/*删除词条*/{Itemi;FILE*f=0;intp=0;/*定义指针型未打开的文件f,i表示Item定义整型p=0*/memset(&i,0,szITEM);/*清除数组的内容*/printf("请输入单词:");scanf("%s",i.word);p=lookup(i.word,0);/*p=要查找的单词*/if(p==0)/*如果p=0,则输出字典内没有该单词记录!*/{printf("字典内没有该单词记录!\n");return;}p--;/*p回到它原来的位置*/memset(&i,0,szITEM);/*清除数组的内容*/f=fopen(fileDict,"rb+");/*以读写的方式打开fileDict*/fwrite(&i,szITEM,2,f);/*写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中*/fclose(f);/*关闭文件*/printf("词条已删除\n");}voidedit(void)/*编辑词条*/{Itemi;FILE*f=0;intp=0;/*定义指针型未打开的文件f,i表示Item定义整型p=0*/memset(&i,0,szITEM);/*清除数组的内容*/printf("请输入单词:");scanf("%s",i.word);p=lookup(i.word,0);/*p=要编辑的单词*/if(p==0)/*如果p=0,则输出字典内没有该单词记录!*/{printf("字典内没有该单词记录!\n");return;}p--;/*p回到它原来的位置*/printf("请输入释义,按回车结束(输入abort放弃修改):");fflush(stdin);/*清空输入缓冲区*/gets(i.mean);/*获得字符串,放在i.mean中*/if(strstr(i.mean,"abort"))/*如果abort字符串的出现则表示已经放弃修改*/{printf("已放弃修改!\n");return;}f=fopen(fileDict,"rb+");/*以读写的方式打开fileDict*/fwrite(&i,szITEM,1,f);/*将&i所指向的一个szITEM字节的数据项放进f*/fclose(f);/*关闭文件*/printf("词条已保存\n");}voidquery(void)/*查询单词*/{Itemi;intp=0;/*i表示Item定义整型p=0*/memset(&i,0,szITEM);/*清除数组的内容*/printf("请输入单词:");scanf("%s",i.word);p=lookup(i.word,i.mean);/*p=要查询的单词*/if(p==0)/*如果p=0,则输出字典内没有该单词记录*/{printf("字典内没有该单词记录!\n");return;}printf("【词条】%s\n【释义】%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46741-2025摩托车和轻便摩托车车载诊断连接器
- 2026年常德市桃源县县直机关事业单位公开选调工作人员77人备考题库及答案详解一套
- 2026年四川省岳池银泰投资(控股)有限公司公开招聘急需紧缺专业人才备考题库及答案详解参考
- 2026年三明市清流县少年儿童业余体校公开招聘紧缺急需专业工作人员备考题库及参考答案详解一套
- 2026年度河南省省直机关公开遴选公务员备考题库及1套完整答案详解
- 2026年国家电投集团广东电力有限公司招聘备考题库完整参考答案详解
- 2026年国投期货有限公司招聘备考题库完整参考答案详解
- 2026年上海交通大学变革性分子前沿科学中心樊春海院士姚广保课题组招聘科研助理备考题库及参考答案详解1套
- 2026年巧家县社会工作协会面向社会公开招聘政府购买社会救助服务人员备考题库有答案详解
- 2026年双鸭山市宝山区人民医院招聘精英备考题库带答案详解
- 安全生产与员工情绪管理
- 医院医疗保险费用审核制度
- 村卫生室医疗质量相关管理制度
- 【苏州工学院智能建造研究院】2025中国低空经济产业链全面解析报告
- 中小学校园中匹克球推广策略与实践研究
- 个人与团队管理-形考任务3(客观题10分)-国开-参考资料
- 车间现场管理岗位职责模版(2篇)
- 农村宅基地父母继承协议书
- 【MOOC】生物化学与分子生物学-华中科技大学 中国大学慕课MOOC答案
- 地下室顶板堆载及回顶方案
- 广东省2024年修订医疗服务价格项目表
评论
0/150
提交评论