创建通讯录管理系统过程中产生的问题

新手求助!!

出现的问题:在测试时中,添加联系人后,选择显示联系人,年龄为乱码,其余各项信息均未显示。

出现以下三个警告,并未报错

警告 C26495 未初始化变量 people::p_age。始终初始化成员变量(type.6)。

警告 C26495 未初始化变量 people::p_sex。始终初始化成员变量(type.6)。

警告 C6262 函数使用了堆栈的“92008”个字节: 超过了 /analyze:stacksize '16384'。 请考虑将某些数据移到堆中。

请问是什么原因?新手求教。

图片说明

#include<iostream>
using namespace std;
#include<string>
#define MAX 1000
struct people
{
        string p_name;
        int p_sex;
        int p_age;
        string p_phonenumber;
        string p_address;
};
struct Addressbooks 
{
        struct people list[MAX];//联系人(结构体)数组

        int p_size=0;//联系人数量
};

void ShowMenu()
{
        cout << "***************************" << endl;
        cout << "*****  1、添加联系人  *****" << endl;
        cout << "*****  2、显示联系人  *****" << endl;
        cout << "*****  3、删除联系人  *****" << endl;
        cout << "*****  4、查找联系人  *****" << endl;
        cout << "*****  5、修改联系人  *****" << endl;
        cout << "*****  6、清空联系人  *****" << endl;
        cout << "*****  0、退出通讯录  *****" << endl;
        cout << "***************************" << endl;
}

void AddPerson(Addressbooks* add)
{
        if (add->p_size == MAX)
        {
                cout << "通讯录已满,无法添加!" << endl;
                return;
        }
        else
        {
                //添加具体联系人
                //姓名
                cout << "请输入姓名:" << endl;
                string name;
                cin >> name;
                add->list[add->p_size].p_name = name;
                //性别
                cout << "请输入性别:" << endl;
                cout << "1、男 " << endl;
                cout << "2、女" << endl;
                int sex=0;
                while (true)
                {
                        cin >> sex;
                        if (sex == 1 || sex == 2)
                        {
                                add->list[add->p_size].p_sex = sex;
                                break;
                        }
                        cout << "您输入有误,请重新输入!" << endl;
                }

                //年龄
                cout << "请输入年龄:" << endl;
                int age=0;
                cin >> age;
                add->list[add->p_size].p_age = age;

                //联系号码
                cout << "请输入联系号码:" << endl;
                string phone;
                cin >> phone;
                add->list[add->p_size].p_phonenumber = phone;

                //家庭住址
                cout << "请输入家庭住址:" << endl;
                string address;
                cin >> address;
                add->list[add->p_size].p_address = address;
                //更新通讯录人数
                add->p_size++;
                cout << "您已成功添加联系人 " << name << endl;
                system("pause");//请按任意键继续

                system("cls");//清屏操作
        }
}
void ShowPerson(Addressbooks* add)
{
        if (add->p_size == 0)//如果传入参数中的联系人个数为0
        {
                cout << "您的通讯录还未创建联系人" << endl;

        }
        else
        {
                for (int i = 0; i < add->p_size; i++)
                {
                        cout << "姓名: " << add->list[add->p_size].p_name << "\t";
                        cout << "性别:" << (add->list[add->p_size].p_sex == 1 ? "男":"女" )<< "\t";
                        cout << "年龄:" << add->list[add->p_size].p_age << "\t";
                        cout << "联系电话:" << add->list[add->p_size].p_phonenumber << "\t";
                        cout << "家庭地址:" << add->list[add->p_size].p_address << endl;

                }
        }
        system("pause");
        system("cls");
}
int main()
{
        Addressbooks add;

        add.p_size = 0;


        int choices = 0;

        while (true)
        {
                ShowMenu();

                cin >> choices;

                switch (choices)
                {
                case 1://1、添加联系人
                        AddPerson(&add);
                        break;
                case 2://2、显示联系人
                        ShowPerson(&add);
                        break;
                case 3://3、删除联系人
                        break;
                case 4://4、查找联系人
                        break;
                case 5://5、修改联系人
                        break;
                case 6://6、清空联系人
                        break;
                case 0://0、退出通讯录
                        cout << "欢迎下次使用" << endl;
                        system("pause");
                        return 0;
                        break;
                default:
                        break;
                }
        }
        system("pause");

        return 0;
}

c++

1个回答

                for (int i = 0; i < add->p_size; i++)
                {
                        cout << "姓名: " << add->list[add->p_size].p_name << "\t";
                        cout << "性别:" << (add->list[add->p_size].p_sex == 1 ? "男":"女" )<< "\t";
                        cout << "年龄:" << add->list[add->p_size].p_age << "\t";
                        cout << "联系电话:" << add->list[add->p_size].p_phonenumber << "\t";
                        cout << "家庭地址:" << add->list[add->p_size].p_address << endl;

                }
            目测,这个循环里面的list[add->p_size]应该是list[i]
mountain_Young
mountain_Young 谢谢,解决了,自己写代码的时候太粗心了,麻烦了!!
6 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问