选择“保存学生成绩记录”,系统会将已有的学生记录保存在默认的文件名为fname.txt的文件中。
时间: 2024-02-13 14:02:14 浏览: 39
以下是一个简单的 C++ 程序示例,用于将学生成绩记录保存在默认文件名为 `fname.txt` 的文件中:
```c++
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main()
{
// 创建文件流对象并打开文件
ofstream file("fname.txt");
// 检查文件是否成功打开
if (!file.is_open())
{
cout << "无法打开文件!" << endl;
return 1;
}
// 写入学生成绩记录
file << "学生A,90" << endl;
file << "学生B,85" << endl;
file << "学生C,92" << endl;
// 关闭文件
file.close();
cout << "学生成绩记录已保存在文件 fname.txt 中。" << endl;
return 0;
}
```
上述代码创建了一个文件流对象并打开了 `fname.txt` 文件,然后将学生成绩记录写入该文件中。最后,关闭文件流对象并输出一条成功保存的消息。
请注意,上述代码只是一个示例,你需要根据你的实际需求进行修改。例如,你可能需要从用户那里获取输入,并将输入写入文件中。此外,你可能需要在读取文件之前检查文件是否存在,以避免发生错误。
相关问题
⑶选择“添加学生成绩记录”后,输入要插入记录的位置。按程序提示依次输入学号,姓名,性别,成绩,插入记录成功。若追加记录,可连续添加。 ⑷选择“显示学生成绩记录”,显示学生成绩表中已有的学生记录的个数,并显示出各个学生记录的相关信息。 ⑸选择“查找学生成绩记录”,按提示输入要查找的学生的学号,输入学号,若该学号存在,则输出相应的学生记录,如该学号不存在,则按任意键返回主菜单。 ⑹选择“删除学生成绩记录”,按提示输入要删除的学生的学号,输入学号,若该学号存在,则删除相应的学生记录,如果该学号不存在,则按任意键返回主菜单。 ⑺选择“保存学生成绩记录”,系统会将已有的学生记录保存在默认的文件名为fname.txt的文件中。 ⑻选择“导出学生成绩记录”,系统会提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。c++代码
以下是一个简单的C++代码示例,实现了学生成绩记录的添加、显示、查找、删除、保存和导出功能:
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
struct Student {
string id;
string name;
char gender;
double score;
};
const int MAX_SIZE = 100; // 最大记录数
Student students[MAX_SIZE]; // 学生记录数组
int size = 0; // 当前记录数
// 添加学生成绩记录
void addRecord() {
if (size >= MAX_SIZE) {
cout << "学生记录已满,无法添加!" << endl;
return;
}
int pos;
cout << "请输入要插入记录的位置(1-" << size+1 << "):";
cin >> pos;
if (pos < 1 || pos > size+1) {
cout << "位置无效,插入失败!" << endl;
return;
}
Student s;
cout << "请输入学号:";
cin >> s.id;
cout << "请输入姓名:";
cin >> s.name;
cout << "请输入性别(M/F):";
cin >> s.gender;
cout << "请输入成绩:";
cin >> s.score;
for (int i = size; i >= pos; i--) {
students[i] = students[i-1];
}
students[pos-1] = s;
size++;
cout << "插入记录成功!" << endl;
}
// 显示学生成绩记录
void showRecords() {
cout << "学生成绩表中已有 " << size << " 条记录:" << endl;
for (int i = 0; i < size; i++) {
cout << students[i].id << "\t"
<< students[i].name << "\t"
<< students[i].gender << "\t"
<< students[i].score << endl;
}
}
// 查找学生成绩记录
void searchRecord() {
string id;
cout << "请输入要查找的学生的学号:";
cin >> id;
for (int i = 0; i < size; i++) {
if (students[i].id == id) {
cout << students[i].id << "\t"
<< students[i].name << "\t"
<< students[i].gender << "\t"
<< students[i].score << endl;
return;
}
}
cout << "未找到该学号的学生记录!" << endl;
}
// 删除学生成绩记录
void deleteRecord() {
string id;
cout << "请输入要删除的学生的学号:";
cin >> id;
for (int i = 0; i < size; i++) {
if (students[i].id == id) {
for (int j = i; j < size-1; j++) {
students[j] = students[j+1];
}
size--;
cout << "删除记录成功!" << endl;
return;
}
}
cout << "未找到该学号的学生记录!" << endl;
}
// 保存学生成绩记录到文件
void saveRecords() {
ofstream outfile("fname.txt");
if (!outfile) {
cout << "无法打开文件!" << endl;
return;
}
for (int i = 0; i < size; i++) {
outfile << students[i].id << "\t"
<< students[i].name << "\t"
<< students[i].gender << "\t"
<< students[i].score << endl;
}
outfile.close();
cout << "保存记录成功!" << endl;
}
// 导出学生成绩记录到文件
void exportRecords() {
string filename;
cout << "请输入导出文件名(默认为fname.txt):";
cin >> filename;
if (filename == "") {
filename = "fname.txt";
}
ofstream outfile(filename);
if (!outfile) {
cout << "无法打开文件!" << endl;
return;
}
for (int i = 0; i < size; i++) {
outfile << students[i].id << "\t"
<< students[i].name << "\t"
<< students[i].gender << "\t"
<< students[i].score << endl;
}
outfile.close();
cout << "导出记录成功!" << endl;
}
// 主菜单
void menu() {
cout << "===== 学生成绩管理系统 =====" << endl;
cout << "1. 添加学生成绩记录" << endl;
cout << "2. 显示学生成绩记录" << endl;
cout << "3. 查找学生成绩记录" << endl;
cout << "4. 删除学生成绩记录" << endl;
cout << "5. 保存学生成绩记录" << endl;
cout << "6. 导出学生成绩记录" << endl;
cout << "0. 退出程序" << endl;
cout << "请输入操作编号:";
}
int main() {
int choice;
while (true) {
menu();
cin >> choice;
switch (choice) {
case 1: addRecord(); break;
case 2: showRecords(); break;
case 3: searchRecord(); break;
case 4: deleteRecord(); break;
case 5: saveRecords(); break;
case 6: exportRecords(); break;
case 0: return 0;
default: cout << "无效的操作编号!" << endl;
}
}
}
C++用面向对象写一个学生信息管理系统,要求包括添加、显示、查找、删除、保存、导出等功能,添加包括不超过11个字符的学号、20个字符的姓名、性别、语文、数学、英语成绩,可连续添加信息。查找可通过学号或姓名。删除的数据会转存至删除库。将已有的学生记录保存在默认的文件名为fname.txt的文件中。可导出记录, 提示输入文件名,输入默认的文件名为fname.txt,则可将文件中的相关信息导出。
好的,这是一个比较复杂的问题,需要分步骤进行实现。首先我们需要定义一个学生信息的结构体,然后再通过面向对象的方式实现各种功能。
以下是一个简单的实现,仅供参考:
```c++
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;
// 定义学生信息结构体
struct Student {
string id; // 学号
string name; // 姓名
string gender; // 性别
int chinese; // 语文成绩
int math; // 数学成绩
int english; // 英语成绩
};
class StudentManagementSystem {
public:
StudentManagementSystem() {
load(); // 加载已有学生信息
}
// 添加学生信息
void add() {
Student student;
cout << "请输入学号:";
cin >> student.id;
cout << "请输入姓名:";
cin >> student.name;
cout << "请输入性别:";
cin >> student.gender;
cout << "请输入语文成绩:";
cin >> student.chinese;
cout << "请输入数学成绩:";
cin >> student.math;
cout << "请输入英语成绩:";
cin >> student.english;
students.push_back(student);
cout << "添加成功!" << endl;
}
// 显示所有学生信息
void showAll() {
for (int i = 0; i < students.size(); i++) {
printStudent(students[i]);
}
}
// 根据学号或姓名查找学生信息
void search() {
string keyword;
cout << "请输入要查找的学号或姓名:";
cin >> keyword;
vector<Student> results;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == keyword || students[i].name == keyword) {
results.push_back(students[i]);
}
}
if (results.size() == 0) {
cout << "没有找到符合条件的学生!" << endl;
} else {
cout << "共找到 " << results.size() << " 个符合条件的学生:" << endl;
for (int i = 0; i < results.size(); i++) {
printStudent(results[i]);
}
}
}
// 删除学生信息
void remove() {
string keyword;
cout << "请输入要删除的学号或姓名:";
cin >> keyword;
vector<Student> results;
for (int i = 0; i < students.size(); i++) {
if (students[i].id == keyword || students[i].name == keyword) {
results.push_back(students[i]);
}
}
if (results.size() == 0) {
cout << "没有找到符合条件的学生!" << endl;
} else {
cout << "共找到 " << results.size() << " 个符合条件的学生:" << endl;
for (int i = 0; i < results.size(); i++) {
printStudent(results[i]);
removedStudents.push_back(results[i]); // 将删除的学生信息保存到删除库中
}
for (int i = 0; i < students.size(); i++) {
if (students[i].id == keyword || students[i].name == keyword) {
students.erase(students.begin() + i);
i--; // 注意这里需要将 i 减 1,否则会漏删一个元素
}
}
cout << "删除成功!" << endl;
}
}
// 保存学生信息到文件中
void save() {
string filename;
cout << "请输入要保存的文件名:";
cin >> filename;
ofstream file(filename);
for (int i = 0; i < students.size(); i++) {
file << students[i].id << " " << students[i].name << " " << students[i].gender << " "
<< students[i].chinese << " " << students[i].math << " " << students[i].english << endl;
}
file.close();
cout << "保存成功!" << endl;
}
// 导出学生信息到文件中
void exportData() {
string filename;
cout << "请输入要导出的文件名:";
cin >> filename;
ofstream file(filename);
for (int i = 0; i < students.size(); i++) {
file << students[i].id << " " << students[i].name << " " << students[i].gender << " "
<< students[i].chinese << " " << students[i].math << " " << students[i].english << endl;
}
file.close();
cout << "导出成功!" << endl;
}
// 打印单个学生信息
void printStudent(Student student) {
cout << "学号:" << student.id << "\t姓名:" << student.name << "\t性别:" << student.gender
<< "\t语文成绩:" << student.chinese << "\t数学成绩:" << student.math << "\t英语成绩:" << student.english << endl;
}
// 加载已有学生信息
void load() {
ifstream file("fname.txt");
if (!file.is_open()) {
return;
}
while (!file.eof()) {
Student student;
file >> student.id >> student.name >> student.gender >> student.chinese >> student.math >> student.english;
if (student.id != "") {
students.push_back(student);
}
}
file.close();
}
private:
vector<Student> students; // 已有学生信息
vector<Student> removedStudents; // 删除的学生信息
};
int main() {
StudentManagementSystem system;
while (true) {
cout << endl << "请选择操作:" << endl;
cout << "1. 添加学生信息" << endl;
cout << "2. 显示所有学生信息" << endl;
cout << "3. 查找学生信息" << endl;
cout << "4. 删除学生信息" << endl;
cout << "5. 保存学生信息到文件中" << endl;
cout << "6. 导出学生信息到文件中" << endl;
cout << "0. 退出系统" << endl;
int choice;
cin >> choice;
switch (choice) {
case 1:
system.add();
break;
case 2:
system.showAll();
break;
case 3:
system.search();
break;
case 4:
system.remove();
break;
case 5:
system.save();
break;
case 6:
system.exportData();
break;
case 0:
return 0;
default:
cout << "无效的操作!" << endl;
break;
}
}
return 0;
}
```
需要注意的是,在删除学生信息时,我们需要将删除的学生信息保存到删除库中,并将已删除的学生信息从已有学生信息中删除。同时,在保存学生信息和导出学生信息时,我们都需要将学生信息保存到指定的文件中。
以上是一个简单的实现,仅供参考。在实际开发中,还需要考虑很多其他因素,例如输入验证、异常处理等。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)