大数据结构单位员工通讯录管理系统实验报告材料.docx

上传人:b****6 文档编号:5174013 上传时间:2022-12-13 格式:DOCX 页数:20 大小:204.28KB
下载 相关 举报
大数据结构单位员工通讯录管理系统实验报告材料.docx_第1页
第1页 / 共20页
大数据结构单位员工通讯录管理系统实验报告材料.docx_第2页
第2页 / 共20页
大数据结构单位员工通讯录管理系统实验报告材料.docx_第3页
第3页 / 共20页
大数据结构单位员工通讯录管理系统实验报告材料.docx_第4页
第4页 / 共20页
大数据结构单位员工通讯录管理系统实验报告材料.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

大数据结构单位员工通讯录管理系统实验报告材料.docx

《大数据结构单位员工通讯录管理系统实验报告材料.docx》由会员分享,可在线阅读,更多相关《大数据结构单位员工通讯录管理系统实验报告材料.docx(20页珍藏版)》请在冰豆网上搜索。

大数据结构单位员工通讯录管理系统实验报告材料.docx

大数据结构单位员工通讯录管理系统实验报告材料

宁夏师范学院数学与计算机科学学院

《数据结构实验》实验报告

实验序号:

 14  实验项目名称:

期末大作业

学  号

2016210556

姓  名

韩雪萍

专业班级

16级计本一班

实验地点

文科楼222

指导教师

康凯

时间

2017.12.28

一、实验目的

二、实验要求

三、实验设备(环境)及要求

1.环境要求:

硬件:

PC(P

以上,128M以上内存);

软件:

WindowsXP及以上操作系统、VisualC++6.0版本。

四、实验内容、步骤与结果

期末大作业:

单位员工通讯录管理系统(线性表应用)

[问题描述与要求]

为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室电话、手机号、及电子邮箱。

其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以及整个通讯录表的输出。

[实现提示]

可以采用单链表的存储结构,如可定义如下的存储结构:

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; 

五、程序实现(写出每个操作的算法)

#include

#include

#include

typedefstruct

{

charnum[5];

charname[15];

charphone[13];

charcall[15];

chare_mail[30];

}datatype;

typedefstructnode

{

datatypedata;

structnode*next;

}Dnode;

Dnode*head;

Dnode*p;

typedefstruct

nodelinklist;

intmenu();

Dnode*createlist();

voidAdd(Dnode*head,Dnode*p);

Dnode*research(Dnode*head);

voidDelete(Dnode*head);

voidprint_list(Dnode*head);

Dnode*Change(Dnode*head,chark[]);

voidSaveandfree();

voidOpen();

intmenu()

{

inti;

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯录系统清单\n");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("1.通讯录的建立");

printf("\n");

printf("2.添加人员信息");

printf("\n");

printf("3.删除人员信息");

printf("\n");

printf("4.查询人员信息");

printf("\n");

printf("5.输出人员信息");

printf("\n");

printf("6.修改人员信息");

printf("\n");

printf("0.退出并保存");

printf("\n");

printf("请选择0-6:

");

scanf("%d",&i);

while(i<0||i>6)

{

printf("系统提示:

您输入错误!

\n");

printf("请重新输入0-6:

");

scanf("%d",&i);

printf("\n\n");

}

returni;

}

Dnode*createlist()

{

Dnode*head=(Dnode*)malloc(sizeof(Dnode));

Dnode*p;

Dnode*rear;

charc='n';

rear=head;

while(c=='n')

{

p=(Dnode*)malloc(sizeof(Dnode));

printf("请输入编号:

\n");

scanf("%s",p->data.num);

printf("请输入姓名:

\n");

scanf("%s",p->data.name);

printf("请输入办公室电话:

\n");

scanf("%s",p->data.phone);

printf("请输入手机:

\n");

scanf("%s",p->data.call);

printf("请输入电子邮箱:

\n");

scanf("%s",p->data.e_mail);

rear->next=p;

rear=p;

printf("要继续创建请按(n),结束创建请按其它键:

\n");

scanf("%c",&c);

}

rear->next=NULL;

returnhead;

}

voidAdd(Dnode*head,Dnode*p)

{

Dnode*p1;

Dnode*p2;

p1=head;

p2=p1->next;

while(p2!

=NULL&&strcmp(p2->data.num,p->data.num)<0)

{

p1=p2;

p2=p2->next;

}

p1->next=p;

p->next=p2;

}

voidDelete(Dnode*head)

{

chara,b;

Dnode*p;

Dnode*q;

charnum[5];

charname[10];

intx;

printf("1.按编号删除\n");

printf("2.按姓名删除\n");

printf("请选择(1或2):

");

p=head->next;

scanf("%d",&x);

if(x==1)

{

printf("请输入要查询者的编号:

");

scanf("%s",num);

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

p=p->next;

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

p=NULL;

}

if(x==2)

{

printf("请输入要查询者的姓名:

");

scanf("%s",name);

while(p&&strcmp(p->data.name,name)!

=0)

p=p->next;

}

scanf("%c",&b);

if(p==NULL)

{

printf("对不起没有您要查询者的信息\n");

return;

}

printf("要删除该结点吗?

(y/n):

");

scanf("%c",&a);

if(a=='y'||a=='Y')

{

q=head;

while(q!

=NULL&&q->next!

=p)

q=q->next;

q->next=p->next;

free(p);

printf("通讯者已经被删除\n");

}

}

Dnode*research(Dnode*head)

{

Dnode*p;

charnum[5];

charname[10];

charphone[15];

charcall[15];

intx;

printf("1.按编号查询:

\n");

printf("2.按姓名查询:

\n");

printf("3.按电话号码查询:

\n");

printf("4.按手机号码查询:

\n");

printf("请选择(1-4):

");

p=head->next;

scanf("%d",&x);

if(x==1)

{

printf("请输入要查询者的编号:

");

scanf("%s",num);

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

p=p->next;

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

p=NULL;

}

if(x==2)

{

printf("请输入要查询者的姓名:

");

scanf("%s",name);

while(p&&strcmp(p->data.name,name)!

=0)

p=p->next;

}

if(x==3)

{

printf("请输入要查询者的办公室电话号码:

");

scanf("%s",phone);

while(p&&strcmp(p->data.phone,phone)!

=0)

p=p->next;

}

if(x==4)

{

printf("请输入要查询者的手机号码:

");

scanf("%s",call);

while(p&&strcmp(p->data.call,call)!

=0)

p=p->next;

}

returnp;

}

voidprint_list(Dnode*head)

{

Dnode*p;

p=head->next;

printf("编号姓名办公室电话手机号码邮箱");

printf("\n");

while(p!

=NULL)

{

printf("%-5s\t",p->data.num);

printf("%-10s\t",p->data.name);

printf("%-10s\t",p->data.phone);

printf("%-10s\t",p->data.call);

printf("%-15s\t\n",p->data.e_mail);

p=p->next;

}

}

Dnode*Change(Dnode*head,chark[])

{

Dnode*q;

q=research(head);

if(q==0)

{

printf("没有要修改的信息!

\n");

return0;

}

else

{

inti;

k[15]='\0';

printf("编号姓名办公室电话手机号码邮箱\n");

printf("%-5s\t%-10s\t%-10s\t%-10s\t%-15s\t\n",q->data.num,q->data.name,q->data.phone,q->data.call,q->data.e_mail);

printf("1--修改姓名\n");

printf("2--修改办公室电话号码\n");

printf("3--修改手机号码\n");

printf("4--修改电子邮箱\n");

printf("\n");

printf("请选择按键(1-4):

");

scanf("%d",&i);

printf("\n");

switch(i)

{

case1:

printf("修改姓名----\n");

strcpy(q->data.name,k);

printf("请输入要改的姓名:

\n");

getchar();

gets(k);

printf("\n");

strcpy(q->data.name,k);

break;

case2:

printf("修改办公室电话号码----\n");

strcpy(q->data.phone,k);

printf("请输入要修改的号码:

\n");

getchar();

gets(k);

printf("\n");

strcpy(q->data.phone,k);

break;

case3:

printf("修改电话号码----\n");

strcpy(q->data.call,k);

printf("请输入要修改的号码:

\n");

getchar();

gets(k);

printf("\n");

strcpy(q->data.call,k);

break;

case4:

printf("修改电子邮箱----\n");

strcpy(q->data.e_mail,k);

printf("请输入要修改的电子邮箱:

\n");

getchar();

gets(k);

printf("\n");

strcpy(q->data.e_mail,k);

break;

default:

printf("输入错误!

\n");

break;

}

}

returnq;

}

voidSaveandfree()

{

linklist*p=NULL;

FILE*fp;

char*ziliao="ziliao.txt";

if(head==NULL)

{

printf("\n记录为空!

\n");

return;

}

else

p=head->next;

if((fp=fopen(ziliao,"wb+"))==NULL)

{

printf("\n打不开文件!

\n");

return;

}

while(p!

=NULL)

{

fwrite(p,sizeof(linklist),1,fp);

p=p->next;

}

printf("保存完毕!

\n");

fclose(fp);

for(head->next!

=NULL;;)

{

p=head->next;

head->next=head->next->next;

free(p);

}

free(head);

}

voidOpen()

{

FILE*fp;

linklist*p1=NULL,*p2=NULL,*temp=NULL;

if((fp=fopen("ziliao.txt","rb+"))==NULL)

{

printf("\n\t\t*********************通讯录**********************\n");

return;

}

head=(linklist*)malloc(sizeof(linklist));

head->next=NULL;

temp=p2=head;

while(!

feof(fp))

{

p1=(linklist*)malloc(sizeof(linklist));

temp=p2;

p2->next=p1;

p2=p1;

fread(p1,sizeof(linklist),1,fp);

}

temp->next=NULL;

fclose(fp);

}

voidmain()

{

Open();

while

(1)

{

switch(menu())

{

case1:

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯录链表的建立");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

head=createlist();

break;

case2:

p=(Dnode*)malloc(sizeof(Dnode));

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯者信息的添加");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("员工编号:

\n");

scanf("%s",p->data.num);

printf("员工姓名:

\n");

scanf("%s",p->data.name);

printf("员工办公室电话号码:

\n");

scanf("%s",p->data.phone);

printf("员工手机号码:

\n");

scanf("%s",p->data.call);

printf("员工电子邮箱:

\n");

scanf("%s",p->data.e_mail);

printf("操作已成功!

\n");

Add(head,p);

break;

case3:

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯录信息的删除");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");Delete(head);

break;

case4:

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯录信息的查询");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

p=research(head);

if(p!

=NULL)

{

printf("编号姓名办公室电话手机号码邮箱");

putchar('\n');

printf("%-5s\t",p->data.num);

printf("%-10s\t",p->data.name);

printf("%-10s\t",p->data.phone);

printf("%-10s\t",p->data.call);

printf("%-15s\t\n",p->data.e_mail);

printf("\n");

}

else

printf("对不起没有您要查询者的信息\n");

break;

case5:

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯录的输出");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

print_list(head);

break;

case6:

{

charc=getchar();

charb[5];

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

printf("通讯录的修改");

printf("\n");

printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");

printf("\n");

Change(head,b);

}

break;

case0:

Saveandfree();

exit(0);

break;

}

}

}

 

 

六、分析算法,计算时间、空间复杂度

七、教师评语

 

签名:

日期:

年月日

成绩

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 少儿英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1