c++输入一个文件名,程序查找是否存在此二进制数据文件,若不存在,则新建一个文件,若存在,则打开此文件并输出所有数据,提示用户输入若干个学生的学号和成绩,输入完成后将信息存入二进制数据文件,并显示所有数据
时间: 2023-12-05 19:03:26 浏览: 58
编制一个程序,要求输入5个学生的学号、2门课的成绩,然后输出每个学生的学号、2门课成绩、平均成绩。
3星 · 编辑精心推荐
好的,这是一个比较完整的程序,代码如下:
```cpp
#include <iostream>
#include <fstream>
using namespace std;
struct student {
int id;
float score;
};
int main() {
string filename;
cout << "请输入文件名:";
cin >> filename;
// 尝试打开文件
ifstream fin(filename, ios::binary);
if (!fin.good()) { // 如果文件不存在,则新建一个文件
fin.close();
ofstream fout(filename, ios::binary);
fout.close();
fin.open(filename, ios::binary);
}
// 输出所有数据
student s;
while (fin.read((char*)&s, sizeof(s))) {
cout << "学号:" << s.id << ",成绩:" << s.score << endl;
}
fin.close();
// 提示用户输入学生信息
int num;
cout << "请输入学生人数:";
cin >> num;
student* ss = new student[num];
for (int i = 0; i < num; i++) {
cout << "请输入第" << i + 1 << "个学生的学号和成绩:";
cin >> ss[i].id >> ss[i].score;
}
// 将信息存入文件
ofstream fout(filename, ios::binary | ios::app);
fout.write((char*)ss, num * sizeof(student));
fout.close();
// 显示所有数据
fin.open(filename, ios::binary);
while (fin.read((char*)&s, sizeof(s))) {
cout << "学号:" << s.id << ",成绩:" << s.score << endl;
}
fin.close();
delete[] ss;
return 0;
}
```
程序逻辑比较清晰,首先让用户输入文件名,并尝试打开文件,如果文件不存在,则新建一个文件。然后输出所有数据,并提示用户输入学生信息。将学生信息存入文件后,再次输出所有数据。需要注意的是,写文件时应该以追加模式打开文件,否则会覆盖原有数据。
阅读全文