c++ 编程问题-我编得通讯录创建联系人函数哪儿有问题?

问题描述

我编得通讯录创建联系人函数哪儿有问题?

#include
using namespace std;
struct contact
{
int ID;

char name[10];

char ch;

char phone[13];

char addr[31];

struct contact *next;

};
class contacts
{
public:
contacts(){front= new contact; front=NULL;}
void AddCon(int n);
~contacts();
void InsertCon();////插入联系人的基本信息
void FindCon(); ////查找联系人的基本信息
void AmendMessage();//修改联系人的基本信息
void DeleteMessage();//删除联系人的基本信息
void Con();
private:
contact * front;
};
void contacts::AddCon(int n)
{
system("CLS");
contact p= new contact;
cout<<"输入联系人信息:"<
cout
cin>>p->name;
cout<<"ID:"<
cin>>p->ID;
cout<<"sex:"<
cin>>p->ch;
cout<<"phone:"<
cin>>p->phone;
cout<<"address:"<
cin>>p->addr;
front=p;
for(int i=0;i< n-1;i++)
{
system("CLS");
cout<<"现在输入第"<<i+2<<"个联系人的信息"<<endl;
contact
q=new contact;
cout<<"name:"<
cin>>q->name;
cout<<"ID:"<
cin>>q->ID;
cout<<"sex:"<
cin>>q->ch;
cout<<"phone:"<
cin>>q->phone;
cout<<"address:"<
cin>>q->addr;
p->next=q;
p=q;

}
p->next=NULL;

}
contacts::~contacts()
{

contact *p=front;
while(p)
{
    contact *q=new contact;
    q=p;
    p=p->next;
    delete q;
}

}
void contacts::InsertCon()

{
contact *p=new contact;
p=front;
while(p)
{
p=p->next;
};

if(p==NULL)
    cout<<"请先添加联系人"<<endl;
else
    {
        contact *q=new contact;
        p->next=q;
        cout << "请依次被插入人的信息:姓名"<<"性别"<<"住址"<<"手机号"<<"学号"<< endl;
        cin >> q->name >> q->ch >> q->addr >> q->phone >> q->ID;
        q->next=NULL;
      }

}
void contacts::FindCon()
{
char a[20];
system("CLS");
/*if(front==NULL)
cout<<"请先添加联系人"<
//else
//{
cout
cin>>a;
contact *p=front;
while(p)
{
if(strcmp(p->name ,a)==0)
{
cout<<"结果如下"<<"name:"<name<<"ID:"<ID<<"sex:"<ch<<"phone:"<phone<<"address:"<addr<
break;
}
else if(p->next!= NULL && p->name != a)
{
p = p->next ;
}
else
{
cout << "输入名字错误" << endl;

             }

        }
//}

}
void contacts::AmendMessage()
{

system("CLS");
if(front==NULL)
    cout<<"请先添加联系人"<<endl;
else
    {
        int ID1;
        char name1[10];
        char ch1;
        char phone1[13];
        char addr1[31];
        int n;
        cout<<"输入要修改的名字"<<endl;
        cin>>name1;
        contact *p=front;
        while(p)
        {
            if(strcmp(p->name ,name1)==0)
            {
                cout<<"选择需要修改的内容:"<<endl;
                cout<<"1,性别 2,学号 3,电话 4,地址"<<endl;
                cin>>n;
                switch(n)
                {
                case 1:
                    cout<<"输入改变后的性别"<<endl;
                    cin>>ch1;
                    p->ch=ch1;   //char ch,ch1 strcpy(p->ch,ch1)为什么不行 必须是字符数组吗
                    cout<<"success"<<endl;
                    system("CLS");
                    break;
                case 2:
                    cout<<"输入改变后的学号"<<endl;
                    cin>>ID1;
                    p->ID=ID1;
                    cout<<"success"<<endl;
                    system("CLS");
                    break;
                case 3:
                    cout<<"输入改变后的电话"<<endl;
                    cin>>phone1;
                    strcpy(p->phone,phone1);
                    cout<<"success"<<endl;
                    system("CLS");
                    break;
                case 4:
                    cout<<"输入改变后的地址"<<endl;
                    cin>>addr1;
                    strcpy(p->addr, addr1);
                    cout<<"success"<<endl;
                    system("CLS");
                    break;
                default:
                    cout<<"wrong"<<endl;
                    break;
                }

                break;
            }
            else if(p->next!= NULL && p->name != name1)
            {
                 p = p->next ;
            }
            else
            {
                cout << "输入名字错误" << endl;

             }

        }
    }

}
void contacts::DeleteMessage()
{
system("CLS");
if(front==NULL)
cout<<"请先添加联系人"<
else
{
char name2[10];
cout
cin>>name2;
contact *p=front;
while(p)
{
if(strcmp(p->name ,name2)==0)
{
contact *q=p->next;
strcpy(p->addr,q->addr);//p->addr=q->addr;
p->ch=q->ch;
p->ID=q->ID;
strcpy(p->name,q->name);
strcpy(p->phone,q->phone);
p->next=q->next;
delete q;
break;
}
else if(p->next!= NULL && p->name != name2)
{
p = p->next ;
}
else
{
cout << "输入名字错误" << endl;

             }
        }
}

}
void contacts::Con()
{
int n;
do
{
cout<<" 通讯录 "<
cout
cout
cout
cout
cout
cout
contacts a;
cin>>n;
if(n!=1&&n!=2&&n!=3&&n!=4&&n!=5&&n!=6)
{
cout<<"输入错误"<
}
else
{
switch(n)
{
case 1:
int m;
do
{
cout
cin>>m;

        }while(m<=0);
         a.AddCon(m);
         break;
    case 2:
        a.InsertCon();
        break;
    case 3:
        a.FindCon();
        break;
    case 4:
        a.AmendMessage();
        break;
    case 5:
        a.DeleteMessage();
        break;
    case 6:
        break;
    default:

    cout << "你输入错误,请重新选择!!!" << endl;
    break;

     }
}
}while(n !=6);

}
int main()

{
contacts b;
b.Con();
return 0;

}
为什么创建联系人之后,调用其他函数,都一直显示“请先添加联系人”?不知道怎么改,先谢谢大家了

时间: 2025-01-01 06:34:13

c++ 编程问题-我编得通讯录创建联系人函数哪儿有问题?的相关文章

c语言-新手刚入vs编程 用c编代码出现问题

问题描述 新手刚入vs编程 用c编代码出现问题 用c编写代码 调试后是这么乱 但却能运行成功 为什么 解决方案 Linux下的c编程 出现问题 解决方案二: 不用管...这些没有影响.如果有洁癖,非要去掉,百度搜搜解决办法. 解决方案三: 成功并不代表你的代码完全正确,有时候程序会忽略一些警告的! 解决方案四: http://www.itnose.net/detail/6095821.html

Android编程实现通讯录中联系人的读取,查询,添加功能示例

本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能.分享给大家供大家参考,具体如下: 先加二个读和写权限: <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 具体代码: package com.ebo

《从问题到程序:用Python学编程和计算》——3.4 定义函数

3.4 定义函数 在最简单的程序中,可能只用到表达式.语句和几种控制结构.但是,仅限于这些基本机制,很难写出很长的解决复杂问题的程序.随着遇到的问题更复杂,我们必须组织好程序的结构,在语句层面之上的基本结构就是函数.一个函数包装起一段代码并给予命名,引进参数将其通用化.定义好的函数可以通过调用表达式使用,非常方便.学习编程的重要一步就是学习定义函数:理解为什么需要定义函数,学会识别编程中定义函数的需求,掌握正确定义函数的技术.本小节和下一章将集中讨论这个问题.3.4.1 为什么定义函数 实际中需

【原创】Matlab.NET混合编程技巧之直接调用Matlab内置函数

              本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新    Matlab和C#混合编程文章目录 :[目录]Matlab和C#混合编程文章目录 在我的上一篇文章[原创]Matlab.NET混编技巧之--找出Matlab内置函数中,已经大概的介绍了matlab内置函数在混合编程中的优点,并通过程序找出了matlab中的大部分内置函数,当然更多人关心是如何像我所说得那样,不用直接编译,就直接在C#中调用这些内置函数.本文就带你揭开这些谜团. 声明,这篇文章是需要

Matlab.NET混合编程技巧之——直接调用Matlab内置函数(附源码)

原文:[原创]Matlab.NET混合编程技巧之--直接调用Matlab内置函数(附源码) 在我的上一篇文章[原创]Matlab.NET混编技巧之--找出Matlab内置函数中,已经大概的介绍了matlab内置函数在混合编程中的优点,并通过程序找出了matlab中的大部分内置函数,当然更多人关心是如何像我所说得那样,不用直接编译,就直接在C#中调用这些内置函数.本文就带你揭开这些谜团. 声明,这篇文章是需要一点点混合编程基础的,基本概念和过程要懂一点,如果能简单成功混编一个简单的计算或者绘图例子

Matlab.NET混合编程技巧之——找出Matlab内置函数

原文:[原创]Matlab.NET混合编程技巧之--找出Matlab内置函数 Matlab与.NET的混合编程,掌握了基本过程,加上一定的开发经验和算法基础,肯定不难.反之,有时候一个小错误,可能抓破脑袋,加班几个晚上,调试才能解决.同样,由于Matlab.NET混编的特殊性,加上MathWorks的原因,英文文档和没有披露一些详细的细节(甚至不允许反编译MWArray.dll,呵呵,它不允许,不代表你不会哦).经过很多项目,和大量的实验,也发现了一些小技巧和小秘密,今天就分享其中一个,先做一个

《数据科学:R语言实现》——1.2 创建R函数

1.2 创建R函数 R语言是函数的集合:用户可以在项目中使用各个程序包中的内置函数,或者为专门的目的定义新的函数.在本教程中,我们会展示如何创建一个R函数. 准备工作 如果你是R语言新手,你可以在R语言的官方网站(http://www.r-project.org/ )上查阅具体的介绍.历史和功能.开始下载安装R语言的时候 ,建议使用R语言综合文档网络 (http://cran.r-project.org/). 实现步骤 执行下列步骤来创建你的第一个R函数. 1.在R控制台中键入下列代码,创建第一

[CodeComplete]创建一个函数需要理由吗

以下为<<代码大全2>>[第七章高质量的子程序]的摘录 编程中什么是标准,相信大家都没有办法给出一套成系统的理论,而<代码大全>的作者就是在为我们描述从设计到实现诸多大家或意识到而没有深究,又或者还没有意识到的问题,通过系统的方式为大家展开了软件开发中诸多细节.希望对大家能都所帮助! 本章探讨了以下问题:    创建子程序的正当理由    在子程序层上展开设计    起个好名字    子程序可以写多长    如何使用子程序的参数    使用函数时要特别考虑的问题    

sqlpus 中创建一个函数打印出表空间的大小

做这个实验的目的是为了熟悉函数返回值在sqlplus中的显示,嘿嘿! 我写了个很简单的函数,在sqlpus 中操作的,偷了一下懒我用sys用户测试: 步聚如下: 1.创建一个函数 SQL> conn / as sysdba Connected. SQL> show  user; USER is "SYS" SQL> CREATE OR REPLACE FUNCTION f_tpsum(intpn IN VARCHAR2)  2  return VARCHAR2 IS