15周【项目1-用二进制文件处理学生成绩】

问题描述:

【项目1-用二进制文件处理学生成绩】

(1)定义学生类,其中包含学号、姓名、C++课、高数和英语成绩及总分数据成员,成员函数根据需要确定。

(2)读入学生的成绩,并求出总分,用对象数组进行存储。ASCII文件score.dat中保存的是100名学生的学号、姓名和C++课、高数和英语成绩。

(3)将所有数据保存到一个二进制文件binary_score.dat中,最后通过键盘输入你的信息,并写入到文件中(咱不谦虚,三科全100分,期末求好运)。

(4)为验证输出文件正确,再将binary_score.dat中的记录逐一读出到学生对象中并输出查看。

(5)用BinaryViewer命令查看二进制文件文件 

代码实现:

#include <iostream>
#include <fstream>
#include <cstdio>
#include <cstring>
#include <cstdlib>
using namespace std;
class Student{
private:
    string name;
    double cpp,math,eng,total;
    int stu_id;
public:
    Student()=default;
    Student(string s,double c,double m,double e):name(s),cpp(c),math(m),eng(e){
        total=cpp+math+eng;
    }
    friend istream&operator>>(istream&in,Student& a);
    friend ostream&operator<<(ostream&out,Student& a);
};
istream&operator>>(istream&in,Student&a){
    in>>a.stu_id>>a.name>>a.cpp>>a.math>>a.eng;
    return in;
}
ostream&operator<<(ostream&out,Student& a){
    out<<"Student ID: "<<a.stu_id<<"\tName:"<<a.name<<"\tC++: "<<a.cpp<<"\tMath: "<<a.math
    <<"\tEnglish: "<<a.eng<<"\tTotal: "<<a.total;
    return out;
}
int main(){
    cout<<"请输入学生信息!\n";
    Student stud[101];
    int i;
    ifstream myfile("score.dat",ios::in);
    if(!myfile){
        cerr<<"open error!\n";
        exit(1);
    }
    for(i=0;i<100;i++){
        myfile>>stud[i];
    }
    cin>>stud[100];
    myfile.close();
    ofstream out("binary.dat",ios::out|ios::binary);
    if(!out){
        cerr<<"can't write the binary.dat file!\n";
        exit(1);
    }
    for(i=0;i<101;i++){
        out.write((char*)&stud[i], sizeof(stud[i]));
    }
    out.close();
    string s;
    ifstream oo("binary.dat",ios::in|ios::binary);
    if(!oo){
        cerr<<"can't write the binary.dat file!\n";
        exit(1);
    }
    oo.close();
    return 0;
}

运行结果:

时间: 2024-10-10 11:51:17

15周【项目1-用二进制文件处理学生成绩】的相关文章

第15周上机实践项目1——用二进制文件处理学生成绩

(1)定义学生类,其中包含学号.姓名.C++课.高数和英语成绩及总分数据成员,成员函数根据需要确定. (2)读入学生的成绩,并求出总分,用对象数组进行存储.ASCII文件score.dat中保存的是100名学生的学号.姓名和C++课.高数和英语成绩. (3)将所有数据保存到一个二进制文件binary_score.dat中,最后通过键盘输入你的信息,并写入到文件中(咱不谦虚,三科全100分,期末求好运). (4)为验证输出文件正确,再将binary_score.dat中的记录逐一读出到学生对象中并

第14周 项目二-用文件保存学生名单

文件score.dat中保存的是若干名学生的姓名和C++课.高数和英语成绩. (1)定义学生类,其中包含姓名.C++课.高数和英语成绩及总分数据成员. //定义学生类 class Student{ public: //声明必要的成员函数 private: string name; double cpp; double math; double english; double total; static int stu_num; //学生人数,处理为类的静态成员合适 static double t

第八周项目(4)—指向学生类的指针

/* *copyright (c) 2016,烟台大学计算机学院 *All rights reserved. *文件名称:hellow.cpp *作者:田甜 *完成日期:2016年5月10日 *版本号:v1.0 * *问题描述:设计一个学生类Student,数据成员包括学号(num)和成绩(score),成员函数根据需要自行设计(建议配备需要的set.get函数,以及必要的输入或输出,给出的代码中也可以找到需要成员函数的线索).在main函数中,要做到: 建立一个对象数组,通过初始化,设置5个学

用二进制文件处理学生成绩

输入代码: <pre name="code" class="cpp">/* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名称:sum123.cpp * 作 者:林海云 * 完成日期:2015年8月19日 * 版 本 号:v2.0 * * 问题描述:(1)定义学生类,其中包含学号.姓名.C++课.高数和英语成绩及 总分数据成员,成员函数根据需要确定. (2)读入学生的成绩,并求出总分

使用C++结合文件操作和链表实现学生成绩管理系统

对于学生成绩管理系统,我是不会陌生,几乎学习C语言的人,做项目的时候都会想到学生成绩管理系统,我也不例外,在学了一段时间C语言后,也用C语言做了一个学生管理系统,后来联系做了几个,算过来,这个系统对前面的系统有所改进,增加了文件操作可以不用手动输入学生信息,可以直接从文件中读取学生信息,从而简化了操作 使用C语言实现学生成绩管理系统 http://blog.csdn.net/u010105970/article/details/17752193 使用链表实现学生成绩管理系统 http://blo

2013级C++第15周(春)项目——输入输出流及文件文件操作

课程首页在:http://blog.csdn.net/sxhelijian/article/details/11890759.内有完整教学方案及资源链接 本周程序阅读及程序调试中须要的文件,请到http://pan.baidu.com/s/1qW59HTi下载. 第一部分 阅读程序(执行程序时,由上面的链接下载源码)1.阅读教材例13.1到例13.7的程序,依据所用到的函数在功能上的限制,自己设计输入的測试数据,执行程序.(1)与自己的期望结果相对比,理解各个函数的使用方法:(2)深入理解数据流

16周(项目四 动态数组)

/* *copyright(c) 2014,烟台大学计算机学院 *All rights reserved. *文件名称:16周(项目四 动态数组) *作者:王忠 *完成日期:2014.12.15 *版本号:v1.0 * *问题描述:新增一个恰当长度的动态数组,将原数组中的数据"复制"到新数组,接着再输入新的数据.增加新数据后的数组,成为保存数据的新数组. *输入描述:输入成绩,学生数 *程序输出:新增的学生数 成绩 #include <iostream> using nam

[项目记录] 用c语言完成的一个学生成绩管理系统

一.要求: 学生成绩管理系统 某班有最多不超过30人(具体人数由键盘输入)参加期末考试,最多不超过6门(具体门数由键盘输入).使用链表编程实现如下菜单驱动的学生成绩管理系统. 从文件读入每个学生个人信息和成绩信息,可以由键盘输入文件名.读入成功提示读入学生记录的个数,不成功提示相应出错信息. 增量式手动录入每个学生的学号.姓名和各科考试成绩.不考虑中文姓名,但需要考虑重名情况下的处理,学生的学号是唯一的. 计算每门课程的总分和平均分: 计算每个学生的总分和平均分: 按每个学生的总分由高到低排出名

体育馆团体预约系统UML软件工程第16周项目日志

体育馆团体预约系统 UML软件工程项目日志 June,14th ,2019 目录 一. 博客地址 1 二. 客户提交内容 1 三. 项目背景 2 四. 项目范围和前景 2 五. 沟通记录 3 六. 甲方确认结果: 6 七. 结构化需求分析概述 6 八. 涉众分析 7 九. 硬数据采样及数据分析 8 十. 过程建模 8 十一. 数据建模 9 十二. 预约系统用例分析 10 十三. 工作计划 12 十四. 本周工作日志 13 十五. 项目总进展 13 一.博客地址 https://www.cnblo