C 学生管理系统

C 学生管理系统

提交文件结构

├── README.md
├── report.pdf
├── src
│   ├── main.c
│   ├── student.h
│   └── student.c
├── tests
│   ├── test_main.c
│   └── test_student.c
└── Makefile

README.md

# C 学生管理系统

## 文件结构
- `README.md`: 项目描述和使用说明。
- `report.pdf`: 作业报告,包含算法描述、实验结果和分析。
- `src/`: 源代码文件夹。
  - `main.c`: 主程序。
  - `student.h`: 学生管理系统的头文件。
  - `student.c`: 学生管理系统的实现文件。
- `tests/`: 测试代码文件夹。
  - `test_main.c`: 主程序的测试代码。
  - `test_student.c`: 学生管理系统的测试代码。
- `Makefile`: 构建和运行程序的Makefile文件。

## 编译和运行
```sh
make
./main

测试

make test
./test_main

作者

  • 学生姓名:
  • 学号:
  • 电子邮件:

### src/main.c
```c
#include <stdio.h>
#include "student.h"

// 主函数:提供用户交互界面,实现添加、删除、显示和查找学生功能
int main() {
    int choice, id, age;
    char name[NAME_LENGTH];

    while (1) {
        printf("\n学生管理系统\n");
        printf("1. 添加学生\n");
        printf("2. 删除学生\n");
        printf("3. 显示所有学生\n");
        printf("4. 查找学生\n");
        printf("5. 退出\n");
        printf("选择操作:");
        scanf("%d", &choice);

        switch (choice) {
            case 1:
                printf("输入学生ID:");
                scanf("%d", &id);
                printf("输入学生姓名:");
                scanf("%s", name);
                printf("输入学生年龄:");
                scanf("%d", &age);
                addStudent(id, name, age);
                break;
            case 2:
                printf("输入要删除的学生ID:");
                scanf("%d", &id);
                deleteStudent(id);
                break;
            case 3:
                displayStudents();
                break;
            case 4:
                printf("输入要查找的学生ID:");
                scanf("%d", &id);
                findStudent(id);
                break;
            case 5:
                printf("退出系统。\n");
                return 0;
            default:
                printf("无效选择,请重新输入。\n");
        }
    }
}

src/student.h

#ifndef STUDENT_H
#define STUDENT_H

#define NAME_LENGTH 50

typedef struct {
    int id;
    char name[NAME_LENGTH];
    int age;
} Student;

// 添加学生
void addStudent(int id, const char *name, int age);

// 删除学生
void deleteStudent(int id);

// 显示所有学生
void displayStudents();

// 查找学生
void findStudent(int id);

#endif // STUDENT_H

src/student.c

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

#define MAX_STUDENTS 100

Student students[MAX_STUDENTS];
int studentCount = 0;

// 添加学生的实现
void addStudent(int id, const char *name, int age) {
    if (studentCount >= MAX_STUDENTS) {
        printf("学生已满,无法添加更多学生。\n");
        return;
    }
    students[studentCount].id = id;
    strncpy(students[studentCount].name, name, NAME_LENGTH);
    students[studentCount].age = age;
    studentCount++;
    printf("成功添加学生:%s\n", name);
}

// 删除学生的实现
void deleteStudent(int id) {
    int found = 0;
    for (int i = 0; i < studentCount; i++) {
        if (students[i].id == id) {
            found = 1;
            for (int j = i; j < studentCount - 1; j++) {
                students[j] = students[j + 1];
            }
            studentCount--;
            printf("成功删除学生ID:%d\n", id);
            break;
        }
    }
    if (!found) {
        printf("未找到学生ID:%d\n", id);
    }
}

// 显示所有学生的实现
void displayStudents() {
    if (studentCount == 0) {
        printf("没有学生记录。\n");
        return;
    }
    printf("学生列表:\n");
    for (int i = 0; i < studentCount; i++) {
        printf("ID: %d, 姓名: %s, 年龄: %d\n", students[i].id, students[i].name, students[i].age);
    }
}

// 查找学生的实现
void findStudent(int id) {
    for (int i = 0; i < studentCount; i++) {
        if (students[i].id == id) {
            printf("找到学生:ID: %d, 姓名: %s, 年龄: %d\n", id, students[i].name, students[i].age);
            return;
        }
    }
    printf("未找到学生ID:%d\n", id);
}

tests/test_main.c

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

// 测试添加学生功能
void test_addStudent() {
    addStudent(1, "Alice", 20);
    addStudent(2, "Bob", 22);
    displayStudents();
}

// 测试删除学生功能
void test_deleteStudent() {
    deleteStudent(1);
    displayStudents();
}

// 测试查找学生功能
void test_findStudent() {
    findStudent(2);
}

// 主测试函数
int main() {
    printf("测试添加学生\n");
    test_addStudent();

    printf("\n测试删除学生\n");
    test_deleteStudent();

    printf("\n测试查找学生\n");
    test_findStudent();

    return 0;
}

Makefile

CC = gcc
CFLAGS = -Wall

SRC = src/main.c src/student.c
TEST_SRC = tests/test_main.c src/student.c

all: main

main: $(SRC)
	$(CC) $(CFLAGS) -o main $(SRC)

test: $(TEST_SRC)
	$(CC) $(CFLAGS) -o test_main $(TEST_SRC)

clean:
	rm -f main test_main
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

东城十三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值