用链表写一个合同管理系统,请用c++语言
时间: 2023-08-04 10:20:12 浏览: 75
好的,以下是用链表实现的 C++ 合同管理系统示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
// 合同类
class Contract {
public:
string contract_id; // 合同编号
string contract_name; // 合同名称
int contract_duration; // 合同期限
Contract* next_contract; // 指向下一个合同的指针
Contract(string id, string name, int duration) {
contract_id = id;
contract_name = name;
contract_duration = duration;
next_contract = NULL;
}
};
// 合同列表类
class ContractList {
public:
Contract* head_contract; // 头节点指针
ContractList() {
head_contract = NULL;
}
// 添加合同
void add_contract(string id, string name, int duration) {
Contract* new_contract = new Contract(id, name, duration);
if (head_contract == NULL) {
head_contract = new_contract;
} else {
Contract* current_contract = head_contract;
while (current_contract->next_contract != NULL) {
current_contract = current_contract->next_contract;
}
current_contract->next_contract = new_contract;
}
}
// 删除合同
void delete_contract(string id) {
if (head_contract->contract_id == id) {
head_contract = head_contract->next_contract;
return;
}
Contract* current_contract = head_contract;
while (current_contract->next_contract != NULL) {
if (current_contract->next_contract->contract_id == id) {
current_contract->next_contract = current_contract->next_contract->next_contract;
return;
}
current_contract = current_contract->next_contract;
}
}
// 打印合同列表
void print_contracts() {
Contract* current_contract = head_contract;
while (current_contract != NULL) {
cout << "Contract ID: " << current_contract->contract_id << endl;
cout << "Contract Name: " << current_contract->contract_name << endl;
cout << "Contract Duration: " << current_contract->contract_duration << endl;
current_contract = current_contract->next_contract;
}
}
};
int main() {
ContractList contract_list;
// 添加合同
contract_list.add_contract("001", "合同1", 12);
contract_list.add_contract("002", "合同2", 24);
contract_list.add_contract("003", "合同3", 36);
// 打印合同列表
contract_list.print_contracts();
// 删除合同
contract_list.delete_contract("002");
// 打印合同列表
contract_list.print_contracts();
return 0;
}
```
在上述代码中,首先定义了一个 Contract 类,用于表示一个合同。每个合同对象包括合同编号、合同名称和合同期限。同时,每个合同对象还包括一个指向下一个合同对象的指针。
接下来,定义了一个 ContractList 类,用于操作合同对象。该类包含三个方法:add_contract、delete_contract 和 print_contracts。
add_contract 方法用于添加一个新的合同对象到链表中。如果链表为空,则将该合同对象设置为链表的头节点。否则,遍历链表,找到最后一个合同对象,将新的合同对象添加到其 next_contract 属性。
delete_contract 方法用于从链表中删除一个指定合同编号的合同对象。如果要删除的合同对象是链表的头节点,则将头节点设置为其 next_contract 属性。否则,遍历链表,找到待删除合同对象的前一个合同对象,将其 next_contract 属性指向待删除合同对象的下一个合同对象。
print_contracts 方法用于遍历链表,并打印每个合同对象的属性。
在 main 函数中,我们创建了一个 ContractList 对象,并向其添加了三个合同对象。然后,我们调用了 print_contracts 方法,打印了合同列表。接着,我们调用了 delete_contract 方法,删除了合同编号为 "002" 的合同对象,并再次调用了 print_contracts 方法,打印了删除后的合同列表。
阅读全文