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程序结构的入门。 C程序的基本结构 一个C程序的基本结构包括以下几个部分: // 包含头文件 #include <stdio.h> // 定义main函数 int main() { // 程序主体部分,包括声明变量、打印输出等 printf("Hello, World!\n"); // 返回0结束程序 re…

    C 2023年5月30日
    00
  • C语言函数返回指针

    C语言中的函数可以返回不同的数据类型,包括指针类型。函数返回指针类型可以让我们更加灵活地操作内存,提高代码的重用性和可维护性。 在函数定义的时候,我们需要用指针类型作为返回值类型,并在函数体中返回指向目标数据的指针。以下是函数返回指针的基本语法: int* myFunction() { int* ptr = malloc(sizeof(int)); *ptr…

    C 2023年5月9日
    00
  • C++实现简单学生信息管理系统

    以下是一份基本的“C++实现简单学生信息管理系统”的攻略: 步骤1:确定基本需求 在设计学生信息管理系统之前,我们应该先确定需要什么功能。这是你应该问自己的问题: 是一个控制台程序还是有图形化界面? 需要记录哪些学生信息(例如姓名、年龄、性别、学号、课程等级、分数)? 可以输入、输出和编辑吗? 是否可以按照特定的标准对学生进行排序和筛选? 可以进行计算吗,例…

    C 2023年5月23日
    00
  • C语言实现AT指令ASCII码的拼接处理流程

    C语言实现AT指令ASCII码的拼接处理是一个常见且重要的编程任务。实现这一目标,需要了解AT指令的基本格式和ASCLL码的相关知识,以及C语言字符串操作函数的使用。 以下是C语言实现AT指令ASCII码的拼接处理的完整攻略: 1. 确定AT指令格式 AT指令是一种规范化的命令语言,主要用于移动通信设备和终端设备之间的控制与数据传输。根据AT指令的格式,我们…

    C 2023年5月23日
    00
  • C语言 if语句

    当需要根据特定条件来执行不同的代码时,可以使用 if 语句。在 C 语言中,if 语句的基本语法如下所示: if (condition) { // code to execute if condition is true } else { // code to execute if condition is false } 当 condition 为真时,将…

    C 2023年5月9日
    00
  • Python中json.load()和json.loads()有哪些区别

    当我们使用Python进行处理JSON数据时,常常需要用到json模块中的load()和loads()方法。这两个方法都可以将JSON格式的字符串转化为Python对象,但是具体的使用方法和功能是不同的。 区别1:接收的参数类型不同 json.load()方法是将文件中的JSON格式数据转化为Python对象,即需要传入一个可读文件对象作为参数。例如: im…

    C 2023年5月23日
    00
  • 解决易语言转换到C++ 自定义数据类型

    解决易语言转换到C++ 自定义数据类型 背景 易语言是一种高级编程语言,用户可以使用易语言编程进行二次开发。但是,在某些情况下,用户可能需要将易语言代码转换成C++代码以便更好地运行和使用。 在将易语言代码转换成C++代码时,对于易语言中的自定义数据类型的处理需要格外注意和谨慎。因为C++中的自定义数据类型对应于易语言中的自定义类型,并且两者的内部结构和使用…

    C 2023年5月23日
    00
  • C语言实现进程5状态模型的状态机

    关于“C语言实现进程5状态模型的状态机”的攻略,下面是我整理的一些内容。 状态机介绍 状态机(State Machine)可以将一个系统或者一个对象的现实行为转化为状态表或者状态图的形式,从而利用一定的算法去操作或者分析这个系统/对象。在计算机领域中,状态机通常被用于解决诸如网络协议、编译器、游戏AI等的逻辑控制问题。 在操作系统中,进程的状态机通常被分为5…

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