编程开发中如何实现文件版本通讯录
发表于:2024-10-28 作者:千家信息网编辑
千家信息网最后更新 2024年10月28日,小编给大家分享一下编程开发中如何实现文件版本通讯录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!源码:"Contact.h
千家信息网最后更新 2024年10月28日编程开发中如何实现文件版本通讯录
小编给大家分享一下编程开发中如何实现文件版本通讯录,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
源码:
"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安全错误
数据库的锁怎样保障安全
访问数据库需要哪些账号
搜狗软件开发
搭建网关服务器
诗词名句 数据库
管理系统软件开发外包
wos包括德温特专利数据库
服务器软件平台的形式
传说对决用哪个服务器好
合照自拍软件开发
奥星软件开发有限公司
软件开发流程有什么好的建议
国信招标网络安全
无线网络安全性类别
空间数据库是大数据技术吗
潍坊应用软件开发定制
保定网络安全等级保护测评机构
软件开发维护服务
自动操作服务器
网络安全信息泄露犯罪罪名
汽车车载网络技术 pdf
宾馆网络安全密钥是什么
委托软件开发怎么记账
导入大于20m数据库
定额数据库
数据库连接不用后自动断开
数据库为什么游标
聚合支付软件开发注意事项
网络安全宣传周问答陕西
用软件开发软件
服务器界面app