顺序表- QQ群名片信息管理系统设计(C语言实现)

问题描述

采用顺序表,设计一个 QQ群名片信息管理系统,主要包含:QQ号码、昵称、性别、年龄、生日等属性。完成基本功能如下:
(1)初始化群名片;
(2)添加某一个QQ群中10名成员的名片信息;
(3)删除某位成员信息;
(4)根据QQ号码或昵称查找某位成员的信息;
(5)显示群成员信息。
扩展功能:
1.统计当前QQ群中共有多少联系人
2.销毁群名片

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MaxSize 10          //最大人数

/* 成员信息 */
typedef struct Member
{
    int Number;
    char ID[20];
    char Sex[4];
    int Age;
    char Birthday[20];
}Mem;

typedef struct SeqList *PtrToSeqList;
struct SeqList
{
    Mem Data[MaxSize];
    int count;              //当前人数
};
typedef PtrToSeqList List;

void PrintMenu();                    //打印菜单
List InitList();                     //初始化表
int IsFuLL(List L);                  //是否为满
void AddMember(List L);              //添加成员
int IsEmpty(List L);                 //是否为空
List DeleteMember(List L, int Q);    //通过qq号删除成员
void FindMember(List L);             //通过qq号或昵称查找成员
void PrintList(List L);              //打印表


int main()
{
    List L;
    int choice, d, flag;
    choice = 1;
    flag = 0;
    L = (List)malloc(sizeof(struct SeqList));
    L->count = 0;
    PrintMenu();

    while(choice)                   //choice == 0 时退出系统
    {
        printf("请选择:");
        scanf("%d", &choice);
        if(flag == 1)
            printf("名片已被销毁请先初始化名片!\n");
        else
        {
            switch(choice)
            {
            case 1:         //录入群成员信息
                AddMember(L);
                break;
            case 2:         //删除群成员信息
                printf("请输入要删除成员的QQ:");
                scanf("%d", &d);
                L = DeleteMember(L, d);
                break;
            case 3:         //查找成员信息
                FindMember(L);
                break;
            case 4:         //显示群成员信息
                PrintList(L);
                break;
            case 5:         //显示当前成员数
                printf("当前有%d个成员\n", L->count);
                break;
            case 6:         //清空名片
                L = InitList();
                break;
            case 7:         //销毁名片
                free(L);
                flag = 1;
                printf("名片已被销毁!\n");
                break;
            }
        }
        if(choice == 8)               //初始化名片
        {
            flag = 0;
            L = InitList();
        }
        else if(choice == 9)         //回到主菜单
            PrintMenu();
        else if(choice < 0 || choice > 9)
                printf("非法输入!\n");
    }
    printf("谢谢使用!");
    return 0;
}

void PrintMenu()
{
    printf("                                              QQ群名片信息管理系统\n");
    printf("                                         ________________________________\n\n");
    printf("                                            1     录入群成员信息\n");
    printf("                                         ________________________________\n\n");
    printf("                                            2     删除群成员信息\n");
    printf("                                         ________________________________\n\n");
    printf("                                            3     查找成员信息\n");
    printf("                                         ________________________________\n\n");
    printf("                                            4     显示群成员信息\n");
    printf("                                         ________________________________\n\n");
    printf("                                            5     显示当前成员数\n");
    printf("                                         ________________________________\n\n");
    printf("                                            6     清空名片\n");
    printf("                                         ________________________________\n\n");
    printf("                                            7     销毁名片\n");
    printf("                                         ________________________________\n\n");
    printf("                                            8     初始化名片\n");
    printf("                                         ________________________________\n\n");
    printf("                                            9     回到主菜单\n");
    printf("                                         ________________________________\n\n");
    printf("                                            0     退出系统\n");
    printf("                                         ________________________________\n\n");
}

List InitList()
{
    List L;
    L = (List)malloc(sizeof(struct SeqList));
    L->count = 0;
    printf("已初始化名片!\n");
    return L;
}

int IsFull(List L)
{
    return (L->count == MaxSize);
}

void AddMember(List L)
{
     if(IsFull(L))
     {
         printf("成员已满!\n");
         return;
     }

     printf("QQ号:");
     scanf("%d", &L->Data[L->count].Number);
     printf("昵称:");
     scanf("%s", L->Data[L->count].ID);
     printf("性别:");
     scanf("%s", L->Data[L->count].Sex);
     printf("年龄:");
     scanf("%d", &L->Data[L->count].Age);
     printf("生日:");
     scanf("%s", L->Data[L->count].Birthday);

     L->count++;
}

int IsEmpty(List L)
{
    return (L->count == 0);
}

List DeleteMember(List L, int Q)
{
    int i, j, tmp;
    tmp = L->count;
    if(IsEmpty(L))
        printf("无成员!\n");
    for(i = 0; i < L->count; i++)
    {
        if(L->Data[i].Number == Q)
        {
            for(j = i; j < L->count; j++)
                L->Data[j] = L->Data[j + 1];
            L->count--;
        }
    }
    if(tmp == L->count)
        printf("该成员未在群内!\n");
    return L;
}

void FindMember(List L)
{
    int i, fqq, choice, flag;
    char fid[20];
    if(IsEmpty(L))
    {
        printf("无成员!\n");
        return ;
    }
    flag = 0;           //查找标志
    printf("查找\n1、qq:\t2、昵称:\n");
    scanf("%d", &choice);
    switch(choice)
    {
    case 1:
        printf("请输入QQ号:");
        scanf("%d", &fqq);
        for(i = 0; i < L->count; i++)
        {
            if(fqq == L->Data[i].Number)
            {
                printf("以下为您要找的成员:");
                printf("\nQQ号:%d", L->Data[i].Number);
                printf("\n昵称:%s", L->Data[i].ID);
                printf("\n性别:%s", L->Data[i].Sex);
                printf("\n年龄:%d", L->Data[i].Age);
                printf("\n生日:%s\n", L->Data[i].Birthday);
                flag = 1;
            }
        }
        break;
    case 2:
        printf("请输入昵称:");
        scanf("%s", fid);

        for(i = 0; i < L->count; i++)
        {
            if(!strcmp(fid, L->Data[i].ID))         //strcmp(str1, str2) 当 “str1 == str2” 时返回0
            {
                printf("以下为您要找的成员:");
                printf("\nQQ号:%d", L->Data[i].Number);
                printf("\n昵称:%s", L->Data[i].ID);
                printf("\n性别:%s", L->Data[i].Sex);
                printf("\n年龄:%d", L->Data[i].Age);
                printf("\n生日:%s\n", L->Data[i].Birthday);
                flag = 1;
            }
        }
        break;
    }
    if(flag == 0)
        printf("未找到改成员!\n");
}

void PrintList(List L)
{
    int i;
    if(IsEmpty(L))
    {
        printf("无成员!\n");
        return ;
    }
    for(i = 0; i < L->count; i++)
    {
        printf("\n第%d个成员的信息:", i + 1);
        printf("\nQQ号:%d", L->Data[i].Number);
        printf("\n昵称:%s", L->Data[i].ID);
        printf("\n性别:%s", L->Data[i].Sex);
        printf("\n年龄:%d", L->Data[i].Age);
        printf("\n生日:%s\n", L->Data[i].Birthday);
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容

  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,734评论 0 15
  • 一、介绍 qqbot 是一个用 python 实现的、基于腾讯 SmartQQ 协议的 QQ 机器人框架,可运行在...
    ysai阅读 2,796评论 2 50
  • 社交红利阅读笔记 书名:社交红利(修订升级版) 作者:徐志斌 出版社:中信出版社 正文前笔记: 推荐序1摘要 社交...
    凫水阅读 8,928评论 4 26
  • 一、 QQ群设置研究情况 (一)管理群 1.可以编辑群资料,添加群头像,修改群名称、群地点、群分类、群标签、群介绍...
    小武秘阅读 697评论 0 3
  • 夏日的炎热还未来到 冬日的悲凉就已降临 曙光尚未出现 黑暗重临世间 你还未出现 就选择离开
    jianshuxuhan阅读 170评论 2 1