界面化通讯录
1. 问题描述
定义通讯录类,属性有:编号、姓名、性别、年龄、通讯地址、邮箱地址、电话等信息和相关的对属性做操作的行为。 主要完成对通讯录的简单管理。
2、功能要求 基本功能
(1)添加功能:程序能够添加通讯录信息,要求编号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。
(2)显示功能:可显示当前系统中所有通讯信息,每条记录占据一行。
(3)统计功能:可统计当前通讯录的信息总数、可按性别进行统计,可按年龄进行排序。
(4)保存功能:可将当前系统中通讯录记录存入文件中,存入方式任意。
(5)退出系统。
拓展功能 (1)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (2)删除功能:主要实现对已添加的通讯记录进行删除。若果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作。 (3)查询功能:可根据姓名、电话、邮箱地址等信息对已添加的信息进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。 (4)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。
核心代码:
// mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_addButton_clicked()
{
// 添加功能的实现
int id = ui->idLineEdit->text().toInt();
QString name = ui->nameLineEdit->text();
QString gender = ui->genderComboBox->currentText();
int age = ui->ageSpinBox->value();
QString address = ui->addressLineEdit->text();
QString email = ui->emailLineEdit->text();
QString phone = ui->phoneLineEdit->text();
// 检查编号是否唯一
if (findContactById(id) != -1) {
QMessageBox::warning(this, "添加失败", "编号重复,请重新输入!"); //调用 findContactById(id) 函数找到了匹配的联系人,QMessageBox::warning() 函数显示一个警告对话框
return;
}
// 创建联系人对象并添加到通讯录
Contact contact(id, name, gender, age, address, email, phone);
m_contacts.append(contact); //通过调用append()函数,可以将新的Contact对象添加到列表中
QMessageBox::information(this, "添加成功", "联系人添加成功!");
clearFields(); //是一个函数调用,可能是用于清空字段或重置字段值的操作
}
void MainWindow::on_displayButton_clicked()
{
// 显示功能的实现
displayContacts();
}
void MainWindow::on_statisticsButton_clicked()
{
// 统计功能的实现
int totalContacts = m_contacts.size();
int maleCount = 0;
int femaleCount = 0;
for (const Contact& contact : m_contacts) {
if (contact.getGender() == "男") {
maleCount++;
} else if (contact.getGender() == "女") {
femaleCount++;
}
}
QMessageBox::information(this, "统计结果",
QString("通讯录总数:%1\n男性联系人:%2\n女性联系人:%3")
.arg(totalContacts).arg(maleCount).arg(femaleCount));
}
void MainWindow::on_saveButton_clicked()
{
// 保存功能的实现
// 将通讯录记录存入文件中,存入方式任意
// 这里只是示例,将通讯录记录输出到控制台
for (const Contact& contact : m_contacts) {
qDebug() << "编号:" << contact.getId();
qDebug() << "姓名:" << contact.getName();
qDebug() << "性别:" << contact.getGender();
qDebug() << "年龄:" << contact.getAge();
qDebug() << "通讯地址:" << contact.getAddress();
qDebug() << "邮箱地址:" << contact.getEmail();
qDebug() << "电话:" << contact.getPhone();
qDebug() << "---------------------------";
}
QMessageBox::information(this, "保存成功", "通讯录记录已保存!");
}
void MainWindow::on_exitButton_clicked()
{
// 退出系统
QApplication::quit();
}
void MainWindow::displayContacts()
{
// 显示通讯录信息
ui->contactsTextEdit->clear();
for (const Contact& contact : m_contacts) {
ui->contactsTextEdit->append(QString("编号:%1\n姓名:%2\n性别:%3\n年龄:%4\n通讯地址:%5\n邮箱地址:%6\n电话:%7\n")
.arg(contact.getId()).arg(contact.getName()).arg(contact.getGender())
.arg(contact.getAge()).arg(contact.getAddress()).arg(contact.getEmail())
.arg(contact.getPhone()));
ui->contactsTextEdit->append("-------------------------------");
}
}
void MainWindow::clearFields()
{
// 清空输入框
ui->idLineEdit->clear();
ui->nameLineEdit->clear();
ui->genderComboBox->setCurrentIndex(0);
ui->ageSpinBox->setValue(0);
ui->addressLineEdit->clear();
ui->emailLineEdit->clear();
ui->phoneLineEdit->clear();
}
int MainWindow::findContactById(int id)
{
// 根据编号查找联系人在通讯录中的索引
for (int i = 0; i < m_contacts.size(); i++) {
if (m_contacts[i].getId() == id) {
return i;
}
}
return -1;
}
void MainWindow::on_searchButton_clicked()
{
// 查询功能的实现
int id = ui->idLineEdit->text().toInt();
int index = findContactById(id);
if (index == -1) {
QMessageBox::information(this, "查询结果", "未找到该联系人!");
} else {
const Contact& contact = m_contacts[index];
QMessageBox::information(this, "查询结果",
QString("编号:%1\n姓名:%2\n性别:%3\n年龄:%4\n通讯地址:%5\n邮箱地址:%6\n电话:%7")
.arg(contact.getId()).arg(contact.getName()).arg(contact.getGender())
.arg(contact.getAge()).arg(contact.getAddress()).arg(contact.getEmail())
.arg(contact.getPhone()));
}
}
void MainWindow::on_editButton_clicked()
{
// 编辑功能的实现
int id = ui->idLineEdit->text().toInt();
int index = findContactById(id);
if (index == -1) {
QMessageBox::warning(this, "编辑失败", "未找到该联系人!");
return;
}
QString name = ui->nameLineEdit->text();
QString gender = ui->genderComboBox->currentText();
int age = ui->ageSpinBox->value();
QString address = ui->addressLineEdit->text();
QString email = ui->emailLineEdit->text();
QString phone = ui->phoneLineEdit->text();
Contact& contact = m_contacts[index];
contact.setName(name);
contact.setGender(gender);
contact.setAge(age);
contact.setAddress(address);
contact.setEmail(email);
contact.setPhone(phone);
QMessageBox::information(this, "编辑成功", "联系人编辑成功!");
clearFields();
}
void MainWindow::on_deleteButton_clicked()
{
// 删除功能的实现
int id = ui->idLineEdit->text().toInt();
int index = findContactById(id);
if (index == -1) {
QMessageBox::warning(this, "删除失败", "未找到该联系人!");
return;
}
QMessageBox::StandardButton confirm = QMessageBox::question(this, "确认删除", "确定要删除该联系人吗?");
if (confirm == QMessageBox::Yes) {
m_contacts.removeAt(index);
QMessageBox::information(this, "删除成功", "联系人删除成功!");
clearFields();
}
}