C语言实现天气信息管理系统

C语言实现天气信息管理系统攻略

系统需求

天气信息管理系统需要实现以下功能:

  • 添加城市天气信息
  • 显示城市天气信息
  • 修改城市天气信息
  • 删除城市天气信息
  • 保存天气信息到文件
  • 从文件中读取天气信息

实现步骤

步骤一:定义结构体

首先,需要定义一个结构体来存储城市天气信息。

typedef struct {
    char city[20];
    int max_temperature;
    int min_temperature;
    float humidity;
    char weather[20];
} Weather;

步骤二:添加城市天气信息

添加城市天气信息的代码如下:

void add_weather_info(Weather weathers[], int *count)
{
    Weather new_info;
    printf("请输入城市名称:");
    scanf("%s", new_info.city);
    printf("请输入最高气温:");
    scanf("%d", &new_info.max_temperature);
    printf("请输入最低气温:");
    scanf("%d", &new_info.min_temperature);
    printf("请输入湿度:");
    scanf("%f", &new_info.humidity);
    printf("请输入天气情况:");
    scanf("%s", new_info.weather);
    weathers[*count] = new_info;
    (*count)++;
}

步骤三:显示城市天气信息

显示城市天气信息的代码如下:

void show_weather_info(Weather weathers[], int count)
{
    printf("城市\t最高气温\t最低气温\t湿度\t天气情况\n");
    for (int i = 0; i < count; i++) {
        printf("%s\t", weathers[i].city);
        printf("%d\t", weathers[i].max_temperature);
        printf("%d\t", weathers[i].min_temperature);
        printf("%.2f\t", weathers[i].humidity);
        printf("%s\n", weathers[i].weather);
    }
}

步骤四:修改城市天气信息

修改城市天气信息的代码如下:

void modify_weather_info(Weather weathers[], int count)
{
    char city[20];
    printf("请输入要修改的城市名称:");
    scanf("%s", city);
    for (int i = 0; i < count; i++) {
        if (strcmp(city, weathers[i].city) == 0) {
            printf("请输入最高气温:");
            scanf("%d", &weathers[i].max_temperature);
            printf("请输入最低气温:");
            scanf("%d", &weathers[i].min_temperature);
            printf("请输入湿度:");
            scanf("%f", &weathers[i].humidity);
            printf("请输入天气情况:");
            scanf("%s", weathers[i].weather);
            printf("城市:%s 的天气信息已修改。\n", city);
            return;
        }
    }
    printf("未找到城市:%s 的天气信息。\n", city);
}

步骤五:删除城市天气信息

删除城市天气信息的代码如下:

void delete_weather_info(Weather weathers[], int *count)
{
    char city[20];
    printf("请输入要删除的城市名称:");
    scanf("%s", city);
    for (int i = 0; i < *count; i++) {
        if (strcmp(city, weathers[i].city) == 0) {
            for (int j = i + 1; j < *count; j++) {
                weathers[j - 1] = weathers[j];
            }
            (*count)--;
            printf("城市:%s 的天气信息已删除。\n", city);
            return;
        }
    }
    printf("未找到城市:%s 的天气信息。\n", city);
}

步骤六:保存天气信息到文件

保存天气信息到文件的代码如下:

void save_weather_info_to_file(Weather weathers[], int count)
{
    FILE *f;
    f = fopen("weather_info.txt", "w");
    for (int i = 0; i < count; i++) {
        fprintf(f, "%s,%d,%d,%.2f,%s\n", weathers[i].city, weathers[i].max_temperature, weathers[i].min_temperature, weathers[i].humidity, weathers[i].weather);
    }
    fclose(f);
    printf("天气信息已保存到文件 weather_info.txt 中。\n");
}

步骤七:从文件中读取天气信息

从文件中读取天气信息的代码如下:

int read_weather_info_from_file(Weather weathers[])
{
    FILE *f;
    f = fopen("weather_info.txt", "r");
    if (f == NULL) {
        return 0;
    }
    char line[100], city[20], weather[20];
    int max_temperature, min_temperature;
    float humidity;
    int count = 0;
    while (fgets(line, 100, f) != NULL) {
        sscanf(line, "%[^,],%d,%d,%f,%[^\n]", city, &max_temperature, &min_temperature, &humidity, weather);
        strcpy(weathers[count].city, city);
        weathers[count].max_temperature = max_temperature;
        weathers[count].min_temperature = min_temperature;
        weathers[count].humidity = humidity;
        strcpy(weathers[count].weather, weather);
        count++;
    }
    fclose(f);
    return count;
}

示例说明

假设有如下天气信息:

城市    最高气温    最低气温    湿度    天气情况
北京    36        25        50%    晴
上海    32        28        70%    多云
广州    33        27        80%    雷阵雨

示例一:添加一条城市天气信息

选择菜单中的 “1. 添加天气信息”,按提示输入信息:

请输入城市名称:深圳
请输入最高气温:36
请输入最低气温:28
请输入湿度:60
请输入天气情况:多云转雷阵雨

添加成功之后,重新选择菜单中的 “2. 显示天气信息”,可看到新增的信息:

城市    最高气温    最低气温    湿度    天气情况
北京    36        25        50%    晴
上海    32        28        70%    多云
广州    33        27        80%    雷阵雨
深圳    36        28        60%    多云转雷阵雨

示例二:从文件中读取天气信息

先将上面的天气信息保存到文件中,然后选择菜单中的 “6. 保存天气信息到文件”,保存成功后选择菜单中的 “7. 从文件中读取天气信息”:

天气信息已保存到文件 weather_info.txt 中。
城市    最高气温    最低气温    湿度    天气情况
北京    36        25        50%    晴
上海    32        28        70%    多云
广州    33        27        80%    雷阵雨
深圳    36        28        60%    多云转雷阵雨

注意:要读取文件中的天气信息,需要在程序运行前确保有 weather_info.txt 文件,并且文件内容符合保存文件的格式。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现天气信息管理系统 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • C++程序操作文件对话框的方法

    现在我将为大家介绍一下在C++程序中操作文件对话框的方法。操作文件对话框是一个常用的功能,它可以帮助我们在程序中以交互式的方式选择文件并进行相关操作。下面是该攻略的详细步骤: 1. 确定操作系统类型 在编写代码之前,我们需要确定我们所使用的操作系统类型,不同的操作系统可能具有不同的文件对话框API接口。下面是Windows和macOS操作系统下涉及到的API…

    C 2023年5月23日
    00
  • PHP的JSON封装、转变及输出操作示例

    针对PHP的JSON封装、转变及输出操作,下面给出完整的攻略。 1. JSON简介 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于阅读和编写。它是由Douglas Crockford发明的,目前已成为互联网数据交换中十分流行的标准格式之一。JSON格式有两种数据结构,分别是对象和数组。 2. PHP中JSON…

    C 2023年5月23日
    00
  • Cs全面介绍与问题解答

    Cs全面介绍与问题解答 什么是Cs? Cs是Counter-Strike的缩写,是一款经典的多人游戏。游戏的核心玩法包括恐怖分子与反恐精英之间的对抗。两支队伍都会获得特定的任务,如拆弹、营救人质等。游戏时间较短,每局游戏通常为1分钟到3分钟。 Cs的游戏模式 团队对抗:恐怖分子与反恐精英之间的经典对抗。 成人礼:一名护送者护送一名新兵从一个地点到另一个地点,…

    C 2023年5月22日
    00
  • 非常好的12道shell命令经典面试问题

    整个攻略分为以下几个部分: 介绍12个经典的面试问题 每个问题的解答及解析 给出示例说明 1. 介绍12个经典的面试问题 以下是12个经典的面试问题: 如何显示当前的工作目录? 如何检查一个命令是否在系统中存在? 如何列出目录中所有文件的名称? 如何列出一个文件的前10行? 如何查找文件中的特定文本? 如何在Linux上安装软件包? 如何查看一个文件的大小?…

    C 2023年5月22日
    00
  • PHP JSON格式的中文显示问题解决方法

    PHP 中 JSON 格式对于中文字符的处理方式存在一些问题,下面提供一种解决方法。 问题分析 在使用 PHP 中的 json_encode 函数将一个数组或对象转换为 JSON 字符串时,如果数组或对象中含有中文字符,那么生成的 JSON 字符串中这些中文字符会被转义成 Unicode 编码形式。 例如,以下数组: $data = [ "name…

    C 2023年5月23日
    00
  • C语言传递需要初始化的字符串

    首先,需要理解的是,在C语言中,字符串实际上是以字符数组的形式存储的。而字符数组除了可以通过静态初始化初始化外,也可以通过动态初始化来进行初始化。 而如果需要将一个需要初始化的字符串传递给函数,一般情况下需要使用动态初始化的方式。具体而言,需要使用字符数组变量来存储字符串,并在使用的时候将该字符数组变量作为函数参数传递。 以下是一个简单的示例,展示如何使用字…

    C 2023年5月9日
    00
  • C++的静态类型检查详解

    C++的静态类型检查详解 C++是一门静态类型的编程语言,其中的静态类型检查是C++编译器能够在编译期间确定程序中变量类型的能力。这种特性提供了许多优点,例如类型安全和代码可读性,同时也有一些限制。 静态类型检查是什么 静态类型检查是指编译器在编译程序时,通过对程序的语法分析和类型推导,能够确定每个变量的类型和类型之间的关系。根据类型检查结果,编译器可以在编…

    C 2023年5月22日
    00
  • 浅谈C++的几种从键盘输入方式

    浅谈C++的几种从键盘输入方式 在C++中,从键盘获取用户输入是很常见的操作。本文将介绍几种常用的获取输入的方式。 1. cin cin是iostream库提供的标准输入流对象,它支持多种数据类型的输入。使用cin获取用户输入的方法是使用>>运算符。以下是一个简单的示例代码: #include <iostream> using nam…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部