当前位置:编程学习 > C/C++ >>

交互式字典 C++编程

设计:交互式字典

编写一个程序,实现具有如下功能的交互式字典:

(1)可以查询每个单词的解释。例如:输入“Hello”将显示意思“a greeting”。

(2)能够加入新的单词和解释。

(3)能够删除单词和解释。

(4)将所有单词和解释保存在一个文件中,程序运行时可以读取。

提示:编写一个单词类、一个字典类(包含查询单词的解释、增加单词和解释、删除单词和解释和从文件读取字典以及将字典保存到文件等方法)。

其中,涉及到文件的读写,这里给出包含的头文件和主要的方法:

#include <fstream.h>

#include <string.h>

#include <iostream.h>

//读文件用到的方法

fstream file;

file.open("data.txt",ios::in);//以读方式打开文件data.txt

file.eof() 判断文件是否读完

file.getline(char *line, int n)

getline方法用于从文件里读取一行字符。其中,第一个参数line是一个指向字符串的字符指针或存放字符串的字符数组,n表示本次读取的最大字符个数。

//写文件用到的方法

file.open("data.txt",ios::out);//以写方式打开文件data.txt

file.write(char *line, int n)

write方法用于向文件写一行字符。其中,第一个参数line是一个指向字符串的字符指针或存放字符串的字符数组,n表示本次写的字符个数。

file.put(char c), put方法用于向文件写一个字符。

file.close();//关闭文件 ,不论读或写文件,使用完后需要关闭文件。

答案:#include"dictionary.h"
const int size=30;

/*******************公有部分***********************/
dictionary::dictionary()//如果记录为空,创建一个*作为结尾
{
text.open("dictionary.dat",ios::in|ios::out);
if(text.eof())
text<<"* ";

text.close();
}

void dictionary::findWord()
{
cout<<"请输入所要查询的单词."<<endl;
string word;
cin>>word;
text.open("dictionary.dat",ios::in);//打开一个文件作读操作
int i=0;
while(1)
{


string temp;
text>>temp;
if(temp=="*")//在数据的末尾加上*表示文件结束
{
cout<<"未找到该单词."<<endl;
break;
}
if(word==temp)
{
cout<<"释义:";
do
{
text>>temp;
if(temp=="%")//在释义末尾加上%表示释义结束
break;
cout<<temp<<" ";
}while(temp!="%");
cout<<endl;
}
if(temp=="%")
break;
i+=size;
text.seekg(i,ios::beg);
}
text.close();
}

void dictionary::insertWord()
{
cout<<"输入你所要添加的单词."<<endl;
string word;
cin>>word;

cout<<"输入你添加单词的释义."<<endl;
string paraphrase;
cin.ignore();
getline(cin,paraphrase);
cout<<paraphrase<<endl;

text.open("dictionary.dat",ios::in|ios::out);
char z;
int i=-size;
while(z!='*'&&z!='+')//*用来标识结尾,+用来表示删除一个单词留下的区域
{
i+=size;
text.seekp(i);
text>>z;
}
if(word.length()+paraphrase.length()+4>size)//单词与释义之间一个空格和用于标识结尾的空格加%加空格所以加4
{
cout<<"输入太长,插入失败."<<endl;
return ;
}
text.seekp(i,ios::beg);
text<<word<<" "<<paraphrase<<" % ";


if(z=='+')
{
text.close();
return ;
}
text.seekp(i+size,ios::beg);
text<<"* ";
text.close();
}

void dictionary::deleteWord()
{
cout<<"请输入删除的单词."<<endl;
string word;
cin>>word;
text.open("dictionary.dat",ios::in|ios::out);
string Deleted;
int i=-size;//标记删除的位置
do
{
i+=size;
text.seekg(i);
text>>Deleted;
if(Deleted=="*")
{
cout<<"未发现该单词,删除失败"<<endl;
return ;
}
}while(Deleted!=word);

text.seekp(i);
text<<"+ ";//第一元素标记为+,表示空
for(int j=1;j<size;j++)
{
text<<" ";
}
cout<<"删除成功."<<endl;
text.close();
}

上一个:C++是什么语言?
下一个:c++小型项目试题

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,