英汉小词典课程设计报告.docx
- 文档编号:15290926
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:17
- 大小:53.60KB
英汉小词典课程设计报告.docx
《英汉小词典课程设计报告.docx》由会员分享,可在线阅读,更多相关《英汉小词典课程设计报告.docx(17页珍藏版)》请在冰点文库上搜索。
英汉小词典课程设计报告
英汉小词典课程设计报告
学号
2012-2013学年第二学期
〈〈高级语言程序设计》
课程设计报告
题目:
英汉小词典
专业:
计算机科学与技术
班级:
计科2班
姓名:
XXXX
指导教师:
XXX
成绩:
计算机与信息工程系
2013年06月28日
1设计内容及要求3
1.1设计内容3
1.2设计任务及具体要求3
2概要设计4
2.1系统功能简介4
2.2总体设计框图4
3设计过程或程序代码5
3.1对关键代码加以分析说明5
3.2程序运行界面10
4程序设计结果与分析12
5心得13
致谢13
参考文
献13
附录:
源程序14
英汉小词典
1设计内容及要求
1.1设计内容
(1)、在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查询、增词、删除、修改和维护工作。
(2)、词典的内容为:
每行对应一个词条,每个词条由两个字符申组成,字符申用若十空格符分开;前一个是单词字符申(英文),后一个是释义字符申(中文),使用分号作为多个释义的分隔符(无空格)。
(3)、对单词和释义字符申长度的限定分别为不少于20个与40个字符,词
条数限定为不多于200条。
(4)、采用菜单工作方式。
在一个操作执行之后,程序询问是否继续执行该操作。
如输入A或a,则重复同一操作,不退回到菜单;如输入其它信息,
则回到菜单等待另一次选择。
仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。
1.2设计任务及具体要求
主要利用c语言的文件操作能力设计开发一个英汉小词典,至少具有如下功能:
查询、删除、增词、修改单词。
操作界面要符合用户的一般习惯,图形或文本界面都可以。
要求:
明确课程设计的目的,能根据课程设计的要求,查阅相关文献,为完成设计准备必要的知识;提高学生用高级语言进行程序设计的能力,重点提高用C语言进行文件操作和绘图应用的编程技术水平;初步了解软件开发的一股方法和步骤;提高撰写技术文档的能力。
2概要设计
2.1系统的功能简介
用户可以通过本系统查询单词以及释义,修改,新增以及删除词条。
用户在使用电子词典的时候,有可能会使用电子词典的查询功能,也有可能使用电子词典的轻松背单词功能,当用户需要查询的时候,系统必须提供这个单词的所有信息,以便与用户获得所需要的信息;可以自定义单词,使用户自己可以新增词条,扩充词库。
输入与输出的要求:
当用户使用查询功能时,系统必须显示词条与释义;当用户觉得本词条存在不足,需要修改时,系统必须提供修改的词条与释义,以及用户输入的内容,修改完成时,提示按确认结束,删除单词时显示要删除的词条与释义,以及词条已删除。
2.2总体程序框图
图A总体设计
图B详细设计
3设计过程或程序代码
3.1对关键代码加以分析说明
(1)菜单显示:
intmain(intargk,char*argh[])
intm=0;
if(argk>1)strcpy(fileDict,argh[1]);
elsestrcpy(fileDict,"c:
\\dict.txt");
for(;;)
(
printf("\n\-欢迎使用电子英汉小词典!
\n\\n\-1-查询词条\n\-2-新增词条
\n\-3-删除词条\n\-4-修改词条\n\-5-退出词典
\n\\n");
m=getchar()-'0';
switch(m)
(
case1:
Search();break;
case2:
Append();break;
case3:
Delete();break;
case4:
Update();break;
default:
return0;
}
}
return0;
}
(2)查询词条:
voidSearch(void)
(
Projecti;
fpos_tp=0;
memset(&i,0,szProject);
printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,i.mean);
if(p==0)
{
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
printf("单词:
%s\n释义%s",i.word,i.mean);
}
(3)新增词条:
voidAppend(void)
{
Projecti;
FILE*f=0;
fpos_tp=0;
memset(&i,0,szProject);
printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,0);
if(p)
{
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
printf("pleasegivingthemeaning,按确认结束");
fflush(stdin);
gets(i.mean);
f=fopen(fileDict,"ab");
fwrite(&i,szProject,1,f);
fclose(f);
printf(-词条已新增\n");
}
(4)删除词条:
voidDelete(void)
{
Projecti;
FILE*f=0;
fpos_tp=0;
memset(&i,0,szProject);
printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,0);
if(p==0)
{
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
p--;
memset(&i,0,szProject);
f=fopen(fileDict,"rb+");
fsetpos(f,&p);
fwrite(&i,szProject,1,f);
fclose(f);
printf("词条已删除\n");
}
(5)修改词条:
voidUpdate(void)
{
Projecti;
FILE*f=0;
fpos_tp=0;
memset(&i,0,szProject);
printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,0);
if(p==0)
{
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
p--;
printf("pleasegivingthemeaning,按确认结束(输入drop放弃修
改):
");
fflush(stdin);
gets(i.mean);
if(strstr(i.mean,"drop"))
(
printf("已放弃修改!
\n");►
return;
}
f=fopen(fileDict,"rb+");
fsetpos(f,&p);
fwrite(&i,szProject,1,f);
fclose(f);
printf("词条已保存\n");
}
3.2程序运行界面
进入菜单界面后,出现“欢迎使用电子英汉词”;然后有5个选项:
1查询词条,2新增词条,3删除词条,4修改词条,5退出词典。
输入1,按回车键,输入你想查询的词条,如果系统里存在你要查询的单词,
C1-I;\j^^2tERr^lZOB010ZD4VDebua
欢迎使用电子英汉小词典?
司旬司司司Tr¥Tr»T>Tt
改出
查新删偃退
-----
12345
pleaseinputtlieuant:
dog
单词:
dog
弄义狗
-欢迎使用电子英汶小词典!
词祠词祠祠
改出查新删侮退-----_____
输入2,按回车键,输入你想要新增词条,输入你要新增的单词,如“cat”,按回车输入释义“猫”,如果系统存在本词条,则会输出“sorrydonotfindwhatyouwant!
”
输入3,按回车键,输入你想删除的词条,按回车会输出词条已删除。
一一一词词词词词一出一查新删修退_-----
-12-345_
pleaseinput;上lieucpdlyouv^aint"词条已删除
-欢迎使用电子英汉小词麴
输入4,按回车键,输入你想修改的词条,按回车,输入释义。
如果放弃修改则输入“drop”。
m"I:
'计科N既除云12080102O4\Debug\英汉』
-欢迎便用电子英汉小黄典,
-#n一词词伺伺词一询出一查新删修退----H--12345_____
plaiceinpu€uo>*dyouuant~dlogr
pleAscgiuingthem碧加ing*技确认IS■束〈输入drop放弃修改
饲条己葆存
-欢迎使用电子英汉小祠典,
nW-黄伺伺词词一询^改出一查新删修退一---H--£2345-一」-L-■
Jdw
■H
输入5,退出词典。
4程序设计结果与分析
当把程序写好并进行调试时,并不是一帆风顺的,总会遇到很多在调试时遇到的错误。
1.首先在定义函数时,不能输入汉字。
否则会程序会显示错误。
2.如果要调用查询函数,增词函数,删除函数,修改函数等要在主函数前面进行申明,否则会显示警告。
3.如果程序在运行的过程中,对于一个循环语句,如果你返回的值始终是真的,那么程序将进如死循环。
4.对应该有花括弧的复合语句,忘记加花括弧。
5.所调用的函数在调用语句之后才定义,而乂在调用前未加说明。
5心得
在本课程设计的设计过程中,我体会到了从事C语言课程设计工作需要严
谨、认真的态度和作风,半点都不能马虎。
每个细微的小细节都必须十分注意,如果不认真思考,就会出现或大或小的错误。
如果没有发现前面的错误,对后面的工作影响就会很大,甚至有时会推倒很多前面做的工作。
有时候,我自己觉得我写的程序非常正确,但就是编译通不过,在查询错误的过程中,面临着否认自己的过程,感觉很痈苦。
在设计过程中遇到的很多问题与麻烦,通过向同学请教与讨论后基本得到了解决,让我明白了团体的力量是巨大的,平时遇到问题要勇于与同学们和老师讨论,这样才能共同进步与学习,也只有这样才能进步的更快,同时也要敢于相信自己的主见,也要考虑别人的想法和意见,不能一味的接受或者排斥,同时也不能太骄傲自大,要谦虚地向老师与同学请教,只有这样我才能不断的进步。
在反反复复的学习中,我终于作出一个简单的程序,虽然这个程序的功能非常简单,而且在实际运用中还有些不足,比如:
在查询词条后,按任意键会退出
词典,这点还需要改进。
在进行其他功能完成后,按任意键不会退出系统。
致谢
在这次C语言课程设计中,我的老师和同学给了我及大的帮助。
特别是我的指导老师孙淮宁老师,还有我的C语言任课老师徐宁老师。
在此,我对他们表示感谢!
感谢他们在我面对困难时给了我帮助和支持。
也感谢那些给我帮助的所有同学!
参考文献:
【1】谭浩强.C程序设计(第三版).活华大学出版社.2005年:
P219~P363
【2】胡超、闫玉宝.30天学通VisualC++项目案例开发.电子工业出版社.2009
年:
P228~P273
附录:
源程序
#include
#include
#include
#defineszWORD50
#defineszSTRN200
#defineszProjectsizeof(structDictionary)
charfileDict[szSTRN];
typedefstructDictionary/*声明新结构体类型名为Project*/
{
charword[szWORD];
charmean[szSTRN];
}Project;
fpos_tconsult(char*word,char*mean)
{
FILE*f=0;
Projecti;
intr=0;
fpos_tp=0;
if(!
word)return0;
f=fopen(fileDict,"rb");/*以读的方式打开二进制文件*/
if(!
f)return0;
while(!
feof(f))/*指针是否指导文件末尾*/
{
fgetpos(f,&p);
r=fread(&i,szProject,1,f);/*读入数据的存放地址*/if(r<1)break;if(i.word[0]==0)continue;
if(strcmp(i.word,word))continue;
if(mean)strcpy(mean,i.mean);
fclose(f);/*关闭文件*/returnp+1;
}
fclose(f);/*关闭文件*/
return0;
}
voidSearch(void);/*对Search函数进行函数声明*/
voidAppend(void);/*对Append函数进行函数声明*/
voidDelete(void);/*对Delete函数进行函数声明*/
voidUpdate(void);/*对Update函数进行函数声明*/intmain(intargk,char*argh[])/*主菜单显示*/
{
intm=0;
if(argk>1)strcpy(fileDict,argh[1]);/*文件复制*/
elsestrcpy(fileDict,"c:
\\dict.txt");/*文件复制*/
for(;;)
{
printf("\n\-\n\-欢迎使用电子英汉小词
典!
\n\\n\-1-查询词条\n\-2-新增词条\n\-3-删除词条\n\-4-修改词条
\n\-5-退出词典\n\\n");
m=getchar()-'0';
switch(m)
{
case1:
Search();break;
case2:
Append();break;
case3:
Delete();break;
case4:
Update();break;
default:
return0;
}
}
return0;
}
voidSearch(void)/*查询词条*/
{
Projecti;
fpos_tp=0;
memset(&i,0,szProject);/*将结构体szProject的指定位置活零*/
printf("pleaseinputthewordyouwant:
");
scanf("%s”,i.word);
p=consult(i.word,i.mean);
if(p==0)
{
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
printf("单词:
%s\n释义%s",i.word,i.mean);
}
voidAppend(void)/*新增词条*/
{
Projecti;
FILE*f=0;
fpos_tp=0;
memset(&i,0,szProject);/*将结构体szProject的指定位置活零*/
printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,0);if(p){
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
printf("pleasegivingthemeaning,按确认结束");
fflush(stdin);/*活除标准输入设备(本程序中指键盘)的缓存*/
gets(i.mean);
f=fopen(fileDict,"ab");/*以向文件末尾添加数据的方式打开文件*/
fwrite(&i,szProject,1,f);/*输出数据的地址*/
fclose(f);/*关闭文件*/printf(-词条已新增\n");
}
voidDelete(void)/*删除词条*/
{
Projecti;
FILE*f=0;
fpos_tp=0;
memset(&i,0,szProject);/*将结构体szProject的指定位置活零*/
printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,0);
(
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
P--;
memset(&i,0,szProject);/*将结构体szProject的指定位置活零*/
f=fopen(fileDict,"rb+");/*以读写的方式打开二进制文件*/
fsetpos(f,&p);
fwrite(&i,szProject,1,f);/*输出数据的地址*/
fclose(f);/*关闭文件*/
printf("词条已删除\n");
}
voidUpdate(void)/*修改词条*/
(
Projecti;
FILE*f=0;
fpos_tp=0;
memset(&i,0,szProject);/*将结构体szProject的指定位置活零*/printf("pleaseinputthewordyouwant:
");
scanf("%s",i.word);
p=consult(i.word,0);
if(p==0)
(
printf("sorrydonotfindwhatyouwant!
\n");
return;
}
p--;
printf("pleasegivingthemeaning,按确认结束(输入drop放弃修改):
");
fflush(stdin);/*活除标准输入设备(本程序中指键盘)的缓存*/
gets(i.mean);
if(strstr(i.mean,"drop"))
(
printf("已放弃修改!
\n");
return;
}
f=fopen(fileDict,"rb+");/*以读写的方式打开二进制文件*/
fsetpos(f,&p);
fwrite(&i,szProject,1,f);/*输出数据的地址*/
fclose(f);/*关闭文件*/
printf("词条已保存\n");}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 英汉 词典 课程设计 报告