「Mac玩转仓颉内测版9」入门篇9 - 综合案例篇

2024-11-13 19:55:46
32次阅读
0个评论
最后修改时间:2024-11-14 20:44:58

本篇结合前面学习的Cangjie语法、变量命名规则、控制结构以及函数与方法,通过一个综合案例演示如何将这些知识应用到实际编程项目中。通过该案例,可以更好地理解如何使用Cangjie编写结构化、清晰且高效的程序。

关键词
  • 综合案例
  • 控制结构
  • 函数与方法
  • 变量命名
  • 实践应用

一、案例背景

本次综合案例实现一个简单的图书管理系统,包含以下功能:

  1. 列出所有书籍及其相关信息(如书名、作者、出版年份)。
  2. 根据书名或作者搜索书籍。
  3. 添加新书到系统中。

通过该案例,展示如何使用控制结构、循环、函数与方法来组织和处理数据。


二、代码结构概述

案例的实现分为以下几个部分:

  1. 数据结构:定义存储书籍信息的数据结构,包含书名、作者、出版年份。
  2. 函数实现
    • 列出所有书籍信息。
    • 根据书名或作者搜索书籍。
    • 添加新书到系统中。
  3. 测试函数:直接调用各个功能函数并输出结果。

三、数据结构定义

首先,使用一个包含书籍信息的列表来存储图书数据。每本书包含书名、作者和出版年份。

// 图书数据列表
var books = [
    ("1984", "George Orwell", 1949),
    ("To Kill a Mockingbird", "Harper Lee", 1960),
    ("The Great Gatsby", "F. Scott Fitzgerald", 1925)
]

四、功能实现

4.1 列出所有书籍

定义一个函数来列出所有存储的书籍信息,包括书名、作者和出版年份。

func listBooks(): Unit {
    for ((title, author, year) in books) {
        println("书名: ${title}, 作者: ${author}, 出版年份: ${year}")
    }
}
4.2 搜索书籍

定义一个函数,根据书名或作者进行搜索。用户可以通过输入关键词找到匹配的书籍。

func searchBook(keyword: String): Unit {
    var found = false
    for ((title, author, year) in books) {
        if (title.contains(keyword) || author.contains(keyword)) {
            println("找到书籍: 书名: ${title}, 作者: ${author}, 出版年份: ${year}")
            found = true
        }
    }
    if (!found) {
        println("未找到相关书籍")
    }
}
4.3 添加新书

定义一个函数,允许输入新书的信息并将其添加到系统中。

func addBook(title: String, author: String, year: Int): Unit {
    let newBook = (title, author, year)
    var newBooks = books.concat(newBook)
    books = newBooks
    println("成功添加新书: ${title}")
}

五、测试函数

为了方便测试,定义一个函数来调用所有的功能函数并打印输出结果。通过此函数,可以直接测试每个功能的实现,而无需进行系统交互。

// 测试函数
func test(): Unit {
    // 列出所有书籍
    println("测试列出所有书籍")
    listBooks()

    // 搜索书籍
    println("\n测试搜索书籍 '1984'")
    searchBook("1984")

    println("\n测试搜索书籍 '不存在的书'")
    searchBook("不存在的书")

    // 添加新书
    println("\n测试添加新书 'Pride and Prejudice'")
    addBook("Pride and Prejudice", "Jane Austen", 1813)

    // 列出所有书籍(包含新书)
    println("\n再次列出所有书籍(包含新书)")
    listBooks()
}

main(): Int64 {
    // 执行测试
    test()

    return 0
}

在测试函数 test 中,依次调用 listBookssearchBookaddBook 函数,以展示各个功能的实现效果。此函数将输出所有的操作结果,方便进行功能测试和验证。


六、示例执行

运行测试函数时,将依次执行列出书籍、搜索书籍和添加新书的功能,输出结果如下:

示例输出:

测试列出所有书籍
书名: 1984, 作者: George Orwell, 出版年份: 1949
书名: To Kill a Mockingbird, 作者: Harper Lee, 出版年份: 1960
书名: The Great Gatsby, 作者: F. Scott Fitzgerald, 出版年份: 1925

测试搜索书籍 '1984'
找到书籍: 书名: 1984, 作者: George Orwell, 出版年份: 1949

测试搜索书籍 '不存在的书'
未找到相关书籍

测试添加新书 'Pride and Prejudice'
成功添加新书: Pride and Prejudice

再次列出所有书籍(包含新书)
书名: 1984, 作者: George Orwell, 出版年份: 1949
书名: To Kill a Mockingbird, 作者: Harper Lee, 出版年份: 1960
书名: The Great Gatsby, 作者: F. Scott Fitzgerald, 出版年份: 1925
书名: Pride and Prejudice, 作者: Jane Austen, 出版年份: 1813

小结

通过本篇综合案例,展示了如何将Cangjie中的控制结构、循环表达式、函数与方法相结合,实现一个小型的图书管理系统。该案例巩固了前面学习的知识,并展示了如何在实际项目中应用这些概念。


下篇预告

下一篇将探讨如何通过PTA刷题提高Cangjie的编程技巧,敬请期待 「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World


上一篇:「Mac玩转仓颉内测版8」入门篇8 - Cangjie函数与方法

下一篇:「Mac玩转仓颉内测版10」PTA刷题篇1 - L1-001 Hello World


作者:SoraLuna 链接:https://www.nutpi.net/ 來源:坚果派 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


收藏00

登录 后评论。没有帐号? 注册 一个。