C语言编程QQ管理系统,顺序表- QQ群名片信息管理系统设计(C语言实现)
问题描述
采用顺序表,设计一个 QQ群名片信息管理系统,主要包含:QQ号码、昵称、性别、年龄、生日等属性。完成基本功能如下:
(1)初始化群名片;
(2)添加某一个QQ群中10名成员的名片信息;
(3)删除某位成员信息;
(4)根据QQ号码或昵称查找某位成员的信息;
(5)显示群成员信息。
扩展功能:
1.统计当前QQ群中共有多少联系人
2.销毁群名片
代码
#include
#include
#include
#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);
}
}
C语言编程QQ管理系统,顺序表- QQ群名片信息管理系统设计(C语言实现)相关推荐
- C语言链表的转置算法,c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置.doc...
c语言编程集 数据结构 顺序表 点链表 数制转换 矩阵转置 #include "stdio.h" #include "malloc.h" /*typedef s ...
- 考试报名管理系统C语言顺序表,学生信息管理系统(顺序表)实验
<学生信息管理系统(顺序表)实验>由会员分享,可在线阅读,更多相关<学生信息管理系统(顺序表)实验(29页珍藏版)>请在人人文库网上搜索. 1.精品文档数 据 结 构 课 程 ...
- c语言乘法口诀表的流程图_例18:C语言编程实现九九乘法表
例18:C语言编程实现九九乘法表,样式要求长方形.右三角形.左三角形. 解题思路:这个问题的算法很简单,就是两个for循环的嵌套,三角形的样式就是多了一些空格. 长方形源代码演示: #include& ...
- C语言实现了一个顺序表(附完整源码)
C语言实现了一个顺序表 顺序表 顺序表的概念 顺序表的存储结构 C语言实现了顺序表完整源码 顺序表 顺序表的概念 顺序表是线性表的顺序存储结构,加按顺序存储方式构造的线性表的存储结构. 说明:对于n个 ...
- 顺序表的c语言结构体描述,顺序表的基本方法实现C语言版
顺序表--------------线性表的第一个儿子 这个儿子的结构体定义: typedef int ElemType;//取别名 typedef struct link{ ElemType * he ...
- (C语言)已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列。
(C语言)已知顺序表L1,L2中数据由小到大有序,请用尽可能快的方法将L1与L2中的数据合并到L3中,使数据在L3中按升序排列. 输入样例: 5 2 4 9 10 11 6 1 2 4 6 7 8 输 ...
- c语言 商品管理系统 顺序表的应用
商品管理系统 需求描述 运行结果 代码 需求描述 使用线性表编写程序,实现一在线商城对商品进行管理,商城客户可以查询商品信息,商城的商家可以添加.删除.查询.修改自己发布的商品信息. 要求: 商品用户 ...
- c语言编程文件中删除数据结构,C语言数据结构实战(一)顺序表的插入与删除
今天学习了思成老师的数据结构实战教程 写了一个顺序表 插入和删除的操作 把源码共享给大家 一共包括list.c stu.h main.c list.h .h文件是头文件 需要引入 具体的功能我都已 ...
- 数据结构--学生成绩管理系统(顺序表)
一. 实验目的: 1.通过此次课程设计学生成绩管理系统的题目,掌握链表等数据结构的基本操作方面的知识,并能灵活的解决一些基本的问题,加深对其性质及各项操作的理解: 2. 将所学数据结构方面的知识与具体 ...
- C语言用数组(顺序表)实现大小固定的队列的方法
顺序队列,即采用顺序表模拟实现的队列结构. 我们知道,队列具有以下两个特点: 1.数据从队列的一端进,另一端出: 2.数据的入队和出队遵循"先进先出"的原则: 因此,只要使用顺序表 ...
最新文章
- LINUX环境下资源下载中文目录及中文文件名称问题
- 《基于压缩传感的匹配追踪重建算法研究》读书笔记
- 抽象工厂和工厂设计模式之间有什么区别?
- 若依 v4.6.1 后台 排除log4j
- Castle ActiveRecord学习实践(1):快速入门指南
- 单应性矩阵和仿射变换_单应矩阵 基本矩阵 本质矩阵的区别与联系
- VTK:功能袋图用法实战
- iOS之深入解析CocoaPods的GitLab CI与组件自动化构建与发布
- [BZOJ 4916]神犇和蒟蒻
- 如何识别一个人是web前端程序员
- 如何运行vue项目 ?(详解,建议收藏) ❤️
- cas client 更新ticket_有人知道 cas单点登录系统是怎么样取得proxyticket的?
- 高斯计工作原理和高斯计使用方法图解
- mysql hint 驱动_MySQL HINT:Straight_JOIN
- 蜂巢的艺术与技术价值 - PostgreSQL PostGIS's hex-grid
- 分数加减乘除混合运算带答案_100道题,分数加减法混合运算,要答案
- 2022 计算机视觉顶会论文----目标检测
- 【C# 教程系列第 29 篇】求1-100之内所有的质数(素数)
- 点击键盘的return键收回键盘
- 机器学习基础——生成模型和判别模型
热门文章
- 用cmd 查看本机的IP地址
- ffmpeg编码:xavc 42210bit+mxf
- mysql完整的建表语句
- 油猴脚本对web项目的影响
- 《金字塔原理》学习笔记 | 第4篇—演示的逻辑
- linux 存储映射lun 给_Linux挂载iscsi存储
- MPC5744P-时钟模块
- idea json转对象(Java实体类)
- php-5.6.2-Win32-VC11-x64.zip+ apache2.4.10 +php_xdebug-2.2.5-5.6-vc11-x86_64.dll+mysql5.6安装配置
- c 转时间戳php,php日期转时间戳,指定日期转换成时间戳 筋斗云网络