软件技术基础课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

软件技术基础

课程设计报告题目:单位员工通讯录管理系统

所在学院:信息工程学院班级:1111111111

学号:1111111111

姓名:111111

指导教师:111111

2015年12月30 日

目录

一、题目概述与需求分析 (1)

二、数据结构设计(逻辑结构与物理结构) (1)

三、代码实现 (3)

四、测试结果 (18)

五、总结 (21)

一、题目概述与需求分析

本课程设计为单位建立一个员工通讯录管理系统,可以查询每个员工的编号、姓名、办公室电话号码、手机号码及电子邮箱。

其功能包括:

(1)通讯录链表的建立。

(2)员工通讯信息的查询、修改、插入与删除。

(3)显示通讯录表的信息。

(4)查询员工编号重复

二、数据结构设计(逻辑结构与物理结构)

2.1 物理结构设计

图1

2.2 逻辑结构设计

(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->data.num,p->data.num)<0)

{

p1=p2; //p1指向刚访问过的结点

p2=p2->next; //p2指向表的下一个结

}

p1->next=p; //插入p所指向的结点

p->next=p2; //连接表中剩余部分

(4)删除结点。从头结点处依次访问表中的结点并与需要删除的结点进行比较,信息吻合则删除。核心代码如下:

while(p&&strcmp(p->data.num,num)<0)

p=p->next;

if(p==NULL||strcmp(p->data.num,num)>0)

p=NULL;

(5)查询结点。从头结点处依次访问表中的结点并与需要查询的结点进行比较,信息吻合则返回一个指针。核心代码如下:

while(p&&strcmp(p->data.num,num)<0)

p=p->next;

if(p==NULL||strcmp(p->data.num,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]; /*电子邮箱*/

}DataType;

//节点定义

typedef struct node

{

DataType data; /*结点的数据域*/

struct node *next; /*结点的指针域*/

}ListNode;

ListNode *head;

ListNode *p;

typedef struct node linklist;

int menu(); //菜单函数

ListNode *createlist(); //通讯录单链表函数

void Add(ListNode *head,ListNode *p); //插入函数

void Delete(ListNode *head); //删除函数

ListNode *research(ListNode *head); //查找函数

void print_list(ListNode *head); //显示信息函数

相关文档
最新文档