求助,打印功能不能实现,请大家帮忙看看。。。

dui_cky 2008-06-19 11:56:48
求助,打印功能不能实现,请大家帮忙看看。。。
下面是一个我的部分课程设计,但是在运行第四个打印功能时不能输出数据,请大家帮忙看看,谢谢。。。。。。。。。。
#include <iostream.h>
#include <iomanip.h>
#include <fstream>
struct men
{
char tphone[10];
char mphone[15];
char qq[10];
char name[10];
char adress[20];
men *next;
};
class person{
private:
men *p1,*p2,*head;
public:
~person()
{
while(head)//对象删除后将指针全部删除
{
p1=head->next;
delete head;

head=p1;
}
}

men * add(men *b);//用于增加人员
void Adds(men *a);//用于增加数据
void out(men *c);//用于列出所有人员信息
};
//------增加数据------------
void person::Adds(men *a)
{
cout<<"姓名:";
cin>>a->name;
cout<<"住址:";
cin>>a->adress;
cout<<"家里的电话:";
cin>>a->tphone;
cout<<"手机号:";
cin>>a->mphone;
cout<<"QQ号:";
cin>>a->qq;
}
//------增加通讯录人物信息------------
men *person::add(men *b)
{
p1=new men;
p2=b;
Adds(p1);
if(b==NULL)
{
b=p1;
p1->next=NULL;
return b;
}
while(p2->next !=NULL)
p2=p2->next;
p2->next=p1;
p1->next=NULL;

return b;

}
//------列出信息--------------------
void person::out (men *c)
{
p1=c;

cout<<"姓名 "<<"住址 "<<"家里的电话 "<<"手机 "<<"QQ "<<endl;

while (p1!=NULL)
{


cout<<p1->name<<p1->adress<<p1->tphone<<p1->mphone<<p1->qq<<endl;

p1=p1->next;
}

}

//-------------------------------------------------------
//-------------------------------------------------------
// 主函数

void main()
{
int choice;
men * head=NULL;
person persons;
for(;;)
{
cout<<"\n 通讯录操作界面\n\n\n";
cout<<"操作菜单:\n\n";
cout<<" 1.增加记录\n";
cout<<" 2.删除记录\n";
cout<<" 3.依姓名查找记录\n";
cout<<" 4.列出记录\n";
cout<<" 5.修改记录\n";
cout<<" 6.退出\n\n";
cout<<"请输入数字进行选择:";
cin>>choice;
cout<<"你选择了:"<<choice<<endl;

//if(choice!=1||choice!=2||choice!=3||choice!=4||choice!=5||choice!=6)

// cout<<"\n\n\n请在1~6中选择!"<<endl;

if(choice==6)

{ cout<<"谢谢使用!"<<endl; exit(0);}

if(choice==1)

persons.add(head);

if(choice==4)

persons.out(head);

}

}
...全文
41 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
dui_cky 2008-06-27
  • 打赏
  • 举报
回复
恩,呵呵!谢谢大家啊。。。。。。。哎,终于搞定咯!
K行天下 2008-06-20
  • 打赏
  • 举报
回复
同意楼上,另外,你的菜单最好写为switch语句的, 然后是打印的时候没有空格
添加上
对齐 :cout.flags(ios::left);setw(12)

#include <iostream.h>
#include <iomanip.h>
#include <fstream>
struct men
{
char tphone[10];
char mphone[15];
char qq[10];
char name[10];
char adress[20];
men *next;
};
class person{
private:
men *p1,*p2,*head;
public:
~person()
{
while(head)//对象删除后将指针全部删除
{
p1=head->next;
delete head;

head=p1;
}
}

men * add(men *b);//用于增加人员
void Adds(men *a);//用于增加数据
void out(men *c);//用于列出所有人员信息
};
//------增加数据------------
void person::Adds(men *a)
{
cout <<"姓名:";
cin>>a->name;
cout <<"住址:";
cin>>a->adress;
cout <<"家里的电话:";
cin>>a->tphone;
cout <<"手机号:";
cin>>a->mphone;
cout <<"QQ号:";
cin>>a->qq;
}
//------增加通讯录人物信息------------
men *person::add(men *b)
{
p1=new men;
p2=b;
Adds(p1);
if(b==NULL)
{
b=p1;
p1->next=NULL;
return b;
}
while(p2->next !=NULL)
p2=p2->next;
p2->next=p1;
p1->next=NULL;

return b;

}
//------列出信息--------------------
void person::out (men *c)
{
p1=c;
cout.flags(ios::left);
cout <<setw(12)<<"姓名" <<setw(12)<<"住址" <<setw(12)<<"家里的电话" <<setw(12)<<"手机" <<setw(12)<<"QQ" <<endl;

while (p1!=NULL)
{


cout <<setw(12)<<p1->name <<setw(12)<<p1->adress<<setw(12) <<p1->tphone<<setw(12)<<p1->mphone<<setw(12)<<p1->qq <<endl;

p1=p1->next;
}

}

//-------------------------------------------------------
//-------------------------------------------------------
// 主函数

int main()
{
int choice;
men * head=NULL;
person persons;
for(;;)
{
cout <<"\n 通讯录操作界面\n\n\n";
cout <<"操作菜单:\n\n";
cout <<" 1.增加记录\n";
cout <<" 2.删除记录\n";
cout <<" 3.依姓名查找记录\n";
cout <<" 4.列出记录\n";
cout <<" 5.修改记录\n";
cout <<" 6.退出\n\n";
cout <<"请输入数字进行选择:";
cin>>choice;
cout <<"你选择了:" <<choice <<endl;

//if(choice!=1 | |choice!=2 | |choice!=3 | |choice!=4 | |choice!=5 | |choice!=6)

// cout <<"\n\n\n请在1~6中选择!" <<endl;

if(choice==6)

{ cout <<"谢谢使用!" <<endl; exit(0);}

if(choice==1)

head= persons.add(head);

if(choice==4)

persons.out(head);

}

}

qmm161 2008-06-20
  • 打赏
  • 举报
回复
找到问题了
persons.add(head);
这里运行完了之后head的值仍未NULL,所以带进out函数时出现问题!
修改为:
head = persons.add(head);
ponymayan 2008-06-20
  • 打赏
  • 举报
回复
gooooooooood
lijiawlm 2008-06-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 qmm161 的回复:]
找到问题了
persons.add(head);
这里运行完了之后head的值仍未NULL,所以带进out函数时出现问题!
修改为:
head = persons.add(head);
[/Quote]

64,683

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧