通讯录包含保存文本数据和读取文本数据功能
来源:互联网 发布:淘宝定金尾款是同价格 编辑:程序博客网 时间:2024/05/19 12:12
使用链表实现增加(在增加人员的过程中有一个自动排序功能,比如按姓名排序)、删除、修改、查找(比如:工号查找、电话查找)的功能;
(1)添加用户信息(号码长度 号码是否重复)(2)列出好友信息(按姓名排序)
(3)查找好友信息(按姓名查找)(4)删除好友
(5)退出
头文件#ifndef _ADDRESSBOOK_H_#define _ADDRESSBOOK_H_struct Addressbook{char name[10];char id[20];char address[20];char tele[20];char mobile[20];struct Addressbook *next;};typedef struct Addressbook addressbook;typedef addressbook *LinkList;#endif//接口函数#include<stdio.h>#include<stdlib.h>#include<string.h>#include"addressbook.h"void ListInit(LinkList *l){(*l) = (LinkList)malloc(sizeof(addressbook));(*l)->next = NULL;}int InsertInfo(LinkList *l){LinkList p = *l;LinkList s;printf("请输入好友信息:\n");s = (LinkList)malloc(sizeof(addressbook));scanf("%s%s%s%s%s",s->name,s->id,s->mobile,s->tele,s->address);if(strlen(s->mobile) != 11){printf("无效手机号码!\n");return 0;}if(strlen(s->tele) != 8){printf("无效家庭电话号码!\n");return 0;} while(p->next){if(strcmp((p->next)->mobile,s->mobile) == 0){printf("已存在相同手机号码!\n");return 0;}p = p->next;}p=*l;if(p->next ==NULL){s->next = p->next;p->next = s;}else{while(p->next){if(strcmp((p->next)->name,s->name)>0){s->next = p->next;p->next = s;break;}p = p->next;}if(p->next ==NULL){s->next = p->next;p->next = s;}}}int ShowInfo(LinkList l){if(l->next == NULL){printf("通讯录为空!\n");}else{LinkList p = l->next;while(p){printf("Name: %s Id: %s Mobile: %s Tele: %s Address: %s\n",p->name,p->id,p->mobile,p->tele,p->address);p=p->next;}}}int SearchInfo(LinkList l){LinkList p = l->next;char n[10];printf("请输入您想要查找的好友名字:\n");scanf("%s",n);while(p){if(strcmp(p->name,n) == 0){printf("ID: %s Tele: %s Mobile: %s Address: %s\n",p->id,p->tele,p->mobile,p->address);break;}else{p =p->next;}}if(p == NULL){printf("查无此人!\n");}}int DeleteInfo(LinkList l){LinkList p = l;LinkList tmp;char n[10];printf("请输入你想删除的好友名字:\n");scanf("%s",n);while(p->next){if(strcmp((p->next)->name,n) == 0){tmp = p->next;p->next = tmp->next;free(tmp);printf("删除好友信息成功!\n");break;}else{p = p->next;}}}int ChangeInfo(LinkList *l){LinkList p = (*l)->next;LinkList t = *l;LinkList s ;char n[10];printf("请输入您想修改的好友姓名:\n");scanf("%s",n);while(p){s = (LinkList)malloc(sizeof(addressbook));if(strcmp(p->name,n) == 0){printf("请输入您要修改的信息:姓名 编号 电话 家庭电话 住址\n");scanf("%s%s%s%s%s",s->name,s->id,s->mobile,s->tele,s->address);if(strlen(s->mobile) != 11){printf("无效手机号码!\n");return 0;}if(strlen(s->tele) != 8){printf("无效家庭电话号码!\n");return 0;}while(t->next){if(strcmp((t->next)->mobile,s->mobile) == 0){printf("已存在相同手机号码!\n");return 0;}t = t->next;}strcpy(p->name , s->name);strcpy(p->id , s->id);strcpy(p->mobile , s->mobile);strcpy(p->tele , s->tele);strcpy(p->address , s->address);free(s);printf("修改成功!\n");break;}else{p = p->next;}}if(p == NULL){printf("查无此人!\n");}}int outlink(LinkList l){ FILE *fp; fp=fopen("output.txt","w"); if(NULL==fp) { perror("fopen"); exit(1); } LinkList temp=l->next; while(temp) { fwrite(temp,sizeof(addressbook),1,fp); temp=temp->next; } printf("保存中\n"); sleep(2); fclose(fp);}void readlink(LinkList l){ LinkList p,r; FILE *fp; l->next=NULL; r=l; if((fp=fopen("output.txt","r"))==NULL) { perror("can not open\n"); exit(1); } printf("reading\n"); while(!feof(fp)) { p=(LinkList)malloc(sizeof(addressbook)); if(!p) { printf("malloc failure\n"); return; } if(fread(p,sizeof(addressbook),1,fp)!=1) { break; } else { p->next=NULL; r->next=p; r=p; } } sleep(2); fclose(fp);}主函数#include<stdio.h>#include<stdlib.h>#include"addressbook.h"void PrintInfo(){printf("********************************************\n");printf("***1.添加用户信息 2.列出好友信息***********\n");printf("***3.查找好友信息 4.删除好友***************\n");printf("***5.修改好友信息 6.保存文本 ***********\n");printf("***7.退出 **********************\n\n");printf("***********请输入你的选择***********\n");}int main(){LinkList addbook;int choice;ListInit(&addbook); readlink(addbook);while(1){PrintInfo();scanf("%d",&choice);switch(choice){case 1:InsertInfo(&addbook);break;case 2:ShowInfo(addbook);break;case 3:SearchInfo(addbook);break;case 4:DeleteInfo(addbook);break;case 5:ChangeInfo(&addbook);break;case 6: outlink(addbook);break; case 7: exit(1); break;default:printf("无效操作!\n");}}return 0;}
阅读全文
0 0
- 通讯录包含保存文本数据和读取文本数据功能
- 保存数据到文本
- Verilog读取文本中的数据和输出数据到文本
- C++读取文本数据
- 读取文本数据
- C++文本数据读取
- 读取文本数据2.1
- MATLAB-文本数据读取
- Python 文本挖掘:数据存储和读取
- 大数据文本读取并保存到MSSQL的坑
- JDBC之大段文本数据的保存与读取
- angular2 下载保存文本数据
- angular2 下载保存文本数据
- C#_读取文本------ 保存文本----功能的实现
- VC编程读取文本数据
- 另一种文本数据读取方式
- Unity3d 读取json文本数据
- VC编程读取文本数据
- 神药莎普爱思虚假宣传遭炮轰,牵扯原药监局长郑筱萸愈加扑朔迷离
- Mysql一主多从和读写分离配置简记
- 【学习总结】Machine Learning Foundations(待补充。。。)
- 根据身份证计算年龄
- Java语言规范
- 通讯录包含保存文本数据和读取文本数据功能
- ASM red_hat4地址
- Linux学习笔记(三)_网络
- linux0.11内核完全剖析- fork.c
- JAVA关键字this和super作用与案例
- vue项目,引入elementUI没有样式,报错如下图,是好像是少了什么支持文件
- OnSharedPreferenceChangeListener调用失败之坑 强引用 软引用 弱引用 虚引用之分
- 多线程之间实现
- Android studio默认安装路径?