版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
宁夏师范学院数学与计算机科学学院《数据结构实验》实验报告实验序号: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];
/*员工姓名*/
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("请输入姓名:\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.按姓名删除\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->,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->,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->); 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->,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->,k); printf("请输入要改的姓名:\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("员工姓名:\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("编号姓名办公室电话手机号码邮箱"); putchar('\n'); printf("%-5s\t",p->data.num);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年福建省福州墨尔本理工职业学院人才招聘笔试考试备考题库及答案解析
- 2025四川德阳市广安发展工程建设有限公司第二批项目合同制员工招聘补充说明考试笔试模拟试题及答案解析
- 2025四川达州市中心医院招收重症护理进修学员备考考试试题及答案解析
- 深度解析(2026)《GBT 25919.1-2010 Modbus测试规范 第1部分:Modbus串行链路一致性测试规范》
- 2025年秋季泉州市丰泽区云山实验小学语文顶岗教师招聘参考考试题库及答案解析
- 2025辽宁沈阳盛京资产管理集团有限公司所属子公司沈阳华海锟泰投资有限公司所属子公司招聘5人备考笔试题库及答案解析
- 2025广东广州景泰第三幼儿园教师招聘1人参考考试试题及答案解析
- 2025安徽皖新融资租赁有限公司服务人员招聘岗位核减参考考试试题及答案解析
- 2025成都易付安科技有限公司第一批次招聘15人笔试考试参考题库及答案解析
- 2025贵州万山宏鑫环保科技有限责任公司临聘人员招聘8人参考考试题库及答案解析
- 回转窑安装说明书样本
- 2025年中共宜春市袁州区委社会工作部公开招聘编外人员备考题库附答案详解
- 2026年中医养生馆特色项目打造与客流增长
- 2025年社保常识测试题库及解答
- 2025年铁路运输合同书
- 消防设施培训课件
- 疤痕子宫破裂护理查房
- 2025-2026学年人教版高一生物上册必修1第1-3章知识清单
- 肾内科常见并发症的观察与应急处理
- 《马克思主义与社会科学方法论题库》复习资料
- 西游记第64回课件
评论
0/150
提交评论