# 业务要求 ## 基本要求 设计并实现一个书店管理系统。该书店管理系统应当面向三类人员:顾客、销售人员和店长。最终交接物为需求分析文档、总体设计文档(13 周周二前)和源代码(16 周周一前)。关于程序有以下要求: - 编程语言限制:软件主体(除 bonus 部分外)完全使用 C++ 编写; - 系统数据需要存储在外存中; - 系统首次运行时应当创建店主账户,其具有最高权限; - 管理系统应当使用命令行进行交互; - 系统支持嵌套登录,即允许多个帐户同时处于登录状态;允许同一帐户同时多次登录。输入的指令视为最后登录的帐户操作; ## 游客 游客只能注册/登录用户。 ## 顾客 顾客可以查询和购买图书。 - 每种图书包含的信息有:ISBN 号(20 个数字,每本正版书都有惟一的标识)、书名(60 个字符、作者(60 个字符)、关键字(可以有多个,总共不超过 60 个字符)、库存量(整型)、单价(非负实数); - 查询图书时可以根据 ISBN 号、作者名字、关键字、书名中的任意组合进行查询; - 购买图书时,我们通过给定的 ISBN 号和购买数量来进行操作; ## 销售人员 销售人员可以执行所有顾客执行的操作,同时也可以进行进货、图书信息录入、图书信息修改、用户创建。 - 进货时需指定 ISBN 号、数量、进货价格; - 第一次录入图书时,应当输入其完整信息; ## 店长 店长可以执行所有销售人员和顾客可以执行的功能,同时也可以查询某段时间的采购信息(即按照采购顺序输出采购图书的 ISBN 号、数量、单价等)、销售情况(即按照销售顺序输出售出图书的 ISBN 号、数量、单价等)、盈利信息(即输出该段时间的收入,支出以及利润)。除此之外,店长也可以查看各员工的工作情况报告(即按操作顺序输出每次操作类型及其对象,如创建用户操作以及对应的用户信息)和系统的整体工作日志。 ## 性能需求 考虑到应用场景下帐户和图书数量较大,故**禁止将主体数据存储于内存**,应实时读写文件数据。运行过程中程序创建的文件数量不得超过 20 个。