基于LibreOffice +python 实现一个小型销售管理系统的数据库原型教学实验

项目概述

本项目使用 SQLite 数据库和 LibreOffice 创建了一个完整的销售管理系统数据库,包含客户、商品、订单等数据,并生成了所需的报表。

创建一个 销售管理系统数据库 ,主要用于:

主要用途

1. 教学实验

这是 Week 5 数据库实验课 的作业,目的是学习如何:

  • 创建数据库表(客户、商品、订单等)
  • 编写 SQL 查询
  • 生成报表

2. 业务数据管理

系统可以管理:

  • 客户信息 - 公司名称、联系方式、地址等
  • 商品目录 - 商品名称、价格、库存等
  • 订单处理 - 订单状态(已完成/待处理)、发货信息等
  • 利润计算 - 每笔订单的利润分析

3. 报表生成

可以生成以下报表:

报表 用途 Customer Item List 客户商品目录 Profit by Order & Item 订单利润分析 Item Profit Summary 商品销售汇总

4. 数据分析

可以分析:

  • 哪些商品卖得最好
  • 哪些商品利润最高
  • 销售额和利润趋势

文件说明

数据库文件

  • Week5_Database.odb - LibreOffice Base 数据库文件,包含了所有表和查询

Python 脚本

文件 用途
create_database.py 创建数据库结构、表、插入示例数据、创建查询
export_csv.py 将查询结果导出为 CSV 文件
verify_data.py 验证数据库内容和查询结果

输出文件

文件 说明
Customer_Item_List.pdf 客户商品列表报表 (STEP 1)
Profit_By_Order_Item.pdf 订单利润报表 (STEP 2)
Item_Profit_Summary.pdf 商品利润汇总报表 (STEP 3)

数据库结构

表 (Tables)

  1. Customer - 客户表

    • CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax
  2. Category - 商品类别表

    • CategoryID, CategoryName, Description
  3. Item - 商品表

    • ItemID, ItemName, CategoryID, UnitPrice, UnitsInStock, UnitsOnOrder, ReorderLevel, Discontinued
  4. Order - 订单表

    • OrderID, CustomerID, OrderDate, RequiredDate, ShippedDate, ShipVia, Freight, ShipName, ShipAddress, ShipCity, ShipRegion, ShipPostalCode, ShipCountry, OrderStatus
  5. Order Detail - 订单明细表

    • OrderDetailID, OrderID, ItemID, UnitPrice, Quantity, Discount

查询 (Queries)

  1. Customer Item List - 客户商品列表查询

    • 显示所有客户和商品的交叉列表
  2. Profit by Order & Item - 按订单和商品计算利润

    • 显示已完成订单的利润详情
  3. Order Detail Query - 订单明细查询

    • 用于汇总分析的详细数据
  4. Item Profit Summary - 商品利润汇总

    • 按商品汇总销量和利润

使用方法

1. 重新创建数据库

bash 复制代码
python3 create_database.py

2. 导出查询结果为 CSV

bash 复制代码
python3 export_csv.py

3. 验证数据

bash 复制代码
python3 verify_data.py

4. 使用 LibreOffice 打开数据库

bash 复制代码
"C:\Program Files\LibreOffice\program\soffice.exe" "Week5_Database.odb"

5. 将 CSV 转换为 Excel

bash 复制代码
"C:\Program Files\LibreOffice\program\soffice.exe" --headless --invisible --convert-to xlsx input.csv --outdir output_dir

6. 将 Excel 转换为 PDF

bash 复制代码
"C:\Program Files\LibreOffice\program\soffice.exe" --headless --invisible --convert-to pdf input.xlsx --outdir output_dir

数据分析结果

根据 STEP 3 的要求,系统可以分析以下内容:

  • 销量最高的商品
  • 销量最低的商品
  • 利润最高的商品
  • 利润最低的商品

环境要求

  • Python 3.x
  • LibreOffice 26.x
  • pypdf 库 (用于 PDF 处理)

安装依赖

bash 复制代码
pip install pypdf
相关推荐
共享家952713 分钟前
408 操作系统第一章
服务器·数据库·windows
这个DBA有点耶44 分钟前
连拿六年第一后宣布出海:国产数据库凭什么敢撕掉“平替”的标签?
数据库·人工智能·架构
Ramble_Naylor1 小时前
Rust深度解读:Send 与 Sync 的本质与线程安全边界
python·算法·rust
云和恩墨1 小时前
数据库监控简史:从会回答到能交付——AI-DBA如何成为真正的数字同事
数据库·人工智能·dba
Allen_LVyingbo2 小时前
NVIDIA CUDA Tile 在医疗计算中的算子形式化、算法重构与内核实现
大数据·python·算法·重构·知识图谱·健康医疗·数据库架构
云和数据.ChenGuang2 小时前
Python 闭包详解:从原理到实战
linux·开发语言·人工智能·python·kubernetes
这个DBA有点耶2 小时前
为什么删掉索引后,查询瞬间变快了?探讨MySQL的随机I/O与顺序I/O博弈
数据库·mysql·代码规范
kingx33 小时前
BugKu 渗透测试 4 实战:文件上传打点,5 Flag 全通
数据库·渗透测试·web·内网渗透
我命由我123453 小时前
Python 实用操作 - 文件操作(打开与关闭文件、读取文件、文件写入)
java·开发语言·前端·javascript·数据库·python·java-ee
青少儿编程课堂3 小时前
蓝桥杯·全国青少年信息素养大赛·电子学会Python/C++考级:倍增法求最近公共祖先LCA解析
c++·python·算法·bfs·信息学竞赛