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

#define MAX_DEVICE 10 // 最大设备数量 #define MAX_SIGNAL 10 // 最大信号数量

// 信号结构体 typedef struct { int num; // 信号编号 int value; // 信号值 } Signal;

// 设备结构体 typedef struct { int num; // 设备编号 int signal_count; // 信号数量 Signal signals[MAX_SIGNAL]; // 信号数组 } Device;

// 全局变量 Device devices[MAX_DEVICE]; // 设备数组 int device_count = 0; // 设备数量

// 显示菜单 void show_menu() { printf("1. 添加设备\n"); printf("2. 删除设备\n"); printf("3. 显示所有设备\n"); printf("4. 添加信号\n"); printf("5. 删除信号\n"); printf("6. 显示设备信号\n"); printf("7. 统计信号\n"); printf("0. 退出\n"); }

// 添加设备 void add_device() { printf("请输入设备编号:"); int num; scanf("%d", &num);

// 判断设备是否已存在
for (int i = 0; i < device_count; i++) {
    if (devices[i].num == num) {
        printf("设备已存在!\n");
        return;
    }
}

// 添加设备
devices[device_count].num = num;
devices[device_count].signal_count = 0;
device_count++;

printf("设备添加成功!\n");

}

// 删除设备 void remove_device() { printf("请输入设备编号:"); int num; scanf("%d", &num);

// 查找设备
int index = -1;
for (int i = 0; i < device_count; i++) {
    if (devices[i].num == num) {
        index = i;
        break;
    }
}

// 判断设备是否存在
if (index == -1) {
    printf("设备不存在!\n");
    return;
}

// 删除设备
for (int i = index; i < device_count - 1; i++) {
    devices[i] = devices[i + 1];
}
device_count--;

printf("设备删除成功!\n");

}

// 显示所有设备 void show_devices() { printf("设备编号\t信号数量\n"); for (int i = 0; i < device_count; i++) { printf("%d\t\t%d\n", devices[i].num, devices[i].signal_count); } }

// 获取设备 Device *get_device(int num) { for (int i = 0; i < device_count; i++) { if (devices[i].num == num) { return &devices[i]; } } return NULL; }

// 添加信号 void add_signal() { printf("请输入设备编号:"); int num; scanf("%d", &num);

// 获取设备
Device *device = get_device(num);
if (device == NULL) {
    printf("设备不存在!\n");
    return;
}

// 判断信号数量是否已满
if (device->signal_count >= MAX_SIGNAL) {
    printf("信号数量已满!\n");
    return;
}

// 添加信号
printf("请输入信号编号:");
int signal_num;
scanf("%d", &signal_num);
printf("请输入信号值:");
int signal_value;
scanf("%d", &signal_value);

device->signals[device->signal_count].num = signal_num;
device->signals[device->signal_count].value = signal_value;
device->signal_count++;

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

}

// 删除信号 void remove_signal() { printf("请输入设备编号:"); int num; scanf("%d", &num);

// 获取设备
Device *device = get_device(num);
if (device == NULL) {
    printf("设备不存在!\n");
    return;
}

printf("请输入信号编号:");
int signal_num;
scanf("%d", &signal_num);

// 查找信号
int index = -1;
for (int i = 0; i < device->signal_count; i++) {
    if (device->signals[i].num == signal_num) {
        index = i;
        break;
    }
}

// 判断信号是否存在
if (index == -1) {
    printf("信号不存在!\n");
    return;
}

// 删除信号
for (int i = index; i < device->signal_count - 1; i++) {
    device->signals[i] = device->signals[i + 1];
}
device->signal_count--;

printf("信号删除成功!\n");

}

// 显示设备信号 void show_signals() { printf("请输入设备编号:"); int num; scanf("%d", &num);

// 获取设备
Device *device = get_device(num);
if (device == NULL) {
    printf("设备不存在!\n");
    return;
}

printf("信号编号\t信号值\n");
for (int i = 0; i < device->signal_count; i++) {
    printf("%d\t\t%d\n", device->signals[i].num, device->signals[i].value);
}

}

// 统计信号 void count_signal() { printf("请输入设备编号:"); int num; scanf("%d", &num);

// 获取设备
Device *device = get_device(num);
if (device == NULL) {
    printf("设备不存在!\n");
    return;
}

printf("请输入信号编号:");
int signal_num;
scanf("%d", &signal_num);

// 查找信号
int index = -1;
for (int i = 0; i < device->signal_count; i++) {
    if (device->signals[i].num == signal_num) {
        index = i;
        break;
    }
}

// 判断信号是否存在
if (index == -1) {
    printf("信号不存在!\n");
    return;
}

printf("请选择统计量:\n");
printf("1. 信号最大值\n");
printf("2. 信号最小值\n");
printf("3. 信号平均值\n");
printf("4. 信号能量\n");
int choice;
scanf("%d", &choice);

// 统计信号
Signal *signal = &device->signals[index];
switch (choice) {
    case 1:
        printf("信号最大值:%d\n", signal->value);
        break;
    case 2:
        printf("信号最小值:%d\n", signal->value);
        break;
    case 3: {
        int sum = 0;
        for (int i = 0; i < device->signal_count; i++) {
            sum += device->signals[i].value;
        }
        printf("信号平均值:%d\n", sum / device->signal_count);
        break;
    }
    case 4:
        printf("信号能量:%d\n", signal->value * signal->value);
        break;
    default:
        printf("无效的选项!\n");
        break;
}

}

int main() { while (1) { show_menu();

    int choice;
    scanf("%d", &choice);

    switch (choice) {
        case 1:
            add_device();
            break;
        case 2:
            remove_device();
            break;
        case 3:
            show_devices();
            break;
        case 4:
            add_signal();
            break;
        case 5:
            remove_signal();
            break;
        case 6:
            show_signals();
            break;
        case 7:
            count_signal();
            break;
        case 0:
            printf("退出程序!\n");
            exit(0);
        default:
            printf("无效的选项!\n");
            break;
    }
}

}

展望总结:

本系统是一个简单的信号统计管理系统,可以实现对不同的信号接收设备所接收的信号进行管理及统计。但是,本系统还有很多不足之处,需要进一步完善和改进。

首先,本系统的数据存储方式比较简单,只是使用了数组来存储设备和信号的信息。在实际应用中,需要考虑更加高效、稳定和安全的数据存储方式,如数据库等。

其次,本系统的操作界面比较简单,只提供了基本的菜单功能。在实际应用中,需要考虑用户的使用习惯和需求,提供更加友好、实用和智能的操作界面。

最后,本系统的功能比较简单,只提供了基本的设备和信号管理、统计等功能。在实际应用中,需要考虑更加丰富、多样和个性化的功能需求,以满足不同用户的需求。

C语言实现简易信号统计系统

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

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