单位员工通讯录管理系统
单位员工通讯录管理系统(线性表的应用)
[需求分析]
为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。
[问题要求]
其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。
[问题分析]
为建立单位员工通讯录系统,首先要实现员工信息的录入、保存等基本操作。对于员工通讯录我们要存入要求的员工的各种信息等,对于已经保存的信息,我们要可以对这些信息进行查询、修改、插入新信息、删除信息、还有可以直接输出整个所有员工信息等。而这些操作对于我们来说都是对建立的链表的基本操作,对于本次试验我采用单向线性链表。
[算法设计]
首先我们要进行最基本的操作,即建立链表。链表的节点信息保存的有员工编号、员工姓名、办公室电话号码、手机号码、员工邮箱这些信息。而链表的结点信息保存的有员工信息以及其指针域。然后我们可以添加员工信息,对于新的员工信息我们将其添加在链表的表尾,在添加之前我们要进行一项操作,即遍历链表找到其尾指针,然后开辟一个结点并将其加到链尾。我们还可以进行员工信息的查询操作,在进行查询时我们首先要遍历链表,然后在遍历的同时与关键字进行比较从而找到员工信息并输出。员工信息删除操作,此操作首先要找到要删除的员工信息,然后将此节点的前一节点的后续指针直接指向要删除的结点的后续指针,并且释放要删除的结点空间即可。员工信息修改,首先找到要修改的员工,然后输入要修改的员工信息,将输入信息直接覆盖在原有信息上即可。员工信息输出,遍历整个链表并输出。
流程图如下:
[调试分析及测试数据]
员工信息插入:
员工信息查询:
员工信息删除:
员工信息修改:
[程序代码]
void Init(LinkList list)//初始化
{
}
void Read(LinkList list)//输出员工信息
ListNode *p=new ListNode; strcpy(p->data.call,
} ListNode *t; t=list->next; do { cout
void Search(LinkList list)//查询
{
}
void Insert(LinkList list)//插入
{ ListNode *aa; aa=list->next; cout
} w=list->next; while(w->next!=NULL) { } w=w->next; ListNode *u=new ListNode; u->next=NULL; cout
void Delete(LinkList list)//删除
{
ListNode *cz1; ListNode *cz2; ListNode *cz3; cz1=list; cz2=list; int s=0; charchax[20]; cout
} } cz1=cz1->next; for(int j=0;jnext; cz2->next=cz3->next; cz2=cz2->next;
void Change(LinkList list)//修改
{
ListNode *xiug; ListNode *zans; zans=list->next; cout
} } cin>>xiug->data.email; strcpy(zans->data.email,xiug->data.email); break; case 3: cout
[实验总结]
通过这次的程序设计,发现一个程序设计就是算法与数据结构的结合体,自己也开始对程序产生了前所未有的兴趣,以前偷工减料的学习也不可能一下子写出一个程序出来,于是我就认真看老师写的程序,发现我们看懂了一个程序其实不难,难的是对于一个程序的思想的理解,我们要掌握一个算法,不仅仅限于读懂,主要的是要理解老师的思路,学习老师的解决问题的方法。