首页 > 其他分享 >通讯录管理系统

通讯录管理系统

时间:2023-04-17 19:46:36浏览次数:25  
标签:head 管理系统 scanf 联系人 link 通讯录 printf NULL

这段代码是对c语言的复习,也是复习之前学过的链表

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
void ShowMenu()
{
puts("****************************");
puts("***欢迎使用通讯录管理系统***");
puts("******-----------------*****");
puts("* 1.添加新建联系人 *");
puts("* 2.显示已有联系人 *");
puts("* 3.删除已有联系人 *");
puts("* 4.查找已有联系人 *");
puts("* 5.修改已有联系人 *");
puts("* 6.清空已有联系人 *");
puts("* 0.退出联系人系统 *");
puts("****************************");

}
typedef struct link
{
char name[10];
char sex[3];
char phone[15];
char house[30];
struct link *next;

}link;
link *Deletenew(link *head)
{
char a[10];
printf("请输入您要删除的联系人的名字:\n");
scanf("%s", a);
fflush(stdin);
link *p = head, *pr = NULL;
if (head == NULL)
{
printf("没有联系人哦~\n");
exit(0);
}
while (strcmp(p->name, a)&&p!=NULL)
{
pr = p;
p = p->next;
}
if (p != NULL)
{
pr->next = p->next;
free(p);
}
else
{
printf("没有找到该联系人!\n");
}

}
void givenew(link *p)
{
printf("请输入姓名:\n");//给新建的联系人赋值
scanf("%s", p->name);
fflush(stdin);
puts("请输入性别");
puts("1--男 0--女");
int sex1;
do
{
scanf("%d", &sex1);
fflush(stdin);
if (sex1 == 1)
{
strcpy(p->sex, "男");
}
else if (sex1 == 0)
{
strcpy(p->sex, "女");
}
else
{
printf("请重新输入!\n");
}
} while (sex1 != 1 && sex1 != 0);
printf("请输入其联系电话:\n");
scanf("%s", p->phone);
fflush(stdin);
printf("请输入其家庭住址:\n");
scanf("%s", p->house);
}

link *addnew(link *head)
{
link *p, *pr=head;
p = (link *)malloc(sizeof(link));
if (p == NULL)
{
printf("没有足够的储存空间!");
exit(0);
}
if (head == NULL)
{
head = p;
}
else
{
while (pr->next != NULL) pr = pr->next;
pr->next = p;
}
givenew(p);
p->next = NULL;
return head;
}
void show(link *head)
{
link *p = head; int i = 0;
while (p != NULL)
{
i++;
printf("%d.%s\t%s\t%s\t%s\t\n", i, p->name, p->sex, p->phone, p->house);
p = p->next;
}

}
void DeleteM(link *head)
{
link *p = NULL, *pr = head;
while (pr!=NULL)
{
p = pr;
pr = pr->next;
free(p);
}

}
link *find(link *head)
{
link *p = head;
char a[10];
printf("请输入您要查找的联系人:\n");
scanf("%s", a);
if (head == NULL)
{
printf("没有联系人哦~\n");
exit(0);
}
while (strcmp(p->name, a) && p != NULL)
{
p = p->next;
}
if (p == NULL)
{
printf("没有找到该联系人!\n");
exit(0);
}
else
{
return p;
}
}
void fix(link *head)
{
link *p = head;
char a[10];
printf("请输入您要修改的联系人:\n");
scanf("%s", a);
if (head == NULL)
{
printf("没有联系人哦~\n");
exit(0);
}
while (strcmp(p->name, a) && p != NULL)
{
p = p->next;
}
if (p == NULL)
{
printf("没有找到该联系人!\n");
exit(0);
}
else
{
printf("请输入您要修改的内容:1.名字 2.性别 3.电话 4.住址:\n");
int b; scanf("%d", &b);
switch (b)
{
case 1:printf("请输入修改后的名字:\n");
scanf("%s", p->name);
break;
case 2:printf("请输入修改后的性别:1.男 0.女");
int c;
do
{
scanf("%d", &c);
if (c == 1) strcpy(p->sex, "男");
else if (c == 0) strcpy(p->sex, "女");
else printf("请重新输入!");
} while (c != 1 && c != 0);
break;
case 3:printf("请输入修改后的电话:\n");
scanf("%s", p->phone);
break;
case 4:printf("请输入修改后的住址:\n");
scanf("%s", p->house);
break;

}
}

}

int main()
{
link *head = NULL;
while (1)
{
system("cls");
//head=addnew(head);
//show(head);
ShowMenu();
int choose;
scanf("%d", &choose);
switch (choose)
{
case 0:
printf("欢迎下次使用!\n");
DeleteM(head);
return 0;
case 1:
head = addnew(head);
printf("已完成当前操作,即将返回主页面!\n");
system("pause");
break;
case 2:
show(head);
printf("已完成当前操作,即将返回主页面!\n");
system("pause");
break;
case 3:
Deletenew(head);
show(head);
printf("已完成当前操作,即将返回主页面!\n");
system("pause");
break;
case 4:
{
link *pn = NULL;
pn = find(head);
printf("%s\t%s\t%s\t%s\t\n", pn->name, pn->sex, pn->phone, pn->house);
printf("已完成当前操作,即将返回主页面!\n");
system("pause");
break;
}
case 5:
fix(head);
show(head);
printf("已完成当前操作,即将返回主页面!\n");
system("pause");
break;
case 6:
printf("这样做会造成无法找回的联系人,您确定这么做吗?(Y/N)\n");
char c; scanf(" %c", &c);
if (c == 'y' || c == 'Y')
{
DeleteM(head);
head = NULL;
}
else
{
continue;
}
printf("已完成当前操作,即将返回主页面!\n");
system("pause");
}

}
DeleteM(head);
}

标签:head,管理系统,scanf,联系人,link,通讯录,printf,NULL
From: https://www.cnblogs.com/kua-kua/p/17327221.html

相关文章

  • abp(net core)+easyui+efcore实现仓储管理系统——模块管理升级之上(六十一)
     Abp(netcore)+easyui+efcore实现仓储管理系统目录abp(netcore)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)abp(netcore)+easyui+efcore实现仓储管理系统——解决方案介绍(二)abp(netcore)+easyui+efcore实现仓储管理系统——领域层创建实体(三) abp(netcore)+e......
  • 通讯录的思路与实现(C语言)
     目录前言程序的分装程序的结构函数实现通讯录的初始化通讯录的扩容将数据保存到本地增加联系人显示通讯录所有联系人目标联系人的检索(根据名称)目标联系人的检索(根据号码)检索发展来的函数删除联系人查询目标联系人联系人信息的更改按名称对通讯录进行排序找到属于目标类别的联......
  • C/C++运动场馆预订管理系统[2023-04-15]
    C/C++运动场馆预订管理系统[2023-04-15]题目14:运动场馆预订管理系统对旅游管理进行简单模拟。运动场地管理:包括场地名称(如羽毛球场A、乒乓球场B等)、开放时间、计费时长、价格。注意:场地可能增减、同一场地的租金在不同时间段可能不同。用户信息管理:包括用户姓名、联系方式等信......
  • 企业文档管理系统(网盘)对比
    企业文档内容管理系统对比seafile系统高效、安全、稳定,可以控制只能在线预览。资料上传后经过分片处理,即使拷贝出去也不能访问。权限通过分享的方式,可以细粒度控制,但是和钉钉云盘一样,这样的方式呈现比较乱,没有层级关系。可道云kodbox免费版只能10人使用,类似windows的......
  • C++实现职工管理系统
    使用C++编程实现——管理系统中需要实现的功能如下:退出管理程序:退出当前管理系统增加职工信息:实现批量添加职工功能,将信息录入到文件中,职工信息为:职工编号,姓名,部门编号显示职工信息:显示公司内部所有职工的信息删除离职职工:按照编号删除指定的职工修改职工信息:按照编号修改职工......
  • C/C++校园管理系统[2023-04-15]
    C/C++校园管理系统[2023-04-15]校园管理系统(100分)1.系统界面设计(5分)(1)登录界面。该界面实现系统的登录。(1分)(2)系统主界面。该界面应该包含链接到各个二级子功能的菜单,提供进入二级栏目(1分)(3)各个子功能界面。该界面应该能够实现对数据的各种操作,并实现返回上一......
  • C/C++会员卡计费管理系统[2023-04-13]
    C/C++会员卡计费管理系统[2023-04-13]1.开发一个会员卡计费管理系统。2.新会员登记(将会员个人信息及会员卡信息进行录入);3.会员信息维护、会员等级、不同等级享受折扣信息的维护;4.会员续费。(会员出示会员卡后,管理人员根据卡号查找到该会员的信息并显示,此时可以进行续费,续费......
  • 13-ArrayList&学生管理系统
    1.ArrayList集合和数组的优势对比:长度可变(自动扩容)添加数据的时候不需要考虑索引,默认将数据添加到末尾1.1ArrayList类概述什么是集合提供一种存储空间可变的存储模型,存储的数据容量可以发生改变ArrayList集合的特点长度可以变化,只能存储引用数据类型。泛......
  • 文献管理系统
    要探究的问题:业务建模,需求建模,对象建模,动态建模,物理建模。结论:文献流程过程一般指文献的传递过程,包括文献的借、还两个过程,文献下架则是文献过时或破旧,下架打包的过程。文件管理系统参与者包括很多,系统能满足这些参与者的需求。建立系统类图和交互图,能准确、完整地描述问题域。动......
  • 微电网能源管理系统基于粒子群优化算法的风力光伏储能风光储系统的实时能量管理
    (1)微电网能源管理系统基于粒子群优化算法的风力光伏储能风光储系统的实时能量管理如图123matlab源代码,代码按照高水平文章复现,保证正确粒子群优化算法(PSO),并将其应用于独立风力微型发电机组光伏能源系统的实时最优能量管理问题。结果表明,所提出的基于pso的能量管理算法在考虑......