news 2026/5/22 14:13:07

C语言学生管理系统1.0

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C语言学生管理系统1.0

一、系统说明

1、制作一个学生信息管理系统。

2、学生信息包括:班级、学号、姓名、(C语言)成绩等。

3、实训信息增加、删除、查找、修改、显示、退出等功能。

4、系统使用方法便捷、简单、功能容易实现。

二、流程图

三、实现效果

#程序可复制直接使用

四、头文件:StudentManagement.h

#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> //定义学生信息结构体 typedef struct Student { char class[20]; char number[20]; char name[20]; char score[20]; }student; //定义学生信息表结构体 typedef struct StuInfoList { student info[1000];//结构体数组:用于存放1000个学生的信息 int n;//当前已有n个学生信息 }list; //定义系统功能的枚举变量 enum Option { Exit,//0 Add,//1 Show,//2 Search,//3 Modify,//4 Delete//5 }; //函数声明 void Initial(list* p); void ADD(list* p); void SHOW(list* p); void SEARCH(list* p); void DELETE(list* p); void MODIFY(list* p);

五、源文件

1、主程序:test.c

#include"StudentManagement.h" //菜单函数 void menu() { printf("*************************\n"); printf("**********0. 退出********\n"); printf("**********1. 录入********\n"); printf("**********2. 显示********\n"); printf("**********3. 查找********\n"); printf("**********4. 修改********\n"); printf("**********5. 删除********\n"); } //主函数 int main() { int input = 0; list stulist;//创建学生信息表 Initial(&stulist);//初始化信息表 do { menu(); printf("请选择功能:"); scanf("%d", &input); switch (input) { case Add: printf("录入\n"); ADD(&stulist); break; case Show: printf("显示\n"); SHOW(&stulist); break; case Search: printf("查找\n"); SEARCH(&stulist); break; case Modify: printf("修改\n"); MODIFY(&stulist); break; case Delete: printf("删除\n"); DELETE(&stulist); break; case Exit: printf("退出\n"); system("cls");//清空 exit(0);//程序正常退出 break; default: printf("输入错误,请重新选择\n"); break; } system("pause"); system("cls"); }while (input); return 0; }

2、函数:StudentManagement.c

#include"StudentManagement.h" //学生信息表初始化函数 void Initial(list* p) { memset(p->info, 0, sizeof(p->info));//memset设置内存,将info[1000]清0 p->n = 0;//设置信息表最初只有0个元素 } //1.录入函数 void ADD(list* p) { if (p->n == 1000) { printf("信息表已满,无法再录入\n"); } else { printf("请输入学生的班级:"); scanf("%s", p->info[p->n].class); printf("请输入学生的学号:"); scanf("%s", p->info[p->n].number); printf("请输入学生的姓名:"); scanf("%s", p->info[p->n].name); printf("请输入学生的成绩:"); scanf("%s", p->info[p->n].score); p->n++; printf("录入信息成功\n"); } } //2.显示函数 void SHOW(list* p) { if (p->n == 0) { printf("信息表为空表\n"); } else { int i = 0; printf("--------------------------------------------------\n"); printf("%-20s %-20s %-20s %-20s\n", "班级", "学号", "姓名", "成绩"); for (i = 0; i < p->n; i++) { printf("%-20s %-20s %-20s %-20s\n", p->info[i].class, p->info[i].number, p->info[i].name, p->info[i].score); } printf("--------------------------------------------------\n"); } } //3.查找函数:查找指定姓名的学生信息 void SEARCH(list* p) { char name[20]; printf("请输入要查找的学生姓名:"); scanf("%s", name); //int i = FindName(p, name); //if (i == -1)//没找到 //{ // printf("要查找的学生不在表中\n"); //} int i = 0; for (i = 0; i < p->n; i++) { if (strcmp(p->info[i].name, name) == 0)//字符串比较 { break;//若找到,则跳出if } } if (i == p->n)//没找到 { printf("要查找的学生不在表中\n"); } else { printf("%-20s %-20s %-20s %-20s\n", "班级", "学号", "姓名", "成绩"); printf("%-20s %-20s %-20s %-20s\n", p->info[i].class, p->info[i].number, p->info[i].name, p->info[i].score); } } //4.修改函数:修改指定姓名的学生信息 void MODIFY(list* p) { //输入要修改学生的名字 char name[20]; printf("请输入要修改的学生姓名:"); scanf("%s", name); //先查找 int i = 0; for (i = 0; i < p->n; i++) { if (strcmp(p->info[i].name, name) == 0)//字符串比较 { break;//若找到,则跳出if } } if (i == p->n)//没找到 { printf("要修改的学生不在表中\n"); } else { printf("请输入学生的班级:"); scanf("%s", p->info[i].class); printf("请输入学生的学号:"); scanf("%s", p->info[i].number); printf("请输入学生的姓名:"); scanf("%s", p->info[i].name); printf("请输入学生的成绩:"); scanf("%s", p->info[i].score); printf("修改%s的信息完成\n",name); } } //5.删除函数:删除指定姓名的学生信息 void DELETE(list* p) { char name[20]; printf("请输入要删除的学生姓名:"); scanf("%s", name); //查找要删除的学生姓名在信息表中的位置:把要删除的姓名和表中的姓名一个个对比 int i = 0; for (i = 0; i < p->n; i++) { if (strcmp(p->info[i].name, name) == 0)//字符串比较 { break;//若找到,则跳出if } } if (i == p->n)//没找到 { printf("要删除的学生不在表中\n"); } else { //删除数据 //找到的学生信息下标为i,即info[i] //要删除的就是info[i],用info[i+1]覆盖info[i] int j = 0; for (j = i; j < p->n-1; j++) { p->info[j] = p->info[j + 1]; } p->n--; printf("删除%s的信息成功\n",name); } } //根据姓名查找--为了实现查找、修改、删除,不需要用户看到,不用在头文件中申明 int FindName(list* p, char name[20]) { int i = 0; for (i = 0; i < p->n; i++) { if (strcmp(p->info[i].name, name) == 0)//字符串比较 { return i;//若找到,返回下标 } } //没找到 return -1; }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/22 14:12:03

C#字节序反转:从原理到工业级实现

1. 字节序反转不是“字节倒序”&#xff0c;而是数据语义的精准翻转很多人第一次看到“字节序反转”这个词&#xff0c;下意识就去写Array.Reverse(bytes)——结果一测发现&#xff1a;整数读出来完全不对。我去年在做工业PLC通信协议解析时就栽过这个跟头&#xff1a;设备返回…

作者头像 李华
网站建设 2026/5/22 14:11:20

Steam挂刀行情站:5步打造你的专属饰品交易监控系统

Steam挂刀行情站&#xff1a;5步打造你的专属饰品交易监控系统 【免费下载链接】SteamTradingSiteTracker Steam 挂刀行情站 —— 24小时更新的 BUFF & IGXE & C5 & UUYP & ECO 挂刀比例数据 | Track cheap Steam Community Market items on buff.163.com, igx…

作者头像 李华
网站建设 2026/5/22 14:09:12

Unity组件化战斗系统设计:解耦通信与职责边界的实操指南

1. 这不是“学完就忘”的Unity脚本课&#xff0c;而是你真正能搭出可扩展战斗系统的实操路径很多人在Unity里写过PlayerController、EnemyAI、HealthSystem&#xff0c;也调用过GetComponent、SendMessage、事件委托&#xff0c;但一到要做“玩家被敌人击中后掉血播放受击动画触…

作者头像 李华
网站建设 2026/5/22 14:07:01

5步配置Foobar2000逐字歌词:ESLyric-LyricsSource终极指南

5步配置Foobar2000逐字歌词&#xff1a;ESLyric-LyricsSource终极指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 想让你的Foobar2000播放器显示酷狗…

作者头像 李华
网站建设 2026/5/22 14:06:02

公司业务上云终极测评:为何制造业选择深信服托管云?

对于追求内部业务连续性、数据主权安全、极致服务体验的企业&#xff0c;深信服托管云是目前市场上最适合的云服务商。它解决了传统公有云“工单式响应”和“数据主权”的服务焦虑&#xff0c;也规避了自建私有云“重资产难运维”的困境。以下是基于2025-2026年最新数据和市场动…

作者头像 李华