用c++编写程序,要求:输入要增加的药品的个数,逐条录入新增的药品的各项信息,并保存到数据文件中,增加时要有对编号是否重复的判断
时间: 2024-02-12 19:09:28 浏览: 67
好的,让我来解答你的问题。
首先,你需要定义一个药品的结构体,包含药品编号、药品名称、药品价格等信息。然后,你可以使用文件流来读取和写入数据文件。
以下是一个简单的示例程序:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
// 定义药品结构体
struct Medicine {
int id; // 药品编号
string name; // 药品名称
double price; // 药品价格
};
// 判断药品编号是否重复
bool isDuplicateId(int id, Medicine* medicines, int count) {
for (int i = 0; i < count; i++) {
if (medicines[i].id == id) {
return true;
}
}
return false;
}
int main() {
int n; // 要增加的药品的个数
cout << "请输入要增加的药品的个数:";
cin >> n;
// 动态分配药品结构体数组
Medicine* medicines = new Medicine[n];
// 读取数据文件中的药品信息
int count = 0;
ifstream fin("medicines.dat");
if (fin.is_open()) {
while (fin >> medicines[count].id >> medicines[count].name >> medicines[count].price) {
count++;
}
fin.close();
}
// 录入新增的药品信息
for (int i = 0; i < n; i++) {
cout << "请输入第" << i+1 << "个药品的信息(编号、名称、价格):";
cin >> medicines[count+i].id >> medicines[count+i].name >> medicines[count+i].price;
// 判断药品编号是否重复
if (isDuplicateId(medicines[count+i].id, medicines, count+i)) {
cout << "药品编号已存在,请重新输入!" << endl;
i--;
}
}
// 写入数据文件
ofstream fout("medicines.dat");
if (fout.is_open()) {
for (int i = 0; i < count+n; i++) {
fout << medicines[i].id << " " << medicines[i].name << " " << medicines[i].price << endl;
}
fout.close();
}
// 释放动态分配的数组内存
delete [] medicines;
return 0;
}
```
在这个示例程序中,我们定义了一个药品结构体,并使用动态分配的数组来存储药品信息。在录入新增的药品信息时,我们使用了 `isDuplicateId` 函数来判断药品编号是否重复。最后,我们将药品信息写入数据文件,并释放动态分配的数组内存。
希望这个示例程序能够对你有所帮助!
阅读全文