项目开发文档:通讯录管理系统

项目要求

设计一个通讯录管理系统
交互界面:命令行终端 提供 系统界面 (显示界面,退出界面)
基本功能:增加联系人,查找联系人,修改联系人,删除联系人
附加功能:清空联系人,显示联系人

项目配置

开发环境:windows + VS2019
语言:C/C++ 其实基本纯C语法

开发流程

  1. 首先构建项目,这里采取VS2019开发,所以我们可以创建一个C-C++项目的解决方案,然后里面创建项目:通讯录管理系统;然后由于此项目只是熟悉基本语法和操作,所以直接写在main.cpp一个文件里
  2. 设计一个xxxx系统,我们需要先考虑 用户交互界面;这里使用命令行终端 提供 系统界面;
  3. 我们需要在程序的开始默认显示界面,然后用户可以退出界面;
  4. 所以先实现 显示界面 退出界面;显示界面需要在程序打开后一直显示,所以写一个死循环一直显示界面,然后菜单呈现不同的功能,根据不同的功能做出不同的操作,很明显这里可以用switch流程结构
  5. 系统里 我们需要 通讯录对象 还有联系人对象;通讯录对象里有很多信息,是一个复合类型,我们封装成结构体,联系人对象也有很多信息,我们也封装成结构体;
  6. 技巧: 当我们需要创建的对象包含很多信息的时候,为了方便后续传参操作,我们将其封装成类或者结构体,这里暂时纯C所以封装成结构体;
  7. 然后就开始实现 基本功能,对于每个功能我们直接封装成一个函数;例如 addPerson(), deletePerson();
  8. 注意我们调用这些功能后,需要改变通讯录对象,所以我们可以把通讯录对象设置成全局变量,或者传参的时候,选择传入通讯录对象的地址,这样就可以改变通讯录对象;函数千万不要传通讯录对象,这样是不会改变实参的;
  9. 查找,修改,删除 其实都复用了一段逻辑,那就是联系人是否存在,所以我们将这段逻辑 也封装成 一个函数;方便复用;
  10. 最后注意在很多功能里,我们接收用户输入,输入的时候一定要验证来保证程序的健壮性,否则就会造成很多错误;

版本1

官方版本:

  1. 用到了很多windows的system call,例如system(“pause”) 按任意键继续;system(“cls”) 清屏;
  2. 运用switch结构 实现 系统内部的功能架构;
  3. 函数命名小驼峰,类和结构体命名大驼峰,较为规范

bug:

  1. 源文件 在其他平台上打开乱码 [已解决]
    原因:Visual studio默认不是UTF-8编码
    解决方案:对于每个file重新另存为,然后编码保存为UTF-8格式
    相关帖子:

  2. while和cin混合使用,导致死循环bug [已解决]
    原因:使用cin时,如果输入的对象类型 与 变量类型 不匹配时,会发生错误,然后将fallbit置为1,之后就不会等待用户输入了,变量将会保留原有值不变,造成死循环;一般发生在int类变量中,因为容易发生不匹配的情况
    解决方案:当发生错误时,清空cin里的标志位,然后清空输入缓存区;对于非string类型的变量,需要加强输入检测;
    相关帖子:


项目开发文档:通讯录管理系统
https://vendestine.com/heima-telephone-system
Author
Wenzhe Li
Posted on
July 4, 2022
Licensed under