GO语言项目实战之客户信息管理软件(1)项目分析
一、项目需求
模拟实现一个基于文本界面的《客户信息管理软件》
进一步掌握编程技巧和调试技巧,熟悉面向对象编程
主要涉及以下知识点:
- 切片的插入、删除和替换
- 多对象协同工作
- 分层
二、需求说明
1、模拟实现基于文本界面的《客户信息管理软件》。
该软件能够实现对客户对象的插入、修改和删除(用切片实现),并能够打印客户明细表。
项目采用分级菜单方式。主菜单如下:
-----------------客户信息管理软件-----------------
1 添 加 客 户
2 修 改 客 户
3 删 除 客 户
4 客 户 列 表
5 退 出
请选择(1-5):_
2、每个客户的信息被保存在Customer对象中。
3、以一个Customer类型的数组来记录当前所有的客户
4、每次“添加客户”(菜单1)后,客户(Customer)对象被添加到数组中。
5、每次“修改客户”(菜单2)后,修改后的客户(Customer)对象替换数组中原对象。
6、每次“删除客户”(菜单3)后,客户(Customer)对象被从数组中清除。
7、执行“客户列表 ”(菜单4)时,将列出数组中所有客户的信息
8、“添加客户”的界面及操作过程如下所示:
请选择(1-5):1
---------------------添加客户---------------------
姓名:张三
性别:男
年龄:30
电话:010-56253825
邮箱:aaa@qq.com.com
---------------------添加完成---------------------
9、“修改客户”的界面及操作过程如下所示:
请选择(1-5):2
---------------------修改客户---------------------
请选择待修改客户编号(-1退出):1
姓名(张三):<直接回车表示不修改>
性别(男):
年龄(30):
电话(010-56253825):
邮箱(aaa@qq.com):aaa@qq.com.com
---------------------修改完成---------------------
10、“删除客户”的界面及操作过程如下所示:
请选择(1-5):3
---------------------删除客户---------------------
请选择待删除客户编号(-1退出):1
确认是否删除(Y/N):y
---------------------删除完成---------------------
11、“客户列表”的界面及操作过程如下所示:
请选择(1-5):4
---------------------------客户列表---------------------------
编号 姓名 性别 年龄 电话 邮箱
1 张三 男 30 010-56253825 aaa@qq.com.com
2 李四 女 23 010-56253825 aaa@qq.com.com
3 王芳 女 26 010-56253825 aaa@qq.com.com
-------------------------客户列表完成-------------------------
三、软件设计结构
该软件由以下三个模块组成:
CustomerView为主模块,负责菜单的显示和处理用户操作;
CustomerService为Customer对象的管理模块,内部用切片管理一组Customer对象,并提供相应的添加、修改、删除和获取方法,供CustomerView调用;
Customer为对象,用来封装客户信息。
1、Customer结构体的设计
1)Customer为结构体,用来封装客户信息
该类封装客户的以下信息:
– id:客户编号
– name :客户姓名
– gender :性别
– age :年龄
– phone:电话号码
– email :电子邮箱
2)提供各字段的get/set方法
3)提供所需的工厂方法 (可自行确定)
2、CustomerService结构体的设计
CustomerService为Customer对象的管理模块,内部用数组管理一组Customer对象
本封装以下信息:
– customers:用来保存客户对象的切片
– int total = 0 :记录已保存客户对象的数量
该结构体至少提供以下方法:
– CustomerList(totalCustomer int)
– addCustomer(customer Customer)
– deleteCustomer(index int)
– getAllCustomers()
– getCustomer(index int)
3、enterMainMenu()方法的活动图