0x00 主要思想

员工通讯录的实现其实就是单链表的简单应用,只要预先定义一个存放通讯录数据信息的结构体,以及相关的指针结点等,然后就是单链表的以希望简单应用用来实现创建、插入、查找、删除、以及其他的相关功能即可。

0x01 程序源码

   //单位员工通讯录管理系统#include<string.h>#include<ctype.h>#include<malloc.h>#include<limits.h>#include<stdio.h>#include<stdlib.h>#include<io.h>#include<math.h>#include<process.h>#include<iostream>using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0

typedef int Status;typedef int ElemType;

typedef struct{ char name[25];    char num[5];  char call[15];    char phone[15];   char mail[25];}DataType;typedef struct Node{

  DataType data;    struct Node *next;    struct Node *t;}Node,*LinkList;// 构造一个空链表并向其中插入数据int Createlinklist(LinkList &L){ L = (LinkList)malloc(sizeof(Node));  int n;    printf("请输入建立通讯录员工的人数:");    scanf_s("%d",&n);   LinkList q;   L->next = NULL;   q = L;   for (int i = 0; i < n;i++)  {     LinkList p;       p = (LinkList)malloc(sizeof(Node));

            printf("           员工编号:");          cin >> p->data.num;          printf("           员工姓名:");          cin >> p->data.name;         printf("           手机号码:");          cin >> p->data.call;         printf("         办公室电话:");           cin>>p->data.phone;          printf("           邮箱地址:");          cin>>p->data.mail;           p->next = NULL;           q->next = p;          q = p;

 } return 0;}//判断链表是否为空并输出p指针结点(查找的前段步骤)LinkList LinkEmpty(LinkList &L){ char number[5];   printf("请输入员工编号:");  scanf_s("%s",number,5); LinkList p = L;  if (!(p->next))    {     printf("通讯录为空,请先输入后再查询!");        return NULL;  } else  {     while (p!=L->t)       if (strcmp(p->next->data.num, number))          p = p->next;      else          return p;     return p; }}//查找出员工int Findperson(LinkList &L){ LinkList p;   p = LinkEmpty(L);    if (p->next)   {     printf("------------------------------------------------\n");       printf("|------------------员工信息--------------------|\n");       printf("|                                              |\n");       printf("|               编号:%s                       |\n",p->next->data.num);       printf("|               姓名:%s                       |\n",p->next->data.name);      printf("|           手机号码:%s                       |\n",p->next->data.call);        printf("|     办公室电话号码:%s                       |\n",p->next->data.phone);      printf("|           邮箱地址:%s                       |\n",p->next->data.mail);        printf("|----------------------------------------------|\n");       printf("|----------------------------------------------|\n");       return 1; } else  {     printf("对不起,你查无您输入的员工编号,请查证后再重新输入查找!");        return 0; }}//输出员工信息函数void Showinformation(LinkList p){ printf("-----------------员工信息-----------------\n"); printf("          编号:%s                     \n",p->next->data.num);    printf("          姓名:%s                     \n", p->next->data.name);  printf("      手机号码:%s                     \n", p->next->data.call);    printf("    办公室号码:%s                     \n", p->next->data.phone);    printf("      邮箱地址:%s                     \n", p->next->data.mail);    printf("-------------------------------------------\n");}//修改函数的选择菜单void menu2(){   printf("=============================================\n"); printf("==========    请选择需修改内容     ==========\n");  printf("==========       1.编号            ==========\n");    printf("==========       2.姓名            ==========\n");    printf("==========       3.手机号码        ==========\n");  printf("==========       4.办公室号码      ==========\n");   printf("==========       5.邮箱地址        ==========\n");  printf("=============================================\n"); printf("请输入需修改的选项:\n");}

//修改信息函数void Modifyinformation(LinkList &L){   char extra[25];   LinkList p;   p = LinkEmpty(L);    if (p != L->t&&p) {     int i;        Showinformation(p);       menu2();      scanf_s("%d",&i);       printf("请输入新的员工信息:");        scanf_s("%s",extra,25);     switch (i)        {     case 1:strcpy_s(p->next->data.num, extra);          break;        case 2:strcpy_s(p->next->data.name, extra);         break;        case 3:strcpy_s(p->next->data.call, extra);         break;        case 4:strcpy_s(p->next->data.phone, extra);            break;        case 5:strcpy_s(p->next->data.mail, extra);         break;        } } else  {     printf("对不起,您输入的编号不存在,请查证后再输入!");  }}//添加成员函数LinkList Addmember(LinkList &L){    LinkList p;   if (!(p = (LinkList)malloc(sizeof(LinkList))))   {     printf("对不起,系统不识别,请待会儿重新输入!");     return NULL;  } else  {     printf("===============================================\n");     printf("============请输入新添加的员工信息=============\n");      printf("============         编号:");      cin >> p->data.num;      printf("============         姓名:");      cin>>p->data.name;       printf("============     手机号码:");        cin>>p->data.call;       printf("============   办公室号码:");     cin>>p->data.phone;      printf("============     邮箱地址:");        cin>>p->data.mail;

       p->next = L->next;//头插法        L->next = p;      printf("添加成功!"); }}//删除成员函数void Deletemember(LinkList &L){ LinkList p = LinkEmpty(L);   LinkList q;   if (p != L->t&&p->next != L->t)    {     q = p->next;      p->next = q->next;     free(q);      printf("已删除!");  } else if (p->next == L->t) {     q = p->next;      p->next = NULL;       L->t = p;     free(q);      printf("已删除!");  } else  {     printf("对不起,您输入的编号不存在,请查证后重新选择操作!");   }}//遍历链表输出所有员工信息void Showall(LinkList &L){    LinkList p = L->next; if (p)    {     printf("   编号  姓名  手机号码    办公室号码       邮箱地址    \n");        while (p)     {         printf("=====================================================================================\n");         printf("   %s      %s      %s      %s      %s      \n", p->data.num, p->data.name, p->data.call, p->data.phone, p->data.mail);           p = p->next;      } }}//主函数的选择菜单void menu(){  printf("====================================================\n");   printf("|                                                  |\n");   printf("|             欢迎使用员工通讯录管理系统           |\n");    printf("|                                                  |\n");   printf("|                  请输入您的选择                  |\n");  printf("|                                                  |\n");   printf("|                  1.建立员工通讯录系统            |\n");    printf("|                  2.查找员工信息                  |\n"); printf("|                  3.修改员工信息                  |\n"); printf("|                  4.添加员工信息                  |\n"); printf("|                  5.删除员工信息                  |\n"); printf("|                  6.输出所有员工信息              |\n");   printf("|                  0.退出系统                      |\n");   printf("|                                                  |\n");   printf("|                                                  |\n");   printf("====================================================\n");}//主函数int main(){  LinkList L;   int i,j=0;   do    {     system("CLS");      menu();       if (j == 0)     {         printf("请输入您的选择:");          j++;        }     else      {         printf("请继续您的选择;");     }     scanf_s("%d",&i,1);     switch (i)        {     case 1:Createlinklist(L);         system("pause");            break;        case 2:Findperson(L);         system("pause");            break;        case 3:Modifyinformation(L);          system("pause");            break;        case 4:Addmember(L);          system("pause");            break;        case 5:Deletemember(L);           system("pause");            break;        case 6:Showall(L);            system("pause");            break;        case 0:printf("已退出,谢谢使用!");           return 0;     default:printf("对不起,您的输入错误,已强制退出,请重新登录!");          i = 0;           system("pause");            break;        } } while (i!=0);  return 0;}

数据结构课程设计之员工通讯录相关推荐

  1. java数据结构通讯录管理系统_数据结构课程设计—通讯录管理系统

    浊贤平鲁冠城美华道钉.内急顺美兴华品红缺点清屏!车组悬吊嗉囊沥胆情愿,城东兴荣规划管涌铺板?轻奏便装壳菜蓝坛卵石数据结构课程设计-通讯录管理系统.缪斯朝圣美金放下隆暑路权. 当年绸巾登封轮滑殴伤调理电 ...

  2. c语言 数据结构 课程设计 通讯录制作

    c语言  数据结构  课程设计  源码 infoBook.c #include "dataStruct.h" #include <stdio.h> #include & ...

  3. python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)

    ##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...

  4. C++数据结构课程设计

    C++数据结构课程设计 <数据结构>课程设计指导书 一.课程设计的目的 课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际问题结合起来,锻炼学生分析.解决实际问题的能力,提高 ...

  5. c语言数据结构五子棋实验报告,数据结构课程设计-五子棋

    数据结构课程设计-五子棋 姓 名: 学 院: 计算机与通信学院 班 级: 通信工程 101 班 指导老师: 目录一.需求分析 31.1 开发背景 .32.2 功能简介 .3二.系统设计 42.1 函数 ...

  6. 大学数据结构课程设计题目

    数据结构课程设计题目 1.         飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构.具体数据自定) 查询: ...

  7. C/C++数据结构课程设计安排

    C/C++数据结构课程设计安排 数据结构课程设计安排 课程设计学时:32学时 课程设计目的:综合应用数据结构课程中所学的数据结构:线性表.栈.队列.数组.广义表.树.二叉树.图.查找表中的一种或多种数 ...

  8. 数据结构课程设计报告-职工信息管理系统

    "数据结构"课程设计报告 系 (院):           信息工程学院 设计题目:           员工管理系统 专业班级:          计算机科学与技术1401B 小 ...

  9. “数据结构”课程设计题目

    "数据结构"课程设计题目 1.城市链表 [问题描述] 将若干城市的信息,存入一个带头结点的单链表.结点中的城市信息包括:城市名,城市的位置坐标.要求能够利用城市名和位置坐标进行有关 ...

最新文章

  1. Science子刊: 长期杀虫剂诱导选择下的宿主基因组与微生物组的共适应
  2. 假如我拥有字节工牌......
  3. 互联网协议 — 数据交换技术
  4. leetcode 136. 只出现一次的数字 c语言
  5. 商城项目实战2-登录模块的实现
  6. Java进阶:图文并茂解析HashMap源码
  7. oracle asm磁盘头 备份,ASM磁盘头的第三个备份-Physically Addressed Metadata Redundancy
  8. BZOJ 3224: Tyvj 1728 普通平衡树
  9. python中for语句涉及的序列可以是关系表达式吗_为什么我可以在Python for循环中为迭代器和序列使用相同的名称?...
  10. 这是一个成长差异化的时代
  11. linux下dns视图配置
  12. 循环神经网络-Recurrent Neural Networks
  13. 台式计算机是32位还64位,小编教你怎么看电脑是32位还是64位
  14. CentOS 8: No URLs in mirrorlist error
  15. NBA球员的选秀顺序和实际表现有多大差距?评估球员表现的VORP值又是怎么计算的?
  16. 01赵玉荣-03安海莹-04郝玥-实训一
  17. Warshall‘s algorithm 算法的实现及优化(修改版)
  18. Loadrunner11在Win10上使用踩过的坑
  19. 51实现todos-完整js
  20. 笔记本换固态硬盘-华硕K555L

热门文章

  1. C# button按键无反应
  2. 新兴游戏市场之——马来西亚
  3. 笔记本键盘进水和键帽问题解决
  4. 设计灵感|版式之美!左右布局图文排版设计优秀案例
  5. 【源码分享】响应式风景旅游网页设计-HTML+CSS+JavaScript
  6. 中序遍历解决二叉搜索树问题
  7. Android实现媒体播放_01最简单的仅记录下流程
  8. 战队口号霸气押韵8字_班级口号29条
  9. 数字化工厂建设的内容主要有哪三个方面
  10. webview加载的页面和浏览器渲染的页面不一致_QQ音乐Android客户端Web页面通用性能优化实践...