2017香港tvb电视剧:编写程序设计一个类CStudent

来源:百度文库 编辑:中科新闻网 时间:2024/04/27 16:00:39
设计一个类CStudent,类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:
1 LiPing m 18 89 98 94
请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。
并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。要求成员函数完成以下功能:
(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过某分数的某性别的同学的有关信息。

回答:miooii
新手
5月29日 17:25 电脑分硬件与软件,硬件就是平时电脑城给你配的那些主板呀,键盘呀,CPU呀...等等..实实在在的东西.
软件也就是像你现在用的windows操作系统.QQ呀.杀毒软件呀,微软开发的都是些软件........等等...多得数不清
这些软件都是用编程实现的,编程里面会有很多种语言,也会分低级语言.高级语言,编程说白点就是用代码算法一些东西组成到一起,实现一些功能.来满足我们容易的操作,都是为了方便人类的
如果你要学还是先从C语言学起吧,基础语言.
建议你买本书,或到网上找电子书下下来看看..

#include<iostream>
#include<fstream>
using namespace std;
class CStudent{
public:
int id,age;
char name[20];
char sex;
float score[3];
void operator <<(CStudent s){
cout<<s.id<<"-"<<s.name<<"-"<<s.sex;
cout<<"-"<<s.age<<"-"<<s.score[0]<<"-"<<s.score[1]<<"-"<<s.score[2]<<endl;
}
void input(char filename[]){
cout<<"请输入学生信息(id-name-sex-age-score[])"<<endl;
CStudent s;
cin>>s.id>>s.name>>s.sex>>s.age>>s.score[0]>>s.score[1]>>s.score[2];
ofstream outfile(filename,ios::out||ios::binary);
if(!outfile){
cout<<"open error!"<<endl;
exit(0);
}
outfile.write((char *)&s,sizeof(CStudent));
outfile.close();
cout<<endl;
}
void SearchById(char filename[],int sid){
cout<<"学号为"<<sid<<"的学生信息为:";

ifstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}
while(infile.peek()){
CStudent s;
infile.read((char *)&s,sizeof(CStudent));
if(s.id==sid){
*this<<s;
// cout<<s.id<<"-"<<s.name<<"-"<<s.sex<<"-"
// <<s.age<<"-"<<s.score[0]<<" "<<s.score[1]<<" "<<s.score[2];
break;
}
}
infile.close();
cout<<endl;
}

void SearchByName(char filename[],char sname[]){
cout<<"姓名为"<<sname<<"的学生信息为:";

fstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}
while(infile.peek()){
CStudent s;
infile.read((char *)&s,sizeof(CStudent));

if(!strcmp(s.name,sname)){
*this<<s;
// cout<<s.id<<"-"<<s.name<<"-"<<s.sex<<"-"
// <<s.age<<"-"<<s.score[0]<<" "<<s.score[1]<<" "<<s.score[2];
break;
}
}
infile.close();
cout<<endl;
}

void CalcById(char filename[],int sid){
CStudent s;
float total,average;
fstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}
while(infile.peek()){
infile.read((char *)&s,sizeof(CStudent));
if(s.id==sid){
total=s.score[0]+s.score[1]+s.score[2];
average=total/3;
//*this<<s;
cout<<"学号:"<<sid<<" 总成绩:"<<total<<" 平均成绩:"<<average<<endl;
break;
}
}
infile.close();
cout<<endl;
}

void List(char filename[]){ CStudent s;
float n,total;
char ssex;
cout<<"请输入要查询的最低成绩和性别"<<endl;
cin>>n>>ssex;
fstream infile(filename,ios::in||ios::binary);
if(!infile){
cout<<"open error!"<<endl;
exit(0);
}

while(infile.peek()){
s.score[0]=0;
s.score[1]=0;
s.score[2]=0;
infile.read((char *)&s,sizeof(CStudent));
total=s.score[0]+s.score[1]+s.score[2];
if(total>n && s.sex==ssex)
// *this<<s;
cout<<s.id<<"-"<<s.name<<"-"<<s.sex<<"-"<<s.age<<"-"<<s.score[0]<<" "<<s.score[1]<<" "<<s.score[2]<<endl;
}
infile.close();
cout<<endl;
}

};

int main(){
CStudent s0;
int n;
char filename[]="student.txt";
char sname[]="zhangsan";
char name[20]="zhangsan";
cout<<"strcmp"<<!strcmp(name,sname)<<endl;
cout<<"请输入学生人数"<<endl;
cin>>n;
for(int i=0;i<n;i++)
s0.input(filename);
s0.SearchById(filename,3);

s0.CalcById(filename,3);

s0.SearchByName(filename,sname);
s0.List(filename);
return 0;
}