文档介绍:软件技术基础
课程设计报告
题目: 单位员工通讯录管理系统
所在学院: 信息工程学院
班级: 1111111111
学号: 1111111111
姓名: 111111
指导教师: 111111
2015年12月 30 日
目录
题目概述与需求分析……………………………1
二、数据结构设计(逻辑结构与物理结构)…………1
三、代码实现…………………………………………3
四、测试结果…………………………………………18
五、总结………………………………………………21
一、题目概述与需求分析
本课程设计为单位建立一个员工通讯录管理系统,可以查询每个员工的编号、姓名、办公室电话号码、手机号码及电子邮箱。
其功能包括:
(1)通讯录链表的建立。
(2)员工通讯信息的查询、修改、插入与删除。
(3)显示通讯录表的信息。
(4)查询员工编号重复
二、数据结构设计(逻辑结构与物理结构)
物理结构设计
图1
逻辑结构设计
(1)创建员工信息数据结构体DataType,其中包括员工编号、员工姓名、办公室电话号码、手机号码、电子邮箱信息。创建节点结构体,其中包括数据域和指针域。代码如下:
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;
(2)建立通讯录单链表。本设计运用尾插入法将新插入的结点接到单链表的尾部。核心部分代码如下:
rear->next=p;
rear=p;
(3)插入结点。结点插入式按照通讯录中员工编号的顺序进行插入,以保证其编号按照从小到大顺序依次排列,方便查询。核心代码如下:
p1=head;
p2=p1->next;
while(p2!=NULL&&strcmp(p2->,p->)<0)
{
p1=p2; //p1指向刚访问过的结点
p2=p2->next; //p2指向表的下一个结
}
p1->next=p; //插入p所指向的结点
p->next=p2; //连接表中剩余部分
(4)删除结点。从头结点处依次访问表中的结点并与需要删除的结点进行比较,信息吻合则删除。核心代码如下:
while(p&&strcmp(p->,num)<0)
p=p->next;
if(p==NULL||strcmp(p->,num)>0)
p=NULL;
(5)查询结点。从头结点处依次访问表中的结点并与需要查询的结点进行比较,信息吻合则返回一个指针。核心代码如下:
while(p&&strcmp(p->,num)<0)
p=p->next;
if(p==NULL||strcmp(p->,num)>0)
p=NULL;
return p;
(6)输出信息。从头结点处依次访问表中的结点并输出,直到表尾。
(7)修改结点信息。从头结点处依次访问表中的结点,直到找到需要修改的结点并修改。核心代码如下:
printf("修改员工姓名\n");
strcpy(q->,k);
printf("请输入修改后的姓名:\n");
getchar();
gets(k);
printf("\n");
strcpy(q->,k);
(8)查询重复信息。在创建链表和添加结点的时候调用查询函数,查询是否有重复的员工编号,重复则会跳出一个重新输入提示框。核心代码如下:
if(judge(head,p)==1)
三、代码实现
#include <>
#include <>
#include<>
/*员工通讯录信息的结构类型定义*/
typedef struct
{
char num[5]; /*员工编号*/
char name[10]; /*员工姓名*/
char phone[15]; /*办公室电话号码*/
char call[15]; /*手机号码*/
char e_mail[30];