资源描述
一、 实验题目
学生成绩管理
二、 实验目的
1. 掌握一维数组、二维数组的使用方法。
2. 掌握结构体数组的定义和使用。
3. 综合应用数据文件的读写语句保存结构体数组中的数据。
三、 实验要求
有4个学生,每个学生有3门课的成绩,从键盘上输入以上数据,计算每个学生的平均分,并把这些信息(包括学号、姓名、班级、3门课的成绩及平均分)保存到一个文件(score.txt)中,并显示在屏幕上。
具体要求:
定义结构体类型(student_type),其中包括学号(num[12])、姓名(name[10])、班级(class[20])、3门课成绩(score[3])和平均成绩(ave)。利用该结构体类型定义数组stud[4]。
在主函数中输入学生学号、姓名、班级、3门课的成绩,并计算出平均成绩,然后调用save()函数将学生数据保存在score.txt文件中,调用display()函数读取score.txt文件,并将其中的内容显示在屏幕上。
定义保存文件函数save()和显示文件函数display()。
四、 程序流程图
不用画
五、 程序代码
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<iomanip.h>
//
struct student_type
{
char num[12];
char name[10];
char Class[20];
float score[3];
float ave_score;
}stud[4];
//新建文件并写入
void save(int i)
{
fstream outfile;
outfile.open("student.txt",ios::app);//新建student.txt用于储存数据
cin>>stud[i].Class>>stud[i].num>>stud[i].name>>stud[i].score[0]>>stud[i].score[1]>>stud[i].score[2];//输入学生信息
stud[i].ave_score=(stud[i].score[0]+stud[i].score[1]+stud[i].score[2])/3;//计算平均分
outfile.close();//关闭文件
}
//打开文件
void display()
{
fstream infile;
infile.open("student.txt",ios::in);
if(!infile)//判断文件是否能被打开
{
cout<<"student.txt can not open!";
abort();//文件不能被打开,结束程序
}
cout<<setw(10)<<"班 级"<<setw(10)<<"学 号"<<setw(10)<<"姓 名"<<setw(16)<<"成 绩"<<setw(16)<<"平 均 成 绩"<<endl;
for(int i=0;i<4;i++)
cout<<setw(10)<<stud[i].Class<<setw(10)<<stud[i].num<<setw(10)<<stud[i].name<<setw(10)<<stud[i].score[0]<<" "<<stud[i].score[1]<<" "<<stud[i].score[2]<<setw(10)<<stud[i].ave_score<<endl;
infile.close();
}
//
void main()
{
int i;
cout<<"***********************"<<endl<<endl;
cout<<" 学生信息管理 "<<endl<<endl;
cout<<"***********************"<<endl;
for(i=0;i<4;i++)
{
cout<<endl<<"请输入第"<<i+1<<"个学生信息:班级 学号 姓名 成绩"<<endl<<endl;
save(i);//调用save函数
}
cout<<endl<<" 学 生 信 息 "<<endl<<endl;
cout<<"***********************************"<<endl<<endl;
display();//调用display函数
}
六、运行结果
展开阅读全文