图书管理系统
1.概述
*
项目背景
目前社会上信息管理系统发展飞速,越来越多的企业事业单位引入信息管理软件来管理自己日益增长的各种信息。各种网店也采用了不同的管理系统来管理商品信息,取得了很大的成效。网上书店管理系统也在功能上不但完善和加强,为了使书店管理更加规范化,程序化,科学化,我们研发了网上书店管理系统。
在电子商务网站中,网上书店是目前应用最广,最成功的典范之一。通过它用户可以在网络上通过Internet,突破时间和空间的限制而实现网上购书。网上书店的崛起对传统的图书流通体系产生了强烈的冲击,有效地缩短了图书流通大发行环节,将广大读者、图书、出版者、发行者紧密结合在一起,大大提高了图书流通率。
* 1系统说明
本系统的功能是为管理者提供方便的管理、为顾客提供快捷的购买。系统的主要子模块有图书管理、用户管理等,可实现日常图书进货、发货业务。顾客可以进入图书查询界面通过图书类别、图书名称、图书编号等查询图书。管理者可以通过登录管理界面实现对图书的添加、修改、删除操作以及发货和查看顾客信息,管理员可以维护顾客的注册信息。用到的软件是SQL
Server。
2.需求分析
2.1 系统需求
书店管理系统要满足一下需求:第一,书店人员通过计算机管理各类图书,进行图书分类编号,调整图书结构,增加图书库存,适应读者需求。第二,管理员对读者的需求情况能做好全面的掌握,及时得到历史销售记录。第三,对图书的销售管理。
2.2 数据需求
基于系统需求分析,该系统需要实现以下基本功能:
1、顾客信息的输入、查询、修改,包括注册名,真实姓名,家庭住址,联系方式,订单号。
2、书籍类别制定、信息输入、查询、修改,包括类别编号,类别名称。
3、书籍信息的输入、查询、修改,包括数据的编号、名称、类别、作者姓名、出版社名称、出版日期。
4、订单信息的查询、修改,包括订单号,订购人,订购日期,订购书籍的编号、书籍数量、发货日期。
5、库存信息的输入、查询、修改,包括书籍的编号、库存量、价格。
6、管理员信息的输入、查询、修改,包括管理员编号、具体身份。
2.3 数据字典
2.3.1 书籍信息表
含义说明:书店关系体统的核心信息,提供了书籍的具体信息。
组成:ISBN号,书籍名称,书籍作者,书籍出版年份,书籍价格
数据项
含义说明
数据类型
数据长度
取值范围
ISBN号
区别每本书的唯一标识
varchar
80
任意合法字符且在长度范围内
书籍名称
书籍名称
Varchar
80
合法字符
书籍作者
书籍作者
varchar
10
合法字符
书籍出版年份
书籍出版日期
Datetime
日期型的长度
符合日期的规则
成交量
书籍的成交量
BIGINT
大整数
图书的成交量
出版社
书籍的出版社
Char
30
合法字符
图书定价
书籍价格
Int
长整数
图书的价格
折扣
图书售卖时的折扣
Int
长整数
图书的折扣
2.3.2 库存信息表
含义说明:书店关系系统的核心信息,提供了库存的信息。
组成:ISBN号,库存量,价格,折扣,库存下限(如果低于下限则提示进货)
数据项
含义说明
数据类型
数据长度
取值范围
ISBN号
区别每本书的唯一标识
varchar
80
合法字符
库存量
书籍的存货量
int
10
1-9999999999
库存下限
书籍在仓库中的最少数量
int
10
1-9999999999
2.3.3 订单信息表
含义说明:书店关系系统的核心信息,提供了订单的具体信息。
组成:订单号,订购人,订购日期,订单书籍,书籍数量,发货日期。
数据项
含义说明
数据类型
数据长度
取值范围
订单号
区别每个不同订单的唯一标识
Varchar
20
合法的字符
订购人
订购人的注册网名
Varchar
10
合法的字符
订购日期
用户生成订单的时间
Datetime
日期型的长度
满足特定的日期格式
订单书籍
订单书籍的ISBN号
Varchar
80
合法的字符
书籍数量
每份订单书籍的数量
Int
1
1-9999999999
发货日期
管理员确定发货时间
Datetime
日期长度
满足日期格式
2.3.4 顾客信息表
含义说明:书店关系系统的核心信息,提供了顾客的具体信息。
组成:注册名,真实姓名,家庭住址,联系方式,购书卡号。
数据项
含义说明
数据类型
数据长度
取值范围
注册名
唯一区分用户的表示
Varchar
20
合法的字符
真实姓名
顾客的真实姓名
Varchar
20
合法的字符
家庭住址
顾客收货地址
Varchar
100
合法的字符
联系方式
顾客的电话号码
Varchar
20
合法的字符
购书卡号
顾客的购书卡号
Varchar
30
合法的字符
2.3.5 管理员信息表
含义说明:书店关系系统的核心信息,提供了雇员的基本信息,管理权限等。
组成:管理员编号,名字,密码,具体身份(超级管理员,书籍管理员,用户管理员,订单管理员),管理员邮箱。
数据项
含义说明
数据类型
数据长度
取值范围
管理员编号
唯一区分管理员的表识
varchar
20
合法的字符
管理员名字
管理员的姓名
varchar
20
合法的字符
密码
管理员进入系统的密码
varchar
10
合法的字符
具体身份
管理员管理范围
Varchar
20
邮箱
管理员与用户交流方式
Varchar
30
合法的邮箱地址
2.3.6 图书类型信息表
含义说明:提供了书籍的类别信息。
组成:图书类型编号,类别名称。
数据项
含义说明
数据类型
数据长度
取值范围
数据类型号
区别图书类型的唯一标识
Varchar
20
任意合法字符且在长度范围内
类别名称
类别名称
Varchar
80
合法字符
2.3.7 订单详细信息表
含义说明:提供订单的详细信息。
组成:详细订单编号,订单号,图书编号,订购数量,发货状态,收货状态,卖出总价。
数据项
含义说明
数据类型
数据长度
取值范围
详细订单号
区别每个详细订单的唯一标识
Varchar
80
任意合法字符且在长度范围内
订单号
区别每个不同订单的唯一标识
Varchar
80
合法字符
订购数量
每份订单的图书数量
Varchar
10
合法字符
发货状态
卖家的发货状态信息
Datetime
日期型的长度
符合日期的规则
收货状态
顾客收货状态信息
Varchar
20
合法字符
卖出总价
订单的总额
Varchar
20
合法字符
3.数据库设计
3.1 概念结构设计
根据对网上书店的需求分析,画出如下E-R图。
图1.书籍信息ER图
图2.库存信息ER图
图3.订单信息ER图
图4.顾客信息ER图
图5.管理员信息
图6.图书类型信息ER图
图7.订单详细信息ER图
图8.网上购书系统ER图
3.2 逻辑结构设计
3.2.1 关系模型
根据E-R图转换成如下关系模型:
书籍(ISBN号、订单详情、书籍类型、管理员名称、书籍名称、作者、出版年份、成交量、出版社名称、折扣)。
库存(ISBN号、库存量、库存下限,书籍名称)。
订单(订单号、顾客昵称、订购人、订购日期、订单书籍、书籍数量、发货日期)。
顾客(注册名、管理员名称、真实姓名、家庭住址、联系方式、购书卡号)。
管理员(管理员编号、管理员名字、密码、具体身份、邮箱)。
图书类型(数据类型、类别名称)。
订单详细(详细订单号、订单号、订购数量、发货状态、收货状态、卖出总价)
3.2.2 细化表结构
为方便,根据上述文字描述,用英文简写表和列。
书籍信息表
说明
列名
数据类型
约束
ISBN号
BookISBNId
Char
主码
订单详情
BookOrder
Char
not null
书籍类型
BookType
Char
not null
管理员名称
BookAdminName
Char
not null
书籍名称
BookName
Char
not null
作者
BookWriter
Char
not null
出版年份
BookPrintYear
Datetime
not null
成交量
BookVOL
BIGINT
not null
出版社名称
BookPrintName
Char
not null
折扣
BookDiscount
int
not null
库存表
说明
列名
数据类型
约束
ISBN号
EntreBookISBNId
Char
主码
库存量
EntreStock
Int
主码
书籍名称
EntreBookName
char
not null
库存下限
EntreFloorNum
int
not null
订单表
说明
列名
数据类型
约束
订单号
OrderID
Char
主码
顾客昵称
OrderCusNickname
Char
主码
订购人
OrderCusName
Char
not null
订购日期
OrderData
Datetime
not null
订单书籍
OrderBook
Char
not null
书籍数量
OrderCount
int
not null
发货日期
OrderSendData
Datetime
not null
顾客信息表
说明
列名
数据类型
约束
注册名
CusResNikeName
char
主码
真实姓名
CusName
char
not null
家庭住址
CusAddress
char
not null
联系方式
CusPhone
char
not null
购书卡号
CusBoughtCardId
char
not null
管理员信息表
说明
列名
数据类型
约束
管理员编号
ManaID
Char
主码
管理员名字
ManaName
Char
not null
密码
ManaPasswd
Char
not null
具体身份
ManaIden
Char
not null
邮箱
ManaMail
Char
not null
图书类型表
说明
列名
数据类型
约束
数据类型
BookClass
Char
主码
类别名称
BookClassName
Char
not null
3.3 数据库实施
3.3.1 建表
书籍信息表:
CREATE TABLE bookinfo ( `BookISBNId` char(80) NOT NULL , `BookOrder`
char(80) NOT NULL , `BookType` char(50) NOT NULL , `BookAdminName` char(20)
NOT NULL , `BookName` char(30) NOT NULL , `BookWriter` char(30) NOT NULL ,
`BookPrintYear` datetime NOT NULL , `BookVOL` bigint NOT NULL ,
`BookPrintName` char(30) NOT NULL , `BookDiscount` int NOT NULL , PRIMARY KEY
(`BookISBNId`) ) ;
库存信息表:
CREATE TABLE repertoryinfo( `EntreBookISBNId` char(80) NOT NULL ,
`EntreStock` int NOT NULL , `EntreBookName` char(30) NOT NULL ,
`EntreFloorNum` int NOT NULL , PRIMARY KEY (`EntreBookISBNId`, `EntreStock`) )
;
订单表:
CREATE TABLE orderinfo ( `OrderID` char(80) NOT NULL , `OrderCusNickname`
char(20) NOT NULL , `OrderCusName` char(20) NOT NULL , `OrderData` datetime
NOT NULL , `OrderBook` char(30) NOT NULL , `OrderCount` int NOT NULL ,
`OrderSendData` datetime NOT NULL , PRIMARY KEY (`OrderID`,
`OrderCusNickname`) ) ;
顾客信息表:
CREATE TABLE cusinfo ( `CusResNikeName` char(20) NOT NULL , `CusName`
char(20) NOT NULL , `CusAddress` char(50) NOT NULL , `CusPhone` char(15) NOT
NULL , `CusBoughtCardId` char(30) NOT NULL , PRIMARY KEY (`CusResNikeName`) ) ;
管理员信息表:
CREATE TABLE managerinfo ( `ManaID` char(30) NOT NULL , `ManaName` char(20)
NOT NULL , `ManaPasswd` char(30) NOT NULL , `ManaIden` char(20) NOT NULL ,
`ManaMail` char(20) NOT NULL , PRIMARY KEY (`ManaID`) ) ;
图书类型表:
CREATE TABLE booktypeinfo ( `BookClass` char(20) NOT NULL , `BookClassName`
char(20) NOT NULL , PRIMARY KEY (`BookClass`) ) ;
附操作bookinfo表的代码,仅仅实现功能,没有错误检查,什么都没有。(纯属应付,和数据库交互不能拼接SQL语句,防止SQL注入。)
import pymysql # 参数一:mysql服务所在主机的ip # 参数二:用户名 # 三:密码 # 四:数据库名 db =
pymysql.connect('127.0.0.1', "root", "tian", "managebook") # 创建一个cursor对象
flag=True while flag==True: cursor = db.cursor() print('1:增加') print('2:删除')
print('3:修改') print('4:查找') print('5:退出') print('6:显示')
work=input('请输入想要执行的功能\n') if work=='1': print("请输入书籍信息\n") s0=input('ISBN号:')
s1 = input('订单详情:') s2 = input('书籍类型:') s3 = input('管理员名称:') s4 =
input('书籍名称:') s5 = input('作者:') s6 = input('出版年份:') s7 = input('成交量:') s8 =
input('出版社名称:') s9 = input('折扣:') sql="insert into bookinfo
VALUES('%s','%s','%s','%s','%s','%s','%s',%d,'%s',%d
);"%(s0,s1,s2,s3,s4,s5,s6,int(s7),s8,int(s9)) try: # 执行sql语句
cursor.execute(sql) # 提交到数据库执行 db.commit() print("增加成功\n") #
cursor.execute("select * from bookinfo;") # data = cursor.fetchall() #
print(data) except: # 如果发生错误则回滚 db.rollback() print('ERROR,AGAIN') # 执行sql语句
elif work=='2': a=input('请输入要删除的书籍ISBN号\n') sql ="delete from bookinfo where
BookISBNId='%s'"%a try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit()
print('删除成功\n') # cursor.execute("select * from bookinfo;") # data =
cursor.fetchall() # print(data) except: # 如果发生错误则回滚 db.rollback()
print('ERROR,AGAIN') elif work=='3': cursor.execute("select BookISBNId from
bookinfo;") data = cursor.fetchall() print("ISBN号如下:",data) a =
input('请输入要修改的书籍ISBN号\n') b=input('请输入想要修改的属性和信息\n').split() print(b[0],b[1])
sql = "update bookinfo set %s=%s where BookISBNId='%s'"%(b[0],b[1],a) try: #
执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() print('修改成功\n') #
cursor.execute("select * from bookinfo;") # data = cursor.fetchall() #
print(data) except: # 如果发生错误则回滚 db.rollback() print('ERROR,AGAIN') # 获取返回信息 #
data = cursor.fetchall() # print(data) elif work=='4':
print('有以下表:bookinfo、booktypeinfo、cusinfo、managerinfo、orderinfo、repertoryinfo')
a=input('请输入想要查找的信息\n') sql="select * from %s"%a cursor.execute(sql) # 获取返回信息
data = cursor.fetchall() print('************************结果如下\n',data) # 断开连接
elif work=='5': flag=False else: cursor.execute("select * from bookinfo;") data
= cursor.fetchall() print(data) cursor.close() db.close()
热门工具 换一换