#include <stdio.h> #include <stdlib.h> #include <string.h>

#define MAX_SIGNALS 100 //最大信号数量

//信号结构体 typedef struct signal { int id; //信号编号 char name[20]; //信号名称 char description[100]; //信号描述 } Signal;

Signal signals[MAX_SIGNALS]; //信号数组 int numSignals = 0; //当前信号数量

//函数声明 void addSignal(); void findSignal(); void deleteSignal(); void modifySignal(); void saveToFile(); void exitProgram();

int main() { int choice;

do {
    //显示操作界面
    printf("\n请选择您要进行的操作:\n");
    printf("1. 添加信号\n");
    printf("2. 查找信号\n");
    printf("3. 删除信号\n");
    printf("4. 修改信号\n");
    printf("5. 保存到文件\n");
    printf("6. 退出程序\n");

    //读取用户选择
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            addSignal();
            break;
        case 2:
            findSignal();
            break;
        case 3:
            deleteSignal();
            break;
        case 4:
            modifySignal();
            break;
        case 5:
            saveToFile();
            break;
        case 6:
            exitProgram();
            break;
        default:
            printf("输入有误,请重新选择。\n");
            break;
    }
} while (choice != 6);

return 0;

}

//添加信号 void addSignal() { Signal newSignal;

//读取信号信息
printf("请输入信号编号:");
scanf("%d", &newSignal.id);
printf("请输入信号名称:");
scanf("%s", newSignal.name);
printf("请输入信号描述:");
scanf("%s", newSignal.description);

//将信号添加到数组中
signals[numSignals] = newSignal;
numSignals++;

printf("信号添加成功!\n");

}

//查找信号 void findSignal() { int id, i;

//读取要查找的信号编号
printf("请输入要查找的信号编号:");
scanf("%d", &id);

//在数组中查找信号
for (i = 0; i < numSignals; i++) {
    if (signals[i].id == id) {
        //找到信号,输出信息并返回
        printf("信号编号:%d\n", signals[i].id);
        printf("信号名称:%s\n", signals[i].name);
        printf("信号描述:%s\n", signals[i].description);
        return;
    }
}

//未找到信号,输出提示信息
printf("未找到信号编号为%d的信号。\n", id);

}

//删除信号 void deleteSignal() { int id, i;

//读取要删除的信号编号
printf("请输入要删除的信号编号:");
scanf("%d", &id);

//在数组中查找信号
for (i = 0; i < numSignals; i++) {
    if (signals[i].id == id) {
        //找到信号,将后面的信号向前移动一个位置,覆盖要删除的信号
        memmove(&signals[i], &signals[i+1], (numSignals-i-1)*sizeof(Signal));
        numSignals--;
        printf("信号删除成功!\n");
        return;
    }
}

//未找到信号,输出提示信息
printf("未找到信号编号为%d的信号。\n", id);

}

//修改信号 void modifySignal() { int id, i; char newName[20], newDescription[100];

//读取要修改的信号编号
printf("请输入要修改的信号编号:");
scanf("%d", &id);

//在数组中查找信号
for (i = 0; i < numSignals; i++) {
    if (signals[i].id == id) {
        //找到信号,读取新的信号信息
        printf("请输入新的信号名称:");
        scanf("%s", newName);
        printf("请输入新的信号描述:");
        scanf("%s", newDescription);

        //更新信号信息
        strcpy(signals[i].name, newName);
        strcpy(signals[i].description, newDescription);

        printf("信号修改成功!\n");
        return;
    }
}

//未找到信号,输出提示信息
printf("未找到信号编号为%d的信号。\n", id);

}

//保存到文件 void saveToFile() { FILE *file; int i;

//打开文件
file = fopen("signals.txt", "w");
if (file == NULL) {
    printf("文件打开失败!\n");
    return;
}

//将信号信息写入文件
for (i = 0; i < numSignals; i++) {
    fprintf(file, "%d,%s,%s\n", signals[i].id, signals[i].name, signals[i].description);
}

//关闭文件
fclose(file);

printf("信号信息已保存到文件signals.txt中!\n");

}

//退出程序 void exitProgram() { printf("欢迎再次使用本系统!\n"); }

本程序提供了基本的操作界面,用户可以根据提示输入操作项,调用对应函数完成系统提供的管理功能。用户可以添加信号的基本信息,查找信号信息,删除信号信息,修改信号信息,并可以将信号信息存储到文本文件中。用户选择退出程序后,程序会输出欢迎信息并结束运行。

未来可以继续完善该程序,比如增加信号分类、按照信号名称排序、支持多种文件格式等功能。同时,可以考虑使用GUI界面替代控制台界面,提高用户体验。


原文地址: https://www.cveoy.top/t/topic/oKYB 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录