编程开发中如何实现文件版本通讯录
发表于:2025-02-14 作者:千家信息网编辑
千家信息网最后更新 2025年02月14日,小编给大家分享一下编程开发中如何实现文件版本通讯录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!源码:"Contact.h
千家信息网最后更新 2025年02月14日编程开发中如何实现文件版本通讯录
小编给大家分享一下编程开发中如何实现文件版本通讯录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
源码:
"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;i size; 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;i size-1; i++)//控制排序趟数{for(j = 0; j size-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; i size; 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安全错误
数据库的锁怎样保障安全
博雅数据库海南2020
手机app服务器返回数据异常
数据库安全部署方案
上海电子单片机软件开发招聘
网络安全沙龙议题
医疗器械软件开发服务公司
兴化工业网络技术诚信服务
网络安全计算安全性
国外术语数据库现状
网络安全事故
优步app软件开发商
数据库管理系统国内现状
辽交计算机网络技术怎么样
南通德信网络技术有限责任公司
COBP开发查询数据库
西城区网络技术公司
常州创新软件开发服务至上
杭州软件开发排发
服务器可以开几个ip
曙光服务器管理口mgmt
网络安全宣传画小报
传递给数据库master
网络安全正楷字图片
服务器连接不上
nas安装数据库
浪潮服务器怎么进入安全模式
网络安全是攻防对抗
dnfsf数据库
好声音软件开发
软件开发跟游戏开发一样吗