项目简介:
开发一个基于命令行的议程管理系统。系统需提供用户登录,新用户注册,已注册用户登陆后用户可以注销(delete)当前用户账户,查询(query)用户名单,也可以添加(add)、删除(delete)、查询(query)系统中记录的会议安排等管理功能。
在这个案例中,利用面向对象程序的设计和实现技术,按用户需求对整个程序框架进行设计和实现,并逐步完成基本和扩展功能。通过此项目掌握在Linux环境下进行代码编写、程序调试和测试的基本知识,让学生初步了解面向对象编程的过程、初步了解三层架构、UML图的含义,加强C++编程能力等技能。
阶段任务简介:
阶段一: 实现三层架构中的数据访问层,根据UML类图实现Date 类,User 类,Meeting 类,Storage类的代码,管理并持久化实体数据(用Json存储数据)
阶段二:实现三层架构中的业务逻辑层和UI访问层,编写AgendaService,AgendaUI部分的代码,根据需求,实现应用程序功能逻辑设计,根据UML设计,实现人机交互编程,使用Makefile 编译出可执行的测试
部分类图:
难点:
1. lambda函数
与普通函数最大的区别是,除了可以使用参数以外,Lambda函数还可以通过捕获列表访问一些上下文中的数据。
(1)桥梁作用,两边传参。定义在逻辑层,调用在数据层(传参数给逻辑层),捕获UI层传来的数据
(2)假设你设计了一个地址簿的类。现在你要提供函数查询这个地址簿,可能根据姓名查询,可能根据地址查询,还有可能两者结合。所以你应该提供一个接口,能方便地让用户自定义自己的查询方式(在逻辑层自定义方式)。在这里可以使用lambda函数来实现这个功能。
比如:逻辑层:
2. 三层架构
项目源码:https://github.com/cajet/SYSU_Agenda