图书管理系统用例规约 图书管理系统用php怎么做
答案:使用Golang和MySQL实现图书管理系统,通过database/sql包和go-sql-driver/mysql驱动完成数据库连接,定义图书结构体对应数据表字段,封装增删改查操作并测试。

用Golang做一个图书管理系统,核心是实现对图书数据的增删改查(CRUD)并数据库持久连接化存储。下面以MySQL为例,演示如何使用Go的数据库/sql包和第三方驱动go-sql-driver/mysql完成一个简单的图书管理系统。1. 环境准备与依赖安装
确保已安装 Go 和 MySQL。
创建项目目录后,初始化模块:mkdir book-managerlt;brgt;cd book-managerlt;brgt;go mod init book-manager登录后复制安装
MySQL驱动:go get -u github.com/go-sql-driver/mysql登录后复制2. 数据库设计与建表
在MySQL中创建数据库和图书表:
立即学习“go语言免费学习笔记(深入)”;CREATE DATABASE bookdb;lt;brgt;USE bookdb;lt;brgt;lt;brgt;CREATE TABLE books (lt;brgt;id INT AUTO_INCRMENT PRIMARY KEY,lt;brgt;title VARCHAR(255) NOT NULL,lt;brgt; 作者 VARCHAR(255) NOT NULL,lt;brgt; isbn VARCHAR(13) UNIQUE NOT NULL,lt;brgt;published_year YEAR,lt;brgt;created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMPlt;brgt;);登录后复制3. 定义图书结构体与数据库连接
创建main.go文件,定义图书结构体并初始化数据库连接:
lt;font face=quot;Courier Newquot;gt;package mainimport ( quot;database/sqlquot; quot;fmtquot; quot;logquot; _ quot;github.com/go-sql-driver/mysqlquot;)type Book struct { ID int Title string Author string ISBN string PublishedYear int CreatedAt string}var db *sql.DBfunc initDB() { var err error dsn := quot;root:yourpassword@tcp(127.0.0.1:3306)/bookdbquot; db, err = sql.Open(quot;mysqlquot;, dsn) if err != nil { log.Fatal(err) } if err = db.Ping(); err != nil { log.Fatal(err) } fmt.Println(quot;数据库连接成功quot;)}lt;/fontgt;登录后复制4. 实现CRUD操作函数
添加以下函数实现基本操作:
插入图书(创建)
乾坤圈新媒体矩阵管家
新媒体账号、矩阵智能管理系统 17 查看详情 lt;font face=quot;Courier Newquot;gt;func createBook(book Book) { query := `INSERT INTO books (title,author,isbn,published_year) VALUES (?, ?, ?, ?)` result, err := db.Exec(query, book.Title, book.Author, book.ISBN, book.PublishedYear) if err != nil { log.Fatal(err) } id, _ := result.LastInsertId() fmt.Printf(quot;图书插入成功,ID: d\nquot;, id)}lt;/fontgt;登录后复制
查询所有图书(已读)lt;font face=quot;Courier Newquot;gt;func getAllBooks() []Book { rows, err := db.Query(quot;SELECT id,title,author,isbn,published_year,created_at FROM booksquot;) if err != nil { log.Fatal(err) } defer rows.Close() var books []Book for rows.Next() { var b Book err := rows.Scan(amp;b.ID,amp;b.Title,amp;b.Author,amp;b.ISBN,amp;b.PublishedYear,amp;b.CreatedAt) if err != nil { log.Fatal(err) } books = append(books, b) } return books}lt;/fontgt;登录后复制
根据 ID 查询图书lt;font
face=quot;Courier Newquot;gt;func getBookByID(id int) Book { var b Book query := quot;SELECT id, title, author, isbn, published_year, created_at FROM books WHERE id = ?quot; err := db.QueryRow(query, id).Scan( amp;b.ID, amp;b.Title, amp;b.Author, amp;b.ISBN, amp;b.PublishedYear, amp;b.CreatedAt, ) if err != nil { log.Fatal(err) } return b}lt;/fontgt;登录后复制
更新图书(Update)lt;font face=quot;Courier Newquot;gt;func updateBook(book Book) { query := `UPDATE books SET title=?, author=?, isbn=?, published_year=? WHERE id=?` _, err := db.Exec(query, book.Title, book.Author, book.ISBN, book.PublishedYear, book.ID) if err != nil { log. Fatal(err) } fmt.Printf(quot;图书 ID d 更新成功\nquot;, book.ID)}lt;/fontgt;登录后复制
删除图书(Delete)lt;font face=quot;Courier Newquot;gt;func deleteBook(id int) { query := quot;DELETE FROM books WHERE id = ?quot; _, err := db.Exec(query, id) if err != nil { log.Fatal(err) } fmt.Printf(quot;图书 ID d 删除完成\nquot;, id)}lt;/fontgt;登录后复制5. 编写主函数测试功能
在main()中调用上述函数:lt;font face=quot;Courier Newquot;gt;func main() { initDB() defer db.Close() // 插入新书 newBook := Book{ Title: quot;Go语言编程quot;, 作者: quot;谢孟军quot;, ISBN: quot;9787121227579quot;,出版年份: 2018, } createBook(newBook) // 查询全部图书 := ge
tAllBooks() for _, b := range books { fmt.Printf(quot;书名: s, 作者: s, ISBN: s\nquot;, b.Title, b.Author, b.ISBN) } // 更新图书 bookToUpdate := books[0] bookToUpdate.Title = quot;Go语言实战quot; updateBook(bookToUpdate) // 图书(任选) // deleteBook(1)}lt;/fontgt;登录后复制
运行程序:go run main.go登录后复制
基本上就这些。通过这个例子,你已经实现了Golang图书管理系统的基础CRUD功能,并完成了与MySQL的集成。后续可扩展加入Web接口(如使用Gin框架)、输入验证、分页查询等功能。
以上就是Golang如何做一个图书管理系统_Golang CRUD操作与数据库集成示例的详细内容,更多请关注乐哥常识网其他相关文章! 相关标签: mysql word git go github golang go语言高效应用 ai 持久化存储 golang sql mysql gin 封装结构体接口删除数据库数据库大家都看: Go语言与MySQL:正确的二进制IP地址数据 Go语言与MySQL:存储二进制IP地址到BINARY字段如何在Go语言中传输二进制数据存储到MySQL的BINARY列在Golang中执行MySQL高效跨数据库JOIN操作 Go语言ORM框架选型指南:连接MySQL数据库并模型生成代码
