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");
}
该系统使用一个名为Signal的结构体来存储每个信号的信息,包括信号编号、名称和描述。程序通过一个数组来保存所有信号的信息。用户可以通过菜单选择添加、查找、删除、修改和保存信号。
系统功能:
- 添加信号: 允许用户输入新的信号编号、名称和描述,并将信息添加到信号数组中。
- 查找信号: 允许用户输入信号编号,并在数组中查找该信号,并输出其名称和描述。
- 删除信号: 允许用户输入信号编号,并从数组中删除该信号。
- 修改信号: 允许用户输入信号编号,并修改该信号的名称和描述。
- 保存到文件: 将当前所有信号的信息保存到一个名为
signals.txt的文件中。 - 退出程序: 退出程序并显示欢迎信息。
使用方法:
- 编译并运行程序。
- 选择菜单中的选项来执行相应的操作。
注意:
- 信号编号必须是唯一的。
- 保存到文件的操作会覆盖现有的
signals.txt文件。 - 程序使用
memmove函数来移动数组元素,确保数据安全。
该系统提供了一个简单的信号管理功能,用户可以根据自己的需要进行扩展和改进。例如,可以添加更多功能,例如显示所有信号信息、根据名称或描述查找信号等。
希望这个程序能够帮助您更好地理解C语言编程和数据管理。
原文地址: https://www.cveoy.top/t/topic/oRiG 著作权归作者所有。请勿转载和采集!