第十七周实验报告--学生成绩处理

* (程序头部注释开始)
*
程序的版权和版本声明部分

* Copyright (c) 2011,
烟台大学计算机学院学生 
* All rights reserved.
*
文件名称:学生成绩处理 
*
者:晁阳 
*
完成日期: 2012 年 6 月 13
*
号: t.1.0

* 对任务及求解方法的描述部分 
*
问题描述:

学生成绩处理:保存为二进制文件
ASCII
文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩。
1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总
分、均分数据成员,成员函数根据需要确定。
2)读入学生的成绩,并求出总分,用对象数组进行存储。
3)将所有数据保存到一个二进制文件binary_score.dat 中,最
后在文件中写入你自己的各科成绩(咱不谦虚,也求个好运,全100
分)。
4)为验证输出文件正确,再将binary_score.dat 中的记录逐一
读出到学生对象中并输出查看。 
*
程序头部的注释结束

#include<iostream>   
#include<string>   
#include<iomanip> 
#include<fstream>   
using namespace std;  
  
class Student  
{  
public:  
    Student();  
    Student(string name, double cpp, double math, double English);  
    double all_score();  
    double ave_score();  
    void read_score(ifstream &in);  
    void write_score(ofstream &out);  
    void display();  
private:  
    string name;  
    double score_cpp;  
    double score_math;  
    double score_English;  
    double score_all;  
    double score_average;  
};  
  
Student::Student()  
{  
    this->name = "0000";  
    this->score_cpp = 0;  
    this->score_math = 0;  
    this->score_English = 0;  
}  
  
Student::Student(string name, double cpp, double math, double English)  
{  
    this->name = name;  
    this->score_cpp = cpp;  
    this->score_math = math;  
    this->score_English = English;  
}  
  
void Student::display()  
{  
	this->all_score(); 

	this->ave_score();

    cout << setiosflags(ios::left) << setw(12) << this->name << setw(8) << this->score_cpp << setw(8) << this->score_math << setw(8) << this->score_English << setw(8) << this->score_all <<setw(8)<<this->score_average<< endl;  
}  
  
double Student::all_score()  
{  
    this->score_all = this->score_cpp + this->score_math + this->score_English;  
    return this->score_all;  
}  
  
double Student::ave_score()  
{  
    this->score_average = (this->score_cpp + this->score_math + this->score_English) / 3;  
    return this->score_average;  
}  
  
void Student::read_score(ifstream &in)  
{  
    in >> this->name >> this->score_cpp >> this->score_math >> this->score_English;  
}  

  
void Student::write_score(ofstream &out)  
{  
    out << this->name << '\t' << this->score_cpp << '\t' << this->score_math << '\t' << this->score_English << endl;  
}  
  
void readfile(Student * s, int num)  
{  
    ifstream infile("score.dat",ios::in);  
  
    if(!infile)  
    {  
        cerr << "open error!" << endl;  
        exit(1);  
    }  
  
    for(int i = 0; i < num; ++i)  
    {  
        s[i].read_score(infile);  
    }  
    infile.close();  
}  
  
void Readfile(Student * s, int num)  
{  
    ifstream infile("binary_score.dat",ios::in|ios::binary);  
  
    if(!infile)  
    {  
        cerr << "open error!" << endl;  
        abort();  
    }  
  
    for(int i = 0; i < num; ++i)  
    {  
        infile.read((char *) & s[i], sizeof(s[i]));  
    }  
  
    infile.close();  
}  
  
void writefile(Student * s, int num)  
{  
    ofstream outfile("binary_score.dat",ios::out|ios::binary);  
  
    if(!outfile)  
    {  
        cerr << "open error!" << endl;  
        abort();  
    }  
  
    for(int i = 0; i < num; ++i)  
    {  
        outfile.write((char *) & s[i], sizeof(s[i]));  
    }  
  
    outfile.close();  
}  
  
void Writefile(Student * s, int num)  
{  
    ofstream outfile("binary_score2.dat",ios::out);  
  
    if(!outfile)  
    {  
        cerr << "open error!" << endl;  
        abort();  
    }  
  
    for(int i = 0; i < num; ++i)  
    {  
        s[i].write_score(outfile);  
    }  
  
    outfile.close();  
}  
  
int main()  
{  
    Student stu[100], stu1[101], my_score("晁阳", 100, 100, 100);  
  
    readfile(stu, 100);  
  
    writefile(stu, 100);  
  
    Readfile(stu1, 100);  
  
    stu1[100] = my_score;  

	cout << setiosflags(ios::left) << setw(12) << "姓名" << setw(8) << "C++" << setw(8) << "高数" << setw(8) << "英语" << setw(8) <<"总分" << setw(8) << "平均分" << endl; 
  
    for(int i = 0; i < 101; ++i)  
    {  
        stu1[i].display(); 
    }  
  
    Writefile(stu1, 101);  
  
    system("pause");  
    return 0;  
}


好好复习,积极备考

上图:



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1.学生成绩管理系统分为三个用户角色,登录界面可以选择三种不同的角色进行登录系统 2.管理员角色登录系统可以有以下功能: 管理考试信息:可以对考试批次信息进行增删改查操作 管理教师信息:可以对教师个人信息进行增删改查操作,包括教师的姓名/所属班级/生日/性别/登录密码/家庭住址身份证等信息 管理班级信息:可以对班级名称信息进行增删改查操作 管理学生信息:可以对学生个人信息进行增删改查操作,包括教师的姓名/所属班级/生日/性别/登录密码/家庭住址身份证等信息 查看学生成绩:可以查看学生的所属班级,考试批次,姓名,科目,成绩信息 管理课程信息:可以添加课程,也可以从编辑删除操作 管理专业信息:可以添加专业,也可以从编辑删除操作 注销退出系统 3.教师登录系统可以拥有以下功能: 教师个人信息:可以查看自己的个人信息,可以编辑修改自己的信息 教师录入成绩:可以录入学生成绩:包含学生的所属班级,考试批次,姓名,科目,成绩,可以编辑删除操作 教师查看班级:可以查看现在的班级情况 教师查看专业:可以查看现在的专业情况 修改密码:可以修改个人的登录密码功能 注销退出系统 4.学生登录系统可以拥有以下功能: 学生个人信息:可以查看自己的个人信息,可以编辑自己的信息 学生查看成绩:可以查看学生成绩,包含班级,考试批次,姓名成绩等属性,也可以按照考试批次快速检索学生信息 学生成绩排名:可以按照成绩高低排名进行查看 学生选择课程:可以添加学生自己的选课信息,可以编辑删除操作 修改密码:可以修改个人的登录密码功能 注销退出系统 备注:系统使用django+mysql进行开发,前端界面大方美观
学生用户模块: 1.学生用户注册、登录 2.学生可查看自己对应学科的成绩 3.返回前页+返回首页 管理员用户模块: 1.管理员用户注册、登录 2.管理员用户查看学生整体对应学科的成绩信息 3.管理员用户修改某个学生对应学科的成绩信息 4.管理员用户增加某个学生对应学科的成绩信息 5.管理员用户删除某个学生对应学科的成绩信息 成绩公示用户模块: 1.学生用户登录 2.学生可查看自己班的排名成绩和自己在班内排名成绩信息 3.学生可对某学科成绩信息进行数据备份 4.管理员用户登录 5.管理员可查看所有学生的排名成绩和对指定学生查看排名成绩信息 6.管理员可查看所有学生某学科的平均分 7.管理员可查看多有学生某学科的及格人数和不及格人数 8.管理员可对某学科成绩信息进行数据备份 关于模块: 1.对于此系统的说明,是谁做的,指导教师是谁 帮助模块: 1.调用docx个人心得 2.调用docx使用手册 3.2非功能需求 数据准确度:在精度需求上,数据在输入、输出的过程中要满足各种数据精度的需求并且具有一定的提示信息。如,在学科选择时,需要填写点击正确的学科;在登录注册时,要输入正确的符号信息,不能输入非法字符;在增删改查时,要输入正确的符号信息,不能输入非法字符。 适应性:在操作环境变化时,系统应具有适应性,保证系统能够正常运行。数据库要适应于python将系统配置的要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值