C语言程序设计课程设计报告电子英汉词典设计.doc

上传人:精*** 文档编号:854170 上传时间:2023-09-16 格式:DOC 页数:28 大小:564.54KB
下载 相关 举报
C语言程序设计课程设计报告电子英汉词典设计.doc_第1页
第1页 / 共28页
C语言程序设计课程设计报告电子英汉词典设计.doc_第2页
第2页 / 共28页
C语言程序设计课程设计报告电子英汉词典设计.doc_第3页
第3页 / 共28页
C语言程序设计课程设计报告电子英汉词典设计.doc_第4页
第4页 / 共28页
C语言程序设计课程设计报告电子英汉词典设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、课 程 设 计 报 告一、设计内容与设计要求1.课程设计目的全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构和数据库等课程)的实验以及课程设计打下较扎实的基础。2.课题题目班级成绩管理系统班级档案管理系统飞机订票系统猜数字游戏电子英汉词典设计通讯录管理系统3.设计要求掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的

2、案例处理经验。具体要求如下: 设计课题题目:每位同学根据自己学号除以6所得的余数加一选择相应题号的课题。原则上不予换提,私自换题者不记成绩。 根据自己对应的课题完成以下主要工作:完成系统需求分析:包括系统设计目的与意义;系统功能需求;输入输出的要求。完成系统概要设计:程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。完成系统详细设计:包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图。调试分析、设计体会、测试数据:准备典型的测试数据和测试方案,包

3、括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。关键源程序(带注释) 按规定格式完成课程设计报告,将其打印稿(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.概要设计

4、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.评分表251.系统需求分析1.1问题描述英汉词典作为一个常用的学习工具,是我们经常要使用的。该系统能完成一个简单的电子英汉词典的功能,如:单词的查找、增词、删除、修改和维护等工作。1.2功能要求(1) 在计算机中建立有限规模的电子英汉词典(文件),

5、利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。(2) 词典的内容为:每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。(3) 对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。(4) 采用菜单工作方式。在一个操作执行之后,程序询问是否继续执行该操作。如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。(5)

6、要求整个设计以人为本,用户界面友好。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.

7、1 总体设计图2.2各模块的功能(1) query是查找函数,用户通过系统提示输入要查找的单词,只要单词库中含有此单词便能找到相应的中文解释。(2) append是新增函数,用户可通过此函数来增加单词库单词的数量。(3) edit是编辑函数,程序提示用户输入要修改的单词,如果找到,则提示输入新单词及中文解释。(4) erase是删除函数,程序提示用户输入要删除的单词,在得到确认后,删除这个单词的纪录。(5) add是一个初始化函数,让建立的词库里有一部分单词。(6) lookup是用来实现单词查询的一个子函数。2.3相关数据结构设计(1) 宏定义的一些相关数据#define szWORD 32

8、#define szSTRN 224#define szITEM sizeof(struct TItem)char fileDictszSTRN;(2) 开头定义一个结构体数组用于单词和释义的存放 单词 释义char char3.详细设计3.1采用C语言定义相关的数据类型 定义结构体数组:typedef struct TItem char wordszWORD; char meanszSTRN; Item; 宏定义的数据:#define szWORD 32#define szSTRN 224#define szITEM sizeof(struct TItem)char fileDictszST

9、RN; 定义的文件: File*f;3.2各功能模块的流程图开始(1) 查询函数query(void)流程图 否输入要查询的单词调用lookup()函数是否能打开文件返回到查询函数用while函数进行单词查询关闭文件,回到查询函数是否找到单词输出没有该单词记录输出该单词和释义是否是 图3.1 查询函数query(void)流程图(2)新增函数append(void)流程图开始输入要新增的单词判断词库里是否有该单词输出字典内已有该单词记录输出请输入释义,按回车结束:把获得的字符串给i.mean打开这个文件以追加的方式写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中关闭文件词条已新

10、增是否 图3.2新增函数append(void)流程图(3) 编辑函数edit(void)流程图开始输入要编辑的单词判断词典里是否有该单词输出 字典内没有该单词记录!请输入释义,按回车结束(输入abort放弃修改):获得字符串,放在i.mean中判断是否为abort已放弃修改以读写的方式打开fileDict将&i所指向的一个szITEM字节的数据项放进f词条已保存关闭文件否是否是 图3.3 编辑函数edit (void)流程图(4) 删除函数erase()流程图 开始输入要删除的单词调用lookup()函数在文件中查找单词是否能查找到该单词输出字典内没有该单词记录!如果有,则打开文件,重新读写

11、关闭文件词条已删除否是 图3.4删除函数erase()流程图(5) 词库初始化函数add( )流程图开始将定义的结构体赋初值指定一个文件以追加的方式打开文件把i所指向的1*szITEM个字节输入到f所指的文件中关闭文件输出词条以初始化 图3.5初始化函数add( )流程图4.系统调试在程序运行时开始查不到单词,后来查找原因,是由于此库里没有单词,这样的电子词典给了用户也用不了,所以我就加了一个add子函数进行初始化,使词库里有一部分单词。这样的电子词典就比较实用。在函数的几个功能中,删除函数在运行时不能删除单词,但经过分析,删除函数中没有错误,而是其中调用的lookup( )中的一条语句没有起

12、到它应起的作用,后来我在if(strcmp(i.word , word) 后面加上p=p+szITEM;continue; 就实现了单词删除的功能。 因为我加了一个初始化的功能,让所定义的文件中有部分单词,而这个功能就是要给结构体初始化,而我开始定义的结构体后就在后面直接初始化,运行的时候并没有达到我预期的效果,还是显示词库里没有单词。于是我在结构体上下工夫,我开始的赋值出现了问题,导致我定义的结构体是个非法结构体。所以我重新定义结构体,按照规范的要求重新赋值,就达到了我想要的效果了。由于主函数是运用的无限循环体,所以在运行时,友好界面会一直出现,不仅不美观,看起来结不简洁,所以我在后面加了一

13、条清屏的语句,就是界面看起来美观大方了。 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) 编辑

14、成功界面 图5.11编辑成功(3) 放弃编辑的界面图5.12放弃编辑5.4删除词条界面 图5.13删除词条5.5退出字典 图5.14退出字典6.心得体会7.附录7.1参考书目1 谭浩强. C语言程序设计(第四版)M.北京:清华大学出版社,2010 6(4)2 姜仲秋等. C语言程序设计 M. 南京:南京大学出版社,1998 1(2)3 陈朔鹰等. C语言程序设计基础教程M.北京:兵器工业出版社,1994 94 刘瑞挺. 计算机二级教程M.天津:南开大学出版社,1996 107.2源程序清单/*基本的库函数*/#include #include #include #include #define

15、 szWORD 32#define szSTRN 224#define szITEM sizeof(struct TItem)char fileDictszSTRN;typedef struct TItem /*定义一个结构体*/ char wordszWORD; char meanszSTRN; Item;void add(void) /*词库初始化*/Item i2=you,你,me,我; /*初始化*/FILE * f = 0; int p = 0; /*定义指针型未打开的文件f,整型p=0*/ f = fopen(fileDict, ab); /*以追加的方式打开文件*/ fwrite

16、(&i, szITEM,2, f); /*写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中*/ fclose(f); /*关闭文件*/ printf(词条已初始化n);int lookup(char *word, char *mean) /*实现单词查询功能*/ FILE * f = 0; Item i; /*定义指针型未打开的文件f,i表示Item*/ int r = 0; int p = 0; /* 定义整型r=0 整型p=0*/ if(!word) return 0; /*如果找不到该单词,则返回*/ f = fopen(fileDict, rb); /*如果有 打开这个

17、文件以rb的方式*/ if (!f) return 0; /*如果文件不存在,返回*/ while(!feof(f) /*如果文件存在 当如果未遇到输入文件的结束标志*/ r = fread(&i, szITEM, 1, f); /*从f中读取长度为szITEM的一个数据项存到i所指向的内存*/ if(r 1) break; /*如果r1,则跳出该循环*/ if(i.word0 = 0) continue; /*如果i.word0 = 0,则结束本次循环*/ if(strcmp(i.word , word) p=p+szITEM;continue; /*如果要查的单词在词库里有则执行下一步 否

18、则结束本次循环*/ if(mean) strcpy(mean, i.mean ); /*把单词的意思copy到mean中*/ fclose(f); /*关闭该文件*/ return p+1; /*返回到下一个单词*/ fclose(f); /*关闭该文件*/ return 0; /*返回主函数*/void append(void) /*新增词条*/ Item i; FILE * f = 0;int p = 0; /*定义指针型未打开的文件f,i表示Item 定义整型p=0*/printf(请输入单词:); scanf(%s, i.word ); p = lookup(i.word, 0 );

19、/*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); /*

20、关闭文件*/ printf(词条已新增n);void erase(void) /*删除词条*/ Item i; FILE * f = 0;int p = 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回到它原来的位置

21、*/ memset(&i, 0, szITEM); /*清除数组的内容*/ f = fopen(fileDict, rb+); /*以读写的方式打开fileDict*/ fwrite(&i, szITEM, 2, f); /*写入函数,把i所指向的1*szITEM个字节输入到f所指的文件中*/ fclose(f); /*关闭文件*/ printf(词条已删除n);void edit(void) /*编辑词条*/Item i; FILE * f = 0; int p = 0; /*定义指针型未打开的文件f,i表示Item 定义整型p=0*/ memset(&i, 0, szITEM); /*清除

22、数组的内容*/ 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字符串的出现 则

23、表示已经放弃修改 */ printf(已放弃修改!n); return ; f = fopen(fileDict, rb+); /*以读写的方式打开fileDict*/fwrite(&i, szITEM, 1, f); /*将&i所指向的一个szITEM字节的数据项放进f*/ fclose(f);/*关闭文件*/ printf(词条已保存n);void query(void) /*查询单词*/ Item i; int p = 0; /*i表示Item 定义整型p=0*/ memset(&i, 0, szITEM); /*清除数组的内容*/ printf(请输入单词:); scanf(%s, i

24、.word ); p = lookup(i.word, i.mean ); /*p=要查询的单词*/ if(p=0)/*如果p=0,则输出字典内没有该单词记录*/ printf(字典内没有该单词记录!n); return; printf(【词条】%sn【释义】%s, i.word , i.mean );/*输出词条和释义*/int main() /*主函数*/ int cmd = 0; /*定义整型的cmd=0*/ strcpy(fileDict, c:dict.txt); /*将c:dict.txt复制到fileDict*/ for(;) printf(n *n * 欢迎使用迷你字典!*n

25、*n * 1 - 查询词条 *n * 2 - 新增词条 *n * 3 - 编辑词条 *n * 4 - 删除词条 *n * 5 - 初始化字典 *n * 6 - 退出字典 *n *n); printf(请输入1到6中任意一个数字:n); cmd = getch() - 0; /*将获得的字符赋值给cmd*/ switch(cmd) case 1: query(); break; /*调用查询函数*/ case 2: append(); break; /*调用新增函数*/ case 3: edit(); break; /*调用编辑函数*/ case 4: erase(); break; /*调用删除函数*/ case 5: add(); break; /*调用初始化函数*/ default: return 0; printf(n); system(pause); system(cls); return 0;8.评分表计算机与通信学院课程设计评分表课程名称: C语言程序设计 项 目评 价设计方案的合理性与创造性设计与调试结果设计说明书的质量答辩陈述与回答问题情况课程设计周表现情况综合成绩 教师签名: 日 期: 25

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 技术资料 > 课程设计

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922