本项目是一个使用Cobra实现的命令行会议管理系统,源代码请点击这里
项目需求
- 利用Go语言进行编程
- 使用面向对象的思想设计程序,使得程序具有良好的结构命令,并能方便修改、扩展新的命令不会影响其他命令的代码
- 项目部署在 Github 上,合适多人协作,特别是代码归并
- 支持日志(原则上不使用debug调试程序)
运行条件
- 将项目文件,放入本地Go工作环境的src目录下
- 在命令行中进入该文件中,运行
go build
命令 - 之后就可以在命令行中利用
./Agenda [command_name] ......
来进行项目运行
项目架构
基于面向对象的设计思想,我们程序的架构如下:
1 | . |
entity
文件夹下存贮项目的数据实体结构data
则存储日志信息,以及报错的信息,在出错时,可以在 error.log 中查找错误的具体信息service
文件夹下实现的是对于数据的抽象操作信息。为命令实现时,提供对于数据对象的操作接口cmd
是实现命令的主要文件,每一个go文件即对应的一条指令。
相关命令
上图是本项目所包含的所有命令的简单介绍,可以用./Agenda help
来查看,具体命令介绍如下:
register
- 注册新用户,要求用户提供一个唯一的用户名、密码、邮箱和电话。且对于个参数的输入格式都做了合法性检查。
- 使用格式:
1 | ./Agenda register -u username -p password -e email -t phone |
- 可用参数列表
1 | -e, --email string 新用户邮箱 |
- 使用截图
login
- 用户登录,用户输入用户名和密码登陆。且只有在没有登陆的状态下,用户名注册过且密码正确则登陆成功。
- 使用格式:
1 | ./Agenda login -u username -p password |
- 可用参数列表
1 | -h, --help help for login |
- 使用截图
logout
- 用户登出,要求用户处于登入状态才能正确运行该命令
- 使用格式
1 | ./Agenda logout |
- 可用参数列表
1 | -h, --help help for logout |
- 使用截图
queryuser
- 查询当前注册过的用户除密码以外的信息,要求当前处于登陆状态
- 使用格式
1 | ./Agenda queryuser |
- 可用参数列表
1 | -h, --help help for queryuser |
- 使用截图
deleteuser
- 删除用户,删除当前处于登陆状态的用户信息,该用户发起的所有回忆会被删除,该用户为参与者的会议会删除该参与者
- 使用格式
1 | ./Agenda deleteuser |
- 可用参数列表
1 | -h, --help help for deleteuser |
- 使用截图
createMeeting
- 创建会议,已登录的用户创建一个新的会议。要求提供会议名称、会议的参与者、会议开始/结束时间。若会议名称重复,时间不合法,没有有效参与者则创建失败。
- 使用格式
1 | ./Agenda createMeeting -t [Title] -p [\"name1, name2\"] -s [yyyy-mm-dd/hh:mm] -e [yyyy-mm-dd/hh:mm] |
- 可用参数列表
1 | -e, --EndTime string meeting's endTime |
- 使用截图
addparticipator
- 增加参与者,已登录的用户可以增加自己发起会议的参与者。要求提供会议名称和添加的参与者
- 使用格式
1 | ./Agenda addparticipator -t [meetingtitle] -p ["name1, name2"]) |
- 可用参数列表
1 | -h, --help help for addparticipator |
- 使用截图
removeparticipator
- 移除参与者,已登录的用户可以移除自己发起会议的参与者。要求提供会议名称和添加的参与者。
- 使用格式
1 | ./Agenda removeparticipator -t [title] -p [\"name1, name2\"] |
- 可用参数列表
1 | -h, --help help for removeparticipator |
- 使用截图
deleteMeeting
- 删除会议,已登录的用户可以删除自己作为发起者的某次会议,要求提供会议名称
- 使用格式
1 | ./Agenda deleteMeeting -t [title] |
- 可用参数列表
1 | -t, --Title string meeting title |
- 使用截图
clearmeeting
- 已登录的用户可以删除所有自己作为发起者的会议。
- 使用格式
1 | ./Agenda clearmeeting |
可用参数列表
1
-h, --help help for clearmeeting
使用截图
quitmeeting
- 已登陆用户可以推出自己作为参与者的会议
- 使用格式
1 | ./Agenda quitmeeting -t [title] |
- 可用参数列表
1 | -h, --help help for quitmeeting |
querymeeting
- 查询会议,已登陆用户可以查询一段时间内自己作为参与者和发起者的所有会议信息
- 使用格式
1 | ./Agenda querymeeting -s [yyyy-mm-dd/hh:mm] -e [yyyy-mm-dd/hh:mm] |
- 可用参数列表
1 | -e, --endtime string endtime of time interval |
- 使用截图