具体学生一卡通管理系统

时间: 2023-07-10 10:33:02 浏览: 49
好的,下面我为您提供一份基于C++的学生一卡通管理系统的代码示例,希望能对您有所帮助。 ```c++ #include <iostream> #include <vector> #include <string> #include <ctime> using namespace std; // 学生类 class Student { private: string name; // 姓名 int id; // 学号 string department; // 学院 public: Student(string name, int id, string department) { this->name = name; this->id = id; this->department = department; } string getName() { return name; } int getId() { return id; } string getDepartment() { return department; } void setName(string name) { this->name = name; } void setId(int id) { this->id = id; } void setDepartment(string department) { this->department = department; } }; // 一卡通类 class Card { private: int id; // 卡号 int balance; // 余额 bool isLost; // 是否挂失 vector<Record> records; // 消费记录 public: Card(int id, int balance) { this->id = id; this->balance = balance; this->isLost = false; } int getId() { return id; } int getBalance() { return balance; } bool getIsLost() { return isLost; } void setId(int id) { this->id = id; } void setBalance(int balance) { this->balance = balance; } void setIsLost(bool isLost) { this->isLost = isLost; } void recharge(int amount) { balance += amount; } void consume(int amount) { if (!isLost && balance >= amount) { balance -= amount; time_t now = time(0); tm *ltm = localtime(&now); string time = to_string(ltm->tm_year + 1900) + "-" + to_string(ltm->tm_mon + 1) + "-" + to_string(ltm->tm_mday) + " " + to_string(ltm->tm_hour) + ":" + to_string(ltm->tm_min) + ":" + to_string(ltm->tm_sec); Record record(id, amount, time); records.push_back(record); } } vector<Record> getRecords() { return records; } }; // 消费记录类 class Record { private: int cardId; // 卡号 int amount; // 消费金额 string time; // 消费时间 public: Record(int cardId, int amount, string time) { this->cardId = cardId; this->amount = amount; this->time = time; } int getCardId() { return cardId; } int getAmount() { return amount; } string getTime() { return time; } }; // 学生一卡通管理系统类 class StudentCardSystem { private: vector<Student> students; // 学生信息 vector<Card> cards; // 一卡通信息 public: void addStudent(Student student) { students.push_back(student); } void addCard(Card card) { cards.push_back(card); } Student getStudentById(int id) { for (int i = 0; i < students.size(); i++) { if (students[i].getId() == id) { return students[i]; } } Student student("", 0, ""); return student; } Card getCardById(int id) { for (int i = 0; i < cards.size(); i++) { if (cards[i].getId() == id) { return cards[i]; } } Card card(0, 0); return card; } void recharge(int cardId, int amount) { Card card = getCardById(cardId); card.recharge(amount); for (int i = 0; i < cards.size(); i++) { if (cards[i].getId() == cardId) { cards[i] = card; } } } void consume(int cardId, int amount) { Card card = getCardById(cardId); card.consume(amount); for (int i = 0; i < cards.size(); i++) { if (cards[i].getId() == cardId) { cards[i] = card; } } } vector<Record> getRecords(int cardId) { Card card = getCardById(cardId); return card.getRecords(); } }; // 主函数 int main() { // 初始化学生一卡通管理系统 StudentCardSystem system; Student student1("张三", 1001, "计算机科学与技术"); Student student2("李四", 1002, "软件工程"); system.addStudent(student1); system.addStudent(student2); Card card1(10001, 100); Card card2(10002, 200); system.addCard(card1); system.addCard(card2); // 充值 system.recharge(10001, 50); system.recharge(10002, 100); // 消费 system.consume(10001, 30); system.consume(10002, 50); // 查询消费记录 vector<Record> records1 = system.getRecords(10001); vector<Record> records2 = system.getRecords(10002); cout << "消费记录:" << endl; cout << "卡号\t消费金额\t消费时间" << endl; for (int i = 0; i < records1.size(); i++) { cout << records1[i].getCardId() << "\t" << records1[i].getAmount() << "\t" << records1[i].getTime() << endl; } for (int i = 0; i < records2.size(); i++) { cout << records2[i].getCardId() << "\t" << records2[i].getAmount() << "\t" << records2[i].getTime() << endl; } return 0; } ``` 以上代码仅供参考,具体实现还需根据实际需求进行调整。

相关推荐

最新推荐

recommend-type

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a

pre_o_1csdn63m9a1bs0e1rr51niuu33e.a
recommend-type

matlab建立计算力学课程的笔记和文件.zip

matlab建立计算力学课程的笔记和文件.zip
recommend-type

FT-Prog-v3.12.38.643-FTD USB 工作模式设定及eprom读写

FT_Prog_v3.12.38.643--FTD USB 工作模式设定及eprom读写
recommend-type

matlab基于RRT和人工势场法混合算法的路径规划.zip

matlab基于RRT和人工势场法混合算法的路径规划.zip
recommend-type

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip

matlab基于matlab的两步定位软件定义接收机的开源GNSS直接位置估计插件模块.zip
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

SPDK_NVMF_DISCOVERY_NQN是什么 有什么作用

SPDK_NVMF_DISCOVERY_NQN 是 SPDK (Storage Performance Development Kit) 中用于查询 NVMf (Non-Volatile Memory express over Fabrics) 存储设备名称的协议。NVMf 是一种基于网络的存储协议,可用于连接远程非易失性内存存储器。 SPDK_NVMF_DISCOVERY_NQN 的作用是让存储应用程序能够通过 SPDK 查询 NVMf 存储设备的名称,以便能够访问这些存储设备。通过查询 NVMf 存储设备名称,存储应用程序可以获取必要的信息,例如存储设备的IP地址、端口号、名称等,以便能
recommend-type

JSBSim Reference Manual

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