通讯录--文件保存

本文是基于动态存储的通讯录实现中加以修改:动态存储实现通讯录

增加数据写入文件函数:

//将数据写入文件
void WriteFile(mindan* book) {
 FILE* fp = fopen("test.txt", "w");
 if (fp == NULL) {
  perror("文件打开失败!\n");
  return;
 }
 for (int i = 0; i < book->size; i++) {
  fwrite(&(book->everyone[i]),sizeof(information),1,fp);
 }
 fclose(fp);
}

增加加载文件数据存储:

void LoadFile(mindan* book) {
 FILE* fp = fopen("test.txt", "r");
 if (fp == NULL) {
  perror("文件打开失败!\n");
  return;
 }
 information temp = { 0 };
 int n;
 while (1) {
  n = fread(&temp, sizeof(information), 1, fp);
  if (n < 1) {
   break;
  }
  book->everyone[book->size] = temp;
  book->size++;
  if (book->size > book->num) {
   book->num += 20;
   information* newper = (information*)malloc(book->num*sizeof(information));
   memcpy(newper, book->everyone, book->size*sizeof(information));
   free(book->everyone);
  }
 }
  
}

只要再合适的地方调用两者即实现数据存入文件和

int main() {
 mindan person_info;
 Init(&person_info);
 LoadFile(&person_info);
 //定义函数指针func 代表void(*) (mindan*)
 typedef void(*func)(mindan*);
 func fun_table[] = {
  NULL,
  AddInformation,
  DelInformation,
  FindInformation,
  ReInformation,
  PrintInformation,
  DisInformation,
  SortInformation
 };
 while (1) {
  int choose = meau();
  if (choose < 0||choose > sizeof(fun_table)/sizeof(fun_table[0])) {
   printf("输入无效,请重新输入\n");
   continue;
  }
  if (choose == 0) {
   printf("再见\n");
   WriteFile(&person_info);
   break;
  }
  else {
   fun_table[choose](&person_info);
  }
 }
 system("pause");
 return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实训项目,满足以下要求 【要求】 (1)程序的主窗口如左图所示。 程序启动时,窗口左边的“姓名”列表框显示了本软件保存的所有人员姓名,从选择一个姓名,窗口左边的“详细信息”区域显示出此人的详细通讯录内容。 (2)窗口顶部“城市”和“性别”两个列表框列出了可供选择的城市名称和姓名。使用这两个控件,可以筛选出感兴趣的内容。例如,在“城市”选择“南京”,在性别选择“男”,则在“姓名”列表框只显示出程序所保存的住在南京的男性人员。选择“城市”和“性别”的“全部”,则列出所有人员。 (3)单击“添加”按钮 ,弹出一个对话框。通过此对话框,可以添加新的通讯录条目。在添加新条目时,所在城市应从组合框选择,若组合框没有想要的城市,可以直接在组合框键入。要求键入的新城市名能自动添加到“添加”对话框“所在城市”组合框和主窗口“城市”组合框的下拉列表。 (4)在主窗口点击“删除”按钮 可以删除当前显示的条目。 (5)增加“保存”和“打开”按钮或菜单项,要求能够自动保存所做的添加和删除操作。 (6)所有的数据保存在.txt文件,并能读出。比如.txt文件的每一行保存一条记录。如:姓名|性别|生日…………【可选用CFile/CStdioFile类】 【提示】创建通讯类,包括姓名、性别、生日、所在城市、工作单位、办公电话、住宅电话等必要信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值