编写c++程序机房收费管理系统 功能要求: (1)输入功能:输入30名学生的学号、班级、姓名、上机起始时间。 (2)上机起始时间和结束时间以时分秒输入输出 (3)计算功能:计算每个下机学生的上机费用,每小时1元。(不足一小时按一小时计算) (4)查询功能:按条件(班级、学号、姓名)显示学生的额上机时间。 (5)机器使用情况的显示。(显示方式不限,但要一目了然) (6)要求使用类。
时间: 2023-12-22 07:05:43 浏览: 76
好的,这是一个相对简单的机房收费管理系统,以下是程序的实现。
```cpp
#include <iostream>
#include <string>
#include <vector>
#include <iomanip>
using namespace std;
class Student {
public:
Student(string id, string name, string classname, int start_time) :
id(id), name(name), classname(classname), start_time(start_time) {}
string get_id() { return id; }
string get_name() { return name; }
string get_classname() { return classname; }
int get_start_time() { return start_time; }
int get_end_time() { return end_time; }
void set_end_time(int end_time) { this->end_time = end_time; }
int get_duration() { return (end_time - start_time); }
int get_cost() { return ((get_duration() + 3599) / 3600); }
private:
string id;
string name;
string classname;
int start_time;
int end_time;
};
class Room {
public:
Room() {}
void add_student(Student student) { students.push_back(student); }
void set_start_time(int start_time) { this->start_time = start_time; }
int get_start_time() { return start_time; }
void set_end_time(int end_time) { this->end_time = end_time; }
int get_end_time() { return end_time; }
int get_duration() { return (end_time - start_time); }
int get_cost() { return ((get_duration() + 3599) / 3600 * students.size()); }
vector<Student> search(string key) {
vector<Student> results;
for (auto student : students) {
if (student.get_id() == key || student.get_name() == key || student.get_classname() == key) {
results.push_back(student);
}
}
return results;
}
void print_usage() {
cout << "机器使用情况:" << endl;
for (int i = 0; i < students.size(); i++) {
cout << setw(5) << (i + 1) << setw(15) << students[i].get_id() << setw(15) << students[i].get_name() << setw(15) << students[i].get_classname() << setw(15) << students[i].get_start_time() << setw(15) << students[i].get_end_time() << endl;
}
}
private:
vector<Student> students;
int start_time;
int end_time;
};
int main() {
Room room;
int start_time, end_time;
cout << "请输入机房开始使用的时间(秒):";
cin >> start_time;
room.set_start_time(start_time);
int n = 30;
while (n--) {
string id, name, classname;
int start_time;
cout << "请输入学生信息(学号、班级、姓名、上机起始时间,以空格隔开):";
cin >> id >> classname >> name >> start_time;
Student student(id, name, classname, start_time);
room.add_student(student);
cout << "学生信息已录入" << endl;
}
cout << endl;
cout << "请输入机房结束使用的时间(秒):";
cin >> end_time;
room.set_end_time(end_time);
cout << endl;
room.print_usage();
cout << endl;
cout << "请输入查询关键字(学号、班级、姓名):";
string key;
cin >> key;
cout << endl;
vector<Student> results = room.search(key);
if (results.size() > 0) {
cout << "查询结果:" << endl;
for (int i = 0; i < results.size(); i++) {
cout << setw(5) << (i + 1) << setw(15) << results[i].get_id() << setw(15) << results[i].get_name() << setw(15) << results[i].get_classname() << setw(15) << results[i].get_start_time() << setw(15) << results[i].get_end_time() << setw(15) << results[i].get_duration() << setw(15) << results[i].get_cost() << endl;
}
}
else {
cout << "没有查询到符合条件的学生" << endl;
}
cout << endl;
cout << "机房总费用为:" << room.get_cost() << "元" << endl;
return 0;
}
```
这个程序中,Student 类表示一个学生,包括学号、姓名、班级、上机起始时间和结束时间等信息。Room 类表示一个机房,包括机器使用情况、开始和结束时间等信息。程序中使用 vector 存储学生信息,可以动态添加和查询学生信息。程序中使用了一些 C++11 的特性,如 auto、range-based for 循环和 nullptr。程序中使用 setw 控制输出格式,使得输出更加美观。
阅读全文