设计一个学生信息管理系统,用于实现学生信息的录入、查询、排序、输出等功能。学生信息包括:学号(整型)、姓名(字符串)、性别(布尔型)、出生日期(结构体)、各科成绩(10门)、平均成绩等,用函数实现各功能模块

时间: 2023-07-04 08:10:23 浏览: 100
以下是一个简单的学生信息管理系统的设计,包括录入、查询、排序和输出等功能的实现。其中,学生信息以一个结构体表示,各种功能模块都用函数实现。 ```c++ #include <iostream> #include <algorithm> #include <iomanip> #include <cstring> using namespace std; // 学生信息结构体 struct Student { int id; // 学号 string name; // 姓名 bool isMale; // 性别 struct Date { // 出生日期 int year; int month; int day; } birthday; double scores[10]; // 各科成绩 double averageScore; // 平均成绩 }; // 学生信息数组 Student students[1000]; int numStudents = 0; // 日期比较函数 bool compareDate(const Student& s1, const Student& s2) { if (s1.birthday.year != s2.birthday.year) { return s1.birthday.year < s2.birthday.year; } else if (s1.birthday.month != s2.birthday.month) { return s1.birthday.month < s2.birthday.month; } else { return s1.birthday.day < s2.birthday.day; } } // 学号比较函数 bool compareID(const Student& s1, const Student& s2) { return s1.id < s2.id; } // 姓名比较函数 bool compareName(const Student& s1, const Student& s2) { return s1.name < s2.name; } // 平均成绩比较函数 bool compareAverageScore(const Student& s1, const Student& s2) { return s1.averageScore > s2.averageScore; } // 录入学生信息 void addStudent() { Student s; cout << "请输入学号:"; cin >> s.id; cout << "请输入姓名:"; cin >> s.name; cout << "请输入性别(男为1,女为0):"; cin >> s.isMale; cout << "请输入出生日期(格式为 yyyy mm dd):"; cin >> s.birthday.year >> s.birthday.month >> s.birthday.day; cout << "请输入各科成绩(10门):"; for (int i = 0; i < 10; i++) { cin >> s.scores[i]; } s.averageScore = accumulate(s.scores, s.scores + 10, 0.0) / 10; students[numStudents++] = s; } // 查询学生信息 void queryStudent() { int id; cout << "请输入要查询的学生学号:"; cin >> id; for (int i = 0; i < numStudents; i++) { if (students[i].id == id) { cout << "学号:" << students[i].id << endl; cout << "姓名:" << students[i].name << endl; cout << "性别:" << (students[i].isMale ? "男" : "女") << endl; cout << "出生日期:" << students[i].birthday.year << "年" << students[i].birthday.month << "月" << students[i].birthday.day << "日" << endl; cout << "各科成绩:"; for (int j = 0; j < 10; j++) { cout << students[i].scores[j] << " "; } cout << endl; cout << "平均成绩:" << students[i].averageScore << endl; return; } } cout << "未找到该学生!" << endl; } // 按出生日期排序 void sortByDate() { sort(students, students + numStudents, compareDate); } // 按学号排序 void sortByID() { sort(students, students + numStudents, compareID); } // 按姓名排序 void sortByName() { sort(students, students + numStudents, compareName); } // 按平均成绩排序 void sortByAverageScore() { sort(students, students + numStudents, compareAverageScore); } // 输出所有学生信息 void outputAllStudents() { for (int i = 0; i < numStudents; i++) { cout << "学号:" << students[i].id << endl; cout << "姓名:" << students[i].name << endl; cout << "性别:" << (students[i].isMale ? "男" : "女") << endl; cout << "出生日期:" << students[i].birthday.year << "年" << students[i].birthday.month << "月" << students[i].birthday.day << "日" << endl; cout << "各科成绩:"; for (int j = 0; j < 10; j++) { cout << students[i].scores[j] << " "; } cout << endl; cout << "平均成绩:" << students[i].averageScore << endl; } } int main() { while (true) { cout << "请选择要执行的操作:" << endl; cout << "1. 录入学生信息" << endl; cout << "2. 查询学生信息" << endl; cout << "3. 按出生日期排序" << endl; cout << "4. 按学号排序" << endl; cout << "5. 按姓名排序" << endl; cout << "6. 按平均成绩排序" << endl; cout << "7. 输出所有学生信息" << endl; cout << "0. 退出" << endl; int choice; cin >> choice; switch (choice) { case 0: cout << "程序已退出!" << endl; return 0; case 1: addStudent(); break; case 2: queryStudent(); break; case 3: sortByDate(); break; case 4: sortByID(); break; case 5: sortByName(); break; case 6: sortByAverageScore(); break; case 7: outputAllStudents(); break; default: cout << "输入有误,请重新输入!" << endl; break; } } return 0; } ``` 这个学生信息管理系统实现了录入、查询、排序和输出等功能,用户可以通过菜单选择要执行的操作。其中,录入学生信息时需要输入学号、姓名、性别、出生日期和各科成绩;查询学生信息时可以根据学号查询,如果找到了对应的学生则输出其所有信息;排序功能可以按出生日期、学号、姓名和平均成绩排序;输出所有学生信息时会逐个输出每个学生的所有信息。

相关推荐

最新推荐

recommend-type

python学生信息管理系统实现代码

主要介绍了python学生信息管理系统的实现代码,代码简单,复制即可使用,需要的朋友可以参考下
recommend-type

ASP.NET课程-学生信息管理系统实验报告.doc

编写学生信息管理系统,实现以下功能: 1. 学生信息管理:对在校学生信息进行添加、删除、修改、查询等操作。 2. 学生成绩管理:对已经录入的学生信息进行添加、删除、修改学习成绩,并可以通过关键字进行查询。 3...
recommend-type

学生信息管理学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。设计“学生信息管理系统”

设计“学生信息管理系统”,使之能提供以下功能: 1)系统以菜单方式工作; 2)学生信息录入功能; 3)学生信息浏览功能; 4)查询、排序功能:按学号查询、按姓名查询; 5)学生信息的删除与修改。
recommend-type

java实现学生成绩录入系统

主要为大家详细介绍了java实现学生成绩录入系统,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
recommend-type

学生信息管理系统——数据库课程设计

本系统可以完成学生档案的管理,即录入、修改,、查询、输出学生档案信息,这些信息包括学生基本情况、学生简历情况、学生奖励情况、学生处分情况、学生家庭信息、学生体检情况;学生学籍管理、录入、修改、查询、输出...
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差

![MATLAB正态分布协方差分析:揭示正态分布变量之间的协方差](https://site.cdn.mengte.online/official/2021/11/20211128213137293.png) # 1. 正态分布概述 正态分布,又称高斯分布,是统计学中最重要的连续概率分布之一。它广泛应用于自然科学、社会科学和工程领域。 正态分布的概率密度函数为: ``` f(x) = (1 / (σ√(2π))) * exp(-(x - μ)² / (2σ²)) ``` 其中: - μ:正态分布的均值 - σ:正态分布的标准差 - π:圆周率 正态分布具有以下特性: - 对称性:
recommend-type

我正在开发一款个人碳足迹计算app,如何撰写其需求分析文档,请给我一个范例

为了更全面、清晰地定义个人碳足迹计算app的需求,需求分析文档应该包含以下内容: 1.项目简介:对该app项目的概述及目标进行说明。 2.用户分析:包括目标用户群、用户需求、行为等。 3.功能需求:对app的基本功能进行定义,如用户登录、数据录入、数据统计等。 4.非功能需求:对使用app的性能和质量等进行定义,如界面设计、数据安全、可扩展性等。 5.运行环境:包括app的开发环境和使用环境。 下面是一个范例: 需求分析文档 1. 项目简介 该app项目旨在为用户提供一款方便、易用、可定制的个人碳足迹计算平台,以促进环保和可持续性发展。 2. 用户分析 目标用户群:全球关
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。