C语言实现学生信息管理系统(多文件)

C语言实现学生信息管理系统(多文件)攻略

1. 项目概述

该项目是一个基于C语言的学生信息管理系统,实现了学生的增删改查等功能,使用了多文件的方式组织代码,提高了代码的可维护性。

2. 实现步骤

2.1 文件结构

首先建立项目文件夹,并在文件夹中创建如下的文件:

  • main.c:包含主函数和系统的核心功能代码;
  • student.c:包含学生信息相关的实现代码;
  • student.h:包含学生信息相关的函数声明。

2.2 编写student.h文件

student.h 中声明学生信息相关的函数,例如:

#ifndef _STUDENT_H
#define _STUDENT_H

struct Student {
    int id;
    char name[20];
    int age;
    char sex[5];
};

extern struct Student students[100];
extern int count;

void addStudent(struct Student stu);
void modifyStudent(int id, struct Student new_stu);
void deleteStudent(int id);
struct Student queryStudent(int id);

#endif

2.3 编写student.c文件

student.c 中实现学生信息相关的函数,例如:

#include "student.h"
#include <stdio.h>

struct Student students[100];
int count = 0;

void addStudent(struct Student stu) {
    students[count++] = stu;
}

void modifyStudent(int id, struct Student new_stu) {
    for (int i = 0; i < count; i++) {
        if (students[i].id == id) {
            students[i] = new_stu;
            return;
        }
    }
    printf("未找到ID为 %d 的学生\n", id);
}

void deleteStudent(int id) {
    for (int i = 0; i < count; i++) {
        if (students[i].id == id) {
            for (int j = i + 1; j < count; j++) {
                students[j - 1] = students[j];
            }
            count--;
            return;
        }
    }
    printf("未找到ID为 %d 的学生\n", id);
}

struct Student queryStudent(int id) {
    for (int i = 0; i < count; i++) {
        if (students[i].id == id) {
            return students[i];
        }
    }
    printf("未找到ID为 %d 的学生\n", id);
    struct Student null_stu = {0, "", 0, ""};
    return null_stu;
}

2.4 编写main.c文件

main.c 中实现主函数和系统的核心功能,例如:

#include <stdio.h>
#include "student.h"

void printMenu() {
    printf("\n");
    printf("1. 添加学生信息\n");
    printf("2. 修改学生信息\n");
    printf("3. 删除学生信息\n");
    printf("4. 查询学生信息\n");
    printf("0. 退出\n");
    printf("\n");
}

void addStudentInfo() {
    struct Student stu;
    printf("请输入学号:");
    scanf("%d", &stu.id);
    printf("请输入姓名:");
    scanf("%s", stu.name);
    printf("请输入年龄:");
    scanf("%d", &stu.age);
    printf("请输入性别:");
    scanf("%s", stu.sex);
    addStudent(stu);
    printf("学生信息添加成功\n");
}

int main() {
    int choice = -1;
    while (choice != 0) {
        printMenu();
        printf("请选择:");
        scanf("%d", &choice);
        switch (choice) {
            case 1: addStudentInfo(); break;
            case 2: /* 修改学生信息 */ break;
            case 3: /* 删除学生信息 */ break;
            case 4: /* 查询学生信息 */ break;
            case 0: printf("退出系统\n"); break;
            default: printf("无效的选择\n"); break;
        }
    }
    return 0;
}

3. 示例说明

3.1 示例一

需求: 添加学生信息。

步骤:

  1. 用户输入学生信息;
  2. 调用 addStudent() 函数添加学生信息;
  3. 显示添加成功消息。

演示:

请输入学号:1001
请输入姓名:张三
请输入年龄:18
请输入性别:男
学生信息添加成功

3.2 示例二

需求: 查询学生信息。

步骤:

  1. 用户输入要查询的学生ID;
  2. 调用 queryStudent() 函数查询学生信息;
  3. 显示查询结果。

演示:

请输入要查询的学生ID:1001

学号:1001
姓名:张三
年龄:18
性别:男

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言实现学生信息管理系统(多文件) - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • MathWorks Matlab R2020a(V9.8)密钥安装+永久激活详细教程(含下载)

    MathWorks Matlab R2020a(V9.8)密钥安装+永久激活详细教程(含下载) 一、下载Matlab R2020a Matlab官网提供了免费试用30天的版本,但如果需要永久性的使用,则需要购买正版。在下载前,请确保你购买了Matlab R2020a正版授权并获得了有效的密钥。 在Matlab官网中下载软件,下载链接为 https://www…

    C 2023年5月22日
    00
  • Windows系统下使用C语言编写单线程的文件备份程序

    下面我详细讲解一下在Windows系统下使用C语言编写单线程的文件备份程序。 准备工作 首先,我们需要在Windows系统下安装MinGW工具链。MinGW是一个基于Windows的开源GCC编译器集合,可用于编译C语言程序。 安装好MinGW后,我们需要设置环境变量,方便我们在终端中使用编译器。在Windows系统中,可通过以下步骤设置环境变量: 右键单击…

    C 2023年5月22日
    00
  • PHP5与MySQL数据库操作常用代码 收集

    接下来我将为你详细讲解“PHP5与MySQL数据库操作常用代码 收集”的完整攻略,内容分为以下几部分: 概述 配置 数据库连接 数据库查询 数据库插入 指定数据库、表格、字段等 示例说明 注意事项 1. 概述 本攻略旨在介绍如何在PHP5中对MySQL数据库进行操作,并提供一些常用代码的收集,方便开发人员快速上手进行开发。MySQL是一款广泛应用于Web应用…

    C 2023年5月23日
    00
  • C语言实现循环链表

    实现循环链表,我们需要定义一个结构体来表示链表中的每个节点,其中包含一个指向下一个结点的指针。 下面是一个示例结构体的定义: struct Node { int data; struct Node* next; }; 其中,data表示节点存储的数据,next是指向下一个节点的指针。 我们需要定义以下操作来构建循环链表: 创建一个空链表 struct Nod…

    C 2023年5月23日
    00
  • vscode调用c项目后怎么引用dll?

    在VSCode中调用C语言项目,如果需要使用动态链接库(DLL)的话,一般需要进行以下步骤: 创建动态链接库 先编写动态链接库的代码并生成DLL文件。例如,编写一个示例代码,将其保存为 “hello.c”,编译并生成DLL文件 “hello.dll”。示例代码如下: #include <stdio.h> #include <stdlib.h…

    C 2023年5月23日
    00
  • C语言程序环境中的预处理详解

    C语言程序环境中的预处理详解 什么是预处理器 在 C 语言中,预处理器是一种用于在编译程序之前处理源代码的程序,它会根据源代码中的指示来进行一系列的操作,例如文件的导入和宏的展开等。预处理器是在编译过程的第一步中被执行的,它的主要作用是生成修改了的源代码,这些修改的结果将被送入编译器进行编译和链接。 #include 指令 include 指令被用来将另一个…

    C 2023年5月23日
    00
  • c++命名对象和匿名对象的解析

    下面是“C++命名对象和匿名对象的解析”的完整攻略。 一、什么是C++命名对象和匿名对象? C++中有两种对象:命名对象和匿名对象。 命名对象是用户定义的具有变量名的对象,它们在程序中表示一个具体的实体,可以通过变量名来访问它们。 而匿名对象是没有名字的对象,它们在程序中只是一个临时的表达式,通常只在一行代码中使用一次。 二、命名对象的定义与使用 定义命名对…

    C 2023年5月22日
    00
  • Postgresql 数据库转义字符操作

    介绍 PostgreSQL是一个自由、开放源代码的对象-关系型数据库管理系统。当需要在数据库中进行特殊字符的插入或查询时,就需要转义这些字符,否则数据无法正常插入或查询。PostgreSQL提供了多种转义字符的操作方法。 转义字符 以下是在PostgreSQL中使用转义字符的方法: 使用反斜杠:使用 “\” 来转义字符,前面跟上该字符。例如: sql INS…

    C 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部