python3.8、MySQL8.0、pycharm2020.1、datagrip2020.1、pymysql、pyqt5。
书店管理系统需要满足以下需求:对于一般店员来说:①书店店员通过系统管理书籍的购入和卖出,以及查看书籍的存货量②店员可以通过该系统对需要借书和还书的人员进行借书还书操作③新增和删除新的借阅人员信息。对于店长(也就是管理员),除了以上的三种需求之外,还有①增加和删除雇员,②增加和删除系统操作人员账号,③修改雇员的信息。
根据2.1中的需求信息,我们可以设计出以下的基本功能:1.借阅人员信息的输入、查询,包括借阅证ID、姓名、年龄、性别、手机号2.书籍信息的输入和删除包括ISBN、书籍名称、作者、定价3.馆藏书籍信息包括ISBN、收藏量4.书籍的卖出和购入包括书籍的ISBN、卖出量、购入量5.雇员信息的增删查改,包括雇员姓名、性别、年龄、工资
图2.3系统流程图
1)对于book表属性有(ISBN,BookName,Author,Price),其中ISBN为主键,无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
(2)对于employee表,属性有(employeeid,employname,employsex,employage,employtel,salary),其中employeeid为主键,无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
(3)对于reader表,属性有(readerid,readername,sex,age,tel)其中readerid为主键,无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
(4)对于collection表,属性有(isbn,totalnum),其中ISBN不仅为主键也为外键,参考book表中的ISBN。无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
(5)对于borrow表,属性有(borrowID,date,ISBN,readerID),borrowid为主键,决定了哪个人借了那本书,ISBN和readerid参考了collectionofbook中的isbn以及reader中的readerid,无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
(6)对于return表,属性有(returnID,ISBN,readerID,date),returnid为主键,决定了哪个人借了那本书,ISBN和readerid参考了collectionofbook中的isbn,以及reader中的readerid,无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
(7)对于sell表和purchase表,属性有(sellid,ISBN,alreadysold,price)和(purchaseid,ISBN,num,price),无非主属性对候选键的传递依赖且候选键只有一个,符合BCNF
更新于2020/12/14,修改了一些bug,对程序运行可能出现的一些错误进行了说明和修改,具体内容可见GitHub上readme