(一)作者瞎叨叨:
想不到吧,我更新这么快!才半天哦!主要是学的比较快,现在学到了STL容器的后半部分,暂时学到了list容器,就做了个小案例啦,说到list容器我就想起初学数据结构的时候徒手写链表的日子有点痛苦哈哈哈,令我最记忆犹新的是我第一次写链表面对的是一个庞大的程序设计,在图书馆写了一整个上午哈哈哈人都快绕晕了,当然现在是不可能这样了,一个呢是因为熟练了很多,再者呢是现在学了STL容器,操作上肯定会比之前的自己好得多啦,那么话不多说!上代码!
——Agoni酱
(二)设计要求:
PS:是不是看起来很简单,我当初也是这么觉得的,所以我就加了点难度啦,把四个排序方式容纳到了这个程序中!夸我夸我嘿嘿嘿!
(三)程序相关事项(可见于main.cpp程序文件开头):
/*
开发项目:【黑马程序员~C++提高编程程序小设计】基于list容器的简易人员信息排序系统
程序结构:main.cpp (由于程序简单,就不分开啦)
开发语言:C++开发环境:Windows Visual Studio 2022
程序实现:可以完成对任意多人员的信息记录,并完成排序(对年龄或者身高进行升序or降序排列),并清晰呈现
程序特性:今天白天继续学习STL容器!此程序重心是对list容器的使用以及类的使用,利用list容器实现程序可以完成对输入数据的记录,可以完成对数据的排序(经过了我的改良,此程序可以支持年龄的升序,降序以及身高的升序,降序,并且有次要关键字排序)有完善的交流机制,可以较好呈现结果,程序较为简单,加深了对容器的熟悉程度,使用的灵敏度极高,很有意思
*/
/*
完成时间:2023年1月10日13:00:26 当前版本:V1.0
发布时间:2023年1月10日13:02:46
更新日志:无
*/
(四)程序代码:
/*
开发项目:【黑马程序员~C++提高编程程序小设计】基于list容器的简易人员信息排序系统
程序结构:main.cpp (由于程序简单,就不分开啦)
开发语言:C++ 开发环境:Windows Visual Studio 2022
程序实现:可以完成对任意多人员的信息记录,并完成排序(对年龄或者身高进行升序or降序排列),并清晰呈现
程序特性:今天白天继续学习STL容器!此程序重心是对list容器的使用以及类的使用,利用list容器实现程序可以完成对
输入数据的记录,可以完成对数据的排序(经过了我的改良,此程序可以支持年龄的升序,降序以及身高的升序,
降序,并且有次要关键字排序)有完善的交流机制,可以较好呈现结果,程序较为简单,加深了对容器的熟悉程
度,使用的灵敏度极高,很有意思
*/
/*
完成时间:2023年1月10日13:00:26 当前版本:V1.0
发布时间:2023年1月10日13:02:46
更新日志:无
*/
#include <list>
#include <iostream>
using namespace std;
class Person {
public:
string m_name;
int m_age;
double m_height;
Person(string name, int age, double height) {
m_name = name;
m_age = age;
m_height = height;
}
};
bool heightup(Person& p1, Person& p2) {
if (p1.m_height == p2.m_height) {
return p1.m_age < p2.m_age;
}
else {
return p1.m_height < p2.m_height;
}
}
bool heightdown(Person& p1, Person& p2) {
if (p1.m_height == p2.m_height) {
return p1.m_age > p2.m_age;
}
else {
return p1.m_height > p2.m_height;
}
}
bool ageup(Person& p1, Person& p2) {
if (p1.m_age == p2.m_age) {
return p1.m_height < p2.m_height;
}
else {
return p1.m_age < p2.m_age;
}
}
bool agedown(Person& p1, Person& p2) {
if (p1.m_age == p2.m_age) {
return p1.m_height > p2.m_height;
}
else {
return p1.m_age > p2.m_age;
}
}
int main() {
list<Person> people;
cout << "system:请输入您想添加的人员数:";
int num = 0, age = 0;
double height = 0;
string name;
cin >> num;
for (int i = 0; i < num; i++) {
cout << "system:请输入" << i + 1 << "号的姓名:";
cin >> name;
cout << "system:请输入" << i + 1 << "号的年龄:";
cin >> age;
cout << "system:请输入" << i + 1 << "号的身高(单位:cm 支持浮点类型):";
cin >> height;
people.push_back(Person(name, age, height));
}
out:
cout << "system:请输入您想执行的操作(1 按照身高升序 2 按照身高降序 3 按照年龄升序 4 按照年龄降序 ):";
cin >> num;
switch (num) {
case 1:
people.sort(heightup);
break;
case 2:
people.sort(heightdown);
break;
case 3:
people.sort(ageup);
break;
case 4:
people.sort(agedown);
break;
default:
cout << "system:输入数据错误!请重新输入!" << endl ;
goto out;
}
list<Person>::iterator it = people.begin();
cout << "system:排序结果为:" << endl;
while (it != people.end()){
cout << "姓名:" << it->m_name << "\t年龄:" << it->m_age << "\t身高:" << it->m_height << "cm" << endl;
it++;
}
system("pause");
return 0;
}
// THE END
(五)版权声明:
此程序完全由本人制作,并且仅在CSDN平台发布,虽然我是个小菜鸡,但也是不能商用的哦嘿嘿
(六)结语
嘿嘿我真是越来越勤快了,加油!!!