# 基于 PyQt5 的网上书店管理系统
[toc]
## 界面设计
### 登陆界面
![](http://www.writebug.com/myres/static/uploads/2021/10/22/2fc20e656a232fb78cb9978827878b98.writebug)
由于是管理系统所以不设置注册
功能:
- 当用户名与密码不符时,保留用户名,清除密码栏
### 主页
![](http://www.writebug.com/myres/static/uploads/2021/10/22/3586159291dd1bbcd166b183ea6dc8e7.writebug)
功能:
- 提供管理图书信息的接口
- 提供查看会员信息的接口(由于是管理端,所以对会员信息的修改,在客户端,管理端不提供接口)
- 提供查看购买记录的接口
### 图书信息管理页
![](http://www.writebug.com/myres/static/uploads/2021/10/22/19c5f78f03025c7d98474401668ae9ce.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/a8e459c64e600535bed0f215d029bfc0.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/e2008b4c40d911d1c79d6c169effe012.writebug)
功能:
- 实现分页操作
- 提供进货的接口
- 提供出货的接口
- 提供修改图书信息的接口
- 查询图书信息(当查询失败时,发出提示信息,展现所有图书)
- 返回主页
- 内容居中
- 相邻行颜色深浅不同
- 不可编辑
### 进货页面
![](http://www.writebug.com/myres/static/uploads/2021/10/22/deb47b5936c8836551fb8755d988464e.writebug)
功能:
- 购入图书
- 智能补全,当图书名称、作者、出版社在数据库中存在(即书店中存在这种书)时智能补全图书种类与销售价格,当图书名称、作者、出版社在数据库中不存在时(即书店从未进过这本书)补全图书种类、销售价格与购入数目由用户输入
### 出货页面
![](http://www.writebug.com/myres/static/uploads/2021/10/22/a00c4be9f8da742c1867ab9199f2a44f.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/d2aaabf3a76c1964a0985701d8e49427.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/963ad54aa361d71c6efd04e9e7398861.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/e36ce06e97bcf8040d3ca408a574c042.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/fa4647c480877afb19a3e7ff69f27414.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/06b8765de4a3816ff2fdadc30152ea7b.writebug)
![](http://www.writebug.com/myres/static/uploads/2021/10/22/31ea5c4c170adcb95df6627a6fba7d52.writebug)
功能
- 智能检查:检查书店存在此图书以及电话号码是否合法
- 采用下拉框智能补全,通过出售书名来补全,作者信息栏,通过出售书名来补全出版社,以确保书名,作者,出版社一一对应;通过买方手机号来补全默认配送地址,配送地址可随改
- 智能提示:提示书名与电话号码填写问题
- 第二遍确认
### 修改图书页
![](http://www.writebug.com/myres/static/uploads/2021/10/22/dba64836c53d3e1a9cb50529c3e6f152.writebug)
功能:
- 修改图书信息(按下修改,使其一行可以修改,其余行不可修改,且不同行按钮处于冻结状态,按下完成按钮修改内容同步至数据库)
- 翻页
- 返回上一级
- 查询
### 查看会员信息
![](http://www.writebug.com/myres/static/uploads/2021/10/22/1950d54f4e77283d7bdab3071af7e5e8.writebug)
功能:
- 不可编辑
- 分页
- 查询
- 返回主页
### 查看购买记录
![](http://www.writebug.com/myres/static/uploads/2021/10/22/d9580b383fea5441674af32983a50641.writebug)
功能
- 查询
- 分页
- 按时间排序
- 不可编辑
## 文件结构
```
.
├── Add_bookUI.py
├── Book_informationUI.py
├── Buy_OrderUI.py
├── Change_bookUI.py
├── Controller.py
├── LoginUI.py
├── MainUI.py
├── Member_informationUI.py
└── Sell_bookUI.py
0 directories, 9 files
```
使用模块
- PyQt5
- pymmsql
- sys
## 数据库设计
SQL Server2017
```sql
use Course_Design
create table Book_Information
(
Book_no char(8) primary key, --书籍编号
Book_name nchar(10) not null, --书籍名称
Book_author nchar(10) not null, --书籍作者
Book_Publishing_house nchar(20) not null, --出版社
Book_kind nchar(10) not null, --书籍种类
)
create table Book_storage
(
Book_no char(8) primary key, --书籍编号
Book_price money not null, --价格
Book_stock int not null, --库存
constraint FK_Book_no foreign key (Book_no) references Book_Information (Book_no),
)
create table Member_Information
(
Member_no char(8) primary key, --会员编号
Member_name nchar(8) not null, --会员姓名
Member_sex nchar(2) not null default N'男' check (Member_sex in (N'男', N'女')), --会员性别
Member_address nchar(20) not null, --会员住址
Member_phone char(11) not null, --会员电话
)
create table Buy_Book
(
Number tinyint not null primary key,
Member_no char(8) not null,
Book_no char(8) not null,
Buy_num tinyint not null,
Delivery nchar(2) not null default N'否' check (Delivery in (N'是', N'否')), --是否配送
Buytime smalldatetime not null, --购买时间
)
```