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
性别:男
阅读剩余 74%

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

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

相关文章

  • c++中c_str()的用法示例

    下面是对于“c++中c_str()的用法示例”的完整攻略: 什么是c_str() c_str()是一个C++字符串类string的成员函数,用于将string类型字符串转换成C风格的字符串,即以’\0’结尾的字符数组。 c_str()函数的语法 c_str()函数的语法如下: const char* c_str() const noexcept; 该函数返回…

    C 2023年5月23日
    00
  • VC++实现程序开机启动运行的方法

    请注意以下几个步骤来实现在Windows系统中使用VC++实现程序开机启动运行的方法: 第一步:创建注册表项 在Windows系统中,可以通过注册表来实现程序开机启动运行的功能。因此,第一步我们需要创建一个注册表项来设置开机启动。 在VC++中,可以使用RegCreateKeyEx函数来创建注册表项。以下是一个示例代码: HKEY hKey; LPCTSTR…

    C 2023年5月23日
    00
  • C程序 通过创建一个函数来检查素数

    创建一个函数来检查素数是一个常见的C语言编程问题。下面是一个步骤指南和示例示范。 步骤指南 步骤如下: 定义函数的名称和返回类型。由于函数检查一个数字是否为素数,因此我们可以定义函数为 isPrime(),且函数返回类型为 int,因为我们需要返回0或1。 在函数内部定义一个整数 i 用于循环。我们需要从2到输入数字的平方根进行循环,判断输入数字是否能被整除…

    C 2023年5月9日
    00
  • C++数字三角形问题与dp算法

    当我们需要寻找某一个问题的最优解时,动态规划(Dynamic Programming)算法可以是一个不错的选择。其中,C++数字三角形问题是一个典型的动态规划问题。本文将提供一个完整的攻略,以解决该问题。 问题描述 给定一个由整数组成的数字三角形,编写一个程序,寻找从自顶向下走的最优路径,使得路径上所经过的数字之和最大。每一步只能向下走到下一行中相邻的数字。…

    C 2023年5月22日
    00
  • C语言实现中国象棋

    题目:C语言实现中国象棋 这是一个将中国象棋的游戏规则用C语言实现的项目。下面是实现该项目的完整攻略: 1. 确定需要的数据结构 在编写代码之前,需要确定需要的数据结构。对于中国象棋,我们可以使用以下数据结构: 棋子(soldier): 数字编号 棋子颜色(红色或黑色) 棋子类型(如马、象、帅等) 棋子当前所在位置 棋子是否被吃掉 棋盘(board): 二维…

    C 2023年5月23日
    00
  • Vscode配置C/C++环境使用minGW(保姆级配置过程)

    下面是Vscode配置C/C++环境使用MinGW的详细攻略。 安装MinGW 前往MinGW官网(https://sourceforge.net/projects/mingw/files/)下载MinGW安装包,推荐下载mingw-get-inst版本。下载的时候要注意选择对应的Windows系统版本(32位或64位)。 双击安装包,进入安装向导,按照默认…

    C 2023年5月23日
    00
  • 关于函数调用方式__stdcall和__cdecl详解

    关于函数调用方式__stdcall和__cdecl详解 在C/C++中,函数调用时需要考虑传递参数和返回值的方式以及内存空间的分配等问题。这些问题由编译器和操作系统共同完成,不同的编译器和操作系统可能存在不同的函数调用方式(calling convention),其中__stdcall和__cdecl是其中两种常见的函数调用方式。 __stdcall调用方式…

    C 2023年5月23日
    00
  • php7 错误处理机制修改实例分析

    PHP7 错误处理机制修改实例分析 一、背景 在PHP7中,错误处理机制发生了一些变化。具体来说,PHP7增加了Throwable接口和Error类,用于代替旧版的Exception类。此外,PHP7还引入了一种新的错误处理器:Throwable处理器。Throwable处理器是一种标准的PHP异常处理方式,可以通过使用try-catch语句来捕获和处理所有…

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