addressbook.cpp
#include "addressbook.h"
#include "ui_addressbook.h"
AddressBook::AddressBook(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::AddressBook)
{
ui->setupUi(this);
}
AddressBook::~AddressBook()
{
delete ui;
}
void AddressBook::ReadFromFile()
{
QFile file("chenhc.txt");
if(!file.open(QIODevice::ReadWrite |QIODevice::Text))
qDebug() << file.errorString();
QTextStream in(&file);
//record类的成员变量数
int rcd_num = 5;
while(1)
{
QString str[rcd_num];
for(int i = 0; i < rcd_num; ++i)
{
str[i] = in.readLine();
}
//读取到的字符串长度为零,读取完毕
if(str[rcd_num-1].size() == 0) break;
//将新构造的record对象放入vector中
records.push_back(Record(str[0], str[1], str[2], str[3], str[4]));
}
file.close();
}
void AddressBook::SaveToFile()
{
QFile file("chenhc.txt");
if(!file.open(QIODevice::WriteOnly |QIODevice::Text))
qDebug() << file.errorString();
QTextStream in(&file);
//将记录信息按照格式以文件流的形式输出到文件中
for(int i = 0; i < records.size(); ++i)
{
in << records[i].name << "\n"
<< records[i].phone_num << "\n"
<< records[i].relation << "\n"
<< records[i].province << "\n"
<< records[i].city << "\n";
}
file.close();
}
//获取目标记录函数,以引用的形式返回,将所有目标record的索引放入vector中,idx中存储用户所选择的索引
bool AddressBook::GetTargetRcd(vector<int> &id, int &idx)
{
bool ok;
//从输入窗口中读取关键字
QString keywords = QInputDialog::getText(this, tr("Processing..."), tr("Key Words: "),
QLineEdit::Normal, tr("ChenHC"), &ok);
//读取失败直接退出
if(!ok) return false;
//转化为string
string SrchStr = keywords.toStdString();
QString DisplyStr;
int cnt = 0;
//find those records, and store their id
for(int i = 0; i < records.size(); ++i)
{
//进行按关键字的查找比较
if((signed)records[i].name.toStdString().find(SrchStr) != -1
|| (signed)records[i].phone_num.toStdString().find(SrchStr) != -1
|| (signed)records[i].relation.toStdString().find(SrchStr) != -1
|| (signed)records[i].province.toStdString().find(SrchStr) != -1
|| (signed)records[i