👉博__主👈:米码收割机
👉技__能👈:C++/Python语言
👉公众号👈:测试开发自动化
👉荣__誉👈:阿里云博客专家博主、51CTO技术博主
👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术。
用电管理数据管理系统(面向对象)
目录
- 用电管理数据管理系统(面向对象)
- 一、设计要求
- 二、运行结果
- 2.1 输入数据
- 2.2 显示用电量
- 2.3 显示某用户某月用电量
- 2.4 显示某楼栋某时间段用电量
- 三、代码设计
- 3.1 输入数据
- 3.2 根据用户显示用电量
- 3.3 根据用户名和月份显示用电量
- 四、总结
一、设计要求
统计用电管理数据,要求能用菜单实现如下功能:
(1)输入每个电表的用户名,楼 栋号,抄表日期,电表读数。
(2) 按作者的用电量,从高到低排出每个用户的总用电量。
(3)根据用户要求输出某用户某月 (从键盘输入用户名和月份)的总用电量。(4)统计某楼 栋从某月到某月(从键盘输入)的总用电量.
要求:数据采用文件输入,保存。
二、运行结果
2.1 输入数据
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
2.2 显示用电量
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
2.3 显示某用户某月用电量
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
2.4 显示某楼栋某时间段用电量
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
三、代码设计
3.1 输入数据
将用户输入的数据写入到指定文件中。用户会被提示输入用户名、楼栋号、抄表日期和电表读数。
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
void input_data(const std::string& filename) {
std::ofstream file(filename, std::ios::app);
std::string username;
std::string building_number;
std::string date;
int reading;
std::cout << "请输入用户名: ";
std::cin >> username;
std::cout << "请输入楼栋号: ";
std::cin >> building_number;
std::cout << "请输入抄表日期 (格式 YYYY-MM): ";
std::cin >> date;
std::cout << "请输入电表读数: ";
std::cin >> reading;
MeterReading entry{ username, building_number, date, reading };
data.push_back(entry);
file << username << "," << building_number << "," << date << "," << reading << "\n";
file.close();
}
3.2 根据用户显示用电量
对存储的数据进行排序,并按照每个用户的电表读数总和进行降序排列。然后将排序后的结果输出显示。
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
void sort_and_display() {
std::map<std::string, int> user_total;
for (const auto& entry : data) {
user_total[entry.username] += entry.reading;
}
std::vector<std::pair<std::string, int>> sorted(user_total.begin(), user_total.end());
std::sort(sorted.begin(), sorted.end(), [](const auto& a, const auto& b) {
return a.second > b.second;
});
for (const auto& pair : sorted) {
std::cout << pair.first << " " << pair.second << "\n";
}
}
3.3 根据用户名和月份显示用电量
获取用户输入的用户名和月份,然后遍历存储的数据,找到符合用户名和月份条件的数据条目,并计算它们的电表读数总和。最后,输出显示该用户在指定月份的总用电量。
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
void display_user_month() {
std::string username, month;
std::cout << "请输入用户名: ";
std::cin >> username;
std::cout << "请输入月份 (格式 YYYY-MM): ";
std::cin >> month;
int total = 0;
for (const auto& entry : data) {
if (entry.username == username && entry.date.substr(0, 7) == month) {
total += entry.reading;
}
}
std::cout << "用户" << username << " 在 " << month << " 的总用电量是 " << total << "\n";
}
四、总结
展示如下【关注 测试开发自动化 回复 用电管理数据管理系统 公众号获取源码】 :
-
输入数据:允许用户输入用户名、楼栋号、抄表日期和电表读数,并将数据保存到文件和内存中。
-
显示用户用电量:计算每个用户的电表读数总和,并按照总用电量降序排列,然后将结果显示出来。
-
显示某用户某月用电量:根据用户输入的用户名和月份,计算指定用户在指定月份的总用电量,并将结果显示出来。
-
显示某楼栋某时间段用电量:根据用户输入的楼栋号、开始月份和结束月份,计算指定楼栋在指定时间段内的总用电量,并将结果显示出来。
-
退出程序:当用户选择退出时,程序终止执行。
电表读数管理系统可以帮助用户记录和统计电表读数数据,方便了解用户和楼栋的用电情况。用户可以根据需要进行数据录入、查询和分析,从而更好地管理和控制用电量。