学生学籍管理系统c++
时间: 2023-10-18 15:14:13 浏览: 49
学生学籍管理系统是一个比较典型的管理信息系统,它可以帮助学校或者教育机构管理学生的基本信息、课程信息、成绩信息等。下面是一个简单的学生学籍管理系统的c++代码示例:
```c++
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
const int MAX_SIZE = 100; // 最大学生数
const int NAME_LEN = 20; // 学生姓名最大长度
struct Student {
int id; // 学号
char name[NAME_LEN + 1]; // 姓名
int age; // 年龄
char gender; // 性别
float scores[3]; // 三门课程的分数
float totalScore; // 总分
float averageScore; // 平均分
};
void addStudent(Student students[], int& size);
void deleteStudent(Student students[], int& size);
void updateStudent(Student students[], int& size);
void queryStudent(Student students[], int size);
void sortStudent(Student students[], int size);
void printStudent(Student student);
int main() {
Student students[MAX_SIZE]; // 学生数组
int size = 0; // 学生数量
int choice;
while (true) {
// 显示菜单
cout << "====== 学生学籍管理系统 ======" << endl;
cout << "1. 添加学生" << endl;
cout << "2. 删除学生" << endl;
cout << "3. 修改学生信息" << endl;
cout << "4. 查询学生信息" << endl;
cout << "5. 排序" << endl;
cout << "0. 退出" << endl;
cout << "请选择操作:";
cin >> choice;
switch (choice) {
case 1:
addStudent(students, size);
break;
case 2:
deleteStudent(students, size);
break;
case 3:
updateStudent(students, size);
break;
case 4:
queryStudent(students, size);
break;
case 5:
sortStudent(students, size);
break;
case 0:
return 0; // 退出程序
default:
cout << "无效的选择,请重新输入!" << endl;
break;
}
}
return 0;
}
/**
* 添加学生
*/
void addStudent(Student students[], int& size) {
if (size >= MAX_SIZE) {
cout << "学生数量已达到上限,无法继续添加!" << endl;
return;
}
Student student;
cout << "请输入学号:";
cin >> student.id;
// 检查学号是否已存在
for (int i = 0; i < size; i++) {
if (students[i].id == student.id) {
cout << "学号已存在,请重新输入!" << endl;
return;
}
}
cout << "请输入姓名:";
cin >> student.name;
cout << "请输入年龄:";
cin >> student.age;
cout << "请输入性别(M/F):";
cin >> student.gender;
cout << "请输入三门课程的分数:" << endl;
for (int i = 0; i < 3; i++) {
cout << "第" << i + 1 << "门课程:";
cin >> student.scores[i];
}
// 计算总分和平均分
student.totalScore = student.scores[0] + student.scores[1] + student.scores[2];
student.averageScore = student.totalScore / 3;
students[size++] = student; // 添加学生
cout << "添加成功!" << endl;
}
/**
* 删除学生
*/
void deleteStudent(Student students[], int& size) {
int id;
cout << "请输入要删除的学生的学号:";
cin >> id;
for (int i = 0; i < size; i++) {
if (students[i].id == id) {
// 删除学生
for (int j = i; j < size - 1; j++) {
students[j] = students[j + 1];
}
size--;
cout << "删除成功!" << endl;
return;
}
}
cout << "未找到学号为" << id << "的学生!" << endl;
}
/**
* 修改学生信息
*/
void updateStudent(Student students[], int& size) {
int id;
cout << "请输入要修改的学生的学号:";
cin >> id;
for (int i = 0; i < size; i++) {
if (students[i].id == id) {
// 修改学生信息
cout << "请输入新的姓名:";
cin >> students[i].name;
cout << "请输入新的年龄:";
cin >> students[i].age;
cout << "请输入新的性别(M/F):";
cin >> students[i].gender;
cout << "请输入三门课程的新分数:" << endl;
for (int j = 0; j < 3; j++) {
cout << "第" << j + 1 << "门课程:";
cin >> students[i].scores[j];
}
// 重新计算总分和平均分
students[i].totalScore = students[i].scores[0] + students[i].scores[1] + students[i].scores[2];
students[i].averageScore = students[i].totalScore / 3;
cout << "修改成功!" << endl;
return;
}
}
cout << "未找到学号为" << id << "的学生!" << endl;
}
/**
* 查询学生信息
*/
void queryStudent(Student students[], int size) {
int id;
cout << "请输入要查询的学生的学号:";
cin >> id;
for (int i = 0; i < size; i++) {
if (students[i].id == id) {
printStudent(students[i]);
return;
}
}
cout << "未找到学号为" << id << "的学生!" << endl;
}
/**
* 排序
*/
void sortStudent(Student students[], int size) {
// 按照总分从高到低排序
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (students[j].totalScore < students[j + 1].totalScore) {
Student temp = students[j];
students[j] = students[j + 1];
students[j + 1] = temp;
}
}
}
// 显示排序结果
cout << "学号\t姓名\t年龄\t性别\t总分\t平均分" << endl;
for (int i = 0; i < size; i++) {
printStudent(students[i]);
}
}
/**
* 打印学生信息
*/
void printStudent(Student student) {
cout << student.id << "\t" << student.name << "\t" << student.age << "\t" << student.gender << "\t"
<< fixed << setprecision(2) << student.totalScore << "\t" << student.averageScore << endl;
}
```
此代码仅作参考,实际上学生学籍管理系统的功能还可以更加丰富,例如支持批量导入、导出、打印等操作。此外,还需要考虑数据安全和数据完整性等问题。