C语言数据结构顺序表-通讯录管理系统的设计与实现(附带源码)

用链表或者顺序表实现以下系统,完成线性表的建立(至少包括10个结点),以及线性表中信息(结点)的插入、查找、删除、修改、输出等操作,。若能用“文件”存储数据,可加分。

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

(1)通讯者信息包括:编号(char num[10])、姓名(char name[10])、性别(char sex[10])、电话(char phone[20])、公司名称(char address[50])

2)除了总的模块要求外,还需a.统计通讯录中男女比例;b.显示出同一公司中的人的信息。

运行主页面效果:

  主菜单函数:

完整代码请访问:

腾讯文档腾讯文档-在线文档https://docs.qq.com/doc/p/71239d69a76f56cf1521717ae6b22c27cf876f10

int main() {
    SeqList L;
    InitList(&L);
    int choice;
    do {
        printf("\n");
        printf("**********通讯录管理系统**********\n");
        printf("**********代码**********\n");
        printf("**********看主页的连接方式**********\n");
        printf("1. 添加通讯者信息\n");
        printf("2. 删除通讯者信息\n");
        printf("3. 查找通讯者信息\n");
        printf("4. 修改通讯者信息\n");
        printf("5. 统计通讯录中男女比例\n");
        printf("6. 显示出同一公司中的人的信息\n");
        printf("7. 显示通讯录中所有人员信息\n");
        printf("0. 退出通讯录管理系统\n");
        printf("请选择操作序号:");
        scanf("%d", &choice);
       

添加联系人:

switch (choice) {
            case 1: { // 添加通讯者信息
                Person p;
                printf("请输入编号:");
                scanf("%s", p.num);
                printf("请输入姓名:");
                scanf("%s", p.name);
                printf("请输入性别:");
                scanf("%s", p.sex);
                printf("请输入电话:");
                scanf("%s", p.phone);
                printf("请输入公司名称:");
                scanf("%s", p.address);
                if (ListInsert(&L, L.length + 1, p)) {
                    printf("添加成功!\n");
                } else {
                    printf("添加失败!\n");
                }
                break;

 查看所有联系人:

// 根据编号查找顺序表L中的元素,并将其保存到e中
int GetElem(SeqList L, char *num, Person *e) {
    for (int i = 0; i < L.length; i++) {
        if (strcmp(L.data[i].num, num) == 0) { // 如果编号匹配
            *e = L.data[i]; // 将元素保存到e中
            return i + 1;   // 返回元素在顺序表中的位置
        }
    }
    return 0; // 没有找到匹配的元素

 查找联系人:

case 3: { // 查找通讯者信息
                char num[10];
                printf("请输入要查找的通讯者编号:");
                scanf("%s", num);
                Person p;
                if (GetElem(L, num, &p)) { // 如果编号存在
                    printf("编号:%s,姓名:%s,性别:%s,电话:%s,公司名称:%s\n", p.num, p.name, p.sex, p.phone, p.address);
                } else { // 如果编号不存在
                    printf("没有找到编号为%s的通讯者信息!\n", num);
                }
                break;
            }

修改联系人:

case 4: { // 修改通讯者信息
                char num[10];
                printf("请输入要修改的通讯者编号:");
                scanf("%s", num);
                Person p;
                if (GetElem(L, num, &p)) { // 如果编号存在
                    printf("请输入修改后的信息:\n");
                    printf("请输入编号:");
                    scanf("%s", p.num);
                    printf("请输入姓名:");
                    scanf("%s", p.name);
                    printf("请输入性别:");
                    scanf("%s", p.sex);
                    printf("请输入电话:");
                    scanf("%s", p.phone);
                    printf("请输入公司名称:");
                    scanf("%s", p.address);
                    if (ListUpdate(&L, GetElem(L, num, &p), p)) {
                        printf("修改成功!\n");
                    } else {
                        printf("修改失败!\n");
                    }
                } else { // 如果编号不存在
                    printf("没有找到编号为%s的通讯者信息!\n", num);
                }
                break;

统计男女性别:

// 统计通讯录中男女比例
void CountGenderRatio(SeqList L) {
    int maleCount = 0, femaleCount = 0;
    for (int i = 0; i < L.length; i++) {
        if (strcmp(L.data[i].sex, "男") == 0) {
            maleCount++;
        } else if (strcmp(L.data[i].sex, "女") == 0) {
            femaleCount++;
        }
    }
    printf("男性人数:%d,女性人数:%d\n", maleCount, femaleCount);

按公司查找人员:

// 显示出同一公司中的人的信息
void ShowSameAddressPerson(SeqList L, char *address) {
    printf("公司名称为%s的人员信息如下:\n", address);
    for (int i = 0; i < L.length; i++) {
        if (strcmp(L.data[i].address, address) == 0) {
            printf("编号:%s,姓名:%s,性别:%s,电话:%s\n", L.data[i].num, L.data[i].name, L.data[i].sex, L.data[i].phone);
        }
    }
}

 全局函数,定义结构体:

// 定义通讯者信息的结构体
typedef struct {
    char num[10];     // 编号
    char name[10];    // 姓名
    char sex[10];     // 性别
    char phone[20];   // 电话
    char address[50]; // 公司名称
} Person;

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白不会debug

需要源码打个赏呗~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值