基于QT Creator的AddressBook

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值