试用C++设计一学生校园消费记录系统

时间: 2023-10-06 20:05:59 浏览: 49
好的,以下是一个简单的学生校园消费记录系统的设计: ```cpp #include <iostream> #include <string> #include <vector> using namespace std; class Student { public: Student(string name, int id) { this->name = name; this->id = id; this->balance = 0; } string getName() { return name; } int getId() { return id; } double getBalance() { return balance; } void addBalance(double amount) { balance += amount; } private: string name; int id; double balance; }; class Transaction { public: Transaction(Student* student, string type, double amount) { this->student = student; this->type = type; this->amount = amount; } Student* getStudent() { return student; } string getType() { return type; } double getAmount() { return amount; } private: Student* student; string type; double amount; }; class TransactionRecord { public: void addTransaction(Transaction* transaction) { transactions.push_back(transaction); } vector<Transaction*> getTransactions() { return transactions; } private: vector<Transaction*> transactions; }; int main() { // 创建学生对象 Student* s1 = new Student("张三", 1001); Student* s2 = new Student("李四", 1002); // 进行消费记录 Transaction* t1 = new Transaction(s1, "购物", -50); Transaction* t2 = new Transaction(s2, "充值", 100); Transaction* t3 = new Transaction(s1, "餐饮", -30); // 创建消费记录对象,并添加记录 TransactionRecord* record = new TransactionRecord(); record->addTransaction(t1); record->addTransaction(t2); record->addTransaction(t3); // 输出每个学生的消费记录和余额 cout << s1->getName() << "的消费记录:" << endl; double balance1 = s1->getBalance(); for (auto t : record->getTransactions()) { if (t->getStudent() == s1) { cout << t->getType() << "\t" << t->getAmount() << endl; balance1 += t->getAmount(); } } cout << "余额:" << balance1 << endl; cout << s2->getName() << "的消费记录:" << endl; double balance2 = s2->getBalance(); for (auto t : record->getTransactions()) { if (t->getStudent() == s2) { cout << t->getType() << "\t" << t->getAmount() << endl; balance2 += t->getAmount(); } } cout << "余额:" << balance2 << endl; return 0; } ``` 该程序中,使用了三个类:`Student`表示学生,`Transaction`表示一次消费记录,`TransactionRecord`表示所有消费记录。在主函数中,首先创建两个学生对象,然后进行三次消费记录,并将其添加到消费记录对象中。最后,遍历所有消费记录,输出每个学生的消费记录和余额。 该程序还有很多可以扩展和优化的地方,例如可以添加更多的消费类型和消费限制,可以使用文件或数据库来保存消费记录等。

相关推荐

最新推荐

recommend-type

C++ 学生成绩管理系统设计报告书

个人课程设计报告书(内含源码) 内含4个类,各自具有其属性和行为。 基本实现了: (1)学生基本信息、考试科目及成绩的信息录入。 (2)已有学生信息的显示。 (3)学生基本信息的读取和保存输入数据等功能 (4)学生基本...
recommend-type

学籍管理系统源代码 c++.docx

(3)显示已录取的学生信息:可以根据学号查询相对应的学生记录,然后输出该学生信息,也可以直接输出全体学生信息。 (4)删除已录取的学生信息:可以根据学号查询相对应的学生记录,然后删除该学生信息,也可以...
recommend-type

C++学校人员信息管理系统课程设计.doc

一个用C++写的学校人员管理系统,适合大一大二的课程设计,里面运用到了链表、文件读写等一些C++基本语法操作
recommend-type

c++程序设计基础课程设计学生成绩管理系统实验报告

设计一个类Cstudent,类中包含一个学生的基本数据如下: 编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。 并假设编号为整数,且从1号往后连续编号;姓名为字符串,性别为字符。如: 1 LiPing m 18 89 98 ...
recommend-type

诊所信息管理系统C++课程设计报告.doc

模拟诊所信息管理系统就是对存储患者信息以及医生信息在个人PC上的编程实现。本系统采用了用户身份的注册、登陆、增加信息、查询信息、帐单信息以及统计所有患者的总费用等功能。并分析在现实生活中遇到的问题并得到...
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

实现实时数据湖架构:Kafka与Hive集成

![实现实时数据湖架构:Kafka与Hive集成](https://img-blog.csdnimg.cn/img_convert/10eb2e6972b3b6086286fc64c0b3ee41.jpeg) # 1. 实时数据湖架构概述** 实时数据湖是一种现代数据管理架构,它允许企业以低延迟的方式收集、存储和处理大量数据。与传统数据仓库不同,实时数据湖不依赖于预先定义的模式,而是采用灵活的架构,可以处理各种数据类型和格式。这种架构为企业提供了以下优势: - **实时洞察:**实时数据湖允许企业访问最新的数据,从而做出更明智的决策。 - **数据民主化:**实时数据湖使各种利益相关者都可
recommend-type

用 Python 画一个可以动的爱心

好的,我可以帮助您使用Python来绘制一个动态的爱心。您可以使用turtle库来实现。以下是实现代码: ```python import turtle import math # 设置画布和画笔 canvas = turtle.Screen() canvas.bgcolor("black") pencil = turtle.Turtle() pencil.speed(0) pencil.color("red", "pink") pencil.pensize(3) # 定义爱心函数 def draw_love(heart_size, x_offset=0, y_offset=0):
recommend-type

JSBSim Reference Manual

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