C语言电子词典学习.docx
- 文档编号:23124388
- 上传时间:2023-05-08
- 格式:DOCX
- 页数:19
- 大小:174.57KB
C语言电子词典学习.docx
《C语言电子词典学习.docx》由会员分享,可在线阅读,更多相关《C语言电子词典学习.docx(19页珍藏版)》请在冰豆网上搜索。
C语言电子词典学习
C语言课程设计
设计题目电子英汉字典
学院
专业
年级
姓名
指导教师
职称
1.设计内容要求3
1.
设计内容要求
1.1.课程设计目的
全面熟悉、掌握C语言基本知识,增强对不同的问题运用和灵活选择合适的数据结构以及算法描述的本领,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,养成提供文档资料的习惯和规范编程的思想,为后继课程(数据结构、数据库和汇编语言等课程)的实验以及课程设计打下较扎实的基础。
1.2.课程设计课题
电子英汉词典设计
1.3.课程设计要求
掌握结构化程序设计的主体思想,以自顶向下逐步求精的方法编制程序解决一些实际的中型问题,为将来开发软件积累一些典型的案例处理经验。
具体要求如下:
⑴设计课题题目:
每位同学根据自己学号除以8所得的余数加一选择相应题号的课题。
原则上不予换提,私自换题者不记成绩。
⑵根据自己对应的课题完成以下主要工作:
①完成系统需求分析:
包括系统设计目的与意义;系统功能需求;输入输出的要求。
②完成系统概要设计:
程序由哪些模块组成以及模块之间的层次结构、各模块的调用关系;每个模块的功能;课题涉及的数据结构和数据库结构;即要存储什么数据,这些数据是什么样的结构,它们之间有什么关系等。
③完成系统详细设计:
包括采用C语言定义相关的数据类型;写出各模块的类C码算法;画出函数的调用关系图
④调试分析、设计体会、测试数据:
准备典型的测试数据和测试方案,包括正确的输入及输出结果和含有错误的输入及输出结果;程序调试中遇到的问题以及解决问题的方法;课程设计过程经验教训、心得体会。
⑤关键源程序(带注释)
2.设计课题
2.1问题描述
英汉词典作为一个常用的学习工具,是我们经常要使用的。
该系统能完成一个简单的电子英汉词典的功能,如:
单词的查找、增词、删除、修改和维护等工作。
2.2功能描述
1 在计算机中建立有限规模的电子英汉词典(文件),利用程序实现电子英汉词典的查找、增词、删除、修改和维护工作。
2 词典的内容为:
每行对应一个词条,每个词条由两个字符串组成,字符串用若干空格符分开;前一个是单词字符串(英文),后一个是释义字符串(中文),使用分号作为多个释义的分隔符(无空格)。
3 对单词和释义字符串长度的限定分别为不少于20个与40个字符,词条数限定为不多于200条。
4 采用菜单工作方式。
在一个操作执行之后,程序询问是否继续执行该操作。
如输入Y或y,则重复同一操作,不退回到菜单;如输入其它信息,则回到菜单等待另一次选择。
仅当选择退出操作时,程序应询问是否将修改后的词典存盘,并根据用户选择存盘退出或不存盘退出。
5 要求整个设计以人为本,用户界面友好。
2.3算法提示
1 数据结构:
结构体数组
2 简单的程序设计
3 友好的窗口菜单的设计
2.4测试数据
要求被选用的词条有200个左右,以中学的单词为主。
3.系统需求分析
目的与意义:
电子英汉词典的发展使得语言的载体、查检和阅读方式发生了根本的变化。
电子英汉词典有着传统文本词典无法比拟的优越性:
多种多样的检索方式、便利的查询窗口、灵活的显示界面和连续的参见功能,无一不体现这种知识媒体的智能化和人性化特色;电子多媒体在词典中的应用,更使得单调、呆板的词典变得形象生动在词典中获取知识变得轻松和快捷
系统功能:
用户可以通过本系统查询单词以及释义,修改,新增以及删除词条。
用户在使用电子词典的时候,有可能会使用电子词典的查询功能,也有可能使用电子词典的轻松背单词功能,当用户需要查询的时候,系统必须提供这个单词的所有信息,以便与用户获得所需要的信息;可以自定义单词,使用户自己可以新增词条,扩充词库。
输入与输出的要求:
当用户使用查询功能时,系统必须显示词条与释义;当用户觉得本词条存在不足,需要修改时,系统必须提供修改的词条与释义,以及用户输入的内容,修改完成时,提示按确认结束,删除单词时显示要删除的词条与释义,以及词条已删除。
4.功能设计
各功能模块实现:
4.1菜单显示
intmain(intargk,char*argh[])
{
intm=0;
if(argk>1)
strcpy(fileDict,argh[1]);
else
strcpy(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;}
4.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);
}
4.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.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");
}
4.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");}
5.系统调试
进入菜单界面后,出现“欢迎使用电子英汉词”;然后有5个选项:
1查询词条
2新增词条
3删除词条
4修改词条
5退出词典。
输入1,按回车键,输入你想查询的词条,如果系统里存在你要查询的单词,就会输出词条与释义,如果没有,会显示“sorrydonotfindwhatyouwant!
”,。
输入2,按回车键,输入你想要新增词条,输入你要新增的单词,如“cat”,按回车输入释义“猫”,如果系统存在本词条,则会输出“sorrydonotfindwhatyouwant!
”。
输入3,按回车键,输入你想删除的词条,按回车会输出词条已删除。
输入4,按回车键,输入你想修改的词条,按回车,输入释义。
如果放弃修改则输入“drop”。
输入5,退出词典。
6.结果分析
本设计由4个子函数和一个主函数组成,所用到的主要是结构体数组,以及函数的声明,调用,定义。
本系统的词库有初中200多个词条,能在查询的同时记忆和学习,也能把自己想要的词条给新增进本系统,扩大词库,同时可以把自己记得很熟悉的单词给删除掉,也能修改词库中的词条,友好美观的界面设计。
但也存在不足之处,在查询词条后,按任意键会退出词典,这点还需要改进。
在进行其他功能完成后,按任意键不会退出系统。
7.课程总结
本次程序设计我设计的为电子英汉词典,设计过程中遇到的很多问题与麻烦,通过向同学请教与讨论后基本得到了解决,让我明白了团结的力量是巨大的,平时遇到问题要勇于与同学们和老师讨论,这样才能共同进步与学习,也只有这样才能进步的更快,同时也要敢于相信自己的主见,也要考虑别人的想法和意见,不能一味的接受或者排斥,同时也不能太骄傲自大,要谦虚的向老师与同学请教,只有这样我才能不断的进步,太闭守只有落后的结局,因此要时刻提醒自己一山还比一山高,要时刻保持一颗谦虚的心。
8.附:
源程序
#include
#include
#include
#defineszWORD50
#defineszSTRN200
#defineszProjectsizeof(structDictionary)
charfileDict[szSTRN];
typedefstructDictionary{
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);
voidAppend(void);
voidDelete(void);
voidUpdate(void);
intmain(intargk,char*argh[]){
intm=0;
if(argk>1)
strcpy(fileDict,argh[1]);
else
strcpy(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);
printf("pleaseinputtheword?
youwant:
");
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);
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);
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");
}
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");
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 电子词典 学习