数据结构单位员工通讯录管理系统实验报告_第1页
数据结构单位员工通讯录管理系统实验报告_第2页
数据结构单位员工通讯录管理系统实验报告_第3页
数据结构单位员工通讯录管理系统实验报告_第4页
数据结构单位员工通讯录管理系统实验报告_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

./XX师X学院数学与计算机科学学院《数据结构实验》实验报告实验序号:14实验项目名称:期末大作业学号2016210556姓名韩雪萍专业班级16级计本一班实验地点文科楼222指导教师康凯时间2017.12.28实验目的二、实验要求三、实验设备〔环境〕与要求1.环境要求:硬件:PC〔P=2\*ROMANII以上,128M以上内存〕;软件:WindowsXP与以上操作系统、VisualC++6.0版本。四、实验内容、步骤与结果期末大作业:单位员工通讯录管理系统〔线性表应用〕[问题描述与要求]为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的办公室、手机号、与电子。其功能包括通讯录链表的建立、员工通讯信息的查询、修改、插入与删除、以与整个通讯录表的输出。[实现提示]可以采用单链表的存储结构,如可定义如下的存储结构:typedef

struct

{

/*员工通讯信息的结构类型定义*/

char

num[5];

/*员工编号*/

char

name[10];

/*员工XX*/

char

phone[15];

/*办公室*/

char

call[15];

/*手机*/}DataType;/*通讯录单链表的结点类型*/typedef

struct

node{

DataType

data;

/*结点的数据域*/

struct

node

*next;

/*结点的指针域*/}ListNode,*LinkList;

五、程序实现〔写出每个操作的算法〕#include<stdio.h>#include<string.h>#include<stdlib.h>typedefstruct{charnum[5];charname[15];charphone[13];charcall[15];chare_mail[30];}datatype;typedefstructnode{ datatypedata; structnode*next;}Dnode;Dnode*head;Dnode*p;typedefstructnodelinklist;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<"请输入XX:\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>; 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.按XX删除\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<"请输入要查询者的XX:">; scanf<"%s",name>; while<p&&strcmp<p->,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.按XX查询:\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<"请输入要查询者的XX:">; scanf<"%s",name>; while<p&&strcmp<p->,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<"编号XX办公室手机">; printf<"\n">; while<p!=NULL> { printf<"%-5s\t",p->data.num>; printf<"%-10s\t",p->>; 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<"编号XX办公室手机\n">; printf<"%-5s\t%-10s\t%-10s\t%-10s\t%-15s\t\n",q->data.num,q->,q->data.phone,q->data.call,q->data.e_mail>; printf<"1--修改XX\n">; printf<"2--修改办公室\n">; printf<"3--修改手机\n">; printf<"4--修改电子\n">; printf<"\n">; printf<"请选择按键<1-4>:">; scanf<"%d",&i>; printf<"\n">; switch<i> { case1:printf<"修改XX\n">;strcpy<q->,k>; printf<"请输入要改的XX:\n">; getchar<>; gets<k>; printf<"\n">; strcpy<q->,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<"员工XX:\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>; 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<"编号XX办公室手机">; putchar<'\n'>; printf<"%

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论