数据库原理课程设计——图书销售管理系统

1. 系统分析

1.1 选题背景

       随着信息技术的飞速发展和数字化时代的到来,传统图书销售行业正面临着前所未有的挑战与机遇。在这个背景下,图书销售管理系统作为提升行业效率、优化客户体验、增强企业竞争力的关键工具,正受到越来越多图书销售企业的关注与重视。

       客户需求日益个性化、多样化,要求图书销售企业能够迅速响应市场变化,提供个性化的服务。图书销售管理系统可以通过数据分析功能,深入挖掘客户需求和购买行为,为企业制定精准的市场营销策略提供有力支持。同时,系统还可以实现客户信息的集中管理,方便企业与客户建立长期稳定的联系,提升客户满意度。

1.2 可行性分析

1.2.1 技术可行性

       技术能力:本项目需要实现书店包括图书编目、进退货、销售、财务报表等方面的一体化管理。现代编程语言(如Java、Python)和数据库系统(如MySQL、PostgreSQL)完全可以满足这些需求。同时,还需考虑系统的用户接口设计和报表生成功能。

       技术人员:如果团队中有经验丰富的开发人员和数据库管理人员,技术实现并无太大难度。

       系统集成:系统需与现有的图书库存系统和财务系统集成。现有技术能够支持系统的整合,但需要详细规划集成方案和接口规范。

1.2.2 经济可行性

        成本估算:开发该系统需要投入的成本包括人员成本、设备成本和软件许可证成本等。详细的成本估算需要根据实际开发周期和团队规模进行计算。

        效益分析:通过该系统的使用,书店能够提高运营效率,减少人工成本,提升客户满意度,从而带来经济效益。

1.2.3 操作可行性

        用户需求:系统设计需以用户需求为中心,确保操作简便、界面友好。需对用户进行适当的培训,使其能够快速上手。

       维护和支持:系统上线后,需要提供持续的技术支持和维护,保证系统的稳定运行。

1.2.4 时间可行性

       项目进度:需制定详细的项目进度计划,确保在预定时间内完成开发、测试和上线。考虑到功能的复杂性,整个开发周期预计为3星期。

1.3 需求分析

1.3.1 功能需求

       图书编目:对图书进行编目,包括添加、删除、修改图书信息,并查询出版社资料。

       会员管理:包括会员的添加、删除、信息修改、积分管理等功能。还需要处理会员的登录、密码修改和权限管理。

       报表生成:提供销售单、会员列表、出版社列表、销售单等报表。

       数据管理:提供系统数据的备份与恢复。

1.3.2 非功能需求

       性能需求:系统需支持高并发访问,响应时间需在秒级以内。

       安全需求:系统需具备严格的权限管理和数据加密功能,保护用户隐私和商业数据。

       可靠性需求:系统需具备高可用性和容错能力,确保在各种情况下都能正常运行。

       用户界面需求:界面友好、操作简便,支持多种浏览器和设备访问。

       系统兼容性:系统需兼容多种操作系统和数据库系统,便于部署和维护。

       扩展性:系统设计需具备良好的扩展性,方便未来功能扩展和性能提升。

1.3.3 用户需求

       管理员:需对图书、出版社、会员等进行全面管理。

       VIP用户:不同类型用户折扣力度不同,并且可以使用积分购书。

       普通用户:进行购书以及其他信息的查询。

2. 系统设计

2.1 系统功能设计

2.1.1 登录认证功能

       数据库验证:需要连接数据库,要有正确的数据库主机名和密码才可以成功连接,否则进不去登陆页面。

       注册:可以使用用户名进行注册,成功后系统会让用户完善个人信息。

2.1.2 用户角色

       系统分为管理员、VIP用户和普通用户。

       管理员:管理员可以对任何数据进行增删改查的操作,拥有最高权限。

       VIP用户:VIP用户不能对数据进行增删改。此外,VIP用户可以进行积分充值,积分可以用于图书的购买。VIP用户分为月卡、季卡、年卡,在购买书的时候分别打七五折、八折、九折。

       普通用户:首先所有新注册的用户默认都是普通用户。普通用户对所有信息只能进行查询的操作。

2.1.3 VIP会员机制

       普通用户可以向管理员申请成为会员,会员种类有三种,分别是:月卡、季卡、年卡。其有效期分别是30天,90天,365天。当管理员给某普通用户开通会员后,系统会自动根据类型和创建会员的时间计算出到期时间。当用户拥有会员后可以拥有不同折扣。

2.1.4 图书购买功能

       所有用户都可以购买图书,当在选择图书的页面中点击购买后,便会弹出该书的详情页面,包括ISBN、书名、作者、库存量、零售和折扣价。对于普通用户折扣价与零售价相同,而对于不同类型的VIP用户会有不同折扣的折扣价。在该弹出的页面中用户可以对本次买的书进行信息确认,确认后即可成功购买。

2.1.5 购物车功能

       每个用户在本次购买所有书后,点击“购物车“会展示当前所购买的所有书的信息,包括书名、数量、单价、小计和总计这些信息。单价是根据不同用户属性对应的折扣自动计算的,该页面就类似购物凭证,用户点击“确认”后会确认本次订单。

2.1.6 VIP积分充值

       对于VIP用户而言,可以使用积分来购买图书,当购买后积分会扣除相应书的价格。如果积分不足会提醒该VIP用户进行积分充值。点击“充值”会弹出提示框,输入要充值的金额即可成功充值。

2.1.7 图书购买/销售记录

       VIP用户和普通用户:进入销售页面时会展示当前用户历史以来购买所有书的记录信息,包括ISBN,书名,作者,出版商,数量,价格、购买时间时间等属性。

       管理员:管理员进入到销售记录页面时,可以看到所有用户历史以来购买的所有书的信息,也包括上述属性。

  图1 用户管理

     图2 总流程图

     图3 结算业务

2.2 数据库设计

2.2.1 数据库需求分析

       数据流:该系统中数据流包括:图书信息数据流、购买记录数据流、用户信息数据流、vip信息数据流,根据上述数据流可生成一个数据流图。

       1. 图书信息流:

       来源:图书信息由系统输入和人工导入;

       去向:books(图书信息表);组成:书名、作者、库存量、出版商、零售价,创建时间。

       2. 购买记录数据流:

       来源:用户购买图书时产生的信息;

       去向:purchaserecord(购买记录表);组成:ISBN、购买用户、购买数量、折扣价。

       3. 用户信息数据流:

       来源:用户注册时提供的信息;

       去向:users(用户表);组成:用户名、密码、年龄、生日、是否为管理员、电话、地址。

       4. Vip信息数据流:

       来源:用户升级vip时提供的信息;
       去向:vip(vip信息表);组成:用户名、身份证号码、会员卡积分、会员种类、有效期、到期日期

       数据存储:在数据存储体系中,主要包含用户表、购买记录、Vip信息表和图书信息表。下表是具体信息

数据存储名称

含义说明

组成结构

用户表(users)

存放用户的个人信息

用户名、密码、生日等

购买记录

购买书籍记录

购买用户、数量、书籍

Vip信息表

Vip用户个人信息

身份证号码、积分

图书信息表

图书的基本信息

图书名称、数量、编号

2.2.2 数据概念模型设计

实体及属性:

1. Books(图书信息表)

属性名

数据类型及长度

约束条件

说明

ISBN

VARCHAR(255)

PRIMARY KEY, NOT NULL

book_name

VARCHAR(255)

非空

书名

author

VARCHAR(255)

非空

作者

number

VARCHAR(255)

非空

库存量

publishers

VARCHAR(255)

非空

出版商

price

VARCHAR(255)

非空

零售价

createtime

DATETIME

CURRENT_TIMESTAMP

创建时间

2. Vip(vip信息表):

属性名

数据类型及长度

约束条件

说明

id

VARCHAR(255)

DEFAULT NULL

name

VARCHAR(255)

PRIMARY KEY, NOT NULL, FOREIGN KEY

关联users表

idcard

VARCHAR(255)

非空

身份证号码

point

VARCHAR(255)

可为空

会员卡积分

type

VARCHAR(255)

可为空

会员种类

valid_time

VARCHAR(255)

可为空

有效期

expire_time

VARCHAR(255)

可为空

到期日期

createtime

DATETIME

DEFAULT CURRENT_TIMESTAMP

创建时间

3. Users(用户信息表):

属性名

数据类型及长度

约束条件

说明

id

VARCHAR(255)

可为空

user_name

VARCHAR(255)

PRIMARY KEY, NOT NULL

password

VARCHAR(255)

非空

密码

age

VARCHAR(255)

可为空

年龄

birthday

VARCHAR(255)

可为空

生日

isAdmin

VARCHAR(255)

DEFAULT '0'

是否为管理员

phone

VARCHAR(255)

可为空

电话

address

VARCHAR(255)

可为空

地址

createtime

DATETIME

DEFAULT CURRENT_TIMESTAMP

创建时间

4. Purchasecord(购买记录表):

属性名

数据类型及长度

约束条件

说明

ISBN

VARCHAR(255)

NOT NULL, FOREIGN KEY

关联books表

user_name

CHAR(255)

NOT NULL, FOREIGN KEY

关联users表

purchase_num

CHAR(255)

NOT NULL

discountprice

VARCHAR(255)

可为空

折扣价

createtime

DATETIME

DEFAULT CURRENT_TIMESTAMP

创建时间

实体联系

1. Users与purchasecord:一个用户可以拥有多个购买图书记录,处于一对多的关系。

2. Books与purchasecord:一种图书可以被购买多次,所以有多个购买记录,处于一对多的关系。

3. Users与vip:一个用户可以开通一个vip,拥有一个vip信息表,处于一对一的关系。

图5 概念模型E-R图

                                                                图6 物理模型图

2.2.3 数据物理模型设计

主键:

1. Book表中“ISBN”字段为主键。

2. Purchasecord表中“ISBN和user_name”组合为主键。

3. Users表中“user_name”字段为主键。

4. Vip表中“name”字段为主键。

外键关系:

1. Purchasecord中“ISBN”是books表中的“ISBN”字段的外键,删除书籍时会删除购买记录。

2. Purchaseword中“user_name”是user表中的“user_name”字段的外键,删除用户时会级联删除购买记录。

3. Vip中“name”字段是user表中的“user_name”字段的外键,删除用户时会级联删除vip。

3. 系统实现

3.1 系统登陆

3.1.1 数据库连接

       登陆之前首先应与本地数据库进行连接。上述图是以自己本地数据库信息为例,当然每个用户各自的数据库信息也会不一样。

3.1.2 注册页面

       首先作为新用户要注册一个账户,这里仅为示例数据。点击“go to Register”后便可注册成功,相应的部分信息也会存入到users数据表中。接着返回登陆页面登陆即可。

3.1.3 登陆页面

        如果是新用户注册,由于在注册页面填写的信息是不完善的,因此在登陆时会让用户填写详细信息,如下图所示。

确认后,用户的信息就会完整的存入users数据表中,也就可以登录到用户界面了。

3.2 主页面

3.2.1 非管理员

        对非管理员而言,在页面最顶部会展示当前登录的用户名信息和用户类型,新注册的用户默认都是普通用户。对于非管理员的用户,添加、编辑、删除的操作是没有权限的。

3.2.2  管理员

          对于管理员而言,具有增删改的权限。

3.3 信息管理页面

3.3.1 图书信息管理

    非管理员只能进行图书信息的查看与查询。

    对于管理员,所有的图书信息都可以进行增删改查。

3.3.2 VIP用户管理

      非管理员只能对VIP用户进行查询,而管理员可以对数据进行增删改查。

3.3.3 图书销售记录管理

       对于非管理员用户。购书记录只会看到自己历史以来所购买的所有图书信息,而不会看到其他人的。

        而对于管理员,该页面展示的是所有用户所有的销售记录。

3.4 购书功能

3.4.1 主页面 

3.4.2 购买详情页面

        点击黄色的购买按钮,就会显示出当前所购买的信息,弹出的页面是不能编辑的。在弹出的购买页面中会显示书的原价和折扣价,我们规定VIP用户中,年卡是七五折,季卡是八折,月卡是九折。这里的折扣价是自动根据当前登录的用户的会员类型决定的(如果不是会员就按照原价出售)。

 3.4.3 购物车功能

        假如当前用户买了3本书,在购物车页面中会显示当前所购买的所有书,并且会统计出数量、小计、总额等信息,用于用户查看并确认当前所购买的书。

3.4.4 积分充值功能

       积分充值功能是仅对VIP用户有效的。当VIP用户点击“充值”按钮后,填入要充值的金额便可实现充值。

3.4.5 购书合理性

        以该VIP用户为例,在购买书后,该书的库存量和其积分数量都会相应减少说明购书功能是合理的。

3.5 基本数据操作

3.5.1 添加功能

           新增用户

       添加功能只有管理员才有该权限。当管理员点击“新增”按钮后会弹出一个添加用户的页面,在该页面中完善新增用户的信息,便可成功添加到users列表中。

       此外id号是根据新增前用数量自动加1的。

        新增图书 

        可以看到,当前的图书已经成功添加。

  VIP添加 

       如图可知,该VIP会员信息已经成功添加。编号是自动生成的,会员到期时间是根据当前创建时间自动计算的。(月卡加30天、季卡加90天、年卡加365天)

3.5.2 编辑功能

        由上述图可以看到该用户已经成功被修改信息。其他页面编辑也是一样的效果,这里便不再一一展示。

         如上图可以看到该VIP用户已经成功删除。其他页面删除功能大致类似,本文不再一一展示。

3.5.4 查询功能 

        任何一个元素都可以查询,由上图可以看到查询功能正常

3.5.5 刷新功能

        刷新功能可以刷新页面,并清空搜索框内查询的内容,还可以更新数据。

4 系统测试

4.1 用户输入异常测试

        在登陆页面,用户名和密码输入错误都会给出相应的提示。在注册页面会有一个确认密码的机制,如果两次密码输入的不一致,也会引发错误。

         在购书页面,如果当前图书的库存为0,用户就不能购买,系统会给出相应提示。此外对于VIP用户,其积分数就是用来购买图书的,当积分余额不足时也会给出相应提示,提醒用户该充值了。

 

 

 

 

 

         对于管理员而言,对数据的增删改也是需要有一定约束的,约束条件如下:

1、填写的年龄与生日的年份之间应该合理

2、年龄规定在1-150之间

3、身份证规定在18位

4、手机号规定在11位

5、图书的ISBN编码采用统一格式,即13位

6、VIP用户的积分数不能为0

7、图书的库存和价格不能小于0

4.2 数据库测试

        VIP关系中,名字是外码,来自于用户表的主码。因此当管理员添加VIP成员时,该成员必须在用户表中,否则会报错给出提示。

 

 

       由于销售管理的表的用户名是外码,来自于用户管理表里的主码,并且在数据库设计中是与主码链接的。即当用户管理表中的某用户名对应的行删除后,购买记录中的相应用户的信息也会随之删除。上述图中也证实了这一点:当用户名为“李薇”的用户被删除时,其消费记录也随之消失。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值