C语言信号管理系统

该程序使用C语言实现了一个简单的信号管理系统,用户可以通过该系统对信号进行添加、查找、删除、修改等操作,并可以将信号信息保存到文件中。

代码实现

#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");
}

函数说明

  1. addSignal():添加信号,读取信号信息并将其添加到信号数组中。
  2. findSignal():查找信号,读取要查找的信号编号,然后在信号数组中查找该信号并输出其信息。
  3. deleteSignal():删除信号,读取要删除的信号编号,然后在信号数组中查找该信号并将其删除。
  4. modifySignal():修改信号,读取要修改的信号编号,然后在信号数组中查找该信号并读取新的信号信息进行修改。
  5. saveToFile():将信号信息保存到文件中,打开文件并将信号数组中的信息写入文件中。
  6. exitProgram():退出程序,输出欢迎信息。

使用方法

  1. 编译运行代码。
  2. 在程序运行时,根据提示选择要进行的操作。
  3. 输入相关信息,即可完成相应的操作。

注意事项

  • 程序中使用了 memmove() 函数来删除信号,该函数可以将内存块中的数据移动到另一个位置,从而避免了在删除信号时需要将后面的信号都向后移动一个位置的问题。
  • 程序中使用了 fopen() 函数打开文件,fprintf() 函数将信号信息写入文件,fclose() 函数关闭文件。
  • 程序中使用了 MAX_SIGNALS 常量来定义信号数组的大小,用户可以根据需要修改该常量。

扩展

  • 可以添加对信号进行排序的功能。
  • 可以添加对信号信息进行搜索的功能。
  • 可以添加对信号信息进行统计的功能。
  • 可以将信号信息保存到数据库中。
C语言信号管理系统:添加、查找、删除、修改、保存

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

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