搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
笔触狂放9
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
androidstudio程序真机_Flutter 开发从 0 到 1(七) iPhone 真机调试
2
SparkException: Dynamic allocation of executors requires the external shuffle service解决办法
3
Script file ‘D:\Anaconda\Scripts\pip-script.py‘ is not present.
4
python生成指定长度字符串_python 字符串固定长度
5
llm构建知识库
6
Python通过pyecharts对爬虫房地产数据进行数据可视化分析(一)_房价可视化分析
7
逻辑回归 Logistics Regression 两种分类实例(Matlab)_matlab逻辑回归分类案例
8
github提交时,git config --global要加双引号_git的邮箱 有双引号怎么办
9
使用kafka tools工具连接带有用户名密码的kafka_如何通过账号密码连接kafka
10
NOSQL的必要性和效率、成本分析
当前位置:
article
> 正文
利用线性表实现通讯录管理_利用线性表实现一个通讯录管理
作者:笔触狂放9 | 2024-04-27 13:40:04
赞
踩
利用线性表实现一个通讯录管理
//实现通讯录的建立、增加、删除、修改、查询等功能
// 能够实现简单的菜单交互,即可以根据用户输入的命令,选择不同的操作。
#include<iostream>
#include<cstring>
using namespace std;
struct DataType
{
int ID;
//编号
char name[10];
//姓名
char ch;
//性别
char phone[13];
//电话
char addr[31];
//地址
DataType *prior;
DataType *next;
};
int m = 0; //全局变量,记录通讯录内数据个数
class Contacts
{
DataType *first; //定义头结点
public:
Contacts(); //建立
void Insert(); //增加
void Delete(); //删除
void Revise(); //修改
void Search(); //查找
void Show(); //浏览
void Print(DataType *p); //输出
void MENU(); //菜单
~Contacts();
};
//构造函数,建立头结点
Contacts::Contacts()
{
first = new DataType;
first->next = first->prior = first;
first->ID = 0;
}
//析构函数
Contacts::~Contacts()
{
DataType *p = first->prior;
DataType *q;
if (p == first)
delete p;
else
{
do
{
q = p;
p = p->prior;
delete q;
} while (p != first);
delete p;
}
}
//添加联系人(头插法)
void Contacts::Insert()
{
DataType *data = new DataType;
data->next = first->next;
data->prior = first;
first->next = data;
data->next->prior = data;
m++;
data->ID = m;
//录入信息
cout << "请输入联系人姓名:";
cin >> data->name; cin.sync();
flag1:cout << endl << "请输入联系人性别( M(男) or W(女) ):";
cin >> data->ch; cin.sync();
if (data->ch != 'M'&&data->ch != 'W'&&data->ch != 'm'&&data->ch != 'w')
{
cout << "输入有误!" << endl;
goto flag1;
}
cout << endl << "请输入联系人电话号码:";
cin >> data->phone; cin.sync();
cout << endl << "请输入联系人地址:";
cin >> data->addr;
cout << endl << "添加完成!" << endl;
system("pause");
system("cls");
}
//输出单个联系人信息
void Contacts::Print(DataType *p)
{
cout << "编号:" << p->ID << endl;;
cout << "姓名:" << p->name << endl;
cout << "性别:";
if (p->ch == 'm' || p->ch == 'M')
cout << "男" << endl;
else
cout << "女" << endl;
cout << "号码:" << p->phone << endl;
cout << "住址:" << p->addr << endl;
}
//查找联系人(按姓名)
void Contacts::Search()
{
cout << "请输入要查找的联系人的姓名:";
char aname[10];
cin >> aname;
DataType *p = first->next;
while (p)
{
//找到则输出信息
if (strcmp(p->name, aname) == 0)
{
Print(p);
system("pause");
system("cls");
break;
}
p = p->next;
//找不到就输出“查无此人”
if (p == first)
{
cout << "查无此人!" << endl;
system("pause");
system("cls");
break;
}
}
}
//删除联系人
void Contacts::Delete()
{
cout << "请输入要删除的联系人的姓名:";
char aname[10];
cin >> aname;
DataType *p = first->next;
while (p != first)
{
//找到该联系人后确认删除
if (strcmp(p->name, aname) == 0)
{
Print(p);
cout << "确定删除该联系人?(Y or N)" << endl;
flag2:char s;
cin >> s;
//确认则删除
if (s == 'Y' || s == 'y')
{
DataType *q = p->prior;
//之后的联系人编号减一
while (q != first)
{
q->ID = q->ID - 1;
q = q->prior;
}
//删除节点
p->next->prior = p->prior;
p->prior->next = p->next;
delete p;
m--;
cout << "删除完成!" << endl;
system("pause");
system("cls");
break;
}
//取消删除
else if (s == 'N' || s == 'n')
{
system("cls");
}
else
{
cout << "输入有误,请重新输入:";
goto flag2;
}
}
else
p = p->next;
//找不到该联系人
if (p == first)
{
cout << "查无此人!" << endl;
system("pause");
system("cls");
break;
}
}
}
//修改联系人
void Contacts::Revise()
{
cout << "请输入要修改的联系人的姓名:";
char aname[10];
cin >> aname;
DataType *p = first->next;
while (p)
{
//找到后录入新信息
if (strcmp(p->name, aname) == 0)
{
cout << "请输入联系人姓名:";
cin >> p->name; cin.sync();
flag3:cout << endl << "请输入联系人性别( M(男) or W(女)):";
cin >> p->ch; cin.sync();
if (p->ch != 'M'&&p->ch != 'W'&&p->ch != 'm'&&p->ch != 'w')
{
cout << "输入有误!" << endl;
goto flag3;
}
cout << endl << "请输入联系人电话号码:";
cin >> p->phone; cin.sync();
cout << endl << "请输入联系人地址:";
cin >> p->addr;
cout << "修改完成!" << endl;
system("pause");
system("cls");
break;
}
p = p->next;
//找不到联系人
if (p == first)
{
cout << "查无此人" << endl;
system("pause");
system("cls");
break;
}
}
}
//浏览通讯录
void Contacts::Show()
{
if (m == 0)
{
cout << "通讯录空!" << endl;
system("pause");
system("cls");
}
//循环输出联系人信息
else
{
DataType *p = first->prior;
while (p)
{
Print(p);
cout << endl;
p = p->prior;
if (p == first)
{
system("pause");
system("cls");
break;
}
}
}
}
//菜单(主界面)
void Contacts::MENU()
{
bool exitFlag = false; //退出标识符
do
{
cout << endl << endl << endl;
cout << "***********************************************************************" << endl;
cout << "* 通讯录(C++版) *" << endl;
cout << "* *" << endl;
cout << "* 1.添加联系人 *" << endl;
cout << "* 2.删除联系人 *" << endl;
cout << "* 3.修改联系人 *" << endl;
cout << "* 4.查找联系人 *" << endl;
cout << "* 5.浏览通讯录 *" << endl;
cout << "* 6.退出通讯录 *" << endl;
cout << "* *" << endl;
cout << "***********************************************************************" << endl;
cout << endl << "请输入您要完成的操作序号:";
int k;
flag4:cin >> k;
switch (k)
{
case 1:
system("cls");
Insert();
break;
case 2:
system("cls");
Delete();
break;
case 3:
system("cls");
Revise();
break;
case 4:
system("cls");
Search();
break;
case 5:
system("cls");
Show();
break;
case 6:
exitFlag = true;
break;
default:
cout << endl << "输入有误,请重新输入:";
goto flag4;
}
} while (!exitFlag);
cout << "谢谢使用!" << endl;
}
//主函数(测试)
void main()
{
Contacts MyContacts;
MyContacts.MENU();
}
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/笔触狂放9/article/detail/497010
推荐阅读
article
python
脚本-
caeser
凯撒
密码-
rot13
_
凯撒
密码的脚本...
python
脚本-
caeser
凯撒
密码-
rot13
_
凯撒
密码的脚本
凯撒
密码的脚本 ...
赞
踩
article
Android
面试
题整理
,
4年小
Android
的
心路历程
,
附超全教程文档_
android
4年
面试
...
前言网上有很多对程序员简历的一些指导
,
这里就不重述
,
大家可以搜下网上其他大神的总结
,
结合自身情况修改下。我有几点建议:1...
赞
踩
article
AI
音乐
GPT
时刻来临:
Suno
快速入门手册!_
suno
歌词
格式...
例如,我们可以在
歌词
中标注Verse(主歌)、Rap(说唱)、Chorus(副歌/高潮)等元标签,帮助
AI
理解歌曲的结构...
赞
踩
article
【
git
】【
IDEA
】在
idea
中使用
git
_
idea
配置
git
并
获取
远程
仓库
...
在
IDEA
当中使用
git
进行代码管理和多人协同。_
idea
配置
git
并
获取
远程
仓库
idea
配置
git
并
获取
远程
仓库
...
赞
踩
article
企业级后台集成
方案
vue
-
element
-
admin
...
vue
-
element
-
admin
是一个后台前端解决
方案
,它基于
vue
和
element
-ui实现。它使用了最新的前...
赞
踩
article
IDEA
中开发
Android
完整示例及
APK
的
生成
(包含
用户名
密码输入获取等操作)_
idea
怎么
生成
...
安装完成后就进入选择模板步骤,我们选择Empty Activity创建一个空白项目模板。其中主要用到
的
是二个文件,一个是...
赞
踩
article
解决
git
push
报错:
hint
:
Updates
were
rejected
because
...
解决
git
push
报错:
hint
:
Updates
were
rejected
because
the tip of...
赞
踩
article
熬夜收集
了
5 个实用
的
Java
开源
论坛
系统
...
评价:讲真,Symphony 是笔者目前见过
的
论坛
项目中功能最齐全
的
一款(没有之一),满足多维需求:面向内容、面向知识问...
赞
踩
article
el
-
table
中给每行添加
loading
效果
案例_
el
ement ui
el
-
table
实现选中行...
在
el
-
table
表格中,使用
el
-switch组件,想让每个组件都有一个
loading
效果
,如何实现呢?请看_
el
em...
赞
踩
article
基于
微信
小
程序
的
在线考试
系统
源码_在线考试
小
程序
源码...
部分观察家认为,Outlook Web Access 是第一个应用了 Ajax 技术
的
成功
的
商业应用
程序
,并成为包括Od...
赞
踩
article
了解
数组
:
算法
与
应用
...
通过本文的介绍,希望读者能够更加深入地理解
数组
的基本操作、常见
算法
以及实际
应用
,并能够灵活运用这些知识解决实际问题。
数组
...
赞
踩
article
git
命令
查看
提交
代码
行数
和次数_
visual
studio2022
查看
git
提交
了多少行...
指定时间内有
代码
提交
记录人的 --since=2022–09-01 --until=2022-10-01
代码
提交
行数
。...
赞
踩
article
vue
项目本地开发完成
后
部署
到
服务器
后
报
404
是什么原因_
vue
3
部署
到
服务器
请求
404
...
前
后
端分离开发模式下,前
后
端是独立布署的,前端只需要将最
后
的构建物上传至目标
服务器
的web容器指定的静态目录下即可_vu...
赞
踩
article
深度
学习
经典
模型
之
T5
_t5
模型
...
T5
是由google的Raffel等人于2019年提出了新的预训练
模型
,其参数量高达110亿,完爆BertLarge
模型
...
赞
踩
article
patchTST
_
patchtst
独立通道...
2.大大减少了馈送到Transformer编码器的标记数量。在这里,每个patch都变成了输入到Transformer的...
赞
踩
article
3.1设计
模式
——
Chain
of
Responsibility
责任
链
模式
(行为型)...
使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系,将这些对象练成一条
链
,并沿着这条
链
传递请求,直到...
赞
踩
article
谋定
农民
丰收
节
交易会
-李
加映
:
功能性
农业
·
农业
大
健康
大会_硒与大
健康
产业
联盟成立仪式
在京举行
20
1
...
谋定
农民
丰收
节
交易会
-李
加映
:
功能性
农业
·
农业
大
健康
大会新闻中国采编网 中国新闻采编网 谋定研究中国智库网 经信研究 国...
赞
踩
article
在线
考试
系统
源码搭建:
springboot
+
mybatis
+
mysql
+vue_
springboot
...
安装node sass,需要先提前安装windows插件可能会遇到卡住。新建数据库,并导入master文件夹里的sql文...
赞
踩
article
idea
搭建
android
开发
环境,
Android
开发
面试
技巧_
idea
安卓
开发
环境
搭建
...
愿你有一天,真爱自己,善待自己。《
Android
学习笔记总结+移动架构视频+大厂
面试
真题+项目实战源码》点击传送门,即可...
赞
踩
article
Gitlab
提交
规范说明
_
gitlab
协同
环境
提交
成功样式...
1.commit 格式:message要包含#jiraid#,示例 #test-11#,请填写有效jiraid,会有审计...
赞
踩
相关标签
python
Android
人工智能
chatgpt
Suno AI
算法
大数据
机器学习
git
intellij-idea
java
vue.js
javascript
ecmascript
spring cloud
springboot
android studio
android
ide
idea
开源
开发语言
elementui
微信小程序
数据结构