用C++写代码1数据录入功能对B TXT进行数据录入只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据。综合成绩、学分由程序根据条件自动运算。综合成绩的计算如果本课程的实验成绩为-1则表示无实验综合成绩=平时成绩30+卷面成绩70;如果实验成绩不为-1表示本课程有实验综合成绩=平时成绩15+实验成绩15+卷面成绩70。实得学分的计算采用等级学分制。综合成绩在90
下面是一个用C++编写的示例代码,实现了对B.TXT进行数据录入,并根据条件进行综合成绩和学分的自动运算。
#include <iostream>
#include <fstream>
#include <sstream>
#include <vector>
using namespace std;
struct Student {
string studentId;
string courseCode;
string courseName;
int credit;
double dailyScore;
double labScore;
double examScore;
double totalScore;
double earnedCredit;
};
double calculateTotalScore(double dailyScore, double labScore, double examScore) {
if (labScore == -1) {
return dailyScore * 0.3 + examScore * 0.7;
} else {
return dailyScore * 0.15 + labScore * 0.15 + examScore * 0.7;
}
}
double calculateEarnedCredit(double totalScore, int credit) {
if (totalScore >= 90 && totalScore <= 100) {
return credit * 1.0;
} else if (totalScore >= 80 && totalScore < 90) {
return credit * 0.8;
} else if (totalScore >= 70 && totalScore < 80) {
return credit * 0.75;
} else if (totalScore >= 60 && totalScore < 70) {
return credit * 0.6;
} else {
return credit * 0;
}
}
vector<Student> readDataFromFile(string fileName) {
vector<Student> students;
ifstream file(fileName);
string line;
while (getline(file, line)) {
stringstream ss(line);
string studentId, courseCode, courseName;
int credit;
double dailyScore, labScore, examScore;
ss >> studentId >> courseCode >> courseName >> credit >> dailyScore >> labScore >> examScore;
double totalScore = calculateTotalScore(dailyScore, labScore, examScore);
double earnedCredit = calculateEarnedCredit(totalScore, credit);
Student student = {studentId, courseCode, courseName, credit, dailyScore, labScore, examScore, totalScore, earnedCredit};
students.push_back(student);
}
file.close();
return students;
}
int main() {
string fileName = "B.TXT";
vector<Student> students = readDataFromFile(fileName);
// 打印学生信息及计算结果
for (const auto& student : students) {
cout << "学号: " << student.studentId << endl;
cout << "课程编号: " << student.courseCode << endl;
cout << "课程名称: " << student.courseName << endl;
cout << "学分: " << student.credit << endl;
cout << "平时成绩: " << student.dailyScore << endl;
cout << "实验成绩: " << student.labScore << endl;
cout << "卷面成绩: " << student.examScore << endl;
cout << "综合成绩: " << student.totalScore << endl;
cout << "应得学分: " << student.earnedCredit << endl;
cout << "====================" << endl;
}
return 0;
}
请注意,此代码假设B.TXT文件的格式为每行一个学生的数据,以空格分隔每个字段。
你可以根据需要修改文件名、字段名和计算公式,以适应实际情况
原文地址: https://www.cveoy.top/t/topic/hHYD 著作权归作者所有。请勿转载和采集!