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日

相关文章

  • C++ 智能指针的模拟实现实例

    C++智能指针的模拟实现实例 简介 在C++中,有一种叫做智能指针的类型,它的作用是自动管理指针资源,避免内存泄漏等问题。C++智能指针是C++11标准引入的一个新特性,包括了unique_ptr、shared_ptr、weak_ptr三种智能指针。本文将介绍C++智能指针的模拟实现方式,让各位读者了解智能指针的本质和实现方式,从而更好地应用智能指针。 un…

    C 2023年5月23日
    00
  • Swift面试题及答案整理

    我来详细讲解一下“Swift面试题及答案整理”的完整攻略。 1. 确定主题和范围 在准备一份面试题及答案整理的时候,首先要确定主题和范围。本篇攻略的主题是Swift编程语言,范围包括Swift语言基础、常见的Swift程序设计模式、iOS应用开发以及面试技巧和经验等方面。 2. 收集面试题和答案 接下来需要收集各种Swift相关的面试题和答案,并进行分类整理…

    C 2023年5月22日
    00
  • VS2019中CMake项目的简单使用方法

    下面是“VS2019中CMake项目的简单使用方法”的完整攻略: 1. CMake简介 CMake是一个跨平台的编译系统,可以自动生成各种不同构建系统(如Makefile、Visual Studio的项目文件等)。CMake使用CMakeLists.txt文件来描述项目及其构建规则,它是类似Makefile的一种脚本语言,但更易读、易写、易维护。 2. 在V…

    C 2023年5月23日
    00
  • JVM指令的使用深入详解

    JVM指令的使用深入详解 Java虚拟机是Java语言的运行环境,负责执行Java应用程序并提供运行时环境。Java虚拟机具有跨平台性、安全性、动态性、扩展性等优势,是Java程序能够跨平台运行的重要保障。Java虚拟机执行Java应用程序时使用的是Java字节码,Java字节码使用类似汇编语言的JVM指令进行描述。Java虚拟机的JVM指令提供了丰富的操作…

    C 2023年5月22日
    00
  • 你必须知道的C语言预处理的问题详解

    为了让大家更好地理解C语言预处理的问题,我将分为以下几个方面进行详细讲解。 一、C语言预处理的概念 预处理是C语言编译的第一个阶段,主要作用是在编译程序执行之前进行一些预处理操作。预处理器将代码中所有以#开始的行都看作是预处理命令,包括文件包含、宏定义、条件编译等。预处理器的输出结果是一个完整的源代码文件,这个文件被用来编译生成目标文件。 二、C语言预处理命…

    C 2023年5月23日
    00
  • 用C语言实现三子棋

    下面我将详细讲解如何用C语言实现三子棋游戏。 实现思路 三子棋游戏是一款非常经典的井字棋类游戏,实现起来并不复杂。游戏的基本规则是:先手方执“X”,后手方执“O”,两人交替落子,先将三个同色棋子排成一行、一列或一对角线的一方获胜。 为了实现三子棋游戏,我们需要按照如下步骤进行: 绘制棋盘 判断游戏是否结束 获取玩家输入 判断输入是否合法 落子并更新棋盘 判断…

    C 2023年5月23日
    00
  • 死亡搁浅error C0000005h怎么办 C0000005h报错解决方法

    死亡搁浅error C0000005h怎么办 什么是死亡搁浅error C0000005h? “死亡搁浅(error) C0000005h” 是指 Windows 程序在运行时发生访问违例的错误,也就是常见的“访问违例(Access Violation)错误”。这个错误通常会导致程序崩溃,不能正常运行,对于程序的开发和调试都是非常困扰的问题。 C000000…

    C 2023年5月23日
    00
  • 深入解析C++编程中__alignof 与__uuidof运算符的使用

    深入解析C++编程中__alignof 与__uuidof运算符的使用 __alignof 运算符 __alignof 运算符用来获取一个类型所需的对齐宽度,也就是该类型所占空间的整数倍。其语法如下: alignof(type) 其中,type 表示类型,可以是内置类型、用户自定义类型、指针类型、引用类型等。 示例1: #include <iostre…

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