基于python和MySQL的 图书管理系统

图书管理系统

小组成员:杨平、张桢烁、轩赫

图书管理系统

该图书管理系统主要面向普通借阅用户和图书管理员,能够帮助普通用户完成书籍查询和书籍借阅等功能,让用户有更好的借阅体验。同时,该图书管理系统还可以让用户为用户提供图书馆自习室自习室空位查询,允许用户预约图书馆的自习室,选择时间段和自习室位置等功能。对于图书管理员,该图书管理系统可以让他们对图书进行更好的管理,包括图书入库等,并且图书管理员能够管理普通用户,如对普通用户进行账号管理和信息收集等,减少传统管理的工作量,更合理和方便进行资源分配。

1.图书管理系统规划

1.1 研究项目现状及研究意义

随着社会信息化程度的提高,许多图书馆已经建立了自己的图书管理系统,但系统的功能、性能和用户体验存在差异。不同图书馆采用不同的技术平台和架构,导致系统之间的互操作性差异,限制了信息共享和资源利用。随着数字化和网络化的发展,图书馆对于系统的要求越来越高,需要更智能、便捷、高效的管理系统来满足读者和管理者的需求。

因此深入研究图书管理系统的具有重要意义,对于提升服务水平、提高管理效率、推动数字化转型以及改善用户体验。同时优化的图书管理系统可以提升图书馆的服务水平,满足读者需求,提高使用率和影响力。还可以促进图书馆的发展,推动知识传播和文化建设,提升整个社会的信息化水平。

1.2 研究项目可行性分析

项目的可行性分析从技术 、安全 社会三个方面分析。

1.2. 1 技术可行性

图书管理系统操作界面简单直观,易于操作。我们已经确认了团队具备开发图书管理系统所需的技术实力和经验。本系统利用 MySQL 进行数据库的建立,使用 Python 进行界面的实现。这些软件简单易懂, 应用广泛, 有利于系统的开发。

1.2.2 安全可行性

我们将重点关注数据安全、系统安全和用户隐私保护等方面的设计和实现,以确保图书管理系统在运行过程中不受到安全威胁的影响,用户的数据和隐私得到充分的保护。通过严密的安全措施和合规性管理,我们可以提高系统的安全性,保障用户的权益,确保系统的可行性和可信度。

1.2.3 社会可行性

在社会方面,我们认为图书管理系统能够提高图书馆的服务水平,满足读者的需求,促进知识传播和文化建设。通过优化系统,提高管理效率和用户体验,我们相信能够吸引更多的用户,增加图书馆的使用率和影响力。

2.图书管理管理系统需求分析

2.1 需求描述

为了图书馆的需求以及用户的需求,图书馆管理系统的功能模块主要有:图书信息管理模块,借阅管理模块等等。

系统支持以下功能:提供用户注册和登录功能,来加强安全性与用户的隐私性 管理员可以添加、删除书籍,以及用户的信息;用户可以查看书籍信息,包括作者,书号甚至还有书架号,来更方便用户来找到该书;提供修改密码的功能给用户以及管理员等。

项目需求分析

2.2 功能描述

用户模块:注册、登录、修改密码。

图书信息管理模块:查看图书、添加图书、删除图书。

借阅管理模块:借书、还书、查看借阅信息。

权限管理模块:管理员权限与用户权限。

系统安全模块:数据加密、异常处理

2.3 数据流图

3.  图书管理系统概念结构设计

3.1 图书管理管理的实体

分析之后可以设计出能够满足用户需求的各种实体以及他们之间的关系,为下一节的逻 辑结构设计打下基础。这些实体包括各种信息,通过相互之间的作用形成数据的流动。本系 统数据库的各实体信息如下所示:

用户:用户ID,姓名,密码,电子邮件,电话,注册日期

图书:图书ID,标题,作者,图书状态

书架:书架ID,书架位置

管理员:管理员ID,管理员密码,管理员姓名,管理员类型, 

出版社:出版社ID,出版社名称,出版社地址

供应商:供应商ID,供应商名称,供应商电话

图书类型:类型ID,类型名称

3.2 E-R图

4. 图书管理系统逻辑结构设计

4.1 关系模型的设计

      1. 用户:(用户ID,姓名,密码,电子邮件,电话,注册日期)

主键:用户ID

      1. 图书信息:(图书ID,标题,作者,图书状态)

主键:图书ID

      1. 图书(索引ID,类型ID,出版社ID)

主键:索引ID

外键:类别ID,出版社ID

      1. 书架:(书架ID,书架位置)

主键:书架ID

      1. 管理员:(管理员ID,管理员密码,管理员姓名,管理员类型)

主键:管理员ID

      1. 出版社:(出版社ID,出版社名称,出版社地址)

主键:出版社ID

      1. 供应商:(供应商ID,供应商名称,供应商电话)

主键:供应商ID

      1. 图书类型:(类型ID,类型名称)

主键:类型ID

      1. 图书明细(图书ID,索引ID)

主键:图书ID

外键:图书ID,索引ID

关系表:

      1. 借阅: (借阅者ID,条码号,借阅时间,归还时间)

外键:借阅者ID,条形码

      1. 书本位置:(索引ID,书架ID,位置)

外键:索引ID,书架ID

      1. 供应:(供应商ID,索引ID,供应时间)

外键:供应商ID,索引ID

      1. 管理图书:(管理员ID图书ID,操作类型,操作日期)

主键:管理员ID,图书ID

外键:图书ID,管理员ID

      1. 管理用户: (管理员ID用户ID,操作类型,操作日期)

主键:管理员ID,用户ID

外键:图书ID,管理员ID

4.2 视图设计

1.    管理图书记录视图

2.    图书信息视图

3.    借阅记录视图

4.    管理用户视图

5.    用户信息视图

6.    管理用户记录视图

5.  图书管理系统物理结构设计

5.1 数据库表结构的设计

物理结构设计的目的是在数据库中存储和管理数据时,通过合理的组织和规划,提高数

据存储的效率和性能 ,最大程度地利用数据库系统的资源 图书管理系统数据库中各

个表结构设计如下:

用户(User)(用户ID,姓名,电子邮件,电话,密码,注册日期)

属性

数据类型

长度

非空

说明

用户ID

VARCAHR

50

主键

姓名

VARCHAR

50

电子邮件

VARCHAR

100

电话

VARCHAR

20

密码

VARCHAR

30

注册日期

DATETIME

图书(Book)

属性

数据类型

长度

非空

说明

索引ID

VARCHAR

50

主键

类型ID

Int

外键

引用自图书类型 (BookCategory)表

出版社ID

Int

外键

引用自出版社 (Publisher)表

图书信息 (Book_information)

属性

数据类型

长度

非空

说明

图书ID

VARCAHR

50

主键

标题

VARCHAR

100

作者

VARCHAR

100

图书状态

VARCHAR

20

取值为“已借出”“未借出”“已预约”

书架 (Shelf)

属性

数据类型

长度

非空

说明

书架ID

VARCHAR

50

主键

如“A01”“B02”

书架位置

VARCHAR

50

如“一楼”“二楼”

出版社 (Publisher)

属性

数据类型

长度

非空

说明

出版社ID

Int

主键

自增

出版社名称

VARCHAR

100

出版社地址

VARCHAR

200

供应商 (Supplier)

属性

数据类型

长度

非空

说明

供应商ID

Int

主键

自增

供应商名称

VARCHAR

100

供应商电话

VARCHAR

20

管理员 (Librarian)

属性

数据类型

长度

非空

说明

管理员ID

VARCHAR

30

主键

管理员姓名

VARCHAR

100

管理员类型

VARCHAR

50

管理员密码

VARCHAR

30

图书类别(BookCategory)

属性

数据类型

长度

非空

说明

类型ID

Int

主键

自增

类型名称

VARCHAR

100

关系表

借阅 (Borrow)

属性

数据类型

长度

非空

说明

借阅者ID

VARCAHR

30

外键

引用自用户(User)表

条形码

VARCAHR

外键

引用自书本信息 (Book_information)

借阅日期

DATETIME

归还日期

DATETIME

书本位置(Booklist)

属性

数据类型

长度

非空

说明

索引ID

VARCHAR

50

外键

引用自图书(Book)表

书架ID

VARCHAR

50

外键

引用自书架 (Shelf)表

存放位置

VARCHAR

50

供应 (Supply)

属性

数据类型

长度

非空

说明

供应商ID

Int

外键

引用自供应商 (Supplier)表

索引ID

VARCHAR

50

外键

引用自图书(Book)表

供应日期

DATETIME

管理图书 (ManageBook)

属性

数据类型

长度

非空

说明

管理员ID

VARCHAR

30

外键

引用自管理员 (Librarian)表

条形码

VARCHAR

50

外键

引用自图书(Book)表

操作类型

VARCHAR

50

操作日期

DATETIME

管理用户 (ManageUser)

属性

数据类型

长度

非空

说明

管理员ID

VARCHAR

30

外键

引用自管理员 (Librarian)表

用户ID

VARCHAR

50

外键

引用自用户(User)表

操作类型

VARCHAR

50

操作时间

DATETIME

5.2 数据库表之间的关系图

以上数据库表与表之间的关系如图所示 (下图仅仅为示例图)

5.3 索引的建立

物理结构设计的任务之一是根据数据库管理系统支持的存取方式确定选取,常见的存取方式为索引和聚簇方法。 

  1. 引设计

索引是一种用于快速定位和检索信息的数据结构,通常用于加速数据库、文档、书籍等信息的查找和访问。索引是建立在数据之上的结构,它将数据中的关键信息(如字段值、关键词等)映射到特定的位置,以便于快速检索。

故设计以下索引:

用户索引

图书索引

借阅记录索引

供应记录索引

图书索引号创建索引

5.4 评价物理结构

为一个给定的逻辑数据模型选取一个最合适应用环境的物理结构的过程, 就是数据库   的物理设计 。显然, 数据库的物理设计是完全倚赖于给定的硬件环境和数据库产品的    据库物理设计通常分为两步:

 1)  确定数据库的物理结构。

2)  对物理结构进行评价, 评价的重点是时间和空间效率。

我们评价物理结构的数据库方法依赖于所使用的 DBMS 它主要是从定量估算, 然后  进行各种方案的存储空间,存取时间,维护代价进行入手,对估算结果进行权衡, 比较,选 择出一个较优的合理物理结构,如果这个结构不符合用户需求,那么就需要修改设计,那么 数据库了实施语音型的维护也是需要进行 。在物理结构设计过程中, 我们对时间效率    间效率、维护代价和各种用户要求进行权衡,产生多种方案,而我们数据库的设计人员对方 案进行细致的评价, 从中选择一个较优的方案作为数据库的物理结构 。有以下特点:

1.  采用关系模型

2.  使用 MySQL8.0 Python 作为开发工具

3.  选择 Pycharm 进行可视化窗口等相关功能实现

4.  功能全面 、强大, 可以实现管理和查询综艺的全过程

5 代码标准, 易于软件维护和功能扩展

6.图书管理系统数据库系统实现

6.1 数据库的建立

CREATE DATABASE IF NOT EXISTS LIBRARYSYSTEM;
USE LIBRARYSYSTEM;

6.2表的创建

-- 用户表
CREATE TABLE 用户 (
    用户ID VARCHAR(50) PRIMARY KEY,
    姓名 VARCHAR(50) NOT NULL,
    电子邮件 VARCHAR(100) NOT NULL,
    电话 VARCHAR(20) NOT NULL,
    密码 VARCHAR(30) NOT NULL,
    注册日期 DATETIME NOT NULL
);

-- 书本信息表
CREATE TABLE 图书信息 (
    图书ID VARCHAR(50) PRIMARY KEY ,
    标题 VARCHAR(100) NOT NULL,
    作者 VARCHAR(100) NOT NULL,
    图书状态 VARCHAR(20) NOT NULL
);
-- 图书类型表
CREATE TABLE 图书类别 (
    类别ID INT PRIMARY KEY AUTO_INCREMENT,
    类别名称 VARCHAR(100) NOT NULL
);
-- 出版社表
CREATE TABLE 出版社 (
    出版社ID INT PRIMARY KEY AUTO_INCREMENT,
    出版社名称 VARCHAR(100) NOT NULL,
    出版社地址 VARCHAR(200) NOT NULL
);
-- 图书表
CREATE TABLE 图书 (
    索引ID VARCHAR(50)primary key,
    类别ID INT,
    出版社ID INT,
    FOREIGN KEY (类别ID) REFERENCES 图书类别(类别ID),
    FOREIGN KEY (出版社ID) REFERENCES 出版社(出版社ID)
);

-- 书架表
CREATE TABLE 书架 (
    书架ID VARCHAR(50) PRIMARY KEY,
    书架位置 VARCHAR(50) NOT NULL
);

CREATE TABLE 图书明细 (
    图书ID   VARCHAR(50) PRIMARY KEY,
    索引ID VARCHAR(50),
    foreign key(图书ID) REFERENCES 图书信息(图书ID),
    FOREIGN KEY (索引ID) REFERENCES 图书(索引ID)
);

-- 供应商表
CREATE TABLE 供应商 (
    供应商ID INT PRIMARY KEY AUTO_INCREMENT,
    供应商名称 VARCHAR(100) NOT NULL,
    供应商电话 VARCHAR(20) NOT NULL
);

-- 管理员表
CREATE TABLE 管理员 (
    管理员ID VARCHAR(30) PRIMARY KEY,
    管理员姓名 VARCHAR(100) NOT NULL,
    管理员类型 VARCHAR(50) NOT NULL,
    管理员密码 VARCHAR(30) NOT NULL
);


-- 借阅表
CREATE TABLE 借阅 (
    借阅者ID VARCHAR(30),
    条形码 VARCHAR(50),
    借阅日期 DATETIME NOT NULL,
    归还日期 DATETIME NOT NULL,
    FOREIGN KEY (借阅者ID) REFERENCES 用户(用户ID),
    FOREIGN KEY (条形码) REFERENCES 图书信息(图书ID)
);

-- 书本位置表
CREATE TABLE 书本位置 (
    索引ID VARCHAR(50),
    书架ID VARCHAR(50),
    位置 VARCHAR(50),
    FOREIGN KEY (索引ID) REFERENCES 图书(索引ID),
    FOREIGN KEY (书架ID) REFERENCES 书架(书架ID)
);

-- 供应表
CREATE TABLE 供应 (
    供应商ID INT,
    索引ID VARCHAR(50),
    供应日期 DATETIME NOT NULL,
    供应数量 INT,
    FOREIGN KEY (供应商ID) REFERENCES 供应商(供应商ID),
    FOREIGN KEY (索引ID) REFERENCES 图书(索引ID)
);

-- 管理图书表
CREATE TABLE 管理图书 (
    管理员ID VARCHAR(30),
    条形码 VARCHAR(50),
    操作类型 VARCHAR(50) NOT NULL,
    操作日期 DATETIME NOT NULL,
    FOREIGN KEY (管理员ID) REFERENCES 管理员(管理员ID),
    FOREIGN KEY (条形码) REFERENCES 图书信息(图书ID)
);

-- 管理用户表
CREATE TABLE 管理用户 (
    管理员ID VARCHAR(30),
    用户ID VARCHAR(50),
    操作类型 VARCHAR(50) NOT NULL,
    操作日期 DATETIME NOT NULL,
    FOREIGN KEY (管理员ID) REFERENCES 管理员(管理员ID),
    FOREIGN KEY (用户ID) REFERENCES 用户(用户ID)
);

6.3索引创建

USE LIBRARYSYSTEM;
-- 用户索引
CREATE INDEX 用户索引 ON 用户(用户ID, 电子邮件);

-- 图书索引
CREATE INDEX 图书索引 ON 图书信息(图书ID, 标题);

-- 借阅记录索引
CREATE INDEX 借阅记录索引 ON 借阅(借阅者ID, 条形码);

-- 供应记录索引
CREATE INDEX 供应记录索引 ON 供应(供应商ID, 索引ID);

6.4视图创建

-- 用户信息视图
CREATE VIEW 用户信息视图 AS
SELECT 用户ID, 姓名, 电子邮件, 电话, 注册日期 FROM 用户
WITH CHECK OPTION; 

-- 图书信息视图
CREATE VIEW 图书信息视图 AS
SELECT
    图书信息.图书ID,
    图书明细.索引ID,
    图书信息.标题,
    图书信息.作者,
    图书信息.图书状态,
    书架.书架ID,
    书架.书架位置,
    书本位置.位置,
		图书信息.入库时间
FROM 图书信息,图书明细,书架,书本位置
WHERE 图书信息.图书ID = 图书明细.图书ID AND 图书明细.索引ID = 书本位置.索引ID AND 书架.书架ID = 书本位置.书架ID
WITH CHECK OPTION; 

-- 借阅记录视图
CREATE VIEW 借阅记录视图 AS
SELECT 借阅.借阅者ID, 图书信息.图书ID, 用户.姓名 AS 借阅者姓名, 图书信息.标题 AS 图书标题, 借阅.借阅日期, 借阅.归还日期, 借阅.状态
FROM 借阅
JOIN 用户 ON 借阅.借阅者ID = 用户.用户ID
JOIN 图书信息 ON 借阅.条形码 = 图书信息.图书ID
WITH CHECK OPTION; 

-- 管理图书记录视图
CREATE VIEW 管理图书记录视图 AS
SELECT 管理图书.管理员ID, 管理图书.条形码, 管理图书.操作类型, 管理图书.操作日期, 管理员.管理员姓名
FROM 管理图书
JOIN 管理员 ON 管理图书.管理员ID = 管理员.管理员ID
WITH CHECK OPTION; 

-- 管理用户记录视图
CREATE VIEW 管理用户记录视图 AS
SELECT 管理用户.管理员ID, 管理用户.用户ID, 管理用户.操作类型, 管理用户.操作日期, 管理员.管理员姓名 AS 管理员姓名
FROM 管理用户
JOIN 管理员 ON 管理用户.管理员ID = 管理员.管理员ID
WITH CHECK OPTION; 

-- 未借出书本信息视图
CREATE VIEW 书本来源视图 AS 
SELECT 
    书本位置.索引ID, 
    图书明细.图书ID,
    图书信息.标题 AS 图书名称,
    供应.供应商ID,
    供应.供应数量 AS 供货数量,
    供应.供应日期,
    供应商表.供应商名称 
FROM 
    书本位置
JOIN 
    供应 ON 书本位置.索引ID = 供应.索引ID
JOIN 
    供应商 AS 供应商表 ON 供应.供应商ID = 供应商表.供应商ID
JOIN 
    图书明细 ON 书本位置.索引ID = 图书明细.索引ID
JOIN 
    书架 ON 书本位置.书架ID = 书架.书架ID
JOIN 
    图书信息 ON 图书明细.图书ID = 图书信息.图书ID
WITH CHECK OPTION; 

6.5测试数据装载

USE LIBRARYSYSTEM;
INSERT INTO 用户 (用户ID, 姓名, 电子邮件, 电话, 密码, 注册日期) 
VALUES 
('2301', '张三', 'zhangsan@example.com', '14092356578', 'password123', '2023-02-04'),
('2302', '李四', 'lisi@example.com', '15712345678', 'securepassword', '2023-02-05'),
('2303', '王五', 'wangwu@example.com', '18687654321', 'pass123', '2023-02-06'),
('2304', '赵六', 'zhaoliu@example.com', '13976543210', 'password456', '2023-02-07'),
('2305', '小明', 'xiaoming@example.com', '15898765432', 'password789', '2023-02-08'),
('2306', '小红', 'xiaohong@example.com', '15087654321', 'passwordabc', '2023-02-09'),
('2307', '小华', 'xiaohua@example.com', '13287654321', 'pass789', '2023-02-10'),
('2308', '小李', 'xiaolie@example.com', '13376543210', 'passabc', '2023-02-11'),
('2309', '小丽', 'xiaoli@example.com', '13587654321', 'securepassword123', '2023-02-12'),
('2310', '小刚', 'xiaogang@example.com', '13898765432', 'securepassword456', '2023-02-13'),
('2311', '小美', 'xiaomei@example.com', '13787654321', 'securepassword789', '2023-02-14'),
('2312', '小华', 'xiaohuaa@example.com', '13987654321', 'pass123abc', '2023-02-15'),
('2313', '小丽', 'xiaoliq@example.com', '13098765432', 'pass456abc', '2023-02-16'),
('2314', '小明', 'xiaominga@example.com', '13287654321', 'pass789abc', '2023-02-17');
INSERT INTO 图书类别 (类别ID, 类别名称) 
VALUES 
(1, '哲学类'),
(2, '社会科学'),
(3, '政治法律'),
(4, '军事科学'),
(5, '财经管理'),
(6, '历史地理'),
(7, '文化教育'),
(8, '小学文教'),
(9, '初中文教'),
(10, '高中文教'),
(11, '语言文字'),
(12, '中国文学'),
(13, '外国文学'),
(14, '音乐'),
(15, '美术雕塑'),
(16, '摄影影视'),
(17, '舞蹈戏剧'),
(18, '书法篆刻'),
(19, '自然科学');
INSERT INTO 图书信息 (图书ID, 标题, 作者,图书状态,入库时间)
VALUES 
('1', '论语', '孔子','未借出',NOW()), -- 哲学类
('2', '社会契约论', '卢梭','未借出',NOW()), -- 社会科学
('3', '联邦党人文集', '亚历山大·汉密尔顿','未借出',NOW()), -- 政治法律
('4', '孙子兵法', '孙子','未借出',NOW()), -- 军事科学
('5', '货币战争', '詹姆斯·里克斯','未借出',NOW()), -- 财经管理
('6', '人类简史', '尤瓦尔·赫拉利','未借出',NOW()), -- 历史地理
('7', '教育的艺术', '艾伯特·爱因斯坦','未借出',NOW()), -- 文化教育
('8', '小学语文教材', '无名氏','未借出',NOW()), -- 小学文教
('9', '初中数学教材', '无名氏','未借出',NOW()), -- 初中文教
('10', '高中物理教材', '无名氏','未借出',NOW()), -- 高中文教
('11', '语言文字学', '诺姆·乔姆斯基','未借出',NOW()), -- 语言文字
('12', '红楼梦', '曹雪芹','未借出',NOW()), -- 中国文学
('13', '傲慢与偏见', '简·奥斯汀','未借出',NOW()), -- 外国文学
('14', '音乐心理学', '卡尔·古斯塔夫·于斯滕贝格','未借出',NOW()), -- 音乐
('15', '雕塑的原理', '奥古斯特·罗丹','未借出',NOW()), -- 美术雕塑
('16', '电影艺术的诞生', '利奥·霍夫曼','未借出',NOW()), -- 摄影影视
('17', '戏剧的起源', '亚里士多德','未借出',NOW()), -- 舞蹈戏剧
('18', '中国书法史', '黄庭坚','未借出',NOW()), -- 书法篆刻
('19', '自然之书', '普林尼','未借出',NOW()), -- 自然科学
('20', '论语', '孔子','未借出',NOW()), -- 哲学类
('21', '社会契约论', '卢梭','未借出',NOW()), -- 社会科学
('22', '联邦党人文集', '亚历山大·汉密尔顿','未借出',NOW()), -- 政治法律
('23', '孙子兵法', '孙子','未借出',NOW()), -- 军事科学
('24', '货币战争', '詹姆斯·里克斯','未借出',NOW()), -- 财经管理
('25','人类简史', '尤瓦尔·赫拉利','未借出',NOW()), -- 历史地理
('26', '教育的艺术', '艾伯特·爱因斯坦','未借出',NOW()), -- 文化教育
('27', '初中数学教材', '无名氏','未借出',NOW()), -- 初中文教
('28', '高中物理教材', '无名氏','未借出',NOW()), -- 高中文教
('29', '语言文字学', '诺姆·乔姆斯基','未借出',NOW()), -- 语言文字
('30', '红楼梦', '曹雪芹','未借出',NOW()), -- 中国文学
('31', '傲慢与偏见', '简·奥斯汀','未借出',NOW()), -- 外国文学
('32', '音乐心理学', '卡尔·古斯塔夫·于斯滕贝格','未借出',NOW()), -- 音乐
('33', '雕塑的原理', '奥古斯特·罗丹','未借出',NOW()), -- 美术雕塑
('34', '电影艺术的诞生', '利奥·霍夫曼','未借出',NOW()), -- 摄影影视
('35', '戏剧的起源', '亚里士多德','未借出',NOW()), -- 舞蹈戏剧
('36', '中国书法史', '黄庭坚','未借出',NOW()), -- 书法篆刻
('37', '自然之书', '普林尼','未借出',NOW()), -- 自然科学
('38', '自然之书', '普林尼','未借出',NOW()), -- 自然科学
('39', '小学语文教材', '无名氏','未借出',NOW()); -- 小学文教
INSERT INTO 出版社 (出版社ID, 出版社名称, 出版社地址)
VALUES 
(1, '人民文学出版社', '北京市'),
(2, '清华大学出版社', '北京市'),
(3, '商务印书馆', '上海市'),
(4, '中华书局', '北京市'),
(5, '上海古籍出版社', '上海市'),
(6, '浙江人民出版社', '杭州市'),
(7, '江苏人民出版社', '南京市'),
(8, '广西师范大学出版社', '广西南宁市'),
(9, '中国社会科学出版社', '北京市'),
(10, '北京大学出版社', '北京市');
-- 插入图书数据
INSERT INTO 图书 (索引ID, 类别ID, 出版社ID)
VALUES 
('101', 1, 1), 
('102', 2, 2), 
('103',  3, 3), 
('104', 4, 1), 
('105', 5, 4), 
('106', 6, 5), 
('107', 7, 10), 
('108', 8, 6), 
('109', 9, 7), 
('110', 10, 8), 
('111', 11, 9),
('112', 12, 1), 
('113', 13, 2), 
('114', 14, 3), 
('115', 15, 4),
('116', 16, 5), 
('117', 17, 6), 
('118', 18, 7), 
('119', 19, 8); 
INSERT INTO 书架 (书架ID, 书架位置)
VALUES 
('A1', '一楼'),
('B2', '二楼'),
('C3', '三楼'),
('D4', '一楼'),
('E5', '二楼'),
('F6', '三楼'),
('G7', '一楼'),
('H8', '二楼'),
('I9', '三楼'),
('J10', '一楼');
INSERT INTO 供应商 (供应商ID, 供应商名称, 供应商电话)
VALUES 
(1, '新华书店', '123-456789'),
(2, '当当网', '987-654321'),
(3, '京东图书', '111-222333'),
(4, '淘宝书店', '444-555666'),
(5, '中国图书网', '777-888999'),
(6, '博库网', '666-555444'),
(7, '亚马逊', '333-222111');
-- 插入管理员数据
INSERT INTO 管理员 (管理员ID, 管理员姓名, 管理员类型, 管理员密码)
VALUES 
('admin1', '管理员1', '高级管理员', 'adminpass123'),
('admin2', '管理员2', '普通管理员', 'adminpass456');
-- 插入书本位置数据
INSERT INTO 书本位置 (索引ID, 书架ID, 位置)
VALUES 
('101', 'A1', '第一排'),
('102', 'B2', '第二排'),
('103', 'C3', '第二排'),
('104', 'D4', '第三排'),
('105', 'E5', '第二排'),
('106', 'F6', '第一排'),
('107', 'G7', '第二排'),
('108', 'H8', '第三排'),
('109', 'I9', '第三排'),
('110', 'J10', '第三排'),
('111', 'A1', '第三排'),
('112', 'B2', '第二排'),
('113', 'C3', '第一排'),
('114', 'D4', '第一排'),
('115', 'E5', '第一排'),
('116', 'F6', '第三排'),
('117', 'G7', '第二排'),
('118', 'H8', '第一排'),
('119', 'I9', '第一排');

INSERT INTO 供应 (供应商ID, 索引ID, 供应日期,供应数量)
VALUES
(1,'101','2023-04-06',2),
(2,'102','2023-04-07',2),
(3,'103','2023-04-05',2),
(4,'104','2023-03-06',2),
(1,'105','2023-04-06',2),
(2,'106','2023-02-06',2),
(3,'107','2023-04-06',2),
(4,'108','2023-03-06',2),
(1,'109','2023-04-06',2),
(2,'110','2023-05-06',2),
(3,'111','2023-02-06',2),
(4,'112','2023-03-06',2),
(1,'113','2023-04-05',2),
(2,'114','2023-04-25',2),
(2,'115','2023-04-15',2),
(3,'116','2023-03-05',2),
(4,'117','2023-03-25',2),
(3,'118','2023-04-05',2),
(4,'119','2023-04-05',3);
INSERT INTO 图书明细 (图书ID,索引ID )
VALUES
(1,'101'),
(20,'101'),
(2,'102'),
(21,'102'),
(3,'103'),
(22,'103'),
(4,'104'),
(23,'104'),
(5,'105'),
(24,'105'),
(6,'106'),
(25,'106'),
(7,'107'),
(26,'107'),
(8,'108'),
(39,'108'),
(9,'109'),
(27,'109'),
(10,'110'),
(28,'110'),
(11,'111'),
(29,'111'),
(12,'112'),
(30,'112'),
(13,'113'),
(31,'113'),
(14,'114'),
(32,'114'),
(15,'115'),
(33,'115'),
(16,'116'),
(34,'116'),
(17,'117'),
(35,'117'),
(18,'118'),
(36,'118'),
(19,'119'),
(37,'119'),
(38,'119');

6.6 功能实现

6.6.1 连接数据库

conn = mysql.connector.connect(
    host="127.0.0.1",#  连接主机,  默认 127.0.0. 1 
    user="root",#  用户名
    password="",#  密码
    database="librarysystem"#使用数据库库名
)
cursor = conn.cursor()

6.6.2    登录小窗口和按钮的代码

root = tk.Tk()
root.title("图书管理系统")
root.config(bg="lightblue")

# 创建用户ID标签
userID_label = tk.Label(root, text="用户ID:")
userID_label.grid(row=0, column=0, padx=10, pady=5)
userID_entry = tk.Entry(root, font=("Arial", 12), bg="lightgray")
userID_entry.grid(row=0, column=1, padx=10, pady=5)

# 密码标签和文本框
password_label = tk.Label(root, text="密码:")
password_label.grid(row=1, column=0, padx=10, pady=5)
password_entry = tk.Entry(root, show="*", font=("Arial", 12), bg="lightgray")
password_entry.grid(row=1, column=1, padx=10, pady=5)

# 用户类型标签和下拉框
user_type_label = tk.Label(root, text="登录类型:")
user_type_label.grid(row=2, column=0, padx=10, pady=5)
user_type_var = tk.StringVar()
user_type_var.set("用户")
user_type_option = tk.OptionMenu(root, user_type_var, "用户", "管理员")
user_type_option.grid(row=2, column=1, padx=10, pady=5)

# 登录按钮
login_button = tk.Button(root, text="登录", command=login)
login_button.grid(row=3, column=0, columnspan=2, padx=10, pady=10, sticky="WE")

# 注册按钮
register_button = tk.Button(root, text="注册", command=register)
register_button.grid(row=4, column=0, columnspan=2, padx=10, pady=10, sticky="WE")

root.mainloop()

7.综艺节目管理系统运行和维护

7.1 主要功能实现

本系统运用 MySQL  Python 语言共同设计而成 ,该系统效率较高 ,为用户和管理员 提供较为全面的功能 MySQL  Python 实现了以下主要功能。

1. 用户/管理员登录注册界面

2. 注册界面

3. 用户操作界面

4. 管理员操作界面

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值