用C++设计一学生校园消费记录系统
时间: 2024-02-09 09:11:43 浏览: 132
基于 RMI 技术的数据库操作中间件设计学生、教师消费记录管理系统【100011197】
5星 · 资源好评率100%
好的,我来为您设计一下这个系统。
首先,我们需要定义学生和消费记录的类,可以使用如下的代码:
```cpp
class Student {
private:
string name;
int id;
public:
Student(string n, int i) : name(n), id(i) {}
string getName() const { return name; }
int getID() const { return id; }
};
class Record {
private:
Student student;
double amount;
string type;
public:
Record(Student s, double a, string t) : student(s), amount(a), type(t) {}
Student getStudent() const { return student; }
double getAmount() const { return amount; }
string getType() const { return type; }
};
```
上述代码定义了两个类:`Student` 和 `Record`。其中,`Student` 类表示一个学生,包含学生的姓名和学号;`Record` 类表示一条消费记录,包含消费的学生、金额和类型。
接下来,我们需要设计一个管理消费记录的类,可以使用如下的代码:
```cpp
class RecordManager {
private:
vector<Record> records;
public:
void addRecord(Record r) { records.push_back(r); }
double getTotalAmount() const {
double total = 0;
for (const auto& r : records) {
total += r.getAmount();
}
return total;
}
double getTotalAmountByType(string type) const {
double total = 0;
for (const auto& r : records) {
if (r.getType() == type) {
total += r.getAmount();
}
}
return total;
}
vector<Record> getRecordsByStudent(Student s) const {
vector<Record> result;
for (const auto& r : records) {
if (r.getStudent().getID() == s.getID()) {
result.push_back(r);
}
}
return result;
}
};
```
上述代码定义了一个 `RecordManager` 类,它管理着所有的消费记录。其中,`addRecord` 方法用于添加一条消费记录;`getTotalAmount` 方法用于获取所有消费记录的总金额;`getTotalAmountByType` 方法用于获取某一类型消费的总金额;`getRecordsByStudent` 方法用于获取某一学生的所有消费记录。
最后,我们可以编写一个简单的 `main` 函数进行测试:
```cpp
int main() {
RecordManager manager;
Student s1("张三", 1);
Student s2("李四", 2);
manager.addRecord(Record(s1, 10, "餐饮"));
manager.addRecord(Record(s1, 20, "娱乐"));
manager.addRecord(Record(s2, 15, "餐饮"));
manager.addRecord(Record(s2, 30, "购物"));
cout << "所有消费的总金额为:" << manager.getTotalAmount() << endl;
cout << "餐饮消费的总金额为:" << manager.getTotalAmountByType("餐饮") << endl;
auto records = manager.getRecordsByStudent(s1);
cout << "张三的消费记录如下:" << endl;
for (const auto& r : records) {
cout << r.getType() << " " << r.getAmount() << endl;
}
return 0;
}
```
上述代码中,我们首先创建了一个 `RecordManager` 对象,然后添加了四条消费记录。最后,我们调用了 `RecordManager` 类中的三个方法,并输出了相应的结果。
希望这个设计能够满足您的需求!
阅读全文