Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 图书管理系统 (Book Management System) 项目文档

1. 项目简介

本系统是一个基于 D 语言 (Dlang)Raylib GUI 框架SDLang 数据持久化开发的高性能桌面图书管理软件。系统界面直观,响应迅速,所有图书数据均以轻量级的 Simple Data Language (SDL) 格式写入本地 .sdl 文件中。

核心特性

  • 纯代码极简 GUI:使用 Raylib 驱动,具备响应式按钮、高亮交互数据表格与输入框。
  • SDL 文本持久化:不依赖大型数据库(如 SQLite/MySQL),所有数据以标准 .sdl 文本存储,方便手动查看与备份。
  • 完整 CRUD 支持:提供图书信息的查询(过滤)、添加、修改、删除一键清空表单功能。
  • 实时数据同步:对图书进行增/删/改操作后,系统会自动保存更新至本地 books.sdl 文件。

2. 技术栈与依赖

组件 技术 / 库 说明
编程语言 D Language (DMD / LDC) 强类型、编译型高性能语言
GUI & 渲染 raylib-d (~>5.0.0) 基于 Raylib C 库的 D 语言绑定
数据持久化 sdlang-d (~>0.10.6) SDLang (Simple Data Language) 文本解析库
构建工具 DUB D 语言官方包管理与构建工具
底层依赖 Raylib C Binaries (.dll/.lib) 提供跨平台的底层图形与事件处理支持

3. 项目结构

book_manager/
├── dub.json             # DUB 依赖及项目配置文件
├── raylib.dll           # Raylib C 运行时动态库 (Windows 必需)
├── raylib.lib           # Raylib C 导入链接库 (Windows 必需)
├── books.sdl            # 数据持久化文件 (运行后自动生成)
└── source/
    └── app.d            # 系统主逻辑与 GUI 绘制源码

4. 配置文件 (dub.json)

{
    "name": "book_manager",
    "description": "Book Management System using D, Raylib, and SDLang",
    "authors": ["Developer"],
    "license": "MIT",
    "dependencies": {
        "raylib-d": "~>5.0.0",
        "sdlang-d": "~>0.10.6"
    },
    "libs": [
        "raylib"
    ]
}

5. 快速开始与运行

5.1 前置环境

  • 安装 D 语言编译器 (DMD 或 LDC) 及 DUB。
  • 安装 C++ 编译环境(如 Windows 上的 MSVC / Visual Studio Build Tools)。

5.2 步骤说明

  1. 获取 / 初始化项目

    dub init book_manager
  2. 配置源码与依赖

    • 将项目中的 dub.jsonsource/app.d 替换为最新版本。
  3. 安装本地 Raylib C 二进制依赖库(关键步骤):

    dub run raylib-d:install

    说明:该命令会自动下载并复制适用于当前系统的 raylib.dllraylib.lib 至项目根目录。

  4. 编译并启动应用

    dub run

6. 功能使用手册

功能 操作方式 逻辑说明
列表浏览 鼠标点击左侧表格中的某一行 选中的图书高亮显示,其详细数据会自动回显填充到右侧编辑表单中。
实时查询 在顶部 Search 输入框中输入关键字 实时对图书的 ID、书名、作者、ISBN 进行不区分大小写的模糊匹配过滤。
添加图书 在右侧表单填入数据,点击 Add Book 校验 ID 是否重复,无误后追加写入内存,并同步保存到 books.sdl
修改图书 点击选中某行图书,修改表单内容,点击 Update Selected 更新选中图书的各字段信息,并同步保存到 books.sdl
删除图书 点击选中某行图书,点击 Delete Selected 将选中图书从列表中移除,并同步保存到 books.sdl
清空表单 点击 Clear Form 清空右侧表单中的所有缓冲区,并重置选中状态。

7. 数据持久化格式说明 (books.sdl)

系统数据采用 SDLang 格式存储,每本图书对应一个 book 标签,属性包含了图书的完整字段。

books.sdl 示例内容如下:

// 图书管理系统 SDL 数据存储
book id=1 title="The D Programming Language" author="Andrei Alexandrescu" year=2010 isbn="9780321635365"
book id=2 title="Clean Code" author="Robert C. Martin" year=2008 isbn="9780132350884"

8. 常见问题排查 (FAQ)

Q1: 编译时出现 LNK2019: 无法解析的外部符号 GetMousePosition... 错误?

  • 原因:找不到 Raylib 的 C 动态库/静态库文件(raylib.dll / raylib.lib)。

  • 解决办法:在终端运行 dub run raylib-d:install,或手动将预编译好的 raylib.dllraylib.lib 放置在项目根目录下,并确保 dub.json 中配置了 "libs": ["raylib"]

Q2: 界面上中文字符显示为问号或乱码?

  • 原因:Raylib 默认采用 ASCII 字符集作为内置字体。

  • 解决办法:若需全面支持中文字符展示,可在程序初始化时通过 Raylib 的 LoadFontEx() 加载系统中的中文字体(如 msyh.ttc 或任意 .ttf 字体文件)。

Releases

Packages

Contributors

Languages