首页 > 其他分享 >2020-11-27-myy12周日志

2020-11-27-myy12周日志

时间:2023-09-17 19:23:18浏览次数:47  
标签:11 文件 27 cout 写入 ch1 2020 通讯录 日志

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吃回车

image-20201128170728345

因为getline吃回车,姓名和电话黏在一起了,导致无法写入姓名,我们怎么解决这个问题呢?答案是再写个getline消除吃回车的影响

image-20201128171239514

3.为了让程序分辨ID,姓名,电话,住址,不能将其写入同一个文件,应分为四个文件分别写入

image-20201128172746701

虽然ofstream file的时候会自动帮你建文件,但建议自己先建个文件夹,文件夹下先建好四个txt文件,方便查看

4.数据不要一个个写进文件,应该集体打包,效率更高

原先是写了一个姓名就添加进name文件,写了一个电话就填加进tel文件,优化后是全部程序写完后再进行写入文件,效率更高

标签:11,文件,27,cout,写入,ch1,2020,通讯录,日志
From: https://www.cnblogs.com/xutongxin/p/17709527.html

相关文章

  • 2020-11-23-第12周开发日记
    layout:posttitle:xtx第12周开发日志categories:日志tags:-日志-2020日志BGImage:'https://cdn.jsdelivr.net/gh/xutongxin1/xutongxin1.github.io@a09d6cce1e133e1819736340f4016f10a0226969/asset/background/75006825_p0.jpg'jekyll-theme-WuK:m......
  • 2020-1-28-coding获取项目列表
    layout:posttitle:coding获取项目信息categories:coding-posttag:codingapicoding获取项目信息接口URLhttps://<team-name>.coding.net/api/projects请求方式GET请求header参数:cookie:eid请求Query参数参数示例值必填参数描述page1否页数page......
  • 2020-1-28-coding状态查询
    layout:posttitle:coding团队信息查询categories:coding-posttag:codingapicoding团队信息查询接口URLhttps://<team-name>.coding.net/api/team/<user-name>/get请求方式GET请求header参数:cookie:eid成功返回参数参数示例值参数描述code0状态码......
  • 2020-1-28-coding获取某个项目中的任务
    layout:posttitle:coding获取某个项目中的任务categories:coding-postbackground_music:'<iframeframeborder="no"border="0"marginwidth="0"marginheight="0"width=100%height=100src="//music.163.com/outchain/p......
  • 20211312徐元琦学习笔记2
    第9章I/O库函数——教材知识点归纳9.1~9.2系统调用和I/O库函数系统调用:操作系统中,进程以两种不同的方式运行:内核模式(Kmode)和用户模式(Umode)。Umode权限有限,特殊权限的操作需要在Kmode下进行。系统调用(SystemCall)机制允许进程进入Kmode,执行更高权限的操作。系统调用和I/O......
  • 20211325 2023-2024-1 《信息安全系统设计与实现(上)》第二周学习笔记
    202113252023-2024-1《信息安全系统设计与实现(上)》第二周学习笔记 一、任务要求自学教材第九章,提交学习笔记(10分)本章是复习C语言中的文件操作内容,结构化从文本文件操作,二进制文件操作两个大内容考虑,以前可能只关注文本文件的操作,我们以后更多的是操作二进制文件。文本文......
  • 2023-2024-1 20211327 信息安全系统设计与实现 学习笔记2(必做)
    学习笔记2C语言文件操作内容知识点总结运用ChatGPT进行苏格拉底挑战,发现问题与解决思路实践过程截图C语言文件操作内容知识点总结C语言文件基础操作字符读写、行读写、任意位置读写数据结构读写结构化从文本文件操作二进制文件与文本文件转换C语言文件基础操作1.......
  • Linux上Oracle 11g安装步骤图解
    Oracle11g安装准备工作目录Oracle11g安装准备工作Oracle11g下载地址:Oracle11g 联机文档:Oracle11gR2数据库安装硬件配置要求:Linux平台需要的软件包支持:创建Oracle用户修改内核参数修改用户限制修改用户验证选项修改用户配置文件安装目录配置修改用户bashsh......
  • 【杂题乱写】AtCoder-ARC113
    AtCoder-ARC113AA*B*C枚举\(A,B\),那么\(C\in[1,\left\lfloor\frac{K}{AB}\right\rfloor]\),时间复杂度是\(O(K\logK)\)。提交记录:Submission-AtCoderAtCoder-ARC113BA^B^C\(A^k\)的末尾存在循环节,找到循环节长度\(|T|\),答案就是\(A^{B^C\bmod|T|}\bmod10\)。提......
  • 11 iframe内联框架
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>iframe内联框架</title></head><body><iframesrc="//player.bilibili.com/player.html?aid=55631961......