编程开发中如何实现文件版本通讯录
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,小编给大家分享一下编程开发中如何实现文件版本通讯录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!源码:"Contact.h
千家信息网最后更新 2025年11月09日编程开发中如何实现文件版本通讯录
小编给大家分享一下编程开发中如何实现文件版本通讯录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
源码:
"Contact.h"
#ifndef __CONTACT_H__#define __CONTACT_H__#include#include #include enum OP{ EXIT, ADD, DELE, SER, MODIFY, DISPLAY, CLEAR, SORT };#define NAME_MAX 20#define SEX_MAX 5#define TELE_MAX 12#define ADDR_MAX 25#define MAX 1000#define DEFAULT 2 //通讯录首次的默认大小#define MAX_INIT 2typedef struct PerInfo{char name[NAME_MAX];int age;char sex[SEX_MAX];char tele[TELE_MAX];char addr[ADDR_MAX];}PeoInfo;typedef struct Contact{PeoInfo *data;int size;int i;int temp;int capacity;}Contact,*Pcon;void init(Pcon pcon);void _add(Pcon pcon);void _display(Pcon pcon);void _del(Pcon pcon);void _search(Pcon pcon);void _modify(Pcon pcon);void _sort(Pcon pcon);void _clear(Pcon pcon);void _destory(Pcon pcon);void _save(Pcon pcon); void _load(Pcon pcon); #endif //__CONTACT_H__
"Contact.c"
#include "Contact.h"void init(Pcon pcon){pcon->size = 0;pcon->capacity = DEFAULT; pcon->data=(PeoInfo *)malloc(MAX_INIT*sizeof(PeoInfo)); if(pcon->data == NULL) { printf("out of menory"); exit(EXIT_FAILURE); } memset(pcon->data,0,pcon->capacity*sizeof(PeoInfo)); _load(pcon); }void _rise(Pcon pcon) //增大容量 { PeoInfo *temp = (PeoInfo *)realloc(pcon->data,(pcon->capacity+MAX_INIT)*sizeof(PeoInfo)); if(temp == NULL) { printf("out of memory!\n"); exit(0); } else pcon->data = temp; }void _dela(Pcon pcon) //减小容量 { PeoInfo *temp = (PeoInfo *)realloc(pcon->data,(pcon->capacity-MAX_INIT)*sizeof(PeoInfo)); if(temp == NULL) { printf("电话本已空!\n"); return ; } else pcon->data = temp; } void _destory(Pcon pcon) { if(pcon->data != NULL) { free(pcon->data); pcon->data = NULL; } } void _add(Pcon pcon){ PeoInfo *temp = NULL; if(pcon->size == pcon->capacity) { _rise(pcon); } printf("请输入名字:>");scanf("%s",pcon->data[pcon->size].name);printf("请输入年龄:>");scanf("%d",&(pcon->data[pcon->size].age));printf("请输入性别:>");scanf("%s",pcon->data[pcon->size].sex);printf("请输入电话:>");scanf("%s",pcon->data[pcon->size].tele);printf("请输入地址:>");scanf("%s",pcon->data[pcon->size].addr);pcon->size++;printf("添加成功\n");}void _display(Pcon pcon){int i = 0;printf("%9s\t%3s\t%4s\ts\ts\n","name","age","sex","tele","addr");for(i = 0;isize;i++){printf("%9s\t%3d\t%4s\ts\ts\n",pcon->data[i].name,pcon->data[i].age,pcon->data[i].sex,pcon->data[i].tele,pcon->data[i].addr);}}static int find(Pcon pcon, char *name){int i = 0;for(i = 0;isize; i++){if(strcmp(pcon->data[i].name,name) == 0){return i;}}return -1;}void _del(Pcon pcon){int pos = 0;int index = 0;char name[NAME_MAX];if(pcon->size == 0){printf("电话本空\n");return;}printf("请输入要删除人的名字:>");scanf("%s",name);pos = find(pcon, name);if(pos == -1){printf("找不到要删除的人\n");return;}//for(index = pos; index < pcon->size; index++){pcon->data[index] = pcon->data[index+1];}pcon->size--;printf("删除成功\n");_dela(pcon);}void _search(Pcon pcon){char name[NAME_MAX] = {0};int pos = 0;printf("请输入要查找人的名字:>");scanf("%s",name);pos = find(pcon, name);if(pos == -1){printf("指定联系人不存在\n");return;}else{printf("%9s\t%3s\t%4s\ts\ts\n","name","age","sex","tele","addr");printf("%9s\t%3d\t%4s\ts\ts\n",pcon->data[pos].name,pcon->data[pos].age,pcon->data[pos].sex,pcon->data[pos].tele,pcon->data[pos].addr);}}void _modify(Pcon pcon){char name[NAME_MAX] = {0};int pos = 0;printf("请输入要修改人的名字:>");scanf("%s",name);pos = find(pcon, name);if(pos == -1){printf("指定联系人不存在\n");return;}else{printf("请输入名字:>");scanf("%s",pcon->data[pos].name);printf("请输入年龄:>");scanf("%d",&(pcon->data[pos].age));printf("请输入性别:>");scanf("%s",pcon->data[pos].sex);printf("请输入电话:>");scanf("%s",pcon->data[pos].tele);printf("请输入地址:>");scanf("%s",pcon->data[pos].addr);}}void _sort(Pcon pcon){int i = 0;int j = 0;PeoInfo temp = {0};for(i = 0;isize-1; i++)//控制排序趟数{for(j = 0; jsize-1-i; j++){if(strcmp(pcon->data[j].name,pcon->data[j+1].name) > 0){temp = pcon->data[j];pcon->data[j] = pcon->data[j+1];pcon->data[j+1] = temp;}}}}void _clear(Pcon pcon){pcon->size = 0;}void _save(Pcon pcon) //写入文件 { int i = 0; FILE *pfWrite = fopen("contact.txt","w"); //打开一个文件 if(pfWrite == NULL) { perror("open file for write"); exit(0); } else { for(i=0; isize; i++) { fwrite(&(pcon->data[i]),sizeof(PeoInfo),1,pfWrite); } fclose(pfWrite); } } void _load(Pcon pcon) //加载文件内容 { int i = 0; PeoInfo temp = {0}; FILE *pfRead = fopen("contact.txt","r"); if(pfRead == NULL) { perror("open file for read"); exit(0); } while(fread(&temp,sizeof(PeoInfo),1,pfRead)) { _rise(pcon); pcon->data[i] = temp; i++; pcon->size++; } } "test.c"
#include "Contact.h"void menu(){printf("***************************\n");printf("********* 1.add ***********\n");printf("********* 2.del **********\n");printf("********* 3.search ********\n");printf("********* 4.modify ********\n");printf("********* 5.display *******\n");printf("********* 6.clear *********\n");printf("********* 7.sort **********\n");printf("********* 0.exit **********\n");printf("***************************\n");}int main(){int input = 1;Contact pcon;init(&pcon);while(input){menu();printf("请选择要操作的数字:");scanf("%d",&input);printf("\n");{switch(input){case ADD:_add(&pcon);break;case DELE:_del(&pcon);break;case SER:_search(&pcon);break;case MODIFY:_modify(&pcon);break;case DISPLAY:_display(&pcon);break;case CLEAR:_clear(&pcon);break;case SORT:_sort(&pcon);break;case EXIT:_save(&pcon);_destory(&pcon);break;default:printf("无效选择!");break;}}}system("pause");return 0;}以上是"编程开发中如何实现文件版本通讯录"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
输入
文件
名字
电话
通讯
通讯录
内容
篇文章
版本
开发
编程
成功
地址
容量
年龄
性别
电话本
联系人
联系
选择
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网易我的世界服务器租赁模组
华为服务器与ai交互
数据库服务器被黑客入侵
北京网络技术专业就业前景
淘宝服务器证书
株洲it软件开发寒假班
消防网络安全学院
黄浦区软件开发怎么样
辽宁子墨网络技术
bgp网络技术
软件开发的验收方式有哪些
imei删除应用数据库
怀化游戏软件开发排名
网络安全智慧大脑工程
市场局网络安全宣传
把数据库放进combox
软件开发公司的未来前景
入侵服务器不被查到有可能吗
第三方软件开发的要求
数据库中锁死和阻塞的分别
高效管理服务器
浏览器与www服务器
软件开发前的可行性研究
软件开发过程中的争执
vivo服务器安全插件下载
微软服务器操作系统商业模式
linux服务器探针
应聘软件开发公司靠谱吗
第三方软件开发的要求
网络安全心得 600