数据结构课程设计之员工通讯录
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;}
数据结构课程设计之员工通讯录相关推荐
- java数据结构通讯录管理系统_数据结构课程设计—通讯录管理系统
浊贤平鲁冠城美华道钉.内急顺美兴华品红缺点清屏!车组悬吊嗉囊沥胆情愿,城东兴荣规划管涌铺板?轻奏便装壳菜蓝坛卵石数据结构课程设计-通讯录管理系统.缪斯朝圣美金放下隆暑路权. 当年绸巾登封轮滑殴伤调理电 ...
- c语言 数据结构 课程设计 通讯录制作
c语言 数据结构 课程设计 源码 infoBook.c #include "dataStruct.h" #include <stdio.h> #include & ...
- python通讯录管理系统设计_数据结构课程设计-通讯录管理系统(C语言版)
##数据结构课程设计-通讯录管理系统 一,前言 自从上次C语言课设写完后,这次数据结构课设就写的游刃有余了,很快啊,不足三天就写完了它(年轻人不讲武德),如果你认真看过我之前写的C语言课程设计-球队管 ...
- C++数据结构课程设计
C++数据结构课程设计 <数据结构>课程设计指导书 一.课程设计的目的 课程设计为学生提供了一个独立实践的机会,将课本上的理论知识和实际问题结合起来,锻炼学生分析.解决实际问题的能力,提高 ...
- c语言数据结构五子棋实验报告,数据结构课程设计-五子棋
数据结构课程设计-五子棋 姓 名: 学 院: 计算机与通信学院 班 级: 通信工程 101 班 指导老师: 目录一.需求分析 31.1 开发背景 .32.2 功能简介 .3二.系统设计 42.1 函数 ...
- 大学数据结构课程设计题目
数据结构课程设计题目 1. 飞机订票系统(限1 人完成) 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构.具体数据自定) 查询: ...
- C/C++数据结构课程设计安排
C/C++数据结构课程设计安排 数据结构课程设计安排 课程设计学时:32学时 课程设计目的:综合应用数据结构课程中所学的数据结构:线性表.栈.队列.数组.广义表.树.二叉树.图.查找表中的一种或多种数 ...
- 数据结构课程设计报告-职工信息管理系统
"数据结构"课程设计报告 系 (院): 信息工程学院 设计题目: 员工管理系统 专业班级: 计算机科学与技术1401B 小 ...
- “数据结构”课程设计题目
"数据结构"课程设计题目 1.城市链表 [问题描述] 将若干城市的信息,存入一个带头结点的单链表.结点中的城市信息包括:城市名,城市的位置坐标.要求能够利用城市名和位置坐标进行有关 ...
最新文章
- Science子刊: 长期杀虫剂诱导选择下的宿主基因组与微生物组的共适应
- 假如我拥有字节工牌......
- 互联网协议 — 数据交换技术
- leetcode 136. 只出现一次的数字 c语言
- 商城项目实战2-登录模块的实现
- Java进阶:图文并茂解析HashMap源码
- oracle asm磁盘头 备份,ASM磁盘头的第三个备份-Physically Addressed Metadata Redundancy
- BZOJ 3224: Tyvj 1728 普通平衡树
- python中for语句涉及的序列可以是关系表达式吗_为什么我可以在Python for循环中为迭代器和序列使用相同的名称?...
- 这是一个成长差异化的时代
- linux下dns视图配置
- 循环神经网络-Recurrent Neural Networks
- 台式计算机是32位还64位,小编教你怎么看电脑是32位还是64位
- CentOS 8: No URLs in mirrorlist error
- NBA球员的选秀顺序和实际表现有多大差距?评估球员表现的VORP值又是怎么计算的?
- 01赵玉荣-03安海莹-04郝玥-实训一
- Warshall‘s algorithm 算法的实现及优化(修改版)
- Loadrunner11在Win10上使用踩过的坑
- 51实现todos-完整js
- 笔记本换固态硬盘-华硕K555L
热门文章
- C# button按键无反应
- 新兴游戏市场之——马来西亚
- 笔记本键盘进水和键帽问题解决
- 设计灵感|版式之美!左右布局图文排版设计优秀案例
- 【源码分享】响应式风景旅游网页设计-HTML+CSS+JavaScript
- 中序遍历解决二叉搜索树问题
- Android实现媒体播放_01最简单的仅记录下流程
- 战队口号霸气押韵8字_班级口号29条
- 数字化工厂建设的内容主要有哪三个方面
- webview加载的页面和浏览器渲染的页面不一致_QQ音乐Android客户端Web页面通用性能优化实践...