go语言制作简单图书管理系统
2023-09-14 09:14:23 时间
go语言制作简单图书管理系统
首先没有编译器的可以通过这个网址进行敲代码:Lightly
题目要求
简单的 Go 语言图书管理系统的示例代码,包括添加图书、删除图书、查找图书和显示所有图书的功能。
代码讲解
基础部分
- 首先,我们定义了一个名为 book 的结构体类型,包含 id、title 和 author 三个字段。其中,id 表示图书编号,title 表示图书标题,author 表示图书作者。
type book struct {
id int
title string
author string
}
- 然后,我们使用 map 来存储所有图书,key 为图书编号(int 类型),value 为 book 类型。
var books = make(map[int]book)
- 接着,我们定义了一个 lastID 变量来记录最后添加的图书编号,初始值为 0。
var lastID = 0
下面,我们实现了四个函数,分别实现添加图书、删除图书、查找图书和显示所有图书的功能。
方法定义
添加图书
addBook 函数可以用来添加一本新图书。它需要传入两个参数:图书标题和图书作者。在函数内部,我们首先增加 lastID 的值并将其赋给新添加的图书的 id 字段,然后将图书信息存储到 books map 中,并输出添加成功的提示信息。
func addBook(title, author string) {
lastID++
books[lastID] = book{id: lastID, title: title, author: author}
fmt.Printf("成功添加图书,编号为 %d\n", lastID)
}
删除图书
deleteBook 函数可以根据图书编号删除一本已有的图书。它需要传入一个参数:要删除的图书编号。在函数内部,我们首先判断该编号对应的图书是否存在于 books map 中,如果存在则从 map 中删除该条数据,并输出删除成功的提示信息;否则,输出图书不存在的提示信息。
func deleteBook(id int) {
if _, ok := books[id]; ok {
delete(books, id)
fmt.Printf("成功删除图书,编号为 %d\n", id)
} else {
fmt.Printf("图书不存在,编号为 %d\n", id)
}
}
查找图书
searchBook 函数可以根据关键字查找所有符合条件的图书并输出结果。它需要传入一个参数:要查找的关键字。在函数内部,我们遍历所有的图书信息,如果图书标题或作者中包含了关键字,则输出该图书的相关信息。
func searchBook(keyword string) {
for _, b := range books {
if b.title == keyword || b.author == keyword {
fmt.Printf("编号:%d,标题:%s,作者:%s\n", b.id, b.title, b.author)
}
}
}
显示所有图书
listBooks 函数用于显示所有的图书信息。在函数内部,我们遍历所有的图书信息,并输出每个图书的相关信息。
func listBooks() {
for _, b := range books {
fmt.Printf("编号:%d,标题:%s,作者:%s\n", b.id, b.title, b.author)
}
}
最后,在主函数中,我们添加了三本图书并输出它们的相关信息。然后,删除了一本编号为 2 的图书,并输出删除结果。接着,使用 searchBook 函数查找了包含 “曹雪芹” 和 “施耐庵” 的图书,并输出结果。最后,使用 listBooks 函数列出了所有的图书信息。
func main() {
addBook("《红楼梦》", "曹雪芹")
addBook("《西游记》", "吴承恩")
addBook("《水浒传》", "施耐庵")
deleteBook(2)
searchBook("曹雪芹")
searchBook("施耐庵")
listBooks()
}
完整代码
package main
import "fmt"
type book struct {
id int
title string
author string
}
var books = make(map[int]book)
var lastID = 0
func addBook(title, author string) {
lastID++
books[lastID] = book{id: lastID, title: title, author: author}
fmt.Printf("成功添加图书,编号为 %d\n", lastID)
}
func deleteBook(id int) {
if _, ok := books[id]; ok {
delete(books, id)
fmt.Printf("成功删除图书,编号为 %d\n", id)
} else {
fmt.Printf("图书不存在,编号为 %d\n", id)
}
}
func searchBook(keyword string) {
for _, b := range books {
if b.title == keyword || b.author == keyword {
fmt.Printf("编号:%d,标题:%s,作者:%s\n", b.id, b.title, b.author)
}
}
}
func listBooks() {
for _, b := range books {
fmt.Printf("编号:%d,标题:%s,作者:%s\n", b.id, b.title, b.author)
}
}
func main() {
addBook("《红楼梦》", "曹雪芹")
addBook("《西游记》", "吴承恩")
addBook("《水浒传》", "施耐庵")
deleteBook(2)
searchBook("曹雪芹")
searchBook("施耐庵")
listBooks()
}
运行结果:
相关文章
- 软件工程实验报告:图书管理系统
- 你有对象类,我有结构体,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang结构体(struct)的使用EP06
- 如何优雅的通过Shell脚本一键部署GO项目到服务器 |Go主题月
- 「Go工具箱」go语言csrf库的使用方式和实现原理
- GoLang10 - Go语言变量作用域
- Go 数据类型篇(八):指针使用入门与 unsafe.Pointer
- 「Go工具箱」推荐一个Google开发的将结构体快速拼接成url查询参数的工具
- 「Go工具箱」一个简单、易用的多错误管理包:go-multierror
- Go-包管理-go build(二)
- Go-包管理-go clean
- Go-连接Redis-学习go-redis包详解编程语言
- 程序Linux上运行Go语言程序的指南(linux运行go)
- 语言结合SQL Server,Go谱写新篇章(sqlserver的go)
- Go语言链接Oracle数据库的实践记录(go 链接oracle)
- 数据库探索Go语言与Oracle数据库的结合(go语言中的oracle)
- 学习Oracle Go了解信息技术世界(oracle go的用法)