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成员时,该成员必须在用户表中,否则会报错给出提示。

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

被折叠的 条评论
为什么被折叠?



