用c++编写一个病人信息的录入:包括病人的病历号(不能重复,须有冲突性检查),姓名、性别、年龄
时间: 2024-03-26 13:42:30 浏览: 13
以下是一个简单的病人信息录入程序的代码示例,包括病人的病历号、姓名、性别和年龄。为了确保病历号不重复,我们使用了一个静态变量来记录已经分配的最大病历号,并在每次分配新的病历号时进行检查。代码示例如下:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Patient {
private:
int id; // 病历号
string name; // 姓名
char gender; // 性别
int age; // 年龄
public:
static int maxId; // 静态变量,记录已经分配的最大病历号
Patient(string name, char gender, int age) {
this->id = ++maxId; // 分配新的病历号
this->name = name;
this->gender = gender;
this->age = age;
}
int getId() const {
return id;
}
string getName() const {
return name;
}
char getGender() const {
return gender;
}
int getAge() const {
return age;
}
};
int Patient::maxId = 0;
int main() {
vector<Patient> patients; // 存储病人信息的容器
while (true) {
// 读入病人信息
string name;
char gender;
int age;
cout << "请输入病人姓名、性别、年龄(以空格分隔):" << endl;
cin >> name >> gender >> age;
// 检查病历号是否重复
if (find_if(patients.begin(), patients.end(), [&](const Patient& p){ return p.getId() == Patient::maxId + 1; }) != patients.end()) {
cout << "病历号已存在,请重新输入!" << endl;
continue;
}
// 创建病人对象并添加到容器中
patients.push_back(Patient(name, gender, age));
cout << "病人信息录入成功!病历号为:" << Patient::maxId << endl;
// 显示已录入的病人信息
cout << "已录入的病人信息:" << endl;
for (const Patient& p : patients) {
cout << "病历号:" << p.getId() << ",姓名:" << p.getName() << ",性别:" << p.getGender() << ",年龄:" << p.getAge() << endl;
}
}
return 0;
}
```
在上面的代码中,我们使用了一个静态变量`maxId`来记录已经分配的最大病历号。每次创建新的病人对象时,我们都通过`++maxId`来分配一个新的病历号。在分配新的病历号之前,我们使用了`find_if`算法来检查病历号是否已经被分配。如果已经被分配,就提示用户重新输入病人信息。否则,就创建病人对象并添加到容器中。最后,我们遍历容器中的所有病人对象,显示已经录入的病人信息。