C++语言程序编写
通讯录管理 问题描述
编写一个简单的通讯录管理程序。通讯录记录有姓名,地址(省、市(县)、街道),电话号码,邮政编码等四项。
基本要求
程序应提供的基本基本管理功能有:
1) 添加:即增加一个人的记录到通信录中
2) 显示:即在屏幕上显示所有通信录中的人员信息,应能分屏显示。
3) 存储:即将通讯录信息保存在一个文件中。
4) 装入:即将文件中的信息读入程序。
5) 查询:可根据姓名查找某人的相关信息,若找到显示其姓名、地址、电话号码和邮政编码。
6) 修改:可修改一个人的除姓名外其它信息。
测试数据
程序应输入不少于10个人员的通讯录信息,应考虑到人员可以同名的情况。
实现提示
程序可用一个单向链表来管理人员信息,每个人员的姓名,地址,电话号码和邮政编码用一个类Cperson来实现,作为链表的值指针指向这些Cperson类对象,通过链表的遍历可以操作这些数据。
追问:嗯嗯,刚学习,求代码参考,可给积分...
答案://有点乱,不过功能都全#include <iostream>
#include <string>
#include <fstream>
#include <iomanip>
using namespace std;
class address_list //通讯录
{
public:
struct Cperson
{
string name;
string address;
string telephone_number;
string postal_code;
Cperson *next;
};
public:
Cperson *one,*bak,*p;
int count,counts;
int fcount;
address_list(); //初始化
int add(int n=1); //添加
int show(Cperson *s); //显示
int memory(); //存储
int encase(); //装入
int demand(string name,Cperson *s); //查询
int alter(string name,Cperson *s); //修改
int input(Cperson *s); //
int get(Cperson &s); //
int getcount();
};
int main()
{
address_list cp;
int n=0;
cout<<"input n: ";
cin>>n;
cout<<"\nadd\n";
cp.add(n);
cp.show(cp.one->next);
cp.memory();
cout<<"\encase:\n";
cp.encase();
cp.show(cp.bak->next);
cout<<"\ndemand\n";
string name;
cout<<"input name ";
cin>>name;
cp.demand(name,cp.p);
cp.show(cp.p);
//cp.show(cp.one->next);
cout<<"alter\n input name ";
cin>>name;
cp.input(cp.p);
cp.alter(name,cp.p);
cp.show(cp.one->next);
return 1;
}
address_list::address_list()
{
one=new Cperson; bak=new Cperson; p=new Cperson;
one->next=NULL; bak->next=NULL; p->next=NULL;
count=0;
counts=0;
fcount=0;
ofstream fp;
fp.open("d:\\AddressList.txt",ios::trunc);
// fp<<"\t通讯录管理\n";
cout<<"\t通讯录管理\n";
// fp<<"序号 姓名 地址 电话号码 邮政编码"<<endl;
fp.close();
}
int address_list::input(Cperson *s)
{
if (s==NULL)
{
return 0;
}
cin >>s->name
>>s->address
>>s->telephone_number
>>s->postal_code;
return 1;
}
int address_list::add(int n)
{
cout<<"\ninput "<<n<<" Cperson"<<"\n姓名\t 地址\t 电话号码\t邮政编码"
<<endl;
Cperson *s;
if(s==NULL)
{
cout<<"\nERROR!\n";
return 0;
}
while(n>0){
s=new Cperson;
input(s);
s->next=one->next;
one->next=s;
count++;
n--;
}
return 1;
}
int address_list::getcount(){
return count;
}
int address_list::show(Cperson *one)
{
cout<<"Address List:\n ";
Cperson *p;
p=one;
int n=1;
if(cout==0)
return 0;
cout<<"序号\t 姓名\t 地址\t 电话号码\t邮政编码"<<endl;
while(p!=NULL)
{
cout<<n<<" : \t "<<p->name<<"\t "
<<p->address<<"\t "
<<p->telephone_number<<"\t "
<<p->postal_code
<<endl;
p=p->next;
n++;
}
cout<<endl;
return 1;
}
int address_list::memory()
{
ofstream fp;
if (fp==NULL)
{
cout<<"\n\tOpen file error!\n";
return 0;
}
fp.open("d:\\AddressList.txt",ios::app);
Cperson *p=one->next;
while(count>0&&p!=NULL)
{ fcount++;
fp<<fcount<<" "<<p->name<<" "
<<p->address<<" "
<<p->telephone_number<<" "
<<p->postal_code
<<endl;
p=p->next;
}
fp.close();
return 1;
}
int address_list::encase()
{
ifstream fp;
if (fp==NULL)
{
cout<<"\n\tOpen file error!\n";
return 0;
}
fp.open("d:\\AddressList.txt");
int n=fcount;
string s[5];
Cperson *p,*t;
t=bak;
do
{
fp>>s[0]>>s[1]>>s[2]>>s[3]>>s[4];
p=new Cperson;
p->name=s[1];p->address=s[2];
p->telephone_number=s[3];
p->postal_code=s[4];
n--;
p->next=t->next;
t->next=p;
t=p;
counts++;
}while(n);
cout<<endl;
fp.close();
return 1;
}
int address_list::demand(string name,Cperson *s)
{
Cperson *p;
p=one->next;
while(p){
if (p->name==name)
{
cout<<"\ndemand success \n";
*s=*p;s->next=NULL;
return 1;
}
p=p->next;
}
if (p==NULL)
{
cout<<"\nNO found \n";
}
return 0;
}
int address_list::alter(string name,Cperson *s)
{
Cperson *p;
p=one->next;
while(p){
if (p->name==name)
{
cout<<"\nalter success \n";
p->name=s->name;
p->address=s->address;
p->postal_code=s->postal_code;
p->telephone_number=s->telephone_number;
return 1;
}
p=p->next;
}
if (p==NULL)
{
cout<<"\nNO found \n";
}
return 0;
}
这个需求很清楚啊,功能也很简单。
基本的C语音编码,没有什么复杂的东西。就是文件操作,在加链表操作。
不会要求提供代码吧!
上一个:c++编写一程序
下一个:研究生学习c++怎么样