数据库课程设计

图书管理系统1.概述项目背景2.需求分析2.1系统需求2.2数据需求2.3数据字典2.3.1书籍信息表2.3.2库存信息表2.3.4顾客信息表2.3.5管理员信息表2.3.6图书类型信息表2.3.7订单详细信息表3.数据库设计3.1…

大家好,又见面了,我是你们的朋友全栈君。

                                             图书管理系统

1.概述

项目背景

2.需求分析

2.1 系统需求

2.2 数据需求

2.3  数据字典

2.3.1 书籍信息表

2.3.2 库存信息表

2.3.4 顾客信息表

2.3.5 管理员信息表

2.3.6 图书类型信息表

2.3.7 订单详细信息表

3.数据库设计

3.1 概念结构设计

3.2 逻辑结构设计

3.2.1 关系模型

3.2.2 细化表结构

3.3 数据库实施

3.3.1 建表


1.概述

  1. 项目背景

       目前社会上信息管理系统发展飞速,越来越多的企业事业单位引入信息管理软件来管理自己日益增长的各种信息。各种网店也采用了不同的管理系统来管理商品信息,取得了很大的成效。网上书店管理系统也在功能上不但完善和加强,为了使书店管理更加规范化,程序化,科学化,我们研发了网上书店管理系统。

在电子商务网站中,网上书店是目前应用最广,最成功的典范之一。通过它用户可以在网络上通过Internet,突破时间和空间的限制而实现网上购书。网上书店的崛起对传统的图书流通体系产生了强烈的冲击,有效地缩短了图书流通大发行环节,将广大读者、图书、出版者、发行者紧密结合在一起,大大提高了图书流通率。

  1. 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()

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/124615.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • pki基于对称加密算法保证网络通信安全_网络安全体系结构

    pki基于对称加密算法保证网络通信安全_网络安全体系结构PKI(PublicKeyInfrastructure的缩写)即”公开密钥体系”,是一种遵循既定标准的密钥管理平台,它能够为所有网络应用提供加密和数字签名等密码服务及所必需的密钥和证书管理体系,简单来说,PKI就是利用公钥理论和技术建立的提供安全服务的基础设施。PKI技术是信息安全技术的核心,也是电子商务的关键和基础技术。原有的单密钥加密技术采用特定加密密钥加密数据,而解密时用于解密的密

  • ubuntu ll命令[通俗易懂]

    ubuntu ll命令[通俗易懂]用过Redhat的朋友应该很熟悉ll这个命令,就相当于ls-l,但在Ubuntu中就不行了。严格来说ll不是一个命令,只是命令的别名而已。很多Linux用户都使用bashshell,对普通用户来说用得最多的就是命令补全(按tab键)和alias(别名)功能。Ubuntu默认建立的用户都用的bashshell,所以它也支持别名功能,我们只需要gedi

  • ModifyStyle函数的用法「建议收藏」

    ModifyStyle函数的用法「建议收藏」1.作用:Callthismemberfunctiontomodifyawindow’sstyle.2.函数原型:BOOLModifyStyle(  DWORD dwRemove,  DWORD dwAdd,  UINT   nFlags);3.参数含义:dwRemove指定要删除的扩展属性,dwAd

  • 最短路径问题—Floyd算法详解[通俗易懂]

    最短路径问题—Floyd算法详解[通俗易懂]前言Geniusonlymeanshard-workingallone’slife.Name:WillamTime:2017/3/81、最短路径问题介绍问题解释:从图中的某个顶点出发到达另外一个顶点的所经过的边的权重和最小的一条路径,称为最短路径解决问题的算法:迪杰斯特拉算法(Dijkstra算法)弗洛伊德算法(Floyd算法)SPFA算法之前已经对Di

  • 报关与报检的区别和联系_简述报关与报检的区别

    报关与报检的区别和联系_简述报关与报检的区别区别是,报关是向海关申报,海关查验的重点是申报的货物与实际是否相符报检是向商检局申报,商检的查验重点是货物是否符合合同的或国家或国际的相关标准和要求.所有进出口货物均必须向海关申报不是所有的进出口货物都需要报商检,(看货物的HS编码是否属于免检范围)联系是,先报检后报关,凭商检检货合格后出具的”换证凭条”(单)换通关单,再凭通关单及其他相关单据向海关申报问题:通关单

  • 实现线程同步的几种方式总结

    实现线程同步的几种方式总结在多线程中线程的执行顺序是依靠哪个线程先获得到CUP的执行权谁就先执行,虽然说可以通过线程的优先权进行设置,但是他只是获取CUP执行权的概率高点,但是也不一定必须先执行。在这种情况下如何保证线程按照一定的顺序进行执行,今天就来一个大总结,分别介绍一下几种方式。通过Object的wait和notify 通过Condition的awiat和signal 通过一个阻塞队列 通过两个阻塞队列 …

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号