0
点赞
收藏
分享

微信扫一扫

简单通讯录系统

简单介绍:程序设计B作业,一个版本用数组写的,另一个版本用STL里面的map写的。

数组版本:

#include <iostream>
#include <string.h>
using namespace std;
//我实在是没想到怎么用动态数组
class Person {
public:
    Person(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) :
        nums(a_nums), name(a_name), dianhua(a_dianhua), qq(a_qq), vx(a_vx), address(a_address) {};
    Person() {};
    void show();
    void set(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) {
        nums = a_nums;
        name = a_name;
        dianhua = a_dianhua;
        qq = a_qq;
        vx = a_vx;
        address = a_address;
    }
    long long get_nums();
    string get_name();
private:
    long long nums;
    string name;
    string dianhua;
    long long qq;
    string vx;
    string address;
};
void Person::show() {
    cout << "身份证号:" << nums << "\t" << "姓名:" << name << "\t" << "电话:" << dianhua << "\t" << "QQ:" << qq << "\t" << "VX:" << vx << "\t" << "地址:" << address << endl;
}
long long Person::get_nums() {
    return nums;
}
string Person::get_name() {
    return name;
}

class tongxulu {
public:
    tongxulu() { len = 0; };
    //从尾部插入元素
    void zengjia(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) {
        str[len].set(a_nums, a_name, a_dianhua, a_qq, a_vx, a_address);
        len++;
    }

    //输出
    void shuchu();

    //按身份证查找
    void nums_sreach(long long a_nums);

    //修改联系人
    void xiugai(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address);

    //删除联系人
    void erase(long long a_nums);

    //按姓进行查找
    void name_search(string s);

private:

    //数组长度
    int len;
    //数组容量
    Person str[2000];
};

void tongxulu::shuchu() {
    for (int i = 0; i < len; i++) {
        str[i].show();
    }
}
void tongxulu::nums_sreach(long long a_nums) {
    int flag = 0;
    for (int i = 0; i < len; i++) {
        if (str[i].get_nums() == a_nums) {
            flag = 1;
            str[i].show();
        }
    }
    if (flag == 0) {
        return;
    }
}
void tongxulu::xiugai(long long a_nums, string a_name, string a_dianhua, long long a_qq, string a_vx, string a_address) {
    int flag = 0;
    for (int i = 0; i < len; i++) {
        if (str[i].get_nums() == a_nums) {
            flag = 1;
            str[i].set(a_nums, a_name, a_dianhua, a_qq, a_vx, a_address);
        }
    }
    if (flag == 0) {
        return;
    }
}
void tongxulu::erase(long long a_nums) {
    int flag = 0;
    int step = 0;
    for (int i = 0; i < len; i++) {
        if (str[i].get_nums() == a_nums) {
            flag = 1;
            step = i;
            break;
        }
    }
    if (flag == 0) {
        return;
    }
    for (int i = step; i < len; i++) {
        str[i] = str[i + 1];
    }
    len--;
}
void tongxulu::name_search(string s) {
    int flag = 0;
    int n = s.size();
    for (int i = 0; i < len; i++) {
        flag = 0;
        for (int j = 0; j <n; j++) {
            if (str[i].get_name()[j] != s[j]) {
                flag = 1;
                return;
            }
        }
        if (flag == 0) {
            str[i].show();
        }
    }
    
}

int main()
{
    
    //数据类函数调用
    Person a;
    a.set(101010110, "钟一淼", "15095150785", 879458785, "ZYWJSYG", "山东省");
    cout << a.get_name() << endl;
    cout << a.get_nums() << endl;
    cout << endl;
    //操作类函数调用
    tongxulu arr;
    //插入
    arr.zengjia(3707214588, "李湘", "1509878985", 87878787, "8585!85858", "山东省济南市");
    arr.zengjia(3789654541, "李萧", "1509878888", 25252525, "7777!85858", "山东省泰安市");
    arr.zengjia(3707812777, "钟一淼", "1666666666", 777777777, "7777!!!!!", "山东省潍坊市");
    arr.zengjia(3507662777, "乐乐", "1666666666", 777777777, "7777!!!!!", "福建省三明市");
    //输出
    arr.shuchu();
    //按身份证号查找
    cout << endl;
    arr.nums_sreach(3789654541);
    cout << endl;
    //按姓查找
    arr.name_search("李");
    cout << endl;
    //修改
    arr.xiugai(3789654541, "钟洋", "1509878888", 28282828, "7777!85858", "山东省泰安市");
    //删除    
    arr.erase(3707812777);
    //输出
    arr.shuchu();
}

STL版本:
 

#include <iostream>
#include <string.h>
#include <set>
#include <map>
using namespace std;
//暂时尝试一下用STL的map来写。
class tongxulu {
public:
    tongxulu() {  };
    //从尾部插入元素
    void zengjia(long long nums, string name, string dianhua, long long qq, string vx, string address);
    //输出全部元素
    void shuchu();
    //按身份证查找
    void nums_sreach(long long nums);
    //修改联系人
    void xiugai(long long nums, string name, string dianhua, long long qq, string vx, string address);
    //删除联系人
    void erase(long long nums);
    //按姓名查找信息
    void name_search1(string s);
    //按姓进行查找(输出所有这个姓的人)
    void name_search2(string s);   
private:
    struct Person {
        long long a_nums;
        string a_name;
        string a_dianhua;
        long long a_qq;
        string a_vx;
        string a_address;
    };
    map<long long, Person>v;
};

void tongxulu::zengjia(long long nums, string name, string dianhua, long long qq, string vx, string address) {
    Person p;
    p.a_address = address;
    p.a_dianhua = dianhua;
    p.a_name = name;
    p.a_qq = qq;
    p.a_nums = nums;
    p.a_vx = vx;
    v[nums] = p;
}
void tongxulu::shuchu() {
    map<long long, Person>::iterator it;
    for (it = v.begin(); it != v.end(); it++) {
        Person p = it->second;
        cout << "身份证号:" << p.a_nums << "\t" << "姓名:" << p.a_name << "\t" << "电话:" << p.a_dianhua << "\t" << "QQ:" << p.a_qq << "\t" << "VX:" << p.a_vx << "\t" << "地址:" << p.a_address << endl;
    }
}
//按身份证查找
void tongxulu::nums_sreach(long long nums) {
    map<long long, Person>::iterator it = v.find(nums);
    if (it == v.end()) {
        cout << "该联系人不存在。" << endl;
        return;
    }
    cout << "身份证号:" << v[nums].a_nums << "\t" << "姓名:" << v[nums].a_name << "\t" << "电话:" << v[nums].a_dianhua << "\t" << "QQ:" << v[nums].a_qq << "\t" << "VX:" << v[nums].a_vx << "\t" << "地址:" << v[nums].a_address << endl;
}
//修改联系人
void tongxulu::xiugai(long long nums, string name, string dianhua, long long qq, string vx, string address) {
    Person p;
    p.a_name = name;
    p.a_nums = nums;
    p.a_dianhua = dianhua;
    p.a_qq = qq;
    p.a_vx = vx;
    p.a_address = address;
    v[nums] = p;
}
//删除联系人
void tongxulu::erase(long long nums) {
    map<long long, Person>::iterator it = v.find(nums);
    if (it == v.end()) {
        cout << "该联系人不存在。" << endl;
        return;
    }
    v.erase(it);
    cout << "联系人已经删除" << endl;
}
//按姓名查找信息
void tongxulu::name_search1(string s) {
    int flag = 0;
    map<long long, Person>::iterator it;
    for (it = v.begin(); it != v.end(); it++) {
        Person p = it->second;
        if (s == p.a_name) {
            flag = 1;
            cout << "身份证号:" << p.a_nums << "\t" << "姓名:" << p.a_name << "\t" << "电话:" << p.a_dianhua << "\t" << "QQ:" << p.a_qq << "\t" << "VX:" << p.a_vx << "\t" << "地址:" << p.a_address << endl;
        }
    }
    if (flag == 0) {
        cout << "该联系人不存在。" << endl;
    }
}
//按姓进行查找(输出所有这个姓的人)
void tongxulu::name_search2(string s) {
    int len = s.size();
    int cnt = 0;
    map<long long, Person>::iterator it;
    for (it = v.begin(); it != v.end(); it++) {
        int flag = 0;
        Person p = it->second;
        for (int i = 0; i < s.size(); i++) {
            if (p.a_name[i] != s[i]) {
                flag = 1;
                break;
            }
        }
        if (flag == 0) {
            cnt++;
            cout << "身份证号:" << p.a_nums << "\t" << "姓名:" << p.a_name << "\t" << "电话:" << p.a_dianhua << "\t" << "QQ:" << p.a_qq << "\t" << "VX:" << p.a_vx << "\t" << "地址:" << p.a_address << endl;

        }
    }
    if (cnt == 0) {
        cout << "您要查找的姓的人不存在" << endl;
    }
}

int main()
{
    tongxulu arr;
    //插入
    arr.zengjia(3707214588, "李湘", "1509878985", 87878787, "8585!85858", "山东省济南市");
    arr.zengjia(3789654541, "李萧", "1509878888", 25252525, "7777!85858", "山东省泰安市");
    arr.zengjia(3707812777, "钟一淼", "1666666666", 777777777, "7777!!!!!", "山东省潍坊市");
    arr.zengjia(3507662777, "乐乐", "1666666666", 777777777, "7777!!!!!", "福建省三明市");
    //输出
    arr.shuchu();
    //按身份证号查找
    cout << endl;
    arr.nums_sreach(3789654541);
    //修改联系人
    arr.xiugai(3789654541, "李响", "1509878888", 333333333, "7777!85858", "山东省菏泽市");
    //删除联系人
    arr.erase(3707812777);
    //按姓名查找信息
    arr.name_search1("乐乐");
    cout << endl;
    //按姓进行查找(输出所有这个姓的人)
    arr.name_search2("李");
    //最后输出
    cout << endl;
    arr.shuchu();
}

撒花,困死了,睡觉觉!

举报

相关推荐

简单实现通讯录

通讯录管理系统

简单的C语言通讯录

Qt通讯录管理系统

通讯录管理系统整理

通讯录排序

文件通讯录

通讯录(详解)

0 条评论