大家好,我是网域小星球。
前面我们已经学完了基础语法、数组、函数、指针、结构体、文件操作,具备了编写完整小程序 的全部条件。这一篇我们不再讲零散知识点,而是把所有内容串起来,实现一个带菜单、可交互、可扩展的小项目框架。学会这种结构,以后写任何管理系统、小游戏、小工具都能直接套用。
目录
[三、完整可运行代码(VS2022 直接跑)](#三、完整可运行代码(VS2022 直接跑))
一、本章学习目标
- 掌握控制台程序经典结构:菜单 + 分支选择
- 使用
switch-case实现功能选择 - 结合结构体、数组、函数封装业务逻辑
- 实现简易学生信息:展示、添加、查找、退出
- 学会可扩展项目框架,为后续写复杂项目打基础
二、整体框架设计
一个标准小项目通常分为:
- 显示菜单
- 用户输入选择
- 根据选择进入对应功能
- 执行完返回菜单,直到选择退出
结构非常清晰:
cpp
欢迎使用学生成绩管理系统
------------------------
1. 显示所有学生信息
2. 添加学生信息
3. 查找指定学生
0. 退出系统
------------------------
请输入您的选择:
三、完整可运行代码(VS2022 直接跑)
cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#define MAX_STU 50
// 学生结构体
struct Student
{
int id;
char name[20];
float score;
};
// 全局数组 + 计数器
struct Student stus[MAX_STU];
int count = 0;
// 函数声明
void showMenu();
void showAll();
void addStu();
void findStu();
int main()
{
int choice;
while (1)
{
showMenu();
printf("请输入您的选择:");
scanf("%d", &choice);
switch (choice)
{
case 1:
showAll();
break;
case 2:
addStu();
break;
case 3:
findStu();
break;
case 0:
printf("感谢使用,再见!\n");
return 0;
default:
printf("输入错误,请重新选择!\n");
break;
}
printf("\n");
}
}
// 显示菜单
void showMenu()
{
printf("=========================\n");
printf(" 学生成绩管理系统\n");
printf("=========================\n");
printf(" 1 显示所有学生\n");
printf(" 2 添加学生信息\n");
printf(" 3 按学号查找学生\n");
printf(" 0 退出系统\n");
printf("=========================\n");
}
// 显示所有学生
void showAll()
{
printf("当前共有学生:%d 人\n", count);
if (count == 0)
{
printf("暂无学生信息!\n");
return;
}
printf("学号\t姓名\t成绩\n");
for (int i = 0; i < count; i++)
{
printf("%d\t%s\t%.1f\n", stus[i].id, stus[i].name, stus[i].score);
}
}
// 添加学生
void addStu()
{
if (count >= MAX_STU)
{
printf("学生人数已满,无法添加!\n");
return;
}
printf("请输入学号 姓名 成绩:");
scanf("%d%s%f", &stus[count].id, stus[count].name, &stus[count].score);
count++;
printf("添加成功!\n");
}
// 按学号查找
void findStu()
{
int findId;
printf("请输入要查找的学号:");
scanf("%d", &findId);
for (int i = 0; i < count; i++)
{
if (stus[i].id == findId)
{
printf("找到学生:%s %.1f\n", stus[i].name, stus[i].score);
return;
}
}
printf("未找到该学号学生!\n");
}
四、代码结构讲解
-
**
#define MAX_STU 50**方便统一修改最大学生数。 -
全局数组 + 计数器多个函数共用数据,简单高效。
-
while (1) 死循环 + switch经典菜单框架,一直运行直到选 0 退出。
-
每个功能一个函数易读、易扩展、易维护。
五、可扩展方向
后面你可以继续加功能:
- 修改学生信息
- 删除学生
- 排序(按成绩 / 学号)
- 保存到文件 / 从文件加载
- 密码登录
- 小游戏整合
六、本章总结
- 小项目核心结构:菜单 + 选择 + 功能函数
while(1)+switch是控制台程序标配- 函数封装让逻辑清晰、易于扩展
- 结构体 + 数组实现批量数据管理
- 学会这套框架,几乎能写所有入门级小项目
下期预告
C 语言从 0 入门(十六)|动态内存管理:malloc、free、calloc、realloc下一篇我们学习更高级的内存使用方式:动态申请内存,让数组大小不再固定,程序更灵活、更节省空间。