zl程序教程

您现在的位置是:首页 >  后端

当前栏目

go语言制作简单图书管理系统

Go管理系统语言 简单 制作 图书
2023-09-14 09:14:23 时间

go语言制作简单图书管理系统

首先没有编译器的可以通过这个网址进行敲代码:Lightly

题目要求

简单的 Go 语言图书管理系统的示例代码,包括添加图书、删除图书、查找图书和显示所有图书的功能。

代码讲解

基础部分

  1. 首先,我们定义了一个名为 book 的结构体类型,包含 id、title 和 author 三个字段。其中,id 表示图书编号,title 表示图书标题,author 表示图书作者。
type book struct {
    id     int
    title  string
    author string
}
  1. 然后,我们使用 map 来存储所有图书,key 为图书编号(int 类型),value 为 book 类型。
var books = make(map[int]book)
  1. 接着,我们定义了一个 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()
}

运行结果:
在这里插入图片描述