#include <stdio.h>
#include <stdlib.h>//stdlib.h定义了四个变量类型、一些宏和各种通用工具函数
#include <string.h>//string.h表示包含字符串处理函数的头文件
typedef struct
{
char name[30];
char type[20];
double frequency;
int id;
float value;
} Signal;
int num_signals = 0;
Signal signals[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;
}
}
}