C语言学生信息管理系统

C语言版学生信息管理系统

一,开发环境

  1. 操作系统:windows10, windows11, linux, mac等。
  2. 开发工具:Qt, vscode, visual studio等
  3. 开发语言:c语言

二,功能需求

在这里插入图片描述

1. 用户界面:

  • 提供一个简洁的文本界面,用户可以通过键入命令或选择选项来执行不同的操作。
  • 用户可以方便地选择要执行的操作,例如添加、查询、编辑、删除学生信息或显示所有学生信息。

2. 学生信息记录:

  • 用户可以录入学生的基本信息,如学号、姓名、年龄、性别、班级等。
  • 学生信息应存储在内存中,在程序周期内可进行操作。

3. 信息查询:

  • 用户可以通过学号或姓名查询学生信息。
  • 显示查询结果给用户。

4. 信息修改:

  • 用户可以选择一个特定的学生信息进行编辑。
  • 提供修改学生的基本信息如学号、姓名、年龄、性别、班级等。

5. 信息删除:

  • 用户可以选择删除特定的学生信息。
  • 在删除之前,询问用户是否确实要执行删除操作以防止错误。

6. 列表:

  • 用户可以查看并显示所有已录入的学生信息的列表

三,功能设计

1. 主界面:

  • 当程序启动时,首先显示一个欢迎消息,如“欢迎使用学生信息管理系统”。
  • 接着展示一个主菜单,列出所有可用的操作。例如:
请选择一个操作:
1. 添加学生信息
2. 查询学生信息
3. 修改学生信息
4. 删除学生信息
5. 显示所有学生信息
6. 退出系统
  • 用户可以通过输入相应的数字选择一个操作。

2. 添加学生信息:

  • 用户选择“添加学生信息”后,系统提示用户逐个输入学生的信息。例如:
请输入学生的学号: 
请输入学生的姓名: 
请输入学生的年龄: 
请输入学生的性别: 
请输入学生的班级: 
  • 在信息录入后,系统将保存这些信息,并给出一个确认消息,如“学生信息已成功添加”。

3. 查询学生信息:

  • 用户选择“查询学生信息”后,系统提示用户输入查询条件。例如:
请选择查询方式:
1. 通过学号查询
2. 通过姓名查询
  • 根据用户的选择,系统提示输入相应的信息。例如,“请输入学生的学号”或“请输入学生的姓名”。
  • 显示匹配的学生信息或提示未找到结果。

4. 修改学生信息:

  • 用户选择“修改学生信息”后,系统首先提示用户输入学生的学号。
  • 如果找到相应的学生信息,系统将显示该学生的当前信息,并提示用户输入新的信息。例如:
学生信息:
学号: 123
姓名: 张三
年龄: 20
性别: 男
班级: 计算机1班请输入新的学生信息:
请输入学生的姓名: 
请输入学生的年龄: 
请输入学生的性别: 
请输入学生的班级: 
  • 确认修改并保存。

5. 删除学生信息:

  • 用户选择“删除学生信息”后,系统提示用户输入要删除的学生的学号。

6. 显示所有学生信息:

  • 当用户选择“显示所有学生信息”时,系统应该列出存储在内存中的所有学生信息。
  • 数据可以以表格的形式呈现,例如:
+--------+--------+------+-------+------------+
学号   | 姓名   | 年龄 | 性别  | 班级        |
+--------+--------+------+-------+------------+
1001   | 张三    | 20   || 计算机1|
1002   | 李四    | 21   || 计算机2|
+--------+--------+------+-------+------------+
  • 在列表末尾提供返回主菜单的选项。

7. 退出系统:

  • 当用户选择“退出系统”时,程序应给出一个友好的退出消息,如“感谢使用学生信息管理系统!再见!”然后安全地关闭程序。

四,代码结构

StudentInfoManagementSystem/
├── CMakeLists.txt
├── src/
│   ├── main.c
│   ├── student.c
│   └── student.h
├── build/
└── README.md

五,源代码

student.h

// student.h
#ifndef STUDENT_H
#define STUDENT_Htypedef struct {int id;char name[50];int age;char gender[10];char class_name[50];
} Student;void add_student(Student students[], int *num_students);
void query_student(Student students[], int num_students);
void modify_student(Student students[], int num_students);
void delete_student(Student students[], int *num_students);
void display_students(Student students[], int num_students);#endif // STUDENT_H

student.c

// student.c
#include <stdio.h>
#include <string.h>
#include "student.h"void add_student(Student students[], int *num_students) {printf("请输入学生的学号: ");scanf("%d", &students[*num_students].id);printf("请输入学生的姓名: ");scanf("%s", students[*num_students].name);printf("请输入学生的年龄: ");scanf("%d", &students[*num_students].age);printf("请输入学生的性别: ");scanf("%s", students[*num_students].gender);printf("请输入学生的班级: ");scanf("%s", students[*num_students].class_name);(*num_students)++;
}void query_student(Student students[], int num_students) {int choice;printf("请选择查询方式:\n");printf("1. 通过学号查询\n");printf("2. 通过姓名查询\n");printf("请输入你的选择: ");scanf("%d", &choice);if (choice == 1) {int id;printf("请输入学生的学号: ");scanf("%d", &id);for (int i = 0; i < num_students; i++) {if (students[i].id == id) {printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %s, 班级: %s\n", students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);return;}}printf("未找到该学生信息\n");} else if (choice == 2) {char name[50];printf("请输入学生的姓名: ");scanf("%s", name);for (int i = 0; i < num_students; i++) {if (strcmp(students[i].name, name) == 0) {printf("学号: %d, 姓名: %s, 年龄: %d, 性别: %s, 班级: %s\n", students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);return;}}printf("未找到该学生信息\n");} else {printf("无效的选择\n");}
}void modify_student(Student students[], int num_students) {int id;printf("请输入要修改的学生的学号: ");scanf("%d", &id);int index = -1;for (int i = 0; i < num_students; i++) {if (students[i].id == id) {index = i;break;}}if (index != -1) {printf("请输入学生的新姓名: ");scanf("%s", students[index].name);printf("请输入学生的新年龄: ");scanf("%d", &students[index].age);printf("请输入学生的新性别: ");scanf("%s", students[index].gender);printf("请输入学生的新班级: ");scanf("%s", students[index].class_name);printf("学生信息已更新。\n");} else {printf("未找到该学生信息。\n");}
}void delete_student(Student students[], int *num_students) {int id;printf("请输入要删除的学生的学号: ");scanf("%d", &id);int index = -1;for (int i = 0; i < *num_students; i++) {if (students[i].id == id) {index = i;break;}}if (index != -1) {for (int i = index; i < (*num_students) - 1; i++) {students[i] = students[i + 1];}(*num_students)--;printf("学生信息已删除。\n");} else {printf("未找到该学生信息。\n");}
}void display_students(Student students[], int num_students) {printf("+--------+--------+------+-------+------------+\n");printf("| 学号    | 姓名    | 年龄  | 性别  | 班级        |\n");printf("+--------+--------+------+-------+------------+\n");for (int i = 0; i < num_students; i++) {printf("| %-6d | %-6s | %-4d | %-5s | %-10s |\n",students[i].id, students[i].name, students[i].age, students[i].gender, students[i].class_name);}printf("+--------+--------+------+-------+------------+\n");
}

CMakeLists.txt

cmake_minimum_required(VERSION 3.10)# 设置项目名称和版本
project(StudentInfoManagementSystem VERSION 1.0)# 设置C标准
set(CMAKE_C_STANDARD 99)
set(CMAKE_C_STANDARD_REQUIRED True)# 添加一个可执行文件
add_executable(StudentInfoManagementSystem src/main.c src/student.c)# 如果你有其他库文件或者链接的需求,你可以在这里添加

六,功能展示

1. 用户界面

在这里插入图片描述

2. 添加学生信息

在这里插入图片描述

3. 查询学生信息

在这里插入图片描述

4. 修改学生信息

在这里插入图片描述

5. 删除学生信息

在这里插入图片描述

6. 显示所有学生信息

在这里插入图片描述

项目资料

项目的资料及代码已整理打包,有需要可取,也可定制开发,附带GPT提问链接。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/19311.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

手把手教你从零开始集成声网音视频功能(iOS版)

说明 1.环信音视频和声网音视频 是两个不同的系统&#xff0c;所以如果要切换的话&#xff0c;需要集成声网的sdk&#xff0c;环信音视频的sdk可以直接废弃 2.文章会介绍如何用声网的音视频跑通demo&#xff0c;可以了解整个音视频通话的流程&#xff0c; 3.文章会介绍已经集…

亚马逊买家号如何绑定信用卡

要在亚马逊上绑定信用卡作为买家号的支付方式&#xff0c;请按照以下步骤进行操作&#xff1a; 1、登录亚马逊账户&#xff1a;使用您的亚马逊账户用户名和密码登录到亚马逊网站。 2、导航至"我的账户"&#xff1a;在页面右上角&#xff0c;将鼠标悬停在"你好…

智慧楼宇数字化整体整体解决方案

导读&#xff1a;原文《智慧楼宇数字化整体整体解决方案》ppt&#xff08;获取来源见文尾&#xff09;&#xff0c;本文精选其中精华及架构部分&#xff0c;逻辑清晰、内容完整&#xff0c;为快速形成售前方案提供参考。 完整版领取方式 完整版领取方式&#xff1a; 如需获取完…

解释 void 类型转换: (void)++y

谢谢大师们的指导&#xff0c;保存&#xff0c;分享

k8s kubeadmin方式安装部署

1、节点至少2C2G. 2、首先安装docker&#xff0c; sudo yum install -y docker-ce docker-ce-cli containerd.io#以下是在安装k8s使用的docker版本。注意保持一致 yum install -y docker-ce-20.10.7 docker-ce-cli-20.10.7 containerd.io-1.4.6sudo mkdir -p /etc/docker su…

【技巧】Latex在线工具:公式编辑器、表格编辑器

找到什么再补充 目录 表格编辑器 公式编辑器 表格编辑器 https://www.tablesgenerator.com/ 公式编辑器 https://www.latexlive.com/

为Kubernetes(k8s)集群安装仪表盘(Dashboard)

为Kubernetes集群安装仪表盘 文档说明部署仪表盘(Dashboard UI)访问 Dashboard 用户界面 文档说明 对应本片文章的视频教程地址&#xff1a;https://www.bilibili.com/video/BV1MF41197RS/?vd_source98deeeab6739fa30792cfcffa994b50e 在之前的文章当中我们搭建了一个kubern…

VMware虚拟机里的Ubuntu通过主机的代理联网

问题描述&#xff1a;主机win10&#xff0c;通过代理联网。主机里装有VMware的虚拟机Ubuntu&#xff0c;想要通过主机的代理进行上网。 步骤&#xff1a; 1 将虚拟机的网络设置为NAT模式。 2 在win10命令行中输入ipconfig&#xff0c;查询ipv4的局域网地址。&#xff08;注&…

C语言—模拟实现memcpy,memmove

1.memcpy函数的介绍与实现 函数memcpy从source的位置开始向后复制num个字节的数据到destination的内存位置。 这个函数在遇到 \0 的时候并不会停下来。 如果source和destination有任何的重叠&#xff0c;复制的结果都是未定义的。 void * memcpy ( void * destination, const v…

mysql,对表的简单操作

一.创建表并插入数据 mysql> create table worker(-> department_id int(11) not null comment 部门号,-> worker_id int(11) primary key not null comment 职工号,-> worker_date date not null comment 工作时间,-> wages float(8,2) not null comment 工资…

【AGC】性能管理服务报502问题

【关键字】 AGC、性能管理、502 【问题描述】 有开发者反馈在使用AGC性能管理服务报502错误&#xff0c;接入了analytic sdk 是正常的上报分析数据&#xff0c;但尝试接入apms时出现无法上报情况。 日志截图如下&#xff0c;可以看到分析服务是正常的200上报了数据&#xff…

【微信小程序创作之路】- 小程序常用页面样式

【微信小程序创作之路】- 小程序常用页面样式 第四章 微信小程序用页面样式 文章目录 【微信小程序创作之路】- 小程序常用页面样式前言一、总体样式--全局样式and局部样式1.全局样式2.局部样式 二、Flex布局&#x1f349;&#x1f349;&#x1f349;rpx单位 三、样式导入四、…