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日

相关文章

  • java 出现NullPointerException的原因及解决办法

    Java出现空指针异常(NullPointerException)的原因及解决办法 在Java编程中,空指针异常是一种常见的错误类型。它通常发生在一个对象上,当试图对一个为null的对象进行操作时,就会抛出空指针异常。本文将分析空指针异常的原因,并给出解决办法。 原因 空指针异常通常发生在以下情况: 操作为null的对象 String str = null;…

    C 2023年5月23日
    00
  • C语言回溯法 实现组合数 从N个数中选择M个数

    下面是C语言回溯法实现组合数从N个数中选择M个数的完整攻略: 核心思路 回溯法是一种经典的问题求解方法,其基本思路是:从一条路径开始,依次尝试每一个分支,递归地进行尝试,直到找到解为止,而如果该路径无解,则回退到上一个路径,继续尝试其他分支。 在利用回溯法解决从N个数中选择M个数的组合数问题时,我们可以将每个数看作一个节点,根据回溯的思想依次尝试每一个节点,…

    C 2023年5月22日
    00
  • GCC 指令详解及动态库、静态库的使用方法

    GCC 指令详解及动态库、静态库的使用方法 GCC 是一个重要的编译器套件,可用于编译包含多种语言的程序。在本文中,我们将深入探讨 GCC 的一些重要指令,并详细介绍动态库和静态库的使用方法,以帮助读者更好地了解和使用 GCC。 GCC 的一些重要指令 编译源代码 GCC 的最常用指令之一就是编译源代码。要编译一个源代码文件,并生成一个可执行文件,可以使用以…

    C 2023年5月23日
    00
  • 在Python 中将类对象序列化为JSON

    序列化(Serialization)指的是将数据结构或对象状态转换为可以存储或传输的格式的过程。其中,将数据转换成JSON格式是常见的序列化方式之一。Python 中提供了通用的序列化模块 json 来实现将数据转换为JSON格式,其中也包括对象的序列化操作。 下面是将 Python 类对象序列化为 JSON 的完整操作步骤: 导入 JSON 模块 json…

    C 2023年5月23日
    00
  • Javascript技术难点之apply,call与this之间的衔接

    JavaScript中的this是编写JavaScript代码时最容易出错的概念之一。它不是指向函数本身,而是指向函数被调用时的当前对象。本文将讨论JavaScript中this的实现方式,以及用JavaScript中的apply和call方法来准确处理this的使用。 基本概念 this:一个特殊的关键字,指向正在执行的函数在哪个对象中被调用; apply…

    C 2023年5月23日
    00
  • C语言scanf()和gets()的区别

    在C语言中,scanf()和gets()都是用于从标准输入流中读取用户输入的函数。它们有一些区别,下面我们来详细讲解它们的区别以及使用攻略。 scanf()和gets()的区别 输入方式不同:scanf()函数是按照指定格式从标准输入流中读取输入数据;而gets()函数则是以换行符为结束标志从标准输入流中读取整行字符串。 安全性不同:gets()函数会读取用…

    C 2023年5月10日
    00
  • 抖音号认证蓝v有啥用?抖音蓝v认证优劣势分析

    抖音号认证蓝v有啥用? 抖音号认证蓝v可获得相应的认证标识,标识用户身份的真实性和权威性,提高用户公信力,也方便用户在大众中脱颖而出。那么抖音蓝v认证具体有哪些优劣势呢?接下来从以下几个方面进行分析。 优势 增强公信力 获得抖音蓝v认证的用户可以通过认证标识证明用户身份的真实性和权威性,这有助于提高用户公信力。 提高曝光率 相对于非认证用户,抖音认证用户具有…

    C 2023年5月22日
    00
  • C语言中static和auto用法详解

    C语言中的static和auto用法详解 在C语言中,我们可以使用static和auto关键字来定义变量。这两种关键字的使用场景是不同的,下面我们将分别进行详细讲解。 auto关键字 auto关键字可以用来定义函数内的局部变量,通过使用auto关键字,编译器会在编译时自动为变量分配存储空间。 下面是一个使用auto关键字的示例: #include<st…

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