电子英汉词典设计1.docx
《电子英汉词典设计1.docx》由会员分享,可在线阅读,更多相关《电子英汉词典设计1.docx(16页珍藏版)》请在冰豆网上搜索。
电子英汉词典设计1
一、课程设计的内容
电子英汉词典设计
一、问题描述:
英汉词典作为一个常用的学习工具,是我们经常要使用的。
该系统能完成一个简单的电子英汉词典的功能,如:
单词的查找、增词、删除、修改和维护等工作。
二、功能描述:
1、在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。
2、词典的内容为:
每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。
3、对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。
4、采用菜单工作方式。
在一个操作执行之后,程序询问是否继续执行该操作。
如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。
仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。
5、要求整个设计以人为本,用户界面友好。
二、课程设计的要求与数据
1、进一步掌握和利用C语言进行程设计的能力;
2、进一步理解和运用结构化程序设计的思想和方法;
3、初步掌握开发一个小型实用系统的基本方法;
4、学会调试一个较长程序的基本方法;
5、学会利用流程图或N-S图表示算法;
6、掌握书写程序设计开发文档的能力。
三、课程设计应完成的工作
1、编写完成相应题目的程序;
2、编写课程设计报告,课程设计报告的内容应包括以下6个部分:
1)需求分析:
包括设计题目、设计要求以及系统功能需求分析;
2)总体设计:
包括系统总体设计框架和系统功能模块图;
3)详细设计:
包括主要功能模块的算法设计思路以及对应的工作流程图;
4)调试分析过程描述:
包括测试数据、测试输出结果,以及对程序调试过程中存在问题的思考(列出主要问题的出错现象、出错原因、解决方法及效果等,适当的包含结果截图);
5)总结:
课程设计完成了哪些功能,有没有什么扩展功能?
还有哪些地方需要改
进?
课程设计过程中的学习体会与收获、对本次课程设计的认识以及自己的建等内容;
6)附录:
主要源程序代码,含必要的注释。
3、答辩:
在实验室建立程序运行的环境,并在指导教师的监督下,独立解
决问题、运行程序和回答教师提出的问题
四、课程设计进程安排
序号
设计各阶段内容
地点
起止日期
1
下达任务书,说明设计要求;收集资料
实验3#517
6.18
2
总体方案设计、详细设计
实验3#517
6.19
3
编写程序,调试分析
实验3#517
6.20
4
撰写报告并上交,答辩
实验3#517
6.21
五、应收集的资料及主要参考文献
[1]谭浩强.C程序设计(第三版)[M],北京:
清华大学出版社,2005.9
[2]谭浩强.C程序设计题解与上机指导(第三版)[M],北京:
清华大学出版社,2005.7
[3]李春葆曾平刘斌。
C++语言程序设计题典第一版北京清华大学出版社2003年4月
[5]刘振安刘燕君C++程序设计课程设计第一版机械工业出版社2004年8月
发出任务书日期:
2007年6月18日指导教师签名:
计划完成日期:
2007年6月22日基层教学单位责任人签章:
主管院长签章:
1设计目的与要求……………………………………………………………1页码
2总体设计……………………………………………………………………2页码
3详细设计………………………………………………………………2—3页码
3.1功能模块设计……………………………………………………2-3页码
3.1.1查询单词功能模块……………………………………2页码
3.1.1添加单词功能模块……………………………………3页码
3.1.1删除单词功能模块…………………………………………3页码
3.2数据结构设计………………………………………………………3页码
4调试分析……………………………………………4-5页码
5总结………………………………………………………………………6页码
6附录…………………………………………………………………6-10页码
6答辩记录(正文处请留出适当空白)…………………………………11页码
7指导教师意见(正文处请留出十行空白)……………………………11页码
1目的与要求
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力,提高学生项目开发及程序调试能力。
课程设计为学生提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际应用问题进行有机结合,锻炼学生分析、解决实际问题的能力,提高学生项目开发及程序调试能力。
(1)总体要求
①对系统进行功能模块分析、控制模块分析正确;
②系统设计要实用;
③编程简练,可用,功能全面,具有较好的健壮性;
④说明书、流程图要清楚。
(2)课程设计报告要求
①需求和规格说明:
问题描述:
题目要解决的问题是什么?
②设计
⊕设计思路:
主要算法思想。
⊕总体设计:
程序设计组成框图、N-S流程图。
⊕详细设计:
模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描
述等)。
③调试与测试:
调试过程中遇到的主要问题,是如何解决的;对设计和编码的回顾讨论
和分析;改进设想;经验和体会等。
④附录:
源程序清单和结果。
如果题目规定了测试数据,则结果要包含这些测试数据和
运行输出,当然还可以含其他测试数据和运行输出;清单中应有足够的注释。
页码1
2总体设计
3详细设计
(内容可以适当调整,清晰的有条理的把你的设计思路表达出来)
3.1功能模块设计
3.1.1查询单词功能模块
页码2
3.1.2添加单词功能模块
3.1.3删除单词功能模块
3.2数据结构设计
1.建立单词数据库(包含英文单词、中文意思解释)
2.用fopen函数访问单词数据库文件。
3.还用到标准的输出输入函数,按需输出输入或删除数据。
页码3
4调试分析
查询单词:
输入:
preciatian
屏幕显示:
输出结果:
sorrydonotfindwhatyouwant
二
添加单词:
选择2功能
输入你想添加的单词:
Hello
输入它的意思:
你好
屏幕显示:
页码4
输出结果是:
addwordsuccess
三:
删除单词:
输入你想要删除的单词:
Hello
屏幕显示:
输出结果是:
deletewordsuccess页码5
5总结
虽然这次的课程设计有些功能实现的不是很好,总的来说这次课程设计效果还是可以的,在短短的两天时间内,我们看的书的数量是非常多的,很多没见过的函数都学了,但是自学确实是很难,很多函数虽然用的语法没错,但是不能应用自如,为自己所用。
这只能说明自己还需加把努力,希望在以后的学习中得到大的进步。
通过课程设计使握进一步掌握和利用C语言进行程设计的能力;进一步理解和运用结构化程序设计的思想和方法;初步掌握开发一个小型实用系统的基本方法;学会调试一个较长程序的基本方法;而且通过这次课程设计让我学会了认真的精神态度是多么的重要,认真思考对学习的重要性。
这个程序完全是个人所做,望老师给以批评和建议!
7.附录
#include
#include
#include
#include
#include
voidSearch()/*查找单词*/
{FILE*fp;
charinsert[20];
charword[40];
printf("Pleaseinputthewordyouwant:
\n");
ges(insert);
fp=fopen("wordcage","r");
if(fp==NULL);/*没有找到文件*/
{printf("\n\nSorrydonotfindwhatyouwant.\n\n");
fclose(fp);
return;
}while(!
feof(fp))/*查询单词词库*/
{fread(&wordcage,sizeof(wordcage),1,fp);
printf("%s",word);页码6
}
fclose(fp);
}
voidaddword()/*添加单词*/
{
FILE*fp;
fp=fopen("wordcage","r");/*以读方式打开文件*/
if(fp==NULL)
fp=fopen("wordcage","w");/*以写方式打开文件*/
else/*如果有单词添加*/
{fclose(fp);
fp=fopen("wordcage","a");/*以追加方式打开文件*/
}
charinsert[20];
printf("Inserthenewword:
\n");
gets(insert);
printf("Givinigthemeaning:
\n");
scanf("%s",word);
fclose(fp);
printf("\n\naddwordsuccess.\n\n");
}
voidworddel();
{
FILE*fp;
Word*head,*p,*q;
charword[20];
fp=fopen("Wordcage","rb");/*读方式打开文件*/
if(fp==NULL)
{
printf("Error!
");页码7
fclose(fp);
return;
}
head=p=q=(Word*)malloc(sizeof(Word));/*将文件内容放入链表*/
while(!
feof(fp))
{
q=p;
p=(Word*)malloc(sizeof(Word));
fread(p,sizeof(Word),1,fp);/*读记录*/
q->next=p;/*新记录插入到链表的尾*/
}
p->next=NULL;/*最后一个结点的后继为空*/
fclose(fp);
clrscr();
printf("Inputtheword:
");/*输入要删除的单词*/
gets(word);/*输入单词*/
p=head;
while(p!
=NULL)/*按名字查找要删除的图书*/
{
if(strcmp(p->name,word)==0)/*找到要删除的单词*/
{
if(p==head)/*如果是第一个结点*/
head=head->next;
else
q->next=p->next;/*不是第一个结点*/
break;
}
q=p;/*指针后移*/
p=p->next;
}页码8
fp=fopen("Word.txt","wb");/*删除后从链表的头开始重新保存*/
while(head!
=NULL)
{
fwrite(head,sizeof(Word),1,fp);/*块写*/
head=head->next;
}
fclose(fp);
clrscr();
}
voidcleanscrean()
{
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
}
intmain()
{
intnumble;
MENU:
printf("**************MENU***************\n\n");/*显示主菜单*/
printf("<<<<1EnglishtoChinese>>>>\n\n");
printf("<<<<2Inserthewordyouwanttoadd>>>>\n\n");
printf("<<<<3Deltheexistedword>>>>\n\n");
printf("<<<<4Cleanthescreen>>>>\n\n");
printf("<<<<5modifytheexistedword>>>\n\n");
printf("<<<<6protectthesystem>>>>\n\n");
printf("<<<<7Exitthesystem>>>>\n\n");
printf("**********************************\n");
do{
printf("Pleasechoiceform1to7:
\n");/*选择你所要的功能*/
scanf("%d",&numble);
}页码9
while(numble<0||numble>8);
switch(numble)
{
case1:
Search();
gotoMENU;
case2:
addword();
gotoMENU;
case3:
worddel();
gotoMENU;
case4:
cleanscrean();
return0;
case5:
break;
case6:
gotoMENU;
break;
case7:
break;
}
return0;
}
页码10
7答辩记录
序号
问题
回答
1
2
3
4
5
8指导教师意见
指导教师签名:
页码11