数据结构课程设计:1、单位员工通讯录管理系统(线性表的应用)
单位员工通讯录管理系统(线性表的应用)
[问题描述]
为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[实现提示]
可以采用单链表的存储结构,如可定义如下的存储结构:
/*员工通讯信息的结构类型定义*/
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、单位员工通讯录管理系统(线性表的应用)相关推荐
- 数据结构员工通讯录管理系统 C语言,数据结构课程设计报告单位员工通讯录管理系统.doc...
班级:计科112 学号: 201100814203 姓名:冯贵阳 PAGE PAGE 42 数 据 结 构 课 程 设 计 实 验 报 告 目录 1.单位员工通讯录管理系统(线性表的应用)---- - ...
- 数据结构课程设计报告 单位员工通讯录管理系统(线性表的应用)
题目1.单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查 ...
- c语言通讯录程序线性表,数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)...
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- 数据结构(C语言)课设1——单位员工通讯录管理系统(线性表应用)
数据结构(C语言)课设1--单位员工通讯录管理系统(线性表应用) 题目要求: 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息 ...
- 单位员工通讯录管理系统
#include<iostream> using namespace std; #include<windows.h> typedef struct { /*员工通讯信息的结构 ...
- PHP进销存系统的数据结构,数据结构课程设计-仓库进销存管理系统.doc
数据结构课程设计-仓库进销存管理系统.doc 题 目: 仓库进销存管理系统 学 院: 计算机与控制工程学院 专业班级: 软件101 学生姓名: 王海川 指导教师: 王一萍 2012 年06 月2 9日 ...
- 数据结构课设——单位员工通讯录管理系统
问题描述 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查询.修改.插入与删除.以及整个通讯录表的输出. 算法 ...
- 单位员工通讯录管理系统(线性表的应用)
[问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话.手机号.及电子邮箱.其功能包括通讯录链表的建立.员工通讯信息的查询.修改.插入与删除.以及整个通讯录表的输出. ...
- 《数据结构课程设计》——活期储蓄账目管理系统
<数据结构课程设计> 课程题目 活期储蓄账目管理系统 课程编号 j1620102 学生姓名 张瑞祺 所在专业 信息管理与信息系统 所在班级 信管1132 学号 201311671231 任 ...
最新文章
- mysql多表分页查询语句_Mysql多表分页查询
- IOS和Andriod手机浏览器内核
- 《深入理解JAVA虚拟机》——学习笔记
- 如何在Safari中查看网页的完整URL
- ASP.NET Core 借助 Helm 部署应用至 K8S
- 关于Exchange管理控制台报“您的权限不足,无法此查看数据”的解决办法
- Linux安装软件包时的“依赖关系树”算法(C#)
- AD9 PCB文件黑色区域如何改变?
- PLSQL使用相关详细配置
- 【虹科分享】什么是 RFC 2544?网络设备的性能基准测试方法
- List转Map的三种方法
- SQL NOW() 函数
- android:ems什么意思
- 电器元件——LM7805
- 计算机考试按脚本制作幻灯片,2018秋季【西南大学】[1055]《powerpoint多媒体课件制作》作业(参考答案)...
- 前端开发练习——包含了计时功能的动画时钟
- c++面试常见题·Part 2 数据结构和STL
- 机器学习自然语言处理之英文NLTK(代码+原理)
- 百词斩-扇贝测试评估
- STM32MP157驱动开发——Linux 音频驱动
热门文章
- Android MediaPlayer源码分析
- Python+Vue计算机毕业设计食堂窗口美食评价系统4yee6(源码+程序+LW+部署)
- 《让子弹飞》系列——小六子之死
- 封神台——高校靶场ctf——第一期Web web_001
- 由浪潮大型机M13说开去
- AAAI22参会见闻与论文杂谈
- 数据库中数据长度(理解)和几种int数据类型的区别
- 安卓pdf阅读器_安卓6.0+2GB+32GB支持手写!BOOX Nova Pro电子书阅读器隆重上市
- 这样设置过渡动画,让你的Android手机变得更丝滑
- python xlsx 样式 谷歌开源 样式_连续加班一周最终把所有的Python库整理出来了,愿各位早日学会Py-站长资讯中心...