void addPerson(Addressbooks* abs) { //判断电话本是否满了 if (abs->m_Size == MAX) { cout << "通讯录已满,无法添加" << endl; return; } else { //姓名 string name; cout << "请输入姓名:" << endl; cin >> name; abs->personArray[abs->m_Size].m_Name = name; cout << "请输入性别:" << endl; cout << "1 -- 男" << endl; cout << "2 -- 女" << endl; //性别 int sex = 0; while (true) { cin >> sex; if (sex == 1 || sex == 2) { abs->personArray[abs->m_Size].m_Sex = sex; break; } cout << "输入有误,请重新输入"; } //年龄 cout << "请输入年龄:" << endl; int age = 0; cin >> age; abs->Person personArray[abs->m_Size].m_Age = age; //联系电话 cout << "请输入联系电话:" << endl; string phone = ""; cin >> phone; abs->personArray[abs->m_Size].m_Phone = phone; //家庭住址 cout << "请输入家庭住址:" << endl; string address; cin >> address; abs->personArray[abs->m_Size].m_Addr = address; //更新通讯录人数 abs->m_Size++; cout << "添加成功" << endl; system("pause"); system("cls"); } }
时间: 2024-04-22 07:26:38 浏览: 124
这段代码是一个通讯录程序中的添加联系人函数。函数的作用是向通讯录中添加一个新的联系人信息。函数首先检查通讯录是否已满,如果已满则输出提示信息并返回。如果通讯录未满,则依次输入联系人的姓名、性别、年龄、电话和地址,并将这些信息保存到通讯录中。最后更新通讯录的人数,并输出添加成功的提示信息。整个过程结束后,会暂停程序运行并清空屏幕。
相关问题
#include<iostream> using namespace std; class Person { public: Person(string name, string phone, string email) : name_(name), phone_(phone), email_(email) {} string GetName() const { return name_; } string GetPhone() const { return phone_; } string GetEmail() const { return email_; } void SetPhone(string phone) { phone_ = phone; } void SetEmail(string email) { email_ = email; } private: string name_; string phone_; string email_; }; class AddressBook { public: AddressBook() {} void AddPerson(const Person& person) { person.push_back(person); } void RemovePerson(const string& name) { for (auto it = person.begin(); it != person.end(); ++it) { if (it->GetName() == name) { person.erase(it); break; } } } Person FindPerson(const string& name) const { for (auto& person : Person) { if (person.GetName() == name) { return person; } } return Person("", "", ""); } private: char <Person> person; }; int main() { AddressBook address_book; // 添加联系人 address_book.AddPerson(Person("张三", "13312345678", "zhangsan@qq.com")); address_book.AddPerson(Person("李四", "13987654321", "lisi@qq.com")); // 删除联系人 address_book.RemovePerson("李四"); // 查找联系人 Person person = address_book.FindPerson("张三"); if (person.GetName() != "") { cout << "姓名:" << person.GetName() << endl; cout << "电话:" << person.GetPhone() << endl; cout << "邮箱:" << person.GetEmail() << endl; } else { cout << "未找到该联系人!" << endl; } return 0; }以上代码错误,请修改正确
以下是修改后的代码:
```cpp
#include<iostream>
#include<vector> // 添加头文件vector
using namespace std;
class Person {
public:
Person(string name, string phone, string email)
: name_(name), phone_(phone), email_(email) {}
string GetName() const { return name_; }
string GetPhone() const { return phone_; }
string GetEmail() const { return email_; }
void SetPhone(string phone) { phone_ = phone; }
void SetEmail(string email) { email_ = email; }
private:
string name_;
string phone_;
string email_;
};
class AddressBook {
public:
AddressBook() {}
void AddPerson(const Person& person) {
persons_.push_back(person); // 修改变量名person为persons_
}
void RemovePerson(const string& name) {
for (auto it = persons_.begin(); it != persons_.end(); ++it) {
if (it->GetName() == name) {
persons_.erase(it);
break;
}
}
}
Person FindPerson(const string& name) const {
for (auto& person : persons_) { // 修改变量名Person为persons_
if (person.GetName() == name) {
return person;
}
}
return Person("", "", "");
}
private:
vector<Person> persons_; // 修改变量类型char <Person>为vector<Person>
};
int main() {
AddressBook address_book;
// 添加联系人
address_book.AddPerson(Person("张三", "13312345678", "zhangsan@qq.com"));
address_book.AddPerson(Person("李四", "13987654321", "lisi@qq.com"));
// 删除联系人
address_book.RemovePerson("李四");
// 查找联系人
Person person = address_book.FindPerson("张三");
if (person.GetName() != "") {
cout << "姓名:" << person.GetName() << endl;
cout << "电话:" << person.GetPhone() << endl;
cout << "邮箱:" << person.GetEmail() << endl;
} else {
cout << "未找到该联系人!" << endl;
}
return 0;
}
```
主要修改:
- 添加头文件vector。
- 修改变量名person为persons_,并修改类型为vector<Person>。
- 修改遍历persons_时的变量名Person为person。
<div className="groupInfor gd-group"> <div className="header"> <h5>个人股东</h5> </div> <Form.List name="personList"> {(fields, { add, remove }) => ( <> {fields.map(({ key, name, fieldKey, ...restField }, idx) => ( <AddPerson key={key} idx={idx} name={name} fieldKey={fieldKey} restField={restField} isDisabled={isDisabled} remove={remove} form={form} /> ))} <Form.Item className="offset-b0"> <Button className="new-init-btn offset-t20" disabled={isDisabled} onClick={handleAddPerson.bind(this)} style={{ width: 88 }}>+ 新增</Button> </Form.Item> </> )} </Form.List> </div>优化代码
这段代码的主要问题在于缺乏注释和可读性,可以考虑添加注释来解释每个组件和函数的作用,同时也可以将一些重复的代码进行封装,提高代码的可重用性和可维护性。下面是一些可能的优化方法:
1. 封装 AddPerson 组件,将其独立出来,方便复用和维护。
2. 将一些常量和重复的代码提取出来,定义为变量或函数,方便统一管理和修改。
3. 给组件和函数添加注释,解释其作用和参数含义,方便他人理解和使用。
4. 格式化代码,统一缩进、换行等,提高代码可读性。
5. 根据实际需求,考虑是否需要添加一些错误处理和验证逻辑,以提高代码的健壮性和可靠性。
阅读全文