C++编程作品——学生信息小助手
| [日期:2025-10-15] | 作者:信息技术 次浏览 | [字体:大 中 小] |
功能介绍:
能记录班上同学的基本信息:姓名、学号、语文数学成绩
能计算每个人的平均分和总分
能按成绩从高到低排名
操作要简单,有菜单选择
我用到了哪些C++知识?
cout和cin(输入输出)数组(存放多个学生信息)
结构体(把每个学生的信息打包在一起)
循环(让程序重复运行)
选择语句(if/switch做菜单)
排序算法(给成绩排名)
遇到什么困难?
排序可能有点难,但可以用简单的冒泡排序
输入输出格式要整齐
要防止程序崩溃(比如输入字母时)
虽然有点挑战,但我觉得我还是搞定了!下面是我的代码
#include <iostream>
#include <string>
using namespace std;
// 定义一个学生结构体
struct Student {
string name;
int id;
float chinese;
float math;
float total;
float average;
};
// 显示菜单函数
void showMenu() {
cout << "\n========= 学生信息小助手 =========" << endl;
cout << "1. 输入学生信息" << endl;
cout << "2. 显示所有学生信息" << endl;
cout << "3. 按总成绩排名" << endl;
cout << "4. 退出程序" << endl;
cout << "请选择(1-4): ";
}
// 输入学生信息函数
void inputStudents(Student students[], int &count) {
if (count >= 50) {
cout << "人数已满,不能再添加!" << endl;
return;
}
cout << "\n--- 输入第 " << count + 1 << " 个学生信息 ---" << endl;
cout << "姓名: ";
cin >> students[count].name;
cout << "学号: ";
cin >> students[count].id;
cout << "语文成绩: ";
cin >> students[count].chinese;
cout << "数学成绩: ";
cin >> students[count].math;
// 计算总分和平均分
students[count].total = students[count].chinese + students[count].math;
students[count].average = students[count].total / 2;
count++;
cout << "信息录入成功!" << endl;
}
// 显示所有学生信息
void displayStudents(Student students[], int count) {
if (count == 0) {
cout << "还没有学生信息,请先输入!" << endl;
return;
}
cout << "\n--- 所有学生信息 ---" << endl;
cout << "序号\t姓名\t学号\t语文\t数学\t总分\t平均分" << endl;
cout << "------------------------------------------------" << endl;
for (int i = 0; i < count; i++) {
cout << i + 1 << "\t" << students[i].name << "\t"
<< students[i].id << "\t" << students[i].chinese << "\t"
<< students[i].math << "\t" << students[i].total << "\t"
<< students[i].average << endl;
}
}
// 按总成绩排序(冒泡排序)
void sortStudents(Student students[], int count) {
if (count == 0) {
cout << "还没有学生信息,请先输入!" << endl;
return;
}
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (students[j].total < students[j + 1].total) {
// 交换两个学生的位置
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
cout << "排名完成!" << endl;
displayStudents(students, count);
}
int main() {
Student students[50]; // 最多存放50个学生
int studentCount = 0; // 当前学生人数
int choice;
cout << "欢迎使用学生信息小助手!" << endl;
do {
showMenu();
cin >> choice;
switch (choice) {
case 1:
inputStudents(students, studentCount);
break;
case 2:
displayStudents(students, studentCount);
break;
case 3:
sortStudents(students, studentCount);
break;
case 4:
cout << "谢谢使用,再见!" << endl;
break;
default:
cout << "输入错误,请重新选择!" << endl;
}
} while (choice != 4);
return 0;
}
#include <iostream>
#include <string>
using namespace std;
// 定义一个学生结构体
struct Student {
string name;
int id;
float chinese;
float math;
float total;
float average;
};
// 显示菜单函数
void showMenu() {
cout << "\n========= 学生信息小助手 =========" << endl;
cout << "1. 输入学生信息" << endl;
cout << "2. 显示所有学生信息" << endl;
cout << "3. 按总成绩排名" << endl;
cout << "4. 退出程序" << endl;
cout << "请选择(1-4): ";
}
// 输入学生信息函数
void inputStudents(Student students[], int &count) {
if (count >= 50) {
cout << "人数已满,不能再添加!" << endl;
return;
}
cout << "\n--- 输入第 " << count + 1 << " 个学生信息 ---" << endl;
cout << "姓名: ";
cin >> students[count].name;
cout << "学号: ";
cin >> students[count].id;
cout << "语文成绩: ";
cin >> students[count].chinese;
cout << "数学成绩: ";
cin >> students[count].math;
// 计算总分和平均分
students[count].total = students[count].chinese + students[count].math;
students[count].average = students[count].total / 2;
count++;
cout << "信息录入成功!" << endl;
}
// 显示所有学生信息
void displayStudents(Student students[], int count) {
if (count == 0) {
cout << "还没有学生信息,请先输入!" << endl;
return;
}
cout << "\n--- 所有学生信息 ---" << endl;
cout << "序号\t姓名\t学号\t语文\t数学\t总分\t平均分" << endl;
cout << "------------------------------------------------" << endl;
for (int i = 0; i < count; i++) {
cout << i + 1 << "\t" << students[i].name << "\t"
<< students[i].id << "\t" << students[i].chinese << "\t"
<< students[i].math << "\t" << students[i].total << "\t"
<< students[i].average << endl;
}
}
// 按总成绩排序(冒泡排序)
void sortStudents(Student students[], int count) {
if (count == 0) {
cout << "还没有学生信息,请先输入!" << endl;
return;
}
for (int i = 0; i < count - 1; i++) {
for (int j = 0; j < count - 1 - i; j++) {
if (students[j].total < students[j + 1].total) {
// 交换两个学生的位置
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
cout << "排名完成!" << endl;
displayStudents(students, count);
}
int main() {
Student students[50]; // 最多存放50个学生
int studentCount = 0; // 当前学生人数
int choice;
cout << "欢迎使用学生信息小助手!" << endl;
do {
showMenu();
cin >> choice;
switch (choice) {
case 1:
inputStudents(students, studentCount);
break;
case 2:
displayStudents(students, studentCount);
break;
case 3:
sortStudents(students, studentCount);
break;
case 4:
cout << "谢谢使用,再见!" << endl;
break;
default:
cout << "输入错误,请重新选择!" << endl;
}
} while (choice != 4);
return 0;
}
通过这个项目,我学会了:
用结构体组织相关数据
用数组管理多个数据对象
基本的排序算法
菜单驱动的程序设计
模块化编程(把功能写成函数)
这个程序虽然简单,但真的很实用!我们班同学都可以用它来管理成绩。你也可以根据自己的想法修改和扩展,比如增加更多科目、计算班级平均分等等。
加油,编程其实很有趣的!