mountain_Young 2019-10-01 17:15 采纳率: 100%
浏览 1492
已采纳

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

新手求助!!

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

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

警告 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;
}

展开全部

  • 写回答

1条回答 默认 最新

  • threenewbee 2019-10-02 01:19
    关注
                    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]
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

悬赏问题

  • ¥15 FPGA芯片60进制计数器
  • ¥15 前端js怎么实现word的.doc后缀文件在线预览
  • ¥20 macmin m 4连接iPad
  • ¥15 DBIF_REPO_SQL_ERROR
  • ¥15 根据历年月数据,用Stata预测未来六个月汇率
  • ¥15 DevEco studio开发工具 真机联调找不到手机设备
  • ¥15 请教前后端分离的问题
  • ¥100 冷钱包突然失效,急寻解决方案
  • ¥15 下载honeyd时报错 configure: error: you need to instal a more recent version of libdnet
  • ¥15 距离软磁铁一定距离的磁感应强度大小怎么求
手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部