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() }
运行结果: