【服务计算】-CLI 命令行实用程序开发实战 - Agenda

agenda 开发项目

本次实现的是一个简易的Agenda开发项目,完整版与初级实训的要求相同,具体要求可查看课程网站。老师这次取消了组队,只要求每人完成两条命令,不过我最终实现了关于用户的5条命令。

1. 最终实现的需求

1)业务需求:

用户注册
  • 注册新用户时,用户需设置一个唯一的用户名和一个密码。另外,还需登记邮箱及电话信息。
  • 如果注册时提供的用户名已由其他用户使用,应反馈一个适当的出错信息;成功注册后,亦应反馈一个成功注册的信息。
用户登录
  • 用户使用用户名和密码登录 Agenda 系统。
  • 用户名和密码同时正确则登录成功并反馈一个成功登录的信息。否则,登录失败并反馈一个失败登录的信息。
用户登出
  • 已登录的用户登出系统后,只能使用用户注册和用户登录功能。
用户查询
  • 已登录的用户可以查看已注册的所有用户的用户名、邮箱及电话信息。
用户删除
  • 已登录的用户可以删除本用户账户(即销号)。
  • 操作成功,需反馈一个成功注销的信息;否则,反馈一个失败注销的信息。
  • 删除成功则退出系统登录状态。删除后,该用户账户不再存在。

2)功能需求:

  • agenda -h :列出程序说明
  • agenda <command> -h :列出命令说明
  • agenda register -u username –p password –e email -t telphone :用户注册
  • agenda login -u usename -p password:用户登录
  • agenda logout:用户登出
  • agenda qryuser:查询所有用户信息
  • agenda deluser -p password:注销当前账号

3)持久化要求:

  • 使用 json 存储 User 实体(users.json)
  • 当前用户信息存储在 curUser.txt

4)日志服务

使用 log 包记录命令执行情况

  • 正常输出信息记录在info.log
  • 错误信息记录在error.log

5)项目目录

cmd :存放命令实现代码
entity :存放 User对象读写与处理逻辑
service:存放充当cmd命令与data之间的接口的程序
data:存放系统数据,包括所有User信息(users.json),当前用户信息(curUser.txt)以及输出日志信息

2. 测试样例

GoOnlie测试环境并不稳定,进入之后总是报如下错误:
在这里插入图片描述
所以下面的实现效果是将其改为本地版之后在本地运行的结果。GoOnlline上的操作与本地版稍有不同(见GoOnline版本README.md)。

首先是运行go install将其安装到$GOPATH/bin或者go build编译到agenda目录内,然后运行agenda(同agenda -h),运行结果如下:

F:\Go\gowork\src\agenda>agenda
A simple version of agenda,a meeting-manage system.

Usage:
  agenda [command]

Available Commands:
  deluser     delete the current user from the system
  help        Help about any command
  login       User login an account
  logout      user logout the account
  qryuser     query all the users
  register    Used to register an account

Flags:
      --config string   config file (default is $HOME/.agenda.yaml)
  -h, --help            help for agenda
  -t, --toggle          Help message for toggle

Use "agenda [command] --help" for more information about a command.
subcommand is required
  • agenda <command> -h :列出命令说明,以agenda register - h 为例:
F:\Go\gowork\src\agenda>agenda register -h
Use the register command in one of the forms below to register an account:
        1. agenda register -u username -p password -e email -t telephone
        2. agenda register -uusername  -ppassword  -eemail  -ttelephone

        Flags:
                -u username
                -p password
                -e email
                -t telephone

Usage:
  agenda register [flags]

Flags:
  -e, --email string   email address
  -h, --help           help for register
  -p, --pass string    password
  -t, --tel string     telephone number
  -u, --user string    username

Global Flags:
      --config string   config file (default is $HOME/.agenda.yaml)
  • agenda register -u username –p password –e email -t telphone :用户注册(必须提供四个flag的值)

下面的命令注册了一个用户名为fsql,密码为123,邮箱为fsq@mail.com,电话为12345678的用户

F:\Go\gowork\src\agenda>agenda register -u fsql -p 123 -e fsq@mail.com -t 12345678
Info: 2019/10/29 16:44:38 fsql  register succeed!

假如用户名已存在:

F:\Go\gowork\src\agenda>agenda register -u fsq -p 123 -e fsq@mail.com -t 12345678
Error: 2019/10/29 16:44:03 fsq  register failed: username has been used!

注:Info与Error在输出到标准输出的同时也会写入info.log和error.log(可在agenda/data/目录中查看)

  • agenda login -u usename -p password:用户登录
    使用刚刚注册的账户登录
F:\Go\gowork\src\agenda>agenda login -u fsql -p 123
Info: 2019/10/29 16:50:38 fsql  login succeed!

当前登录的用户信息会存在与agenda/data/curUser.txt中:
在这里插入图片描述

  • agenda qryuser:在登陆之后查询所有用户信息
F:\Go\gowork\src\agenda>agenda qryuser
There are  3  users:
Name--Email--Telephone
fsq   test@qq.com   12345678
fsq2   test@qq.com   12345678
fsql   fsq@mail.com   12345678
Info: 2019/10/29 16:53:01 fsql  qryuser succeed!
  • agenda logout:用户登出
F:\Go\gowork\src\agenda>agenda logout
Info: 2019/10/29 16:54:26 fsql  logout succeed!
  • agenda deluser -p password:注销当前账号(在注销前需要保证用户已登录)

F:\Go\gowork\src\agenda>agenda deluser
Error: 2019/10/29 16:56:05 fsql  deluser failed: password must be provided

F:\Go\gowork\src\agenda>agenda deluser -p 123
Info: 2019/10/29 16:56:13 fsql  deluser succeed!

项目地址

GoOnline项目地址
GoOnline版Github地址
本地版Github项目地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值