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. 数据结构课程设计实验报告 2. C 语言编程基础 3. 单位员工通讯录管理系统的应用 优点 1. 方便单位对员工的管理 2. 方便员工间的交流 3. 可以实现员工信息的查询、修改、插入和删除操作 缺点 1. 系统的安全性...
[问题描述] 设计一个系统,该系统应完成一下几方面的功能: 1)输入信息——enter(); 2)显示信息———display( ); 3)查找以姓名作为关键字 ———search( );...(3)上机能正常运行,并写出课程设计报告。
综上所述,《C++课程设计--学生通讯录管理系统》涵盖了C++编程的多个重要方面,包括面向对象设计、文件操作、数据库交互、数据结构与算法、异常处理以及可能的GUI编程。这个项目为学习者提供了宝贵的实践经验,有助...
包括【OOP(C++)-面向对象课程设计:教室管理系统】、【程序设计实践课程设计:小型超市库存与销售管理系统】、【操作系统课程设计:动态分区分配设计与实现】、【数据结构课程设计:基于哈希表的通讯录系统】...
数据结构课程设计是软件工程专业的重要实践环节,旨在让学生通过实际操作来理解并掌握数据结构的概念、原理和应用。在这些题目中,涉及到多种数据结构的运用,如数组、链表、树、图等,同时也涵盖了基本的增删查改...
单位员工通讯录管理系统 数据结构课程设计
单位员工通讯录管理系统是数据结构课程设计中的一个实例,主要应用了线性表的概念。线性表是一种基本的数据结构,它由有限个相同类型元素构成的有序序列。在这个系统中,线性表以链表的形式实现,每个节点代表一个...
数据结构课程设计任务书主要目的是将理论知识与实践相结合,强化学生的编程技能,特别是针对数据结构的运用。设计要求学生深入理解数据结构的逻辑特性和物理表示,掌握数据结构的选择应用,以及算法的设计与实现。...
数据结构课程设计,基于C/C++,包括通讯录,哈夫曼,交通图以及图书管理系统 具体要求如下 - 不懂运行,下载完可以私聊问,可远程教学 该资源内项目源码是个人的毕设,代码都测试ok,都是运行成功后才上传资源,答辩评审...
数据结构课程设计是软件工程专业学生必经的一个实践环节,旨在深化理解理论知识,并将其应用于实际问题中。在这个过程中,学生们需要根据数据对象的特性,选择合适的数据结构,设计并实现算法,以此来解决实际问题。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...
### 数据结构课程设计知识点概述 #### 一、数据结构与算法基础 - **数据结构**:数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。常见的数据结构包括数组、链表、栈、队列、树、图等。 - **算法**:...
### 数据结构课程设计任务书解析 #### 一、设计目的详解 《数据结构》课程作为计算机专业的一门核心课程,其重要性不言而喻。本课程设计的主要目的是让学生能够将理论知识与实践操作相结合,具体包括以下几个方面...
### 数据结构设计报告知识点概述 #### 一、设计题目 本设计报告主要涵盖了四个方面的内容: 1. **单位员工通讯录管理系统**:该系统旨在帮助单位管理员工的联系方式,包括办公室电话、手机号、电子邮件等信息。 2. ...
《数据结构》课程设计任务书是针对软件工程专业学生的实践环节,旨在强化理论知识与实际操作的结合,提升学生解决实际问题的能力。设计任务涵盖数据结构的逻辑特性、物理表示、选择应用、算法设计与实现等多个方面,...
通讯录系统的核心是数据结构的设计,通常会包括联系人姓名、电话号码、电子邮件地址等信息。这些信息可以通过自定义的类来封装,例如创建一个`Contact`类,包含`name`、`phone`、`email`等成员变量。为了提高代码的...