Giter VIP home page Giter VIP logo

agenda-go-cli's Introduction

Agenda for Golang


Build Status

我们此次作业使用Cobra实现了终端的Agenda系统,主要包括以下功能:

  • 登录
  • 登出
  • 注册
  • 删除账户
  • 查询用户
  • 创建会议
  • 增加会议参与者
  • 会议查询
  • 删除会议参与者
  • 取消会议
  • 退出会议
  • 清空会议

可参考AgendaC++源码

任务目标

  • 熟悉 go 命令行工具管理项目
  • 综合使用 go 的函数、数据结构与接口,编写一个简单命令行应用 agenda
  • 使用面向对象的**设计程序,使得程序具有良好的结构命令,并能方便修改、扩展新的命令不会影响其他命令的代码
  • 项目部署在 Github 上,合适多人协作,特别是代码归并
  • 支持日志(原则上不使用debug调试程序)

具体运行

从github上下载到本地放至$GOPATH/src下并重命名为agenda-go-cli,在agenda-go-cli下终端运行go build,使用./agenda-go-cli加上你所需要的操作命令便可以运行。(当然你需要完成Go语言的相关环境配置)

运行指令和运行截图

实验要求截图可以参见我们的实验博客

相关子命令:

  • 登录

    • Command: login -u=username -p=password
    • Parse:
      • -u: 用户名
      • -p: 密码
  • 登出

    • Command: logout
    • No Parse
    • Extra:
      • 若有用户登录则打印相应登出信息,若无用户登录则提示出错
  • 注册

    • Command: register -u=username -p=password -m=mail -c=cellphone
    • Parse:
      • -u:用户名
      • -p:密码
      • -m:邮箱地址
      • -c: 手机号码
    • Extra
      • 用户名具有唯一性,不允许与现有用户名相同
  • 删除账户

    • Command: deleteaccout
    • No Parse
    • Extra:
      • 如无用户登录则返回出错信息
      • 如有用户登录则删除用户作为发起者的会议,同时将用户从作为参与者的会议中删除
      • 删除登录信息
  • 查询用户

    • Command: queryuser
    • Option: -u=username
    • Parse:
      • -u: 用户名
  • 创建会议

    • Command: createmeeting -t=title -p=participator -s=starttime -e=endtime
    • Parse:
      • -t : 会议标题
      • -p: 参与者(以数组形式呈现)
      • -s: 开始时间
      • -e: 结束时间
    • Extra:
      • 只允许已登录用户进行此操作
      • 会议标题具有唯一性
      • 参与者必须为注册用户
      • 参与者数量 >= 1
      • 开始时间与结束时间应符合逻辑,采用24小时制
      • 不允许发起者或参与者在此时间段内有其他会议
  • 增加会议参与者

    • Command: addparticipator -t=title -p=participator
    • Parse:
      • -t: 会议标题
      • -p: 参与者列表
    • Extra:
      • 仅允许已登录用户对自己发起的仍存在的会议进行增加操作, 否则返回出错信息
      • 参与者必须为注册用户
      • 参与者同样需要检查会议时间段内是否空闲
  • 删除会议参与者

    • Command: removeparticipator -t=title -p=participator
    • Parse:
      • -t: 会议标题
      • -p: 参与者列表
    • Extra:
      • 仅允许已登录用户对自己发起的仍存在的会议进行删除操作, 否则返回出错信息
      • 参与者必须为注册用户并且存在于会议中
      • 参与者数量 == 0 时, 会议删除
  • 会议查询

    • Command: querymeeting -s=starttime -e=endtime
    • Parse:
      • -s : 开始时间
      • -e : 结束时间
    • Extra:
      • 已登录的用户可以查询自己的议程在某一时间段(time interval)内的所有会议安排。
      • 在列表中给出每一会议的起始时间、终止时间、主题、以及发起者和参与者。
      • 注意,查询会议的结果应包括用户作为 发起者或参与者 的会议。
  • 取消会议

    • Command: deletemeeting -t=title
    • Parse:
      • -t : 会议标题
    • Extra:
      • 仅允许已登录用户删除自己发起的会议
  • 退出会议

    • Command: quitmeeting -t=title
    • Parse:
      • -t: 会议标题
    • Extra:
      • 仅允许已登录用户退出自己参加的会议
      • 若因此导致会议参与人数为0则删除会议
  • 清空会议

    • Command: clearmeeting
    • No Parse
    • Extra:
      • 删除已登录用户发起的所有会议

agenda-go-cli's People

Contributors

linjinghua avatar sevennn avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.