当前位置:编程学习 > C/C++ >>

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++怎么样

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,