数据库课程设计

图书管理系统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()

 

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • jdk卸载出错[通俗易懂]

    jdk卸载出错[通俗易懂]打开控制面板卸载jdk出错,弹出问题说软件安装包有问题解决方法:1、ctrl+alt+delete打开任务管理器,详细信息里找到“explorer.exe”,结束任务。2、然后左上角“文件”,选择“运行新任务”,然后在“打开”中输入“explorer.exe”,勾选“以系统管理权限创建此任务”,点确定,再卸载就好了。…

    2022年6月23日
    25
  • Stimulsoft Reports.Web.JS 2022.2.5

    Stimulsoft Reports.Web.JS 2022.2.5Stimulsoft2022.2.5Publishedon13May2022Reports.WebReports.NetReports.WpfReports.JSReports.PHPReports.JavaReports.BlazorReports.AngularDashboards.WEBDashboards.WINDashboards.JSDashboards.PHPBIDesignerBICloudBIServerN..

    2022年7月26日
    6
  • awvs11安装教程_ajax使用步骤

    awvs11安装教程_ajax使用步骤Awvs12.x安装及使用教程Awvs12.x安装1.下载Awvs12.x版本和对应补丁2.安装AwvsAwvs12.x使用Awvs12.x导出渗透结果报表Awvs12.x下载链接Awvs12.x安装1.下载Awvs12.x版本和对应补丁2.安装Awvs1.双击acunetix_12.0.180911134.exe进行安装2.然后选择我同意该条款3.随便填写对应邮箱如xxx@qq.com,账号密码一定要记住如果出现下图,是密码设置太简单了,需要设置含三种规则以上的密码如Abc12345

    2022年9月16日
    0
  • pycharm-professional-2022.01.13 激活码(注册激活)

    (pycharm-professional-2022.01.13 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~0V…

    2022年3月31日
    185
  • markdown导出为html_python html转word

    markdown导出为html_python html转word关于前端HTML转换为Markdown,发现了一个非常好用的npm项目:https://sitdown.mdnice.com/zh-hans/首先确保本机已经安装nodejs,并根据下面的文章安装execjs并修改其源码:execjs执行包含中文参数的JavaScripthttps://xxmdmst.blog.csdn.net/article/details/123099139在python所在目录安装sitdown:>npminstallsitdownadded2pac

    2022年9月7日
    0
  • ssr错误端口已被占用_ssr端口设置是随意的吗

    ssr错误端口已被占用_ssr端口设置是随意的吗在Windows下使用SSR客户端的时候经常会碰到启动SSR客户端弹出1080端口被占用的提示,超级的烦人,原因你懂的。明月最近也是频繁的碰到这个问题,并且是公司、家里电脑都碰上这个问题了,虽然只是每次电脑断电关机重启后会出现,一般等个几分钟后再次重启SSR客户端也就消失了,不过,很明显这很不科学,既然提示是被“占用”了,那么就要找到“占用”的罪魁祸首来!今天就给大家分享一下具…

    2022年9月6日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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