VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 476|回复: 1

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

[复制链接]
99_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-2 00:40:22 | 显示全部楼层 |阅读模式
#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;
}

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

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

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


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


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


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




上一篇:求一本 Windows网络编程 罗莉琴、詹祖桥 PDF
下一篇:有关不同进程的窗口之间发消息的问题
84_avatar_middle
最佳答案
0 
在线会员 发表于 2019-10-2 18:49:04 | 显示全部楼层
本帖最后由 magshines 于 2019-10-2 18:50 编辑

看起来感觉没什么问题,把add->p_size++改成add++试试
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号 )|网站地图wx_jqr

GMT+8, 2020-9-20 01:02

Powered by CcTry.CoM

© 2009-2020 cctry.com

快速回复 返回顶部 返回列表