C 语言实现简易稀土元素信息管理系统

29 阅读3分钟

稀土元素因其独特的物理和化学性质,在电子、新能源等领域有着广泛应用。本文将通过 C 语言实现一个简易的稀土元素信息管理系统,展示如何用结构体、数组和基本算法来管理稀土元素数据。

系统设计思路

我们将实现以下功能:

  • 定义稀土元素的数据结构(包含名称、符号、原子序数、发现年份等信息)
  • 初始化常见稀土元素数据
  • 实现元素信息的查询(按名称或原子序数)
  • 显示所有稀土元素的基本信息

代码实现

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

// 定义稀土元素结构体
typedef struct {
    char name[20];       // 元素名称
    char symbol[5];      // 元素符号
    int atomic_number;   // 原子序数
    float atomic_weight; // 原子量
    int discovery_year;  // 发现年份
    char usage[100];     // 主要用途
} RareEarthElement;

// 初始化稀土元素数据
void initElements(RareEarthElement elements[], int *count) {
    // 常见稀土元素数据
    RareEarthElement data[] = {
        {"镧", "La", 57, 138.9055, 1839, "用于制造特种合金、催化剂"},
        {"铈", "Ce", 58, 140.116, 1803, "用于玻璃抛光、汽车尾气催化剂"},
        {"镨", "Pr", 59, 140.9077, 1885, "用于制造高强度磁铁、激光材料"},
        {"钕", "Nd", 60, 144.24, 1885, "用于制造强磁铁、激光设备"},
        {"钐", "Sm", 62, 150.36, 1879, "用于制造永久磁铁、核反应堆控制棒"},
        {"铕", "Eu", 63, 151.964, 1896, "用于制造红色荧光粉、激光材料"},
        {"钆", "Gd", 64, 157.25, 1880, "用于核磁共振成像、磁制冷材料"},
        {"镝", "Dy", 66, 162.50, 1886, "用于制造高矫顽力磁铁、激光材料"}
    };
    
    *count = sizeof(data) / sizeof(data[0]);
    memcpy(elements, data, sizeof(data));
}

// 按名称查询元素
RareEarthElement* findByName(RareEarthElement elements[], int count, const char* name) {
    for (int i = 0; i < count; i++) {
        if (strcmp(elements[i].name, name) == 0) {
            return &elements[i];
        }
    }
    return NULL;
}

// 按原子序数查询元素
RareEarthElement* findByAtomicNumber(RareEarthElement elements[], int count, int num) {
    for (int i = 0; i < count; i++) {
        if (elements[i].atomic_number == num) {
            return &elements[i];
        }
    }
    return NULL;
}

// 显示元素详细信息
void printElement(RareEarthElement* elem) {
    if (elem == NULL) {
        printf("未找到该元素信息\n");
        return;
    }
    printf("名称: %s\n", elem->name);
    printf("符号: %s\n", elem->symbol);
    printf("原子序数: %d\n", elem->atomic_number);
    printf("原子量: %.4f\n", elem->atomic_weight);
    printf("发现年份: %d\n", elem->discovery_year);
    printf("主要用途: %s\n\n", elem->usage);
}

// 显示所有元素列表
void printAllElements(RareEarthElement elements[], int count) {
    printf("===== 稀土元素列表 =====\n");
    for (int i = 0; i < count; i++) {
        printf("%d. %s(%s) - 原子序数: %d\n", 
               i+1, 
               elements[i].name, 
               elements[i].symbol, 
               elements[i].atomic_number);
    }
    printf("========================\n\n");
}

int main() {
    RareEarthElement elements[20];  // 存储稀土元素
    int count;                      // 元素数量
    
    // 初始化数据
    initElements(elements, &count);
    
    // 演示功能
    printAllElements(elements, count);
    
    // 查询示例
    printf("查询 '钕' 的信息:\n");
    RareEarthElement* nd = findByName(elements, count, "钕");
    printElement(nd);
    
    printf("查询原子序数为63的元素:\n");
    RareEarthElement* eu = findByAtomicNumber(elements, count, 63);
    printElement(eu);
    
    return 0;
}

代码解析

  1. 数据结构设计:使用RareEarthElement结构体存储稀土元素的关键信息,包括名称、符号、原子序数等核心属性。
  2. 数据初始化initElements函数初始化了 8 种常见稀土元素的数据,实际应用中可以扩展更多元素。
  3. 查询功能:实现了两种查询方式(按名称和按原子序数),通过遍历数组进行匹配查找。
  4. 信息展示:提供了单个元素详细信息和所有元素列表的展示功能,方便用户查看。

扩展方向

该系统可以进一步扩展:

  • 添加元素数据的增删改功能
  • 实现按用途分类查询
  • 将数据存储到文件中,实现持久化管理
  • 增加排序功能(按原子序数或发现年份等)

通过这个简单的例子,我们展示了如何用 C 语言的基础语法来解决实际问题,也让我们对稀土元素有了更系统的认识。稀土作为重要的战略资源,其合理开发和利用对科技发展有着重要意义。