layout: post
title: myy通讯录日志
categories: 日志
tags:
- 日志
- 2020日志
jekyll-theme-WuK:
background_music: '<iframe frameborder="no" border="0" marginwidth="0" marginheight="0" width=100% height=86 src="//music.163.com/outchain/player?type=2&id=775446&auto=1&height=66"></iframe>'
通讯录日志
容器vector学习地址:https://www.runoob.com/w3cnote/cpp-vector-container-analysis.html
文件与流学习地址:https://www.runoob.com/cplusplus/cpp-files-streams.html
主要思路:
1.写一个可实现增删查改的通讯录程序(vector实现)
2.退出程序的时候保存数据
void Info::exit_info()//区别1:退出程序的时候保存了数据
{
cout << "确定退出此通讯录吗?y/n: "
char ch1;
cin >> ch1;
if (ch1 == 'y' || ch1 == 'Y')
{
cout<<"正在保存数据";
ofstream fileId;
ofstream fileName;
ofstream fileTel;
ofstream fileAddr;
fileId.open("sql/id.txt");
fileName.open("sql/name.txt");
fileTel.open("sql/tel.txt");
fileAddr.open("sql/addr.txt");
vector<Info>::iterator i;
if(!per.empty())
for(i=per.begin();i != per.end();i++)
{
fileId<<i->id<<endl;
fileName<<i->name<<endl;
fileTel<<i->tel<<endl;
fileAddr<<i->addr<<endl;
}
fileId.close();
fileName.close();
fileTel.close();
fileAddr.close();
cout<<"保存数据完成";
exit(1);
}
3.图形界面开始前读取上次通讯录数据
void Info::interface()//区别2:图形界面开始前读取上次通讯录
cout<<"开始准备通讯录,读取上次的通讯录中";
ifstream fileId;
ifstream fileName;
ifstream fileTel;
ifstream fileAddr;
fileId.open("sql/id.txt");
fileName.open("sql/name.txt");
fileTel.open("sql/tel.txt");
fileAddr.open("sql/addr.txt");
printf("\n");
printf("\n");
printf(" |***********************************************|\n");
printf(" |* 多 功 能 电 子 通 讯 录 *|\n");
printf(" |* *|\n");
printf(" |* 版本号:V_1.0.0*|\n");
printf(" |***********************************************|\n");
printf(" |* *|\n");
printf(" |* 功能选择: 1. 添加好友信息 *|\n");
printf(" |* 2. 查看好友信息 *|\n");
printf(" |* 3. 删除好友信息 *|\n");
printf(" |* 4. 搜索好友信息 *|\n");
printf(" |* 5. 修改好友信息 *|\n");
printf(" |***********************************************|\n");
printf(" |* 请输入你想要实现的功能: *|\n");
printf(" |* *|\n");
printf(" |* 1添加 2查看 3删除 4搜索 5修改 6退出 *|\n");
printf(" |***********************************************|\n");
}
踩坑记录:
1.修改文件名字的时候要看cmake中的文件名是否修改
要对cmake进行修改(注意修改.cpp文件名的时候,.h文件的文件名也会跟着变)
2.getline吃回车
因为getline吃回车,姓名和电话黏在一起了,导致无法写入姓名,我们怎么解决这个问题呢?答案是再写个getline消除吃回车的影响
3.为了让程序分辨ID,姓名,电话,住址,不能将其写入同一个文件,应分为四个文件分别写入
虽然ofstream file的时候会自动帮你建文件,但建议自己先建个文件夹,文件夹下先建好四个txt文件,方便查看
4.数据不要一个个写进文件,应该集体打包,效率更高
原先是写了一个姓名就添加进name文件,写了一个电话就填加进tel文件,优化后是全部程序写完后再进行写入文件,效率更高
标签:11,文件,27,cout,写入,ch1,2020,通讯录,日志 From: https://www.cnblogs.com/xutongxin/p/17709527.html