编辑代码

#include <stdio.h>
#include <stdlib.h>//stdlib.h定义了四个变量类型、一些宏和各种通用工具函数
#include <string.h>//string.h表示包含字符串处理函数的头文件
// 定义信号结构体
typedef struct 
{
    char name[30];// 信号名称(不超过30个字符)
    char type[20];// 信号类型(不超过20个字符)
    double frequency;//信号频率
    int id; // 信号编号
    float value; // 信号值
} Signal;
// 定义全局变量
int num_signals = 0;// 当前已存储的信号数量
Signal signals[100];// 最多存储100个信号
// 添加信号
void add_signal() 
{
    Signal new_signal;
    printf("请输入信号的名称:");
    scanf("%s", new_signal.name);
    printf("请输入信号的类型:");
    scanf("%s", new_signal.type);
    printf("请输入信号的频率:");
    scanf("%lf", &new_signal.frequency);
    printf("请输入信号编号:");
    scanf("%d", &new_signal.id);
    printf("请输入信号值:");
    scanf("%f", &new_signal.value);
    signals[num_signals] = new_signal;// 将新信号信息添加到信号列表中
    num_signals++;
    printf("添加信号信息成功!\n\n");
}
// 查找信号
void find_signal() 
{
    char name[30];
    printf("请输入要查找的信号名称:");
    scanf("%s", name);
    for (int i = 0; i < num_signals; i++)
     {
        if (strcmp(signals[i].name, name) == 0) 
        {
            printf("查找成功!\n");
            printf("信号名称:%s\n", signals[i].name);
            printf("信号类型:%s\n", signals[i].type);
            printf("信号频率:%lf\n", signals[i].frequency);
            printf("信号编号:%d\n", signals[i].id);
            printf("信号值:%f\n\n", signals[i].value);
            return;
        }
    }
    printf("未找到相应编号的信号信息!\n\n");
}
// 删除信号
void delete_signal() 
{
    char name[30];
    printf("请输入要删除的信号名称:");
    scanf("%s", name);
    for (int i = 0; i < num_signals; i++) 
    {
        if (strcmp(signals[i].name, name) == 0) 
        {// 删除信号
            for (int j = i; j < num_signals - 1; j++)
             {// 将要删除的信号信息之后的所有信号往前移动一个位置
                signals[j] = signals[j + 1];
            }
            num_signals--;// 更新信号数量
            printf("删除信号信息成功!\n\n");
            return;
        }
    }
    printf("未找到相应编号的信号信息!\n\n");
}
// 修改信号
void modify_signal() 
{
    char name[30];
    printf("请输入要修改的信号名称:");
    scanf("%s", name);
    for (int i = 0; i < num_signals; i++) // 遍历信号列表查找相应编号的信号信息
                                          // 记录要修改的信号信息
    {
        if (strcmp(signals[i].name, name) == 0)  // 修改信号信息
        {
            printf("请输入修改后的信号类型:");
            scanf("%s", signals[i].type);
            printf("请输入修改后的信号频率:");
            scanf("%lf", &signals[i].frequency);
            printf("请输入修改后的信号编号:");
            scanf("%d", &signals[i].id);
            printf("请输入修改后的信号值:");
            scanf("%f\n\n", &signals[i].value);
            printf("修改信号信息成功!\n\n");
            return;
        }
    }
    printf("未找到相应编号的信号信息!\n\n");
}
// 保存信号到文件
void save_signals() 
{
    FILE* fp = fopen("signals.txt", "w");
    if (fp == NULL) 
    {
        printf("保存失败!\n\n");
        return;
    }
    for (int i = 0; i < num_signals; i++)  // 将信号信息逐行写入文件
     {
        fprintf(fp, "信号名称:%s\n", signals[i].name);
        fprintf(fp, "信号类型:%s\n", signals[i].type);
        fprintf(fp, "信号频率:%lf\n", signals[i].frequency);
        fprintf(fp, "信号编号:%d\n", signals[i].id);
        fprintf(fp, "信号值:%f\n\n", signals[i].value);
    }
    fclose(fp);
    printf("信号保存成功!\n\n");
}
// 主函数
int main() 
{
    int option;
    while (1)
    {
        printf("欢迎使用信号管理系统!请选择要进行的操作:\n");
        printf("1. 添加信号信息\n");
        printf("2. 查找信号信息\n");
        printf("3. 删除信号信息\n");
        printf("4. 修改信号信息\n");
        printf("5. 保存信号信息\n");
        printf("6. 退出系统\n");
        scanf("%d", &option);
        switch (option) {
            case 1:
                add_signal();
                break;
            case 2:
                find_signal();
                break;
            case 3:
                delete_signal();
                break;
            case 4:
                modify_signal();
                break;
            case 5:
                save_signals();
                break;
            case 6:
                printf("感谢使用信号管理系统,再见!\n");
                return 0;
            default:
                printf("请输入正确的操作选项!\n\n");
                break;
        }
    }
}