实验目的:
文件score.dat中保存的是100名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据需要确定。
(2)读入这名学生的成绩,用对象数组进行存储。
(3)将所有数据保存到文件binary_score.dat中。最后写入你自己的各科成绩
(4)为验证输出文件正确,将binary_score.dat中的记录注意读出到学生对象中输出查看
实验代码:
#include <iostream>
#include <string>
#include <fstream>
using namespace std;
class Student
{
private:
string name;
float C;
float math;
float english;
float addition;
float average;
public:
Student();
Student(string na, float c,float m, float e, float add, float a);
friend void readfile(Student s[]);
friend void writefile(Student s[]);
friend void showfile(Student s[]);
};
Student::Student()
{
name = " ";
C = 0;
math = 0;
english = 0;
addition = 0;
average = 0;
}
Student::Student(string na, float c,float m, float e, float add, float a)
{
name = na;
C = c;
math = m;
english = e;
addition = add;
average = a;
}
void readfile(Student s[])
{
ifstream file("score.dat", ios::in);
if(! file)
{
cerr << "open error!" << endl;
exit(1);
}
for(int i = 0; i < 100; i++)
{
file >> s[i].name >> s[i].C >> s[i].math >> s[i].english;
s[i].addition = s[i].C + s[i].math + s[i].english;
s[i].average = s[i].addition / 3;
}
file.close();
}
void writefile(Student s[])
{
ofstream file("binary_score.dat", ios::out|ios::binary);
if(! file)
{
cerr << "open error!" << endl;
exit(1);
}
file << "姓名" << '\t' << "C++" << '\t' << "高数"<< '\t' << "英语" << '\t' << "总成绩" << '\t' << "平均成绩" << endl;
for(int i = 0; i < 100; i++)
{
file << s[i].name << '\t' << s[i].C << '\t' << s[i].math << '\t' << s[i].english << '\t' << s[i].addition << '\t' << s[i].average << endl;
}
file << "徐嘉健" << '\t' << "100" << '\t' << "100" << '\t' << "100" << '\t' << "300" << '\t' << "100" << endl;
file.close();
}
void showfile(Student s[])
{
cout << "姓名" << '\t' << "C++" << '\t' << "高数" << '\t' << "英语" << '\t' << "总成绩" << '\t' << "平均成绩" << endl;
for(int i = 0; i < 100; i++)
{
cout << s[i].name << '\t' << s[i].C << '\t' << s[i].math << '\t' << s[i].english << '\t' << s[i].addition << '\t' << s[i].average << endl;
}
cout << "徐嘉健" << '\t' << "100" << '\t' << "100" << '\t' << "100" << '\t' << "300" << '\t' << "100" << endl;
}
int main()
{
Student st[100];
readfile(st);
writefile(st);
showfile(st);
system("PAUSE");
return 0;
}
实验结果:
姓名 C++ 高数 英语 总成绩 平均成绩
刘得意 60 98 75 233 77.6667
王锐 63 90 96 249 83
何煜中 90 73 82 245 81.6667
王磊 87 86 92 265 88.3333
冯松 89 98 83 270 90
裴培 75 82 91 248 82.6667
马骁 62 67 90 219 73
马婧 98 84 87 269 89.6667
周俊升 57 68 96 221 73.6667
贺祺 61 96 72 229 76.3333
李桐 93 83 86 262 87.3333
高路 63 74 98 235 78.3333
冯佳媛 61 79 81 221 73.6667
张迪 99 88 80 267 89
张里响 85 65 96 246 82
王瑞麒 89 83 91 263 87.6667
徐金竹 75 89 73 237 79
赵媛媛 77 75 66 218 72.6667
宋宗杰 94 100 92 286 95.3333
张佳玮 61 98 96 255 85
王姝 70 91 90 251 83.6667
宋媛媛 61 94 92 247 82.3333
于莉 55 66 78 199 66.3333
于浩 78 84 72 234 78
王竞 90 87 67 244 81.3333
崔赞 91 67 93 251 83.6667
宋静 69 85 73 227 75.6667
王磊 71 78 77 226 75.3333
方圆 70 79 76 225 75
李朋 90 82 97 269 89.6667
马佳 60 90 100 250 83.3333
张龙 62 100 78 240 80
马里 73 95 73 241 80.3333
韩明 83 97 88 268 89.3333
马立 73 90 83 246 82
吴清正 89 97 85 271 90.3333
印虹 92 68 75 235 78.3333
田苗苗 75 91 71 237 79
卫青 66 73 77 216 72
冷云 89 88 71 248 82.6667
葛志伟 100 79 71 250 83.3333
范振光 98 87 89 274 91.3333
王芳 71 97 99 267 89
杨超 67 73 82 222 74
杨梦婕 89 99 67 255 85
梁雅宁 55 88 100 243 81
王琦 98 95 98 291 97
吴玮 69 76 68 213 71
杨阔 90 91 98 279 93
贾伟林 63 90 86 239 79.6667
刘亚新 77 81 95 253 84.3333
金昕 92 67 69 228 76
董一伟 93 88 80 261 87
汤娜 68 85 71 224 74.6667
周恒 87 82 69 238 79.3333
张笑 86 88 76 250 83.3333
文静 93 88 85 266 88.6667
杨华鑫 81 81 68 230 76.6667
苏明霞 59 79 94 232 77.3333
黄京 62 75 96 233 77.6667
佟欣 60 79 98 237 79
张雯 69 70 93 232 77.3333
刘京西 67 78 78 223 74.3333
徐嘉琦 90 75 87 252 84
魏佳 100 94 80 274 91.3333
高举 81 99 91 271 90.3333
边里 56 94 87 237 79
何佳成 70 75 78 223 74.3333
赵旭洋 87 91 94 272 90.6667
孙大伟 65 69 98 232 77.3333
鲁继森 84 79 75 238 79.3333
白涛 57 82 75 214 71.3333
蔺剑飞 88 75 79 242 80.6667
兰天 83 66 74 223 74.3333
王悦 79 82 70 231 77
陈世勃 70 92 65 227 75.6667
张昊 94 83 96 273 91
高清 76 83 84 243 81
王欣欣 71 83 78 232 77.3333
王欢欢 57 33 66 156 52
叶丹 87 80 96 263 87.6667
李悦 63 79 97 239 79.6667
郭倩 69 94 69 232 77.3333
刘盈 99 72 93 264 88
杨洁 96 79 87 262 87.3333
徐一菡 85 45 62 192 64
王蒙 67 97 89 253 84.3333
张敏 85 75 89 249 83
桂佳 60 73 65 198 66
林倩 67 77 80 224 74.6667
任盛达 57 86 88 231 77
吴佳林 96 65 82 243 81
黄金龙 85 90 78 253 84.3333
陈美珠 82 72 83 237 79
冼丹 100 89 89 278 92.6667
唐楠 68 97 77 242 80.6667
张扬 77 65 93 235 78.3333
宋航彬 80 71 91 242 80.6667
薛淇文 89 71 75 235 78.3333
刘紫亮 72 98 84 254 84.6667
徐嘉健 100 100 100 300 100
请按任意键继续. . .
实验心得:
好吧,我无语了,本来不想抱怨的,可是实在是憋不住了,代码方面倒是还好,主要的任务上一周都已经实现了,只是读取的文件类型不同而已,看好课本足以做出来,可是我们宿舍的网速是让我太无语了,从昨天下午一直到熄灯,连个首页都刷不出来,本以为宿舍停电之后一切都会好转,可是我错了,一直到12点,怎么都进不了csdn的首页,能的我想哭,拜托各位先生小姐,行行好吧,让我交完作业行不行啊!!!!!!!!!!!