通讯录管理系统设计与实现

说明:所有源码已上传到笔者GitHub上,欢迎follow。感谢!!!

一、内容和要求

(1)完成通信录信息的管理,包括添加、修改、删除、查询功能。尽量丰富联系人的各项信息。
(2)能够根据联系的信息单独或分类查询。
(3)联系人的生日提醒功能。
(4)数据存储功能可以使用文件的块读写操作完成,也可以使用SQLite数据库(要学习如何用C/C++连接SQLite数据库)

二、需求分析

(1)添加:在系统中添加新成员,并保存在文件“通讯录.txt”中;
(2)修改:读入要修改成员的姓名,按照提示进行修改;
(3)删除:读入要删除成员的姓名,将进行删除;
(4)保存:将所有成员数据保存在文件“通讯录.txt”中;
(5)查找:读入要查找成员的姓名,查找成员将显示在屏幕上;

三、实现代码

#include
#include
#include
using namespace std;
static int count=0;
class telephone
{
    char name[20];                                        //姓名
    char number[17];                                      //电话号码
    char birthday[18];                                    //生日
    int year,month,day,hour,minute,age;

public:
     telephone(char *na,char *nu,int y,int m,int d,int h,int mi,int a);
     telephone(){};
//   ~telephone();
     char *getname();                                      //获得姓名
     char *getnumber();                                    //获得电话号码
     int getyear();                                        //获得年份
     int getmonth();                                       //获得月份
     int getday();                                         //获得日
     int gethour();                                        //获得小时
     int getminute();                                      //获得分钟
     int getage();                                         //获得年龄
     void display();                                       //输出信息
     void input();                                         //添加信息 
     void insert();                                        //插入信息
     void Delete();                                        //删除信息
     void change();                                        //改变信息

     static int getcount();
};
//int telephone::count=0;
telephone::telephone(char *na,char *nu,int y,int m,int d,int h,int mi,int a)
{
    strcpy(name,na);
    strcpy(number,nu);
    year=y;
    month=m;
    day=d;
    hour=h;
    minute=mi;
    age=a;
//  count++;
}
char *telephone::getname()                                       //获得姓名
{
    return name;
}
char *telephone::getnumber()                                     //获得电话号码
{
    return number;
}
int telephone::getyear()                                         //获得年份
{
    return year;
}
int telephone::getmonth()                                        //获得月份
{
    return month;
}
int telephone::getday()                                          //获得日
{
    return day;
}
int telephone::gethour()                                         //获得小时
{
    return hour;
}
int telephone::getminute()                                       //获得分钟
{
    return minute;
}
int telephone::getage()                                          //获得年龄
{
    return age;
}
void telephone::display()                                        //输出信息
{
    cout<<"姓名:"<cout<<"年龄:"<cout<<"号码:"<cout<<"生日:"<":"<"  "<"-"<"-"<void telephone::input()                                          //输入信息
{
    char na[20];
    cout<<"输入姓名:";
    cin>>na;
    strcpy(name,na);
    cout<<"输入年龄:";
    cin>>age;
    cout<<"输入电话号码:";
    cin>>number;
    cout<<"输入生日(按时、分、年、月、日的顺序):";
    cin>>hour>>minute>>year>>month>>day;
    count++;
}
void telephone::insert ()                                        //插入信息
{
    if(!age)
        input();
}
void telephone::Delete ()                                       //删除信息
{
  strcpy(name,(this+1)->name);
  strcpy(number,(this+1)->number);
  hour=(this+1)->hour;
  minute=(this+1)->minute;
  year=(this+1)->year;
  month=(this+1)->month;
  day=(this+1)->day;
  age=(this+1)->age;
  count--;

}
void telephone::change()                                       //改变信息
{
    cout<<"please input again!"<int telephone::getcount()
{
    return count;
}
const int N=20;
void menu();
void createfile(char *a,telephone *array);
void outputtel(telephone *array);
void inputtel(telephone *array);
int  searchtel(telephone *array,char *na);
bool inserttel(telephone *array);
bool Deletetel(telephone *array,char *na);
int main()
{
    telephone array[N];
    int choice;                                                //读入选项
    do
    {
        menu();
        cout<<"please input your choice:";
        cin>>choice;
        if(choice>=0 && choice<=6)
            switch(choice)
        {
            case 1:inputtel(array);  break;
            case 2:cout<<"input the name searched"<char na[20];
                   cin>>na;
                   int i;
                   i=searchtel(array,na);
                   if(i==N)
                      cout<<"无此人!\n";
                   else
                      array[i].display();
                   break;
            case 3:outputtel(array);break;
            case 4:if(inserttel(array))
                       cout<<"成功插入一条记录!"<else
                       cout<<"插入失败!"<break;
            case 5:
                cout<<"input the name deleted:"<char na1[20];
                cin>>na1;
//              system("cls");
                if(Deletetel(array,na1))
                    cout<<"成功删除一条记录!"<else
                    cout<<"删除失败!"<break;
            case 6:
                cout<<"input the name changed:"<cin>>na;
               i=searchtel(array,na);
               if(i==N)
                   cout<<"没有此联系人,改变失败"<else
                   cout<<"被改变联系人的信息为:"<array[i].display ();
                   cout<<"改变后的信息为:"<array[i].Delete ();
                     array[i].change ();
                break;
            default:break;
        }
    }while(choice);
createfile("通讯录.txt",array);
    return 0;
}
void menu()                                                     //定义菜单函数
{
    cout<<"*********1.添加联系人*********"<cout<<"*********2.查询联系人信息*********"<cout<<"*********3.浏览联系人信息*********"<cout<<"*********4.插入联系人*********"<cout<<"*********5.删除联系人*********"<cout<<"*********6.改变联系人信息*********"<cout<<"*********0.退    出*********"<void createfile(char *a,telephone *array)
{
    ofstream outf(a);
    if(!outf)
    {
        cout<<"can't open the file\n";
        return;
    }
    for(int i=0;i"姓名:";
        outf<<"   "<<array[i].getname ()<"电话:";
        outf<<"   "<<array[i].getnumber ()<"年龄:";
        outf<<"   "<<array[i].getage ()<"生日:";
        outf<<"   "<<array[i].gethour ()<<array[i].getminute();
        outf<<array[i].getyear ()<<"-"<<array[i].getmonth ()<<"-"<<array[i].getday ()<void outputtel(telephone *array)                                //输出对象信息
{
    cout<<"学生总数="<for(int i=0;iarray[i].display();
}
int searchtel(telephone *array,char *na)                       //按姓名查找
{
    int i,j=N;
    for(i=0;iif(strcmp(array[i].getname(),na)==0)
           {
              j=i;
              break;
           }
    return j;
}
void inputtel(telephone *array)                               //输入对象元素                  
{
    char ch;
    int i=0;
    do
    {
        if(telephone::getcount()==N)
            cout<<"人数已满,无法继续录入!"<if(!array[i].getage())
             array[i++].input();
        array[count].input();

        cout<<"继续输入吗?(Y or N)"<cin>>ch;
    }while(ch=='Y');
}
bool inserttel(telephone *array)                               //根据年龄插入
{
    if(telephone::getcount()==N)
    {
        cout<<"人数已满,无法插入!"<return false;
    }
//  else
//  for(int j=0;j
//  {
//      if(array[j].getage())
//      {
//          cout<<"无法插入!";
//          return false;
//      }
//  }


    for(int i=0;array[i].getage() ;i++);
         array[i].insert();
         return true;
}
bool Deletetel(telephone *array,char *na)                //按姓名删除
{
    if(telephone::getcount()==0)
    {
        cout<<"没有记录,无法删除!"<return false;
    }
    int i=searchtel(array,na);
    if(i==N)
    {
        cout<<"查无此人,无法删除!"<return false;
    }
    array[i].Delete();
    return true;
}





四、运行结果

通讯录管理系统设计与实现_第1张图片

通讯录管理系统设计与实现_第2张图片

通讯录管理系统设计与实现_第3张图片

通讯录管理系统设计与实现_第4张图片


转载请注明!谢谢!

你可能感兴趣的:(综合)