电子英汉词典设计系统.docx
- 文档编号:4007923
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:20
- 大小:54.95KB
电子英汉词典设计系统.docx
《电子英汉词典设计系统.docx》由会员分享,可在线阅读,更多相关《电子英汉词典设计系统.docx(20页珍藏版)》请在冰点文库上搜索。
电子英汉词典设计系统
课程要求
一、目的
全面熟悉、掌握C语言基本知识,掌握C程序设计中的顺序、分支、循环三种结构及数组、函数和C语言基本图形编程等方法,把编程和实际结合起来,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。
二、基本情况
课程类别:
必修课
课程学分:
1学分
课程学时:
1周
课程对象:
电气工程0781、0782、0783、0784、0785、0786
三、时间安排
时间
任务
2008-3-8下午3:
40-5:
40
指导老师给学生布置课程设计的任务及要求
2008-3-10到2008-3-15
学生根据设计任务及要求,对系统进行需求分析、概要设计和详细设计,并在此基础上编写程序代码
学生提交系统程序清单初稿
上机调试程序
修改并完善程序并上机调试程序
2008-3-16
接受指导老师的验收
2008-3-16到2008-3-22
书写程序设计报告
提交课程设计报告
四、调试过程规范化要求
1)需要分析
分析系统功能需求以及用户操作流程。
2)概要设计
在需求分析的基础上,确定系统总体框架(系统功能结构图)。
3)详细设计
定义数据储存结构,并设计实现系统功能的具体算法,画出各算法的工作流程图。
4)代码设计
根据所设计的算法,定义相应函数分别实现系统的各子功能模块,同时由主程序提供友好的用户界面,使用户可通过选择主菜单来调用课程设计中要求完成的各个功能模块,子程序执行完后还可以返回到主菜单,继续选择其他功能执行。
源程序要求书写规范,结构清晰。
重点函数的重点变量。
重点功能部分均要求给出清晰的程序注释。
5)程序调试
程序编译、链接成功后,自己设计实现程序功能的一组或多组测试数据,并严格按照此测试数据进行测试,然后分析测试结果。
如果程序不能正常进行或结果不正确,则需对程序进行单步调试,在调试过程中认真查找算法实现中存在的问题,并加以分析和改正。
如果程序能够基本正确地运行,可考虑增加若干基本的容错功能;另外尽量对现有的算法给出改进方案,并比较不同算法之间的优缺点。
五、设计报告及书写内容要求
课程设计任务完成后,每位同学必须独立书写一份课程设计报告,注意:
不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。
课程设计报告的内容应包括以下五个部分:
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析;
概要设计:
包括系统总体设计框架和系统功能模块图;
2)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
3)主要源程序代码:
包括存储结构设计说明,以及完整源程序清单;
4)调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等);
5)总结:
包括课程设计过程中的学习体会和收获、对c语言和本次课程设计的认识以及自己的建议等内容。
书写格式严格按所附要求书写。
附1:
●课程设计报告装订顺序:
封面、任务书、目录、正文、评分、附件(A4大小的图纸及程序清单)。
●正文的格式:
一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。
●正文的内容:
一、课题的主要功能;二、课题的功能模块的划分(要求画出模块图);三、主要功能的实现(至少要有一个主要模块的流程图);四、程序调试;五、总结;六、附件(所有程序的原代码,要求对程序写出必要的注释)。
正文总字数要求在5000字以上(不含程序原代码)。
一.封面-------------------------------------------------------------------------1
二.前言--------------------------------------------------------------------------2
三.课程要求--------------------------------------------------------------------3
四.需要分析--------------------------------------------------------------------7
五.详细设计--------------------------------------------------------------------8
六.流程图---------------------------------------------------------------------10
七.调试分析-------------------------------------------------------------------12
八.心得体会------------------------------------------------------------------13
九.附录(源程序清单)----------------------------------------------------14
【需要分析】
课题三:
电子英汉词典设计
一、问题描述:
英汉词典作为一个常用的学习工具,是我们经常要使用的。
该系统能完成一个简单的电子英汉词典的功能,如:
单词的查找、增词、删除、修改和维护等工作。
二、功能描述:
1)本词典采用一个包含N个数据的结构体数组,每个数据的结构应当包括:
英文单词、词性、拼读音标、中文(汉语拼音)。
2)对单词和释义字符串长度的限定分别为不少于50个词条。
3)本系统显示这样的菜单:
--------电子英汉词典--------
1、输入新词汇
2、删除词汇
3、查找词汇
4、修改词汇信息
5、退出系统
请选择系统功能项(1…5):
三、算法提示:
1、数据结构:
结构体数组
2、数据库结构:
该系统的基本数据库如下表。
英文词性音标中文1
charcharcharchar
四、测试数据:
要求被选用的词条有50个左右,以中学的单词为主。
对该系统有兴趣的同学可以在实现系统基本功能后,完善系统的其它功能。
【详细设计】
一、总体方案的选定:
在了解该系统的功能后,可以通过运用函数、编译语句、数据类型来实现。
由于数据多,数据结构相似的特点,自然的想到用数组实现数据的存储,且总体数据结构应用文件的数据。
文件类型为结构体数据,数据库结构用文件来实现。
二、概要设计
程序的模块组成及各个函数的功能:
1.程序的模块组成:
主函数:
main();
显示菜单函数:
caidan();
1〕查找单词函数:
chaxun();
2〕删除单词函数:
zhuxiao();
3〕添加单词函数:
在caidan()中;
读取字符函数:
getch();
2.各函数的主要功能:
显示菜单函数:
显示各菜单,并有添加功能。
查找单词函数:
输入需要查找的单词,并输出单词的意思。
删除单词函数:
输入需要的删除的单词,回车就能删除。
三、程序的抽象数据类型定义:
词典的结构体数组:
单词
{单词;
中文解释;
}
四、相关数据类型:
英汉词典结构体数组structhk{
Charzhang[11];/*单词的长度,限度10个字母*/
Charmi[22]/*中文解释的长度,限度10个汉字*/
structhknext;/*建立链表用的后指针*/
}
【流程图】
(1)统计函数的下属子功能函数及调用示意图:
(2)函数的下属子功能函数及其调用示意图:
【调试分析】
1、程序编译成功之后开始调试:
1)根据提示将单词“word”添加入库,在效果查看中存在该单词则添加成功。
2)对词进行保存
3)对存在的单词进行删除,在效果查看中不存在该单词则删除成功。
4)对已经存在的单词查询,能查询到则说明单词保存成功。
2.对结果进行分析:
只对单词进行表面删除,而实质上并未删除。
应该将该链表中对应的该单词的节点删除。
【心得体会】
课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说是无处不在。
因此,作为二十一世纪的大学生来说掌握计算机开发技术是十分重要的。
回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,经过一周的课程设计,我学到了许多,不仅巩固了以前所学过的知识,而且学到了很多在书上所没有学到过的知识,使我自己对C语言有了重新的认识,觉得它十分的重要,但掌握它又不是一件容易的事。
只要通过自己不停的思考,不断的上机实践。
才能够比较熟练的掌握好,在其中我们遇到了比较多的困难,因为其中有些知识我们并没有学到过,要自己去查找资料来完成。
在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次做的,难免会遇到各种各样的问题,同时在设计过程中发现了自己的不足之处,对以前的所学过的知识理解的不够深刻,掌握的不够牢固,比如说结构体……通过这次课程设计之后,觉得以前学过的知识要重新温习。
刚开始听说我们要设计英汉字典时心里没有一点底,毕竟C语言才刚学一学期就要编写如此复杂的应用程序。
但参考了许多资料和与几个有经验的学长们讨论后,编写思路漫漫清楚,开始了解它的基本方式和操作方法。
在不太熟悉的部分,我们能够充分体会到自己的自学能力,并发挥它,以及在设计过程中的团队作用,提高自己解决问题的能力。
在设计程序是也增加了自己的实践能力,通过翻阅有关文献获得了些自己原来不了解的知识。
从接触C语言到了解C语言是一个过程,是自身学习的过程。
俗话说师傅领进门,修行靠自身。
在编写过程中遇到的不解和麻烦都基本上是通过自身的反复琢磨和学长的帮助而解决的。
通过这段时间的课程设计,我认识到C语言是一门比较难的课程。
需要多花时间上机练习,这次的程序训练培养了我的实际分析问题的能力,实际编程能力。
随着程序的一步步完善,自己也在慢慢进步,达到了预期目的。
这次课程设计终于完成了,在设计中遇到了许多的问题,但在王颖老师的指导下,终于解决,同时在王颖老师的身上我学到了很多实用的知识。
在此我表示感谢!
同时,对给过我帮助的所有同学和各位指导老师再次感谢。
【附录】
源程序清单:
#include"Stdio.h"
#include"Conio.h"
typedefstruct
{
charci[20];
charyi[40];
}Dict;/*定义数据结构*/
Dictdict[200];/*一共存储200个单词*/
voidinit()/*程序初试化*/
{
inti;
FILE*fp;
for(i=0;i<200;i++)
{
memset(dict[i].ci,'\0',20);/*把全部单词清0*/
memset(dict[i].yi,'\0',40);
}
fp=fopen("lnlh.dat","rb");/*从lnlh.dat文件里读出数据*/
for(i=0;i<200;i++)
{
fread((char*)&dict[i],60,1,fp);
}
fclose(fp);
}
voidfind()/*查找一个单次*/
{
inti;
chartemp[20];
clrscr();
printf("pleaseinputaword:
");/*请求输入*/
scanf("%s",temp);
for(i=0;i<200;i++)
if(strcmp(temp,dict[i].ci)==0)/*如果找到*/
{
printf("\n\n%s:
%s",dict[i].ci,dict[i].yi);/*则显示*/
printf("\n\npressanykeytoreturn");
getch();
return;
}
printf("\n\nnotfound");/*如果没找到,显示notfound*/
getch();
return;
}
voidadd()/*追加一个数据*/
{
inti,j;
chartemp[20];
chartemp1[40];
clrscr();
for(i=0;i<200;i++)
{
if(!
(*dict[i].ci))/*先找到一个空位*/
{
printf("\n\npleaseinputtheword:
");
scanf("%s",temp);
for(j=0;j<200;j++)
/*找到空位后,输入单词,判断单词是否存在*/
if(strcmp(temp,dict[j].ci)==0)
{
printf("\n\nthewordisalreadystore\n\n");
/*如果存在,则提示存在,并退出*/
printf("pleaseanykeytoreturn");
getch();
return;
}
printf("\n\npleaseinputthemean:
");/*输入意思*/
scanf("%s",temp1);
strcpy(dict[i].ci,temp);
strcpy(dict[i].yi,temp1);
return;
}
}
printf("\n\nsorry,thedataisfull");/*如果没有空位,显示full*/
}
voiddel()/*删除*/
{
inti;
chartemp[20];
clrscr();
printf("\n\npleaseinputtheword:
");/*先输入*/
scanf("%s",temp);
for(i=0;i<200;i++)
if(strcmp(temp,dict[i].ci)==0)/*如果找到*/
{
memset(dict[i].ci,'\0',20);/*对其进行清空操作*/
memset(dict[i].yi,'\0',40);
printf("\n\nsuccess,pressanykeytoreturn");
getch();
return;
}
printf("\n\nnotfound");/*如果没找到,显示notfound*/
getch();
return;
}
voidmodify()/*修改*/
{
inti;
chartemp[20];
chartemp1[40];
clrscr();
printf("\n\npleaseinputtheword:
");/*输入*/
scanf("%s",temp);
for(i=0;i<200;i++)
if(strcmp(temp,dict[i].ci)==0)/*如果找到单词*/
{
printf("\n\nfound\n\n");
printf("%s:
%s\n\n",dict[i].ci,dict[i].yi);
printf("\n\npleaseinputthenewmean:
");
scanf("%s",temp1);/*输入意思,并替换*/
strcpy(dict[i].yi,temp1);
printf("\n\nsuccess,pleaseanykeytoreturn");
getch();
return;
}
printf("\n\nnotfound");/*如果没找到,显示notfound*/
getch();
return;
}
voidview()/*浏览*/
{
inti,j;
clrscr();
for(i=0,j=0;i<200;i++)
{
if(*dict[i].ci!
='\0')
{
j++;
printf("%s:
%s\n",dict[i].ci,dict[i].yi);
if(j==20)/*分页显示,每页显示20个*/
{
j=0;
printf("\npreaseanykeytopagedown");
getch();
clrscr();
}
}
}
printf("\n\nthat'sall");
getch();
}
voidstore()/*保存到文件*/
{
inti;
FILE*fp;
fp=fopen("lnlh.dat","wb");/*打开一个文件*/
for(i=0;i<200;i++)
{
fwrite((char*)&dict[i],60,1,fp);
}
fclose(fp);
printf("\n\nstoresuccess\n\n");/*提示保存成功*/
getch();
}
intmain(void)
{
charkey;
init();
while
(1)/*循环显示*/
{
clrscr();
printf("\n\n\n电子英汉词典设计\n\n");/*显示操作功能*/
printf("1、查找\n\n");
printf("2、增加\n\n");
printf("3、删除\n\n");
printf("4、修改\n\n");
printf("5、浏览\n\n");
printf("6、维护\n\n");
printf("7、结束\n\n");
key=getch();
switch(key)/*判断键盘输入*/
{
case'1':
find();break;
case'2':
add();break;
case'3':
del();break;
case'4':
modify();break;
case'5':
view();break;
case'6':
store();break;
case'7':
return0;/*实现对应功能*/
}
}
return0;
}
_
参考资料
《C语言程序设计案例教程》张基温编著清华大学出版社
《C语言程序设计案例分析》人民邮电出版社
《C程序设计(第三版)》谭浩强著清华大学出版社
《C语言程序设计方法》邓文新张宏烈著哈尔滨工业大学出版社
《C语言程序设计》北京邮电大学出版社
应用技术学院课程设计评分表
课程名称:
电子英汉词典设计
项目
评价
设计方案的合理性与创造性
设计与调试结果
设计说明书的质量
答辩陈述与回答问题情况
课程设计周表现情况
综合成绩
教师签名:
日期:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电子 英汉词典 设计 系统