线性表 员工通讯录管理系统
线性表的应用---通讯录管理系统的设计与实现
浙江大学城市学院实验报告课程名称数据结构实验项目名称实验三线性表的应用---通讯录管理系统的设计与实现实验成绩指导老师(签名)日期一.实验目的和要求1、掌握线性结构数据问题的应用方法;2、掌握线性表的顺序存储结构及链表结构的综合应用与实现;3、了解一般信息系统的设计方式方法;二.实验内容1、设计并实现日常生活中通讯录的管理系统。
该系统需3位同学一组,按模块分工协作完成,系统具体功能基本需求描述如下:①输入数据建立通讯录表:在系统使用前先需要创建通讯录,可以一次输入(或文件导入)多个成员的通讯录信息,建立通讯录。
要求此表为顺序(如列表list)存储结构。
②查看所有通讯录信息:显示通讯录表中所有成员的通讯录信息。
③查询通讯录中满足要求的信息:可以根据不同方式查询,如按姓名查询、按姓氏查询、按编号查询等。
④新增通讯录信息:每次可添加一个新成员的通讯录信息。
⑤修改通讯录信息:修改通讯录中已有成员的信息。
⑥删除通讯录成员:删除通讯录表中已有的成员,但需要把删除的成员信息放到另一张被删成员表(回收站)中,以便错误操作后允许恢复。
该被删成员表要求采用单链表存储。
⑦恢复被删成员信息:一旦发现误删,则可以在被删成员表(回收站)中找到该成员,重新加入到通讯录表中。
系统实现要求:①通讯录表必须使用顺序(列表list)存储结构,被删成员表(回收站)必须使用单链表存储结构。
②通讯录信息至少包括:编号、姓名、电话1、电话2、邮箱、......等,其他可自行设置。
②用菜单方式选择相应功能,且各功能的有关实现通过调用各函数来实现。
③给出系统数据类型的定义、存储结构定义以及各个函数之间的调用关系。
④实验内容中设置的功能要求必须实现,此外可自行增加合适的功能,可作为额外的实验成绩进行加分:例如:●通讯录和被删成员数据可用文件保存,程序运行时可从文件读入相应数据,程序结束时可写入文件保存。
●通讯录分组,可自行考虑把通讯录成员进行分组,如同学组、亲戚组、同事组等。
员工管理系统 数据结构
员工管理系统数据结构一、引言员工管理系统是一个用于管理和跟踪员工信息的软件系统。
它使用数据结构来存储和组织员工的相关数据,包括个人信息、工作经历、薪资、考勤记录等。
本文将详细介绍员工管理系统的数据结构设计和实现。
二、数据结构设计1. 员工信息员工信息是员工管理系统的核心数据之一,包含以下字段:- 员工ID:每个员工在系统中的唯一标识符。
- 姓名:员工的姓名。
- 性别:员工的性别。
- 出生日期:员工的出生日期。
- 联系方式:员工的联系方式,如手机号码或电子邮件地址。
- 部门:员工所属的部门。
- 职位:员工的职位。
- 入职日期:员工的入职日期。
为了高效地存储和检索员工信息,可以使用以下数据结构:- 哈希表:将员工ID作为键,员工信息作为值,用于快速查找和更新员工信息。
- 链表:用于处理哈希表中的冲突,当发生冲突时,将冲突的员工信息链接到同一哈希桶中。
2. 工作经历工作经历是记录员工在不同公司的工作经历的数据,包含以下字段:- 公司名称:员工曾经工作的公司名称。
- 职位:员工在该公司的职位。
- 入职日期:员工在该公司的入职日期。
- 离职日期:员工在该公司的离职日期。
为了存储员工的工作经历,可以使用以下数据结构:- 数组:用于存储员工的多个工作经历记录。
3. 薪资薪资是记录员工薪资信息的数据,包含以下字段:- 基本工资:员工的基本工资。
- 奖金:员工的奖金。
- 补贴:员工的补贴。
- 扣款:员工的扣款。
- 实际工资:员工的实际工资。
为了存储员工的薪资信息,可以使用以下数据结构:- 树状数组:用于高效地计算员工的实际工资,支持快速的更新和查询操作。
4. 考勤记录考勤记录是记录员工出勤情况的数据,包含以下字段:- 日期:考勤记录的日期。
- 上班时间:员工的上班时间。
- 下班时间:员工的下班时间。
- 考勤结果:员工的考勤结果,如正常、迟到、早退、缺勤等。
为了存储员工的考勤记录,可以使用以下数据结构:- 链表:用于按照日期顺序存储员工的考勤记录。
数据结构课程设计通讯录管理系统
数据结构课程设计通讯录管理系统
数据结构课程设计中的通讯录管理系统可以涉及到以下几个方面的知识点:
1. 数据结构:通讯录管理系统中需要使用到的数据结构包括数组、链表、哈希表等。
其中,数组用于存储通讯录中的人员信息,链表用于存储联系人信息,哈希表用于实现快速查找功能。
2. 算法:通讯录管理系统中需要使用到的算法包括查找算法、排序算法、动态规划算法等。
其中,查找算法用于实现快速查找联系人功能,排序算法用于实现通讯录的排序功能,动态规划算法用于实现最长公共子序列问题等。
3. 数据库:通讯录管理系统需要使用到数据库来存储通讯录中的数据。
需要掌握关系型数据库的设计和操作,包括数据表的设计、SQL 语句的编写等。
4. 界面设计:通讯录管理系统需要有友好的用户界面,需要进行界面设计和开发,包括前端技术的使用,如HTML、CSS和JavaScript等。
5. 系统测试:通讯录管理系统需要进行系统测试,包括功能测试、性
能测试等,确保系统能够正常运行并满足用户需求。
通过设计和实现通讯录管理系统,可以锻炼学生对数据结构和算法的理解和应用能力,同时还能提高学生的编程能力和团队合作能力。
数据结构课程设计通讯录管理系统
数据结构课程设计通讯录管理系统一、系统需求分析通讯录管理系统的主要目标是提供一个方便、高效的方式来管理联系人信息。
具体需求包括:1、能够添加联系人,包括姓名、电话号码、电子邮件、地址等基本信息。
2、可以对联系人信息进行修改和删除操作。
3、支持按照姓名、电话号码等关键字进行快速查找。
4、能够以列表形式展示所有联系人的信息。
二、数据结构选择为了实现上述功能,我们需要选择合适的数据结构来存储联系人信息。
考虑到联系人信息的多样性和动态性,链表是一个不错的选择。
链表可以方便地进行插入、删除和修改操作,并且能够灵活地调整存储空间。
另外,为了提高查找效率,我们可以结合使用哈希表。
通过将联系人的关键信息(如姓名或电话号码)进行哈希运算,快速定位到对应的联系人节点。
三、系统功能实现1、添加联系人功能当用户选择添加联系人时,系统会提示用户输入联系人的各项信息。
这些信息被封装成一个结构体,并通过链表的插入操作添加到链表中。
同时,将关键信息映射到哈希表中,以便后续快速查找。
2、修改联系人功能用户输入要修改的联系人的关键字,系统通过哈希表快速找到对应的联系人节点。
然后,提示用户输入修改后的信息,并更新链表和哈希表中的数据。
3、删除联系人功能与修改功能类似,通过关键字找到联系人节点,从链表和哈希表中删除相应的节点和信息。
4、查找联系人功能用户输入查找关键字,系统通过哈希表进行快速定位,如果找到匹配的联系人,则显示其详细信息。
5、展示所有联系人功能遍历链表,将所有联系人的信息以列表形式输出到屏幕上。
四、系统界面设计为了提高用户体验,系统设计了简洁直观的界面。
主界面提供了添加、修改、删除、查找和展示所有联系人等功能选项。
用户通过选择相应的选项,进入对应的操作流程。
五、代码实现示例以下是部分关键代码的示例:```c//联系人结构体typedef struct Contact {char name50;char phoneNumber20;char email50;char address100;struct Contact next;} Contact;//哈希表节点结构体typedef struct HashNode {char key50;Contact contact;struct HashNode next;} HashNode;//链表插入联系人void insertContact(Contact head, Contact newContact) {newContact>next = head;head = newContact;}//哈希函数unsigned int hashFunction(const char key) {unsigned int hash = 0;while (key) {hash =(hash << 5) + key++;}return hash % HASH_TABLE_SIZE;}//查找联系人Contact findContact(Contact head, const char key, HashNode hashTable) {unsigned int hashValue = hashFunction(key);HashNode node = hashTablehashValue;while (node) {if (strcmp(node>key, key) == 0) {return node>contact;}node = node>next;}Contact current = head;while (current) {if (strcmp(current>name, key) == 0 ||strcmp(current>phoneNumber, key) == 0) {//更新哈希表HashNode newNode =(HashNode )malloc(sizeof(HashNode));strcpy(newNode>key, key);newNode>contact = current;newNode>next = hashTablehashValue;hashTablehashValue = newNode;return current;}current = current>next;}return NULL;}```六、系统测试在完成系统的开发后,需要进行全面的测试以确保系统的稳定性和可靠性。
数据结构课程设计报告(员工管理系统)
数据结构课程设计报告一、课程设计目的:综合运用线性表、查找、排序的相关知识,解决一个实际应用问题。
通过本次实习,要求熟练掌握线性表的存储结构,能在对应的存储结构上进行各种操作,并能分析不同的查找和排序方法的性能。
二、设计基本信息:每个员工的信息包括:编号、姓名、性别、出生年月、学历、职务、电话、住址等三、课程设计需要实现的功能:(1)查询:按特定条件查找员工。
(2)更新:按编号对某个员工的某项信息进行修改。
(3)插入:加入新员工的信息。
(4)删除:按编号删除已离职的员工的信息。
(5)排序:按工资,对所有员工的信息进行排序。
四、功能实现代码:#include <string>#include <iostream>#include <fstream>#include <iomanip>#include <memory.h>#include <stdio.h>#include <conio.h>#include <stdlib.h>using namespace std;struct Employee{//声明职工的结构作为链表节点。
//-----数据域-----string m_Code;string m_Name;unsigned short int m_Year;string m_Gender;string m_Edu;string m_Post;unsigned int m_Tel;string m_Add;unsigned int m_Wage;//链表节点的指针域---struct Employee* Next;};typedef struct Employee Node;typedef Node* Link;//-------函数声明-------------Link Create(Link Head);void Release(Link Head);Link Add(Link Head);bool Search(Link Head);Link Search_Unique(Link Head);void Display_List(Link Head);void Display_Node(Link pNode);Link Modify(Link Head);Link Del(Link Head);void Save_ByFile(Link Head,fstream& ofile); Link Sort(Link Head);//-------函数实现--------------------------Link Create(Link Head){//创建一个带头节点的空链表。
单位员工通讯录管理系统-线性表的应用-C语言课程设计-毕业设计
单位员工通讯录管理系统-线性表的应用-C语言课程设计-毕业设计计科111 苏中华 201100814129数据结构课程设计实验报告目录1. 单位员工通讯录管理系统(线性表的应用)*********************2. 停车场管理(栈和队列的应用)*******************************3. 哈夫曼编码/译码系统(树应用)******************************4. 教学计划编制问题(图的应用)*******************************5. 药店的药品销售统计系统(排序应用**************************6. 综合排序 (**)*******************************************7. 迷宫求解***************************************************8. 总结******************************************************* 9. 源代码*****************************************************1计科111 苏中华 201100814129一( 单位员工通讯录管理系统(线性表的应用) 1.设计题目:单位员工通讯录管理系统(线性表的应用) 2.问题描述:为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号。
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
3.需求分析:随着社会的发展,越来越多的工厂建立。
为了便于管理单位员工和方便员工之间的交流,员工的各项信息的统计,查询和修改,删除等显得很重要。
基于上面的种种原因,在学习过数据结构课程和其他编程语言的基础上编成了一个单位员工通讯录管理系统,便于单位对员工的管理和员工间的交流。
单位员工通讯录管理系统
单位员工通讯录管理系统(线性表的应用)[需求分析]为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。
[问题要求]其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[问题分析]为建立单位员工通讯录系统,首先要实现员工信息的录入、保存等基本操作。
对于员工通讯录我们要存入要求的员工的各种信息等,对于已经保存的信息,我们要可以对这些信息进行查询、修改、插入新信息、删除信息、还有可以直接输出整个所有员工信息等。
而这些操作对于我们来说都是对建立的链表的基本操作,对于本次试验我采用单向线性链表。
[算法设计]首先我们要进行最基本的操作,即建立链表。
链表的节点信息保存的有员工编号、员工姓名、办公室电话号码、手机号码、员工邮箱这些信息。
而链表的结点信息保存的有员工信息以及其指针域。
然后我们可以添加员工信息,对于新的员工信息我们将其添加在链表的表尾,在添加之前我们要进行一项操作,即遍历链表找到其尾指针,然后开辟一个结点并将其加到链尾。
我们还可以进行员工信息的查询操作,在进行查询时我们首先要遍历链表,然后在遍历的同时与关键字进行比较从而找到员工信息并输出。
员工信息删除操作,此操作首先要找到要删除的员工信息,然后将此节点的前一节点的后续指针直接指向要删除的结点的后续指针,并且释放要删除的结点空间即可。
员工信息修改,首先找到要修改的员工,然后输入要修改的员工信息,将输入信息直接覆盖在原有信息上即可。
员工信息输出,遍历整个链表并输出。
流程图如下:[调试分析及测试数据]员工信息插入:员工信息查询:员工信息删除:员工信息修改:[程序代码]void Init(LinkList list)//初始化{ListNode *p=new ListNode;strcpy(p->data.call,"15***117");strcpy(p->data.email,"zzti************");strcpy(p->,"***");strcpy(p->data.num,"20***4320");strcpy(p->data.phone,"4123211");list->next=p;p->next=NULL;}void Read(LinkList list)//输出员工信息{ListNode *t;t=list->next;do{cout<<"手机号码:"<<t->data.call<<endl;cout<<"员工邮箱:"<<t->data.email<<endl;cout<<"员工姓名:"<<t-><<endl;cout<<"员工编号:"<<t->data.num<<endl;cout<<"办公室电话号码:"<<t->data.phone<<endl;}while(t->next!=NULL,t=t->next);}void Search(LinkList list)//查询{ListNode *aa;aa=list->next;cout<<"按员工编号查询,请输入员工编号:";char bh[20];cin>>bh;do{if(!(strcmp(bh,aa->data.num))){cout<<"手机号码:"<<aa->data.call<<endl;cout<<"员工邮箱:"<<aa->data.email<<endl;cout<<"员工姓名:"<<aa-><<endl;cout<<"员工编号:"<<aa->data.num<<endl;cout<<"办公室电话号码:"<<aa->data.phone<<endl;return;}}while(aa->next!=NULL,aa=aa->next);}void Insert(LinkList list)//插入{ListNode *w;w=list->next;while(w->next!=NULL){w=w->next;}ListNode *u=new ListNode;u->next=NULL;cout<<"手机号码:";cin>>u->data.call;cout<<"员工邮箱:";cin>>u->data.email;cout<<"员工姓名:";cin>>u->;cout<<"员工编号:";cin>>u->data.num;cout<<"办公室电话号码:";cin>>u->data.phone;w->next=u;w=w->next;}void Delete(LinkList list)//删除{ListNode *cz1;ListNode *cz2;ListNode *cz3;cz1=list;cz2=list;int s=0;char chax[20];cout<<"请输入要删除的员工编号:";cin>>chax;while((strcmp(chax,cz1->data.num))){s++;cz1=cz1->next;}for(int j=0;j<s-1;j++){cz2=cz2->next;}cz3=cz2->next;cz2->next=cz3->next;}void Change(LinkList list)//修改{ListNode *xiug;ListNode *zans;zans=list->next;cout<<"请输入需要修改的员工的员工编号:";char bh[20];cin>>bh;do{if(!(strcmp(bh,zans->data.num))){xiug=new ListNode;cout<<"1.手机号码:"<<endl;cout<<"2.员工邮箱:"<<endl;cout<<"3.员工姓名:"<<endl;cout<<"4.办公室电话号码:"<<endl;int we;cout<<"请输入要修改的项:";cin>>we;switch (we) {case 1: cout<<"1.手机号码:";cin>>xiug->data.call;strcpy(zans->data.call,xiug->data.call);break;case 2: cout<<"2.员工邮箱:";cin>>xiug->data.email;strcpy(zans->data.email,xiug->data.email);break;case 3: cout<<"3.员工姓名:";cin>>xiug->;strcpy(zans->,xiug->);break;case 4: cout<<"4.办公室电话号码:";cin>>xiug->data.phone;strcpy(zans->data.phone,xiug->data.phone);break;} return;}}while(zans->next!=NULL,zans=zans->next);}[实验总结]通过这次的程序设计,发现一个程序设计就是算法与数据结构的结合体,自己也开始对程序产生了前所未有的兴趣,以前偷工减料的学习也不可能一下子写出一个程序出来,于是我就认真看老师写的程序,发现我们看懂了一个程序其实不难,难的是对于一个程序的思想的理解,我们要掌握一个算法,不仅仅限于读懂,主要的是要理解老师的思路,学习老师的解决问题的方法。
通讯录管理系统说明书(课程设计格式参考)
一引言随着现代科技的发展,计算机技术已经越来越受到人们的青睐,计算机已经不是什么高科技产品,伴随的人们生活水平的提高,计算机已经走入了寻常百姓家。
计算机的发展得益于C语言等计算机语言的发展,运用计算机语言,我们可以实现各种各样的功能。
就我们现在所学的知识而言,我们也可以运用C语言实现一些简单的管理系统,如:学生成绩管理系统、图书管理系统、通讯录等。
此次课设,我所设计的是运用C语言做一个通讯录,主要实现添加、查找、删除、排序、修改、显示、增加等功能。
主要实现方式用的是链表[1]和文件[2],下面对链表进行一下简单的介绍。
链表是一种动态的进行存储分配的数据结构,他既不需要事先确定最大长度,在插入或者删除一个元素时也不会引起数据的大量移动。
链表又一个“头”,一个“尾”。
中间有若干元素,每个元素称为一个结点。
每个结点包括两部分:一部分是用户关心的实际数据,称为数据域;另一部分是下一个结点的地址,称为指针域。
一般用head作为头指针,它指向链表的第一个结点;最后一个结点称为“表尾”,该结点的指针域值为0,指向内存中编号为0的地址(常用符号常量NULL表示,称为空地址),表尾不再有后继结点,链表到此结束。
相比较顺序结构,链表比较方便插入和删除操作。
线性表的链式存储表示的特点是用一组任意的存储单元存储线性表的数据元素(这组存储单元可以是连续的,也可以是不连续的)。
因此,为了表示每个数据元素与其直接后继数据元素之间的逻辑关系,对数据元素来说,除了存储其本身的信息之外,还需存储一个指示其直接后继的信息(即直接后继的存储位置)。
由这两部分信息组成一个"结点",表示线性表中一个数据元素。
根据情况,也可以自己设计链表的其它扩展。
但是一般不会在边上附加数据,因为链表的点和边基本上是一一对应的(除了第一个或者最后一个结点,但是也不会产生特殊情况)。
不过有一个特例是如果链表支持在链表的一段中把前和后指针反向,反向标记加在边上可能会更方便。
(完整word版)数据结构单位员工通讯录管理系统实验报告(word文档良心出品)
}
rear->next=NULL;
return head;
}
void Add(Dnode *head,Dnode *p)
{
Dnode *p1;
Dnode *p2;
p1=head;
p2=p1->next;
while(p2!=NULL&&strcmp(p2->data.num,p->data.num)< 0)
p=p->next;
}
}
Dnode *Change(Dnode *head,char k[])
{
Dnode *q;
q=research(head);
if(q==0)
{
printf("没有要修改的信息!\n");
return 0;
}
else
{
int i;
k[15]='\0';
printf("编号姓名办公室电话手机号码邮箱\n");
{
p1=p2;
p2=p2->next;
}
p1->next=p;
p->next=p2;
}
void Delete(Dnode *head)
{
char a,b;
Dnode *p;
Dnode *q;
char num[5];
char name[10];
int x;
printf("1.按编号删除\n");
printf("2.按姓名删除\n ");
}
if(x==3)
通讯录管理系统需求分析
通讯录管理系统需求分析一、引言通讯录管理系统是一种用于管理个人或组织之间联系人信息的应用程序。
它通常包括存储联系人的基本信息,如姓名、电话号码、电子邮件地址等,并提供快速查找和编辑功能。
随着数字化时代的发展,通讯录管理系统在日常工作和生活中扮演着越来越重要的角色。
本文将对通讯录管理系统的需求进行详细分析。
二、功能需求1.添加联系人:用户应该能够通过系统向通讯录中添加新的联系人信息,包括姓名、电话号码、电子邮件地址等。
2.编辑联系人:用户可以对已有联系人信息进行编辑,修改或更新联系人的信息。
3.删除联系人:用户可以从通讯录中删除不再需要的联系人信息。
4.查找联系人:系统应该提供快速查找联系人的功能,用户可以通过姓名或其他关键词来查找特定联系人。
5.联系人分组:用户可以将联系人进行分组管理,方便对不同类别的联系人进行管理和查找。
6.导入导出联系人:系统应该支持从外部导入联系人信息,以及导出联系人信息到外部文件。
7.备份和恢复:系统应该具备备份和恢复通讯录数据的功能,以防止数据丢失或损坏。
三、性能需求1.安全性:通讯录管理系统应该保证用户联系人信息的隐私和安全性,防止未经授权的访问。
2.稳定性:系统应该具备良好的稳定性和可靠性,在高并发、大数据量的情况下也能够正常运行。
3.响应速度:系统应该具备较快的响应速度,用户在操作时能够获得即时的反馈。
4.易用性:系统应该具备良好的用户界面和友好的操作流程,方便用户快速上手并进行操作。
四、扩展性需求1.跨平台:通讯录管理系统应该具备跨平台的特性,支持在不同设备和操作系统上进行使用。
2.第三方应用集成:系统应该支持与第三方应用程序进行集成,例如与电子邮件客户端、日历应用等的数据互通。
3.自定义设置:用户可以根据自己的需求对系统进行定制设置,包括界面风格、提醒设置等。
五、总结通过对通讯录管理系统的功能、性能和扩展性需求进行分析,可以为系统的设计和开发提供指导。
在设计通讯录管理系统时,需要充分考虑用户的实际需求,保证系统的稳定性和易用性,满足用户对通讯录管理的各种需求。
通讯录管理系统(2023版)
通讯录管理系统本文档涉及附件:⒈通过或附件提供通讯录管理系统的界面设计图。
⒉通过或附件提供通讯录管理系统的数据库设计文档。
通讯录管理系统文档一、介绍⑴目的通讯录管理系统是一个用于存储和管理联系人信息的平台,旨在帮助用户方便地管理及查找联系人信息。
⑵范围通讯录管理系统包含以下功能:●添加联系人:用户可以通过界面输入联系人的姓名、方式号码、电子邮件地质等信息,将其添加到通讯录中。
●编辑联系人:用户可以对已添加的联系人进行修改,并更新其信息。
●查找联系人:用户可以通过关键字搜索联系人的姓名或其他关联信息进行查找。
●删除联系人:用户可以删除通讯录中的联系人。
●分组管理:用户可以为联系人创建分组,并根据需要进行管理。
二、系统设计⑴界面设计通讯录管理系统的界面应具备以下功能:●登录界面:提供用户登录系统的入口,包括用户名和密码输入框。
●主界面:展示联系人列表,包含添加、编辑、查找和删除联系人的按钮。
●添加/编辑联系人界面:提供输入框以输入联系人信息,并保存或取消操作。
●查找联系人界面:提供搜索框以输入关键字,并展示匹配的联系人列表。
●删除确认界面:在删除联系人操作时,提示用户确认删除。
⑵数据库设计通讯录管理系统的数据库应包括以下表:●用户表(User):存储系统用户的信息,包括用户名和密码等。
●联系人表(Contact):存储联系人的信息,包括姓名、方式号码、电子邮件地质等。
●分组表(Group):存储联系人分组的信息,包括分组名称等。
●用户-联系人关联表(User_Contact):存储用户与联系人的关联关系。
●联系人-分组关联表(Contact_Group):存储联系人与分组的关联关系。
三、法律名词及注释●用户:使用通讯录管理系统的个人或组织。
●界面:通讯录管理系统的用户可视化界面,即用户与系统进行交互的界面。
●数据库:用于存储通讯录管理系统的用户信息、联系人信息和相关的关联关系的数据仓库。
●登录:用户使用有效的用户名和密码进行系统登录操作。
通讯录管理系统
通讯录管理系统随着社会的快速发展和信息化的进步,人们的沟通方式也在不断改变,电子通讯逐渐成为人们日常生活中不可或缺的一部分。
为了方便管理和利用联系人信息,通讯录管理系统应运而生。
通讯录管理系统是一种基于计算机技术的软件应用,其主要功能是帮助用户高效地存储、管理和检索联系人信息。
本文将就通讯录管理系统的构架、特点及应用领域进行详细介绍。
一、通讯录管理系统的构架通讯录管理系统由数据库、用户界面和核心功能模块组成。
1. 数据库:通讯录管理系统的核心是数据库,它用于存储用户的联系人信息。
数据库需要具备高效的存储和查询功能,并能保证数据的安全性。
同时,数据库还需要支持多用户的并发操作,以满足多人同时访问通讯录的需求。
2. 用户界面:用户界面是用户与通讯录管理系统进行交互的窗口,它需要提供简洁明了的操作界面,方便用户进行联系人的添加、编辑、删除和查询等操作。
用户界面还应该支持多种操作方式,如鼠标、键盘和触摸屏等,以适应不同用户的需求。
3. 核心功能模块:核心功能模块是通讯录管理系统的灵魂,它包括联系人信息的增删改查、联系人信息的导入导出、快速搜索、分组管理等功能。
核心功能模块还可以根据用户需求进行扩展,如通话记录、短信管理等附加功能。
二、通讯录管理系统的特点通讯录管理系统具有以下几个特点:1. 高效性:通讯录管理系统能够快速存储和查询大量的联系人信息,用户可以通过姓名、电话号码、公司名称等关键字进行快速搜索,并迅速找到所需的联系人信息。
2. 可扩展性:通讯录管理系统支持用户自定义字段,用户可以按照自己的需求添加额外的联系人信息,如生日、地址、邮箱等,以便更好地管理和利用联系人信息。
3. 多终端支持:通讯录管理系统可以在不同的终端设备上运行,如个人电脑、平板电脑、智能手机等。
用户可以随时随地访问和管理联系人信息,极大地提高了工作效率。
4. 数据安全性:通讯录管理系统通过多级权限控制和数据加密技术保证用户联系人信息的安全性。
单位员工通讯录管理系统
单位员工通讯录管理系统一、概述单位员工通讯录管理系统是一种用于管理企业内部员工通讯录的软件系统,它能够帮助企业快速便捷地查询和管理员工的相关信息,提高企业内部通讯效率和管理水平。
该系统可以适用于各种规模的企业,包括国有企业、民营企业、中小型企业等。
二、系统功能介绍1.员工信息管理:该功能可以实现对企业内部员工的基本信息管理,包括姓名、性别、职务、职称、工作地点、联系电话等等。
2.通讯录查询:员工通讯录管理系统可以通过员工名字或者职务等别查询员工联系方式,以达到快速通讯的目的。
3.通讯录更新:通讯录中员工的联系方式是会随时变化的,系统可以实现对通讯录的不断更新,确保通讯录信息的及时有效。
4.权限管理:系统可以根据用户权限分为普通员工和管理员两种权限。
管理员可以对系统的功能进行修改、添加或删除,而普通员工只能浏览通讯录信息。
5.备份与恢复:系统可以对数据进行备份和恢复,确保数据的安全性。
三、系统优势1.提高工作效率:在以往的传统管理模式下,企业要查询员工的联系方式需要耗费大量的时间,使用员工通讯录管理系统,可以快速、准确地查找到员工的信息,大大提高了工作效率。
2.数据安全:企业内部通讯录中包含员工的个人资料,必须要保护好这些数据不受到恶意攻击,员工通讯录管理系统拥有完善的权限管理机制和数据备份机制,提高了数据的安全性。
3.资源整合:使用员工通讯录管理系统,可以把所有员工的联系方式整合到一个统一的平台中,降低了管理成本,提高了资源利用效率。
四、系统部署方案1.运行环境要求:该系统需要在Windows操作系统上运行,对于Linux和MacOS操作系统需要借用专业软件进行兼容。
2.软件安装:企业管理员需要安装并配置企业自己的员工通讯录管理系统,包括数据库的配置、Web服务器的配置和系统的参数设置等等。
3.数据导入:管理员需要将企业内部所有员工的联系方式导入到员工通讯录管理系统中,以便员工快速查找使用。
五、系统维护方案1.软件更新:员工通讯录管理系统需要不断进行软件升级以保持软件的稳定性和完善性,企业可以定期检查软件发布的更新版本。
通讯录管理系统的需求分析
通讯录管理系统的需求分析一、引言随着移动互联网时代的到来,人们对通讯录管理系统的需求变得日益迫切。
通讯录管理系统不仅可以帮助用户高效地存储和管理联系人信息,还可以方便地进行通信和互动。
因此,本文将对通讯录管理系统的需求进行分析,从功能模块、用户需求等方面详细探讨。
二、功能需求分析1. 用户管理•用户注册:用户可以通过手机号或邮箱注册账号。
•用户登录:用户输入正确的用户名和密码即可登录系统。
•用户权限管理:管理员可以设置用户的权限,包括查看、编辑、删除等。
2. 联系人管理•添加联系人:用户可以添加新的联系人信息,包括姓名、手机号、邮箱、备注等。
•修改联系人:用户可以对已有联系人信息进行修改和更新。
•删除联系人:用户可以删除不需要的联系人信息。
•搜索联系人:用户可以通过关键字搜索联系人信息。
•分组管理:用户可以将联系人分组,方便进行分类管理。
3. 通讯录同步•数据同步:用户可以将通讯录数据同步到云端,确保数据安全性和持久性。
•多设备同步:用户可以在不同设备上同步通讯录数据,实现数据共享和实时更新。
三、性能需求分析1. 响应速度•系统应具备快速响应能力,用户操作后能够及时反馈结果。
•数据查询和处理速度要求快,避免用户等待时间过长。
2. 并发处理能力•系统应具备较强的并发处理能力,能够同时处理多个用户的请求。
3. 数据安全性•系统需要保障用户数据的安全性,包括数据加密传输、备份恢复等功能。
•系统需要防范数据泄露和恶意攻击,确保用户信息不被盗取或篡改。
四、用户需求分析1. 用户友好性•界面简洁清晰,操作简单易懂。
•功能布局合理,符合用户习惯。
2. 定制性•用户可以根据自己的需求设置系统的显示、排序等参数。
•可以自定义联系人标签、分组等。
五、总结综上所述,通讯录管理系统的需求分析是一个综合性的工作,需要涉及功能、性能和用户等多个方面。
只有充分了解用户需求,确定系统功能和性能指标,才能设计出一款满足用户需求的通讯录管理系统。
通讯录管理系统课程设计报告需求分析
通讯录管理系统课程设计报告需求分析一、背景介绍在当今社会,随着通讯技术的不断发展和普及,通讯录管理系统成为人们日常生活和工作中不可或缺的工具。
为了提高通讯录管理系统的便捷性和效率,本课程设计旨在分析通讯录管理系统的需求,进而设计一个功能完善、操作简便的系统,满足用户的实际需求。
二、需求分析1. 功能需求通讯录管理系统应具备以下基本功能: - 添加联系人:用户可以录入新的联系人信息,包括姓名、电话号码、邮箱等。
- 编辑联系人:用户可以修改已有联系人的信息。
- 删除联系人:用户可以删除不需要的联系人信息。
- 搜索联系人:用户可以根据关键词快速搜索联系人信息。
- 分组管理:用户可以对联系人进行分类管理,方便查找和管理。
2. 性能需求通讯录管理系统的性能需求包括: - 快速响应:系统应具备快速响应用户操作的能力,保证用户体验流畅。
- 数据安全:系统需要保障用户数据的安全性,防止数据泄露和丢失。
- 稳定性:系统需要保持稳定运行,避免出现频繁的崩溃和错误。
3. 可靠性需求通讯录管理系统的可靠性需求包括: - 数据备份:系统应具备数据备份和恢复功能,确保数据不会因意外情况丢失。
- 异常处理:系统需要具备异常处理机制,能够处理用户操作中出现的异常情况。
- 用户权限管理:系统需要对用户进行权限管理,保证只有授权用户可以访问和操作系统。
4. 易用性需求通讯录管理系统的易用性需求包括: - 界面友好:系统界面设计应简洁明了,操作逻辑清晰,便于用户使用。
- 操作简便:用户操作应简单明了,不需要复杂的步骤就能完成常用功能。
- 提示反馈:系统应提供操作提示和反馈,帮助用户正确使用系统。
三、总结基于以上需求分析,通讯录管理系统应具备功能完善、性能优良、可靠稳定、易用便捷的特点,以满足用户的实际需求。
通过本课程设计,我们将致力于设计一个满足以上需求的通讯录管理系统,为用户提供便捷高效的通讯录管理体验。
以上是对通讯录管理系统课程设计报告需求分析的整体内容,系统将围绕这些需求进行设计和实现。
公司员工通讯录管理系统报告
公司员工通讯录管理系统一. 设计目的1、学习并掌握C语言定义函数的基本方法、声明函数及调用函数的方法和过程;2、了解指针和链表的概念,掌握指针的定义和使用指针变量的方法以及链表的正确用法,灵活使用链表来储存员工通讯信息;3、通过本课程设计,强化上机动手能力,在理论和实践的基础上进一步巩固《C语言程序设计》课程学习的内容,掌握工程软件设计的基本方法;4、学会将知识应用于实际的方法,提高分析和解决问题的能力,增加综合能力;5、为后续的毕业设计打下坚实基础。
二. 设计内容设计一个公司员工通讯录管理系统,程序应具有以下功能:1、管理员和员工登录系统时,分别需要各自的密码。
2、通过键盘录入系统所需的数据,即员工的通讯录信息,并保存数据到指定的文件。
3、查询功能,通过键盘输入员工的所在部门、姓名、手机号码或固定电话,输出员工的通讯信息。
4、插入功能,增添员工的通讯录信息。
5、修改功能,修改错误信息。
6、排序功能,将信息按照姓名升序或降序排列。
7、输出打印功能,将所有员工的通讯信息打印出来。
8、统计功能,统计通讯录中各部门的人数及总人数。
9、修改密码,管理员和员工分别可以修改各自的密码。
10、以文件的形式将录入的信息进行储存,并能从中读取信息。
三.概要设计 1.功能模块图;2.各个模块的功能描述。
(1)、创建信息模块:信息内容包括姓名、手机号码、固定电话、生日、QQ 、E-mail 地址、隶属部门和家庭住址,输入完毕保存到文件。
(2)、查询信息模块:包括个人信息查询和部门信息查询,其中个人信息查询可通过姓名、手机号码或固定电话来查找,部门信息查询可通过选择部门来查找。
(3)、插入信息模块:输入新添加员工通讯信息,并保存到文件 (4)、删除信息模块:通过姓名、手机号码或固定电话删除员工信息,并更新文件信息。
(5)、修改信息模块:包括修改个人全部信息和单项信息,并更新文件信息。
(6)、信息排序模块:按照姓名升序或降序排列,并更新文件信息。
员工通讯管理系统
void inquire(LinkList L){ char b[10]; cout<<"请输入你要查询的员工姓名"<<endl; cin>>b; LinkList r; for(r=L->next;r!=NULL&&strcmp(b,r->);r=r->next){} if(r==NULL) cout<<"你要查询的员工不存在"<<endl;
自己用c++写的员工通讯录管理系统,经过反复测试,绝对没 问题,请放心使用。 1、 单位员工通讯录管理系统(线性表的应用) [问题描述] 为某个单位建立一个员工通讯录管理系统,可以方便查询 每一个员工的办公室电话、手机号、及电子邮箱。其功能包括 通讯录链表的建立、员工通讯信息的查询、修改、插入与删 除、以及整个通讯录表的输出。 [实现提示] 可以采用单链表的存储结构,如可定义如下的存储结构: typedef struct { /*员工通讯信息的结构类型定义*/ char num[5]; /*员工编号*/ char name[10]; /*员工姓名*/ char phone[15]; /*办公室电话号码*/ char call[15]; /*手机号码*/ }DataType; /*通讯录单链表的结点类型*/ typedef struct node { DataType data; /*结点的数据域*/ struct node *next; /*结点的指针域*/ }ListNode,*LinkList; 截图 增添信息
} } void xiugai(LinkList &L){ char c[5]; LinkList r,s; cout<<"请输入你要修改的员工的编号"<<endl; cin>>c; for(r=L->next;r!=NULL&&strcmp(c,r->data.num);r=r->next){} if(r==NULL) cout<<"你要修改的员工不存在"<<endl;
(简易手机通讯录管理系统)
(简易手机通讯录管理系统)一、课题名称简易手机通讯录管理系统(线性表、查找、排序)二、主要内容简易手机通讯录管理系统的设计主要是实现对手机通讯录的管理和相关操作。
基本功能如下:三、课题设计的基本思想,原理和算法描述(1)本次课程设计题目为简易手机通讯录管理系统,主要运用到线性表中顺序表的相关知识,以及顺序查找的思想和冒泡排序算法。
(2)界面设计//菜单函数intmenu(){intc;printf(\☆☆☆☆☆☆☆手机通讯录信息管理系统☆☆☆☆☆☆☆☆\\n\\n\printf(\某某某\\n\printf(\printf(\printf(\printf(\printf(\printf(\printf(\ printf(\某某某\\n\\n\printf(\★请输入您的选择(0-6):\while(1){}returnc;}//主函数voidmain(){SqLit某L;InitLit(L);ytem(\while(1){witch(menu()){cae1:ytem(\信息的增加\\n\cae2:ytem(\信息的查询\\n\canf(\if(c<0||c>6)printf(\▲输入错误!请重新选择:\ elebreak;cae3:ytem(\对信息进行排序\\n\cae4:ytem(\信息的修改\\n\cae5:ytem(\信息的删除\\n\6:ytem(\统计联系人个数cae\\n\}}(3)功能模块的实现初始化顺序表voidInitLit(SqLit某&L)cae0:printf(\再见!\\n\default:printf(\▲输入错误!请重新选择:\}{L=(SqLit某)malloc(izeof(SqLit));L->length=0;}增加信息函数。
定义变量a起标记作用,用于判断输入信息是否与已有信息重复voidLitAdd(SqLit某&L)//增加函数{inta=0;//标记printf(\号码(五位数字!):\printf(\姓名:\printf(\性别:\printf(\家庭住址:\for(inti=0;ilength;i++)//判断是否重号{}if(a==0)L->length++;}查找符合条件的信息的下标并返回到需要调用的函数体中intFindNum(SqLit某&L){printf(\★输入需要进行操作的号码:\charnum[10];canf(\inti=0;while(ilength&&trcmp(L->data[i].num,num)!=0)i++;if(i>=L->length){}returni;if(trcmp(L->data[i].num,L->data[L->length].num)==0){}printf(\该号码已经存在\\n\a=1;break;}④查询信息函数分两种情况:按号码查找与按姓名查找。
单位员工通讯录管理系统2
单位员工通讯录管理系统2文理学院综合课程设计(三)Integrated Curriculum Design(3)所在院系信息工程系专业名称电子信息工程班级1001题目单位员工通讯录管理系统(线性表应用)指导教师成员完成时间2013.01.05单位员工通讯录管理系统的设计1 设计目的(1)熟悉算法与数据结构的基本知识解决实际编程中的数据结构设计和算法设计问题。
(2)掌握线性表的基本操作在两种存储结构上的实现。
(3)了解软件设计及软件测试的能力。
2 设计思路本次设计是对线性链表的应用,我们在此实验中运用了了单向链表和双向链表两种设计方法。
以管理系统的主程序为主,不断调用子程序实现通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及退出通讯录系统等功能。
3 设计过程本次实验分为8部分,第一部分是主程序,后面七部分分别实现系统的建立、查询、删除、插入、修改、显示、退出功能。
3.1方案论证3.2程序设计经过需求分析得到详细的设计流程图以及各部分的程序,各部分的子程序通过要通过主程序的调用才能实行,在实现每一个子程序时,还要考虑是否能够实NY图2 详细设计流程图建立程序:printf("\n\n\t\t\t***建立通讯录***\n");for(i=0;i<n;i++){p=(staff*)malloc(sizeof(staff));printf("员工编号:");scanf("%d",&p->num);printf("员工姓名:");scanf("%s",p->name);printf("手机号码:");scanf("%d",&p->phone);printf("电话号码:");scanf("%d",&p->call);p->next=L->next;L->next=p;printf("\t\t\t****输入成功!***\n");} return L;查询程序:printf("\n\n\t\t\t**查询通讯录记录**\n");printf("\n\t\t\t请选择查询方式:\n");printf("\t\t\t*****************\n");printf("\t\t\t# 1------编号 #\n");printf("\t\t\t# 2------姓名 #\n");printf("\t\t\t# 3------手机 #\n");printf("\t\t\t# 4------电话 #\n");printf("\t\t\t*****************\n");printf("\t\t\t请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("\t输入错误!!!请重新选择:");scanf("%d",&m);};if(m==1){ int t;printf("\n请输入想查询的编号:");scanf("%d",&t);while(p&&(p->num)!=t){p=p->next;}if(p==NULL){printf("\t通讯录中没有此人!\n"); }else{printf("\n\t\t\t****员工信息****\n");printf("员工编号: %d\n",p->num);printf("员工姓名: %s\n",p->name);printf("手机电话: %d\n",p->phone);printf("电话号码: %d\n",p->call);} } ;if(m==2){ char s[8];printf("\n请输入想查询的姓名:");scanf("%s",s);while(strcmp(p->name,s)!=0&&(p!=0)){p=p->next;}if(strcmp(p->name,s)==0){printf("\n\t\t\t****员工信息****\n");printf("员工编号: %d\n",p->num);printf("员工姓名: %s\n",p->name);printf("手机号码: %d\n",p->phone);printf("电话号码: %d\n",p->call);}elseprintf("\t通讯录中没有此人!\n");} ;删除程序:printf("\n\n\t\t\t**删除通讯录记录**\n");printf("\n\t\t\t请选择删除方式:\n");printf("\t\t\t*****************\n");printf("\t\t\t# 1------编号 #\n");printf("\t\t\t# 2------姓名 #\n");printf("\t\t\t# 3------手机 #\n");printf("\t\t\t# 4------电话 #\n");printf("\t\t\t*****************\n");printf("\t\t\t请选择:");scanf("%d",&m);while(m!=1&&m!=2&&m!=3&&m!=4){ printf("输入错误,请重新选择:");scanf("%d",&m);};if(m==1){ int t;printf("\n\t请输入想删除的编号:");scanf("%d",&t);while(p->next&&p->next->num!=t){p=p->next;}if(p->next){s=p->next;p->next=s->next;free(s);printf("\t\t\t****删除成功!****");}elseprintf("\t未找到要删除的编号,请重新选择并输入!\n");} ;if(m==2){char ss[8];printf("\n\t请输入想删除的姓名:");scanf("%s",ss);while(p->next&&(strcmp(p->next->name,ss)!=0)){p=p->next;}if(p->next){s=p->next;p->next=s->next;free(s);printf("\t\t\t****删除成功!****");}elseprintf("没有找到要删除的姓名,请重新选择并输入!\n!");} ;插入程序:printf("\n\t\t\t**插入通讯录记录**\n");p=(staff *)malloc(sizeof(staff));printf("\n请输入员工信息:\n");printf("员工编号:");scanf("%d",&p->num);printf("员工姓名:");scanf("%s",p->name);printf("手机号码:");scanf("%d",&p->phone);printf("电话号码:");scanf("%d",&p->call);p->next=l->next;l->next=p;printf("\t\t\t****插入成功!***\n");}修改程序:printf("\n\n\t\t\t**修改通讯录记录**\n");printf("\n\t\t\t**请选择修改方式:\n");while(m!=1&&m!=2&&m!=3&&m!=4){ printf("输入错误,请重新选择:");scanf("%d",&m);};if(m==1){ int t;printf("\n\n\t请输入想修改的编号:");scanf("%d",&t);while(p&&(p->num)!=t){p=p->next;}if(p->num==t){printf("\n\t请输入你修改后的编号:");scanf("%d",&p->num);printf("\t修改后的员工信息为:\n");printf("员工编号: %d\n",p->num);printf("员工姓名: %s\n",p->name);printf("手机电话: %d\n",p->phone);printf("电话号码: %d\n",p->call);}elseprintf("\t未找到要修改编号,请重新选择并输入!\n");} ;if(m==2){char s[8];printf("\n\t请输入想修改的姓名:");scanf("%s",s);while((p!=0)&&strcmp(p->name,s)!=0){p=p->next;}if(strcmp(p->name,s)==0){printf("\n\t请输入修改后的姓名:");scanf("%s",&p->name);printf("\t修改后的员工信息为:\n");printf("员工编号: %d\n",p->num);printf("员工姓名: %s\n",p->name);printf("手机电话: %d\n",p->phone);printf("电话号码: %d\n",p->call);}elseprintf("未找到要修改的姓名,请重新选择并输入!\n");} ;显示程序:printf("\t\t\t**显示通讯录信息**\n");printf("编号姓名手机号码电话号码\n");while(p!=0){printf("%d %10s %10d %10d\n",p->num,p-> name,p->phone,p->call);p=p->next;}}4程序调试与结果分析根据要求运用线性链表的知识编写程序,结合C语言的要求,经过调试运行后得出仿真结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
员工通讯录管理系统用线性表制作员工通讯录管理系统:头文件:ehead.h#include <stdio.h>#include <string.h>#include <stdlib.h>#include <windows.h>#include <conio.h>extern void mainmenu(); //主菜单extern void project();extern void input(); //信息输入extern void search(); //信息查找extern void change(); //信息修改extern void insert(); //信息插入extern void Delete(); //信息删除extern void save(); //信息保存extern void lead(); //信息导出main函数:# include "ehead.h"int main(){system("cls");system("color 5e");printf("\n\n\n\n\n\n\n\n\t\t▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼\n");printf("\t\t\t\t\t员工通讯录管理系统\n");printf("\t\t▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲\n\n");printf("\t\t\t\t\t ☆☆☆☆☆☆☆☆☆☆☆\n\n");printf("\t\t\t\t\t 欢迎使用\n\n");printf("\t\t\t\t\t ☆☆☆☆☆☆☆☆☆☆☆\n\n");printf("\t\t\t\t\t");system("pause");mainmenu();getchar();return 0;功能函数部分:# include "ehead.h"FILE *fp;typedef struct /*员工通讯信息的结构类型定义*/ {char num[5]; /*员工编号*/char name[10]; /*员工姓名*/char phone[15]; /*办公室电话号码*/char call[15]; /*手机号码*/char e_mail[30]; /*电子邮箱*/}DataType;typedef struct node{DataType data; /*结点的数据域*/struct node *next; /*结点的指针域*/}ListNode,*LinkList;node *head,*p,*q,*e;/*******信息输入******/int b;int i=0;char sele;void input(){head=(ListNode *)malloc(sizeof(ListNode));head->next=NULL;q=head;printf("请输入员工数: ");scanf("%d",&b);printf("\n\n\t\t\t***输入信息***\n");for(i=0;i<b;i++){system("cls");p=(LinkList)malloc(sizeof(ListNode));printf("\n\n\t\t\t员工编号:");scanf("%s",&p->data.num);printf("\n\t\t\t员工姓名:");scanf("%s",p->);printf("\n\t\t\t办公室电话:");scanf("%s",&p->data.phone);printf("\n\t\t\t手机号码:");scanf("%s",&p->data.call);printf("\n\t\t\t电子邮箱:");scanf("%s",&p->data.e_mail);q->next=p;q=p;q->next=NULL;getchar();}//显示信息部分printf("\n\n\t员工编号\t员工姓名\t办公室电话\t手机号码\t 电子邮箱\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");p=head->next;while(p){printf(" %-5s %-10s %-15s %-15s %-30s",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ma il);printf("\n");if(p->next==NULL){break;}p=p->next;}printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");//返回主菜单部分printf("\t\t\t\t\t是否确定信息(y/n):");scanf("%c",&sele);if(sele=='y')system("cls");mainmenu();}/******信息查询******/void search(){int m; //m设为选择方式p=head->next;printf("\n\n\t\t\t**查询通讯录记录**\n");printf("\n\t\t\t请选择查询方式:\n");printf("\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t# 1------编号#\n");printf("\t\t\t# 2------姓名#\n");printf("\t\t\t# 0------返回主菜单#\n");printf("\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t请选择:");scanf("%d",&m);if(m==1)goto A;if(m==2)goto B;if(m==0)system("cls");mainmenu();char c[5];int a;A: system("cls");node *p;p =head->next;printf("\n\n\n\n\n\n\n\t\t\t================================ ================\n");printf("\t\t\t\t请输入你要查找的员工编号: ");scanf("%s",&c);for(a=0;a<=b;a++){if(strcmp(p->data.num,c)==0){printf("\n\n\t员工编号\t员工姓名\t员工电话\t 员工手机\t\t电子邮箱\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" %-5s %-10s %-15s %-15s %-30s",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ma il);printf("\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t\t是否返回主菜单(y/n):");scanf("%s",&sele);switch(sele){case 'y':system("cls");mainmenu();break;case 'n':system("cls");search();break;}}p=p->next;}B:system("cls");p =head->next;printf("\n\n\n\n\n\n\n\t\t\t=================================== =============\n");printf("\t\t\t\t请输入你要查找的员工姓名: ");scanf("%s",&c);for(a=0;a<=b;a++){if(strcmp(p->,c)==0){printf("\n\n员工编号\t员工姓名\t员工电话\t 员工手机\t\t电子邮箱\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" %-5s %-10s %-15s %-15s %-30s",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ma il);printf("\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("是否返回主菜单(y/n):");scanf("%s",&sele);switch(sele){case'y':system("cls");mainmenu();break;case'n':system("cls");search();break;}}p=p->next;};}/******修改信息******/void change(){int m=0;int a,f;node *p;C:char c[5];p =head->next;printf("\n\n\n\n\n\n\n\t=================================== =============\n");printf("\t请输入你要查找的员工编号或姓名: ");scanf("%s",&c);for(a=0;a<b;a++){//printf("%d",b);if(strcmp(p->data.num,c)==0||strcmp(p->,c)==0){printf("\n\n\t员工编号\t员工姓名\t员工电话\t 员工手机\t\t电子邮箱\n");printf("\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" %-5s %-10s %-15s %-15s %-30s",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ma il);break;printf("\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~\n");}p=p->next;}D: if(b=0){printf("没有此人信息");}else{printf("\n\n\t\t\t**修改通讯录记录**\n");printf("\t\t\t1.---确认修改\n");printf("\t\t\t2.---返回重新查找\n");printf("\t\t\t**********************\n");printf("\t\t\t请选择:");scanf("%d",&f);if(f==1){system("cls");printf("%d",b);printf("AAA");E: printf("\n\n\n\t\t请输入修改后的员工信息\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("员工编号:");scanf("%s",p->data.num);printf("\n员工姓名:");scanf("%s",p->);printf("\n办公室电话:");scanf("%s",p->data.phone);printf("\n手机号码:");scanf("%s",p->data.call);printf("\n电子邮箱:");scanf("%s",p->data.e_mail);}if(f==2)//system("cls");goto C;}printf("\n\n员工编号\t员工姓名\t员工电话\t 员工手机\t\t 电子邮箱\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~\n");printf(" %-5s %-10s %-15s %-15s %-30s",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ma il);printf("\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~\n");printf("是否确定修改信息(y/n): ");scanf("%s",&sele);switch(sele){case'y':system("cls");mainmenu();break;case'n':system("cls");change();break;}}/******信息插入******/void insert(){int j;node *p;F:// head=(LinkList)malloc(sizeof(ListNode));printf("\n\t\t\t**插入通讯录记录**\n");p=(LinkList)malloc(sizeof(ListNode));printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\n请输入员工信息:");printf("\t\t员工编号: ");scanf("%s",&p->data.num);printf("\t\t\t员工姓名: ");scanf("%s",p->);printf("\t\t\t手机号码: ");scanf("%s",&p->data.phone);printf("\t\t\t电话号码: ");scanf("%s",&p->data.call);printf("\t\t\t电子邮箱: ");scanf("%s",&p->data.e_mail);p->next=head->next;head->next=p;printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); printf("\t\t\t****插入成功!***\n");printf("\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("\t\t\t是否继续插入信息(y/n): ");scanf("%s",&sele);switch(sele){case'y':system("cls");insert();break;case'n':system("cls");mainmenu();break;}}/******删除信息******/void Delete(){system("cls");node *p,*x;p =head->next;int m=0;char s[5];printf("请输入要查找的编号:");scanf("%s",&s);for(int k=0;k<b+1;k++){if(strcmp(p->data.num,s)==0){b++;printf("\n\n\t员工编号\t员工姓名\t员工电话\t 员工手机\t\t电子邮箱\n");printf("\t*************************************************** **********************************\n");printf(" %-5s %-10s %-15s %-15s %-30s",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ma il);printf("\n");printf("\t*************************************************** **********************************\n");break;}p=p->next;}if(m!=0){}else{//printf("没有该信息!");}int g;printf("\n\n\t\t\t1.确认删除\n\t\t\t2.返回菜单\n"); printf("请选择: ");scanf("%d",&g);switch(g){case 1:{p =head->next;x = p;while(p->next&&(strcmp(p->data.num,s)!=0)){x = p;p=p->next;}if(p->next){x->next=p->next;free(p);printf("\n****删除成功!****\n");}else if(p->next==NULL){x->next=NULL;printf("\n****删除成功!****\n");}elseprintf("\n!");system("cls");system("pause");mainmenu();}break;case 2:system("cls");mainmenu();break;}}/******信息保存******/void save(){FILE *fp;int i;if((fp=fopen("Employee directory.txt","wb"))==NULL) {printf("cannot open this Employee directory.\n");exit(1);}if(head==NULL)printf("错误");p=head;p=p->next;do{fprintf(fp," %-5s %-10s %-15s %-15 s %-30s\n",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ mail);p=p->next;}while(p!=NULL);fclose(fp);printf("\n\t\t\t员工通讯录已保存\n");/* printf("是否返回主菜单(y/n): ");scanf("%s",&sele);switch(sele){case 'y':system("cls");mainmenu();break;case 'n':system("cls");save();break;}*/system("pause");mainmenu();}/******信息输出******/void lead(){FILE *fp;int t;fp=fopen("Employee directory.txt","rb");head=(ListNode *)malloc(sizeof(ListNode));head->next=NULL;q=head;for(int i=0;i<b;i++){p=(ListNode *)malloc(sizeof(ListNode));fscanf(fp," %-5s %-10s %-15s %-15s %-30s\n",p->data.num,p->,p->data.phone,p->data.call,p->data.e_ mail);q->next=p;q=p;q->next=NULL;}fclose(fp);printf("\n\t\t\t员工通讯录已导入\n");/*printf("是否返回主菜单(y/n): ");scanf("%s",&sele);if(sele=='y' ){system("cls");mainmenu();}else{}*/system("pause");mainmenu();}。