单位员工通讯录管理系统(线性表的应用)

[问题描述]

为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。

[实现提示]

可以采用单链表的存储结构,如可定义如下的存储结构:

/*员工通讯信息的结构类型定义*/

typedef struct {

char num[5];           /*员工编号*/

char name[10];       /*员工姓名*/

char phone[15];      /*办公室电话号码*/

char call[15];          /*手机号码*/

char mail[25];         /*邮箱*/

}DataType;

/*通讯录单链表的结点类型*/

typedef struct node{

DataType data;

struct node *next;

}ListNode,*LinkList;

[设计思路]

1、创建一个链表,存入员工工号、办公室电话、手机号、email的信息。

2、对此链表员工信息查询的操作,进行对链表遍历查询。

3、对链表进行员工信息修改的操作,遍历到所在位置进行修改。

4、对链表进行员工信息添加的操作,使用头插法。

5、对链表进行员工信息删除的操作,链表对应位置的节点删除。

[代码及注释]

#include<iostream>
#include<string>
using namespace std;
int flag=0;                                /*判断程序结束的标志*/
//结构
typedef struct{string num;                            /*员工编号*/string name;                           /*员工姓名*/string phone;                          /*员工电话*/string call;                           /*员工手机*/string mail;                           /*员工邮箱*/
}DateType;                                 /*结点类型*/
typedef struct LNode{DateType d;                            /*一个员工*/int length;                            /*员工总数*/struct LNode *next;                    /*指针域*/
}LNode,*LinkList;                          /*结点类型,结点指针类型*/
//子函数
bool Judge(LinkList &L,string num);        /*判断编号是否合法*/
void Add(LinkList &L);                     /*增加员工*/
void Creat(LinkList &L);                   /*创造通讯录*/
void SinglePrint(LinkList &L);             /*查看单一员工*/
void Revise(LinkList &L);                  /*修改员工信息*/
void Delete(LinkList &L);                  /*删除员工*/
void Print(LinkList &L);                   /*查看整个通讯录*/
void Menu(LinkList &L);                    /*操作汇总*/
//具体内容
bool Judge(LinkList &L,string num)
{LinkList p=L->next;while(p){if(p->d.num==num)return false;     /*相等则不合法*/p=p->next;}return true;
}
void Add(LinkList &L)
{LinkList s=new LNode;s->next=NULL;cout<<"编号:";cin>>s->d.num;cout<<"姓名:";cin>>s->d.name;cout<<"电话:";cin>>s->d.phone;cout<<"手机:";cin>>s->d.call;cout<<"邮箱:";cin>>s->d.mail;if(Judge(L,s->d.num)){s->next=L->next;L->next=s;                         /*使用头插法添加员工*/L->length++;cout<<"<<<<添加成功"<<endl;}else cout<<"<<<<编号重复,添加失败"<<endl;
}
void Creat(LinkList &L)
{cout<<"                            <已经进入通讯录创建模式>"<<endl<<endl;L=new LNode;L->next=NULL;L->length=0;cout<<"输入要创建的通讯录人数:";int n;cin>>n;cout<<"依次输入各个员工信息"<<endl;for(int i=1;i<=n;++i)Add(L);
}
void SinglePrint(LinkList &L)
{cout<<"输入要查询员工的任一信息:";string k;cin>>k;LinkList p=L->next;int vis=0;                             /*标记是否找到员工*/while(p){if(p->d.num==k||p->d.name==k||p->d.phone==k||p->d.call==k||p->d.mail==k){vis=1;                         /*找到将标记置为1*/cout<<endl;cout<<"|编号:"<<p->d.num<<endl;cout<<"|姓名:"<<p->d.name<<endl;cout<<"|电话:"<<p->d.phone<<endl;cout<<"|手机:"<<p->d.call<<endl;cout<<"|邮箱:"<<p->d.mail<<endl;cout<<"--------------------"<<endl;}p=p->next;}if(!vis)cout<<"<<<<查询失败,没有此员工!"<<endl;
}
void Revise(LinkList &L)
{cout<<"输入要修改员工的编号:";string k;cin>>k;LinkList p=L->next;while(p){if(p->d.num==k){cout<<"--------------------"<<endl;cout<<"1--编号:"<<p->d.num<<endl;cout<<"2--姓名:"<<p->d.name<<endl;cout<<"3--电话:"<<p->d.phone<<endl;cout<<"4--手机:"<<p->d.call<<endl;cout<<"5--邮箱:"<<p->d.mail<<endl;cout<<"--------------------"<<endl;int op;cout<<"输入你的选择:";cin>>op;string k;if(op>=1&&op<=5){cout<<"输入修改内容:";cin>>k;}switch(op){case 1:if(Judge(L,k)){p->d.num=k;cout<<"<<<<修改成功"<<endl;}else cout<<"<<<<修改失败"<<endl;break;case 2:p->d.name=k;cout<<"<<<<修改成功"<<endl;break;case 3:p->d.phone=k;cout<<"<<<<修改成功"<<endl;break;case 4:p->d.call=k;cout<<"<<<<修改成功"<<endl;break;case 5:p->d.mail=k;cout<<"<<<<修改成功"<<endl;break;default :cout<<"<<<<没有任何修改!"<<endl;}return;}p=p->next;}cout<<"<<<<没有此员工"<<endl;
}
void Delete(LinkList &L)
{cout<<"输入要删除员工的编号:";string k;cin>>k;LinkList p=L;while(p->next){if(p->next->d.num==k){LinkList s=p->next;p->next=s->next;delete s;L->length--;cout<<"<<<<删除成功"<<endl;return;}p=p->next;}cout<<"<<<<删除失败,通讯录没有此员工!"<<endl;
}
void Print(LinkList &L)
{cout<<"<<<<通讯录总人数:"<<L->length<<endl;LinkList p=L->next;while(p){cout<<endl;cout<<"|编号:"<<p->d.num<<endl;cout<<"|姓名:"<<p->d.name<<endl;cout<<"|电话:"<<p->d.phone<<endl;cout<<"|手机:"<<p->d.call<<endl;cout<<"|邮箱:"<<p->d.mail<<endl;cout<<"--------------------"<<endl;p=p->next;}
}
void Menu(LinkList &L)
{cout<<"                       -----------------------------------"<<endl;cout<<"                      |       欢迎来到通讯录管理系统      |"<<endl;cout<<"                      |-----------------------------------|"<<endl;cout<<"                      |         1--查询单一员工           |"<<endl;cout<<"                      |         2--修改                   |"<<endl;cout<<"                      |         3--增加                   |"<<endl;cout<<"                      |         4--删除                   |"<<endl;cout<<"                      |         5--查询整个通讯录         |"<<endl;cout<<"                      |         其他--退出                |"<<endl;cout<<"                       -----------------------------------"<<endl;int op;cout<<"输入你的选择:";cin>>op;switch(op){case 1:SinglePrint(L);break;case 2:Revise(L);break;case 3:Add(L);break;case 4:Delete(L);break;case 5:Print(L);break;default:flag=1;cout<<"<<<<欢迎下次再来,再见!"<<endl;}
}
int main()
{LinkList L;Creat(L);while(1){Menu(L);if(flag)break;system("pause");system("cls");}return 0;
}

[简单展示]

标题

数据结构课程设计:1、单位员工通讯录管理系统(线性表的应用)相关推荐

  1. 数据结构员工通讯录管理系统 C语言,数据结构课程设计报告单位员工通讯录管理系统.doc...

    班级:计科112 学号: 201100814203 姓名:冯贵阳 PAGE PAGE 42 数 据 结 构 课 程 设 计 实 验 报 告 目录 1.单位员工通讯录管理系统(线性表的应用)---- - ...

  2. 数据结构课程设计报告 单位员工通讯录管理系统(线性表的应用)

    题目1.单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查 ...

  3. c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...

    数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...

  4. 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)

    数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...

  5. 单位员工通讯录管理系统

    #include<iostream> using namespace std; #include<windows.h> typedef struct { /*员工通讯信息的结构 ...

  6. PHP进销存系统的数据结构,数据结构课程设计-仓库进销存管理系统.doc

    数据结构课程设计-仓库进销存管理系统.doc 题 目: 仓库进销存管理系统 学 院: 计算机与控制工程学院 专业班级: 软件101 学生姓名: 王海川 指导教师: 王一萍 2012 年06 月2 9日 ...

  7. 数据结构课设——单位员工通讯录管理系统

    问题描述 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查询.修改.插入与删除.以及整个通讯录表的输出. 算法 ...

  8. 单位员工通讯录管理系统(线性表的应用)

    [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查询.修改.插入与删除.以及整个通讯录表的输出. ...

  9. 《数据结构课程设计》——活期储蓄账目管理系统

    <数据结构课程设计> 课程题目 活期储蓄账目管理系统 课程编号 j1620102 学生姓名 张瑞祺 所在专业 信息管理与信息系统 所在班级 信管1132 学号 201311671231 任 ...

最新文章

  1. mysql多表分页查询语句_Mysql多表分页查询
  2. IOS和Andriod手机浏览器内核
  3. 《深入理解JAVA虚拟机》——学习笔记
  4. 如何在Safari中查看网页的完整URL
  5. ASP.NET Core 借助 Helm 部署应用至 K8S
  6. 关于Exchange管理控制台报“您的权限不足,无法此查看数据”的解决办法
  7. Linux安装软件包时的“依赖关系树”算法(C#)
  8. AD9 PCB文件黑色区域如何改变?
  9. PLSQL使用相关详细配置
  10. 【虹科分享】什么是 RFC 2544?网络设备的性能基准测试方法
  11. List转Map的三种方法
  12. SQL NOW() 函数
  13. android:ems什么意思
  14. 电器元件——LM7805
  15. 计算机考试按脚本制作幻灯片,2018秋季【西南大学】[1055]《powerpoint多媒体课件制作》作业(参考答案)...
  16. 前端开发练习——包含了计时功能的动画时钟
  17. c++面试常见题·Part 2 数据结构和STL
  18. 机器学习自然语言处理之英文NLTK(代码+原理)
  19. 百词斩-扇贝测试评估
  20. STM32MP157驱动开发——Linux 音频驱动

热门文章

  1. Android MediaPlayer源码分析
  2. Python+Vue计算机毕业设计食堂窗口美食评价系统4yee6(源码+程序+LW+部署)
  3. 《让子弹飞》系列——小六子之死
  4. 封神台——高校靶场ctf——第一期Web web_001
  5. 由浪潮大型机M13说开去
  6. AAAI22参会见闻与论文杂谈
  7. 数据库中数据长度(理解)和几种int数据类型的区别
  8. 安卓pdf阅读器_安卓6.0+2GB+32GB支持手写!BOOX Nova Pro电子书阅读器隆重上市
  9. 这样设置过渡动画,让你的Android手机变得更丝滑
  10. python xlsx 样式 谷歌开源 样式_连续加班一周最终把所有的Python库整理出来了,愿各位早日学会Py-站长资讯中心...