
设计一个类CStudent 类中包含一个学生的基本数据如下: 编号,姓名,性别,年龄,数学成绩,计算机成绩
设计一个类CStudent类中包含一个学生的基本数据如下:编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。并假设编号为整数,且从1号往后连续编码;姓名为字符串,性...
设计一个类CStudent
类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符(男为m,女为f)。如:
1 LiPing m 18 89 98 94
要求成员函数完成以下功能:
(1) 从键盘输入一个学生的有关信息。
(2) 按编号对学生信息进行检索(即排序)并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索(按名字首字母排序)并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
大家好。我是想用C#做这个题目、不懂的是第二三小题的排序函数怎么写。特来此请教各位高手。 展开
类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符(男为m,女为f)。如:
1 LiPing m 18 89 98 94
要求成员函数完成以下功能:
(1) 从键盘输入一个学生的有关信息。
(2) 按编号对学生信息进行检索(即排序)并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索(按名字首字母排序)并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
大家好。我是想用C#做这个题目、不懂的是第二三小题的排序函数怎么写。特来此请教各位高手。 展开
1个回答
展开全部
/*************************************************
Version: 6.00 Date: 2013.5.14
Description:
设计一个类CStudent,类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:
1 LiPing m 18 89 98 94
请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据
进行存储与读写处理(即是说,总按具有连续编码的编号num为"序"来对文件中的各对
象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符"<<"进行重载,
使该运算符能够完成将一个学生的信息输出到屏幕上。
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
History:
<author> <time> <version > <desc>
*****************************************************/
#include<fstream>
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int n;
class CStudent
{public:int Num;
char Name[10];
char Sex[10];
int Age;
float Math,Com,Eng,Total,ave;
public: void getdata() //输入类元素
{cout<<"编号: ";
cin>>Num;
cout<<endl<<"姓名: ";
cin>>Name;
cout<<endl<<"性别: ";
cin>>Sex;
cout<<endl<<"年龄: ";
cin>>Age;
cout<<endl<<"数学成绩: ";
cin>>Math;
cout<<endl<<"计算机成绩:";
cin>>Com;
cout<<endl<<"外语成绩: ";
cin>>Eng;
cout<<endl; }
void outdate() //输出类元素
{Total=Math+Com+Eng;
ave=(Math+Com+Eng)/3;
cout<<setw(5)<<Num<<setw(5)<<Name<<setw(5)<<Sex<<setw(5)<<Age<<setw(8)<<Math<<setw(10)<<Com<<setw(8)<<Eng<<setw(8)<<Total<<setw(8)<<ave<<endl;
} };
void get() //把类数据输入到磁盘中
{ ofstream outfile("stud.dat");
CStudent s[50];
int i;
cout<<"输入数据:"<<endl;
for( i=0;i<n;i++)
{
cout<<"第"<<i+1<<"个学生:"<<endl;
s[i+1].getdata();
outfile.write((char*)&s,sizeof(s));
};
outfile.close(); }
void shaixuan() //把类数据从磁盘中输出
{
ifstream infile("stud.dat");
CStudent s[50];
int i;
string sex;
float total;
cout<<"请输入你要筛选同学的性别:"<<" ";
cin>>sex;
cout<<"请输入你要筛选同学的总成绩超过多少分:"<<" ";
cin>>total;
infile.read((char *)&s,sizeof(s));
while(infile)
{
for( i=0;i<50;i++)
{
if((sex==s[i].Sex)&&(total<=s[i].Total))
{ cout<<" 编号 姓名 性别 年龄 数学成绩 计算机成绩 外语成绩 总分 平均分"<<endl;
s[i].outdate();}
}
infile.read((char*)&s,sizeof(s));
};
infile.close();
}
void xingming() //把类数据从磁盘中输出
{
ifstream infile("stud.dat");
CStudent s[50];
int i;
string str;
cout<<"请输入你要筛选同学的姓名:"<<" ";
cin>>str;
infile.read((char *)&s,sizeof(s));
while(infile)
{
for( i=0;i<50;i++)
{
if(str==s[i].Name)
{ cout<<" 编号 姓名 性别 年龄 数学成绩 计算机成绩 外语成绩 总分 平均分"<<endl;
s[i].outdate();}
}
infile.read((char*)&s,sizeof(s));
};
infile.close();
}
void xuehao() //把类数据从磁盘中输出
{
ifstream infile("stud.dat");
CStudent s[50];
int i,m;
cout<<"请输入你要筛选同学的编号:"<<" ";
cin>>m;
infile.read((char *)&s,sizeof(s));
while(infile)
{
for( i=0;i<50;i++)
{
if(m==s[i].Num)
{ cout<<" 编号 姓名 性别 年龄 数学成绩 计算机成绩 外语成绩 总分 平均分"<<endl;
s[i].outdate();}
}
infile.read((char*)&s,sizeof(s));
};
infile.close();
}
int main()
{
int a;
cout<<"请输入你想添加多少个学生的信息n:"<<' ';
cin>>n;
do //选择应执行程序
{ cout<<"如果你输入数字7,你就可以添加学生信息了;"<<'\n';
cout<<"如果你输入数字8,你就可以筛选出所有总成绩超过n分的性别为sex同学的有关信息了;"<<'\n';
cout<<"如果你输入数字9,你就可以按编号进行筛选了;"<<'\n';
cout<<"如果你输入数字10,你就可以按姓名进行筛选了;"<<'\n';
cout<<"如果你输入数字1,你就可以退出此程序了;"<<'\n';
cin>>a;
switch(a)
{
case 7:get();break;
case 8:shaixuan();break; //输入数据
case 9:xuehao();break;
case 10:xingming();break; //输出数据
default:cout<<"error"<<endl;break;
} }
while(a==7||a==8||a==9||a==10);
return 0;
}
哈哈,自己调试一下再改进一下吧!
Version: 6.00 Date: 2013.5.14
Description:
设计一个类CStudent,类中包含一个学生的基本数据如下:
编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。如:
1 LiPing m 18 89 98 94
请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据
进行存储与读写处理(即是说,总按具有连续编码的编号num为"序"来对文件中的各对
象数据进行随机读写处理)。并设计该类的成员函数,而且对输出运算符"<<"进行重载,
使该运算符能够完成将一个学生的信息输出到屏幕上。
Function List: // 主要函数列表,每条记录应包括函数名及功能简要说明
(1) 从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2) 按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3) 按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4) 计算某编号学生的总成绩与平均成绩。
(5) 列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
History:
<author> <time> <version > <desc>
*****************************************************/
#include<fstream>
#include<iostream>
#include<iomanip>
#include<string>
using namespace std;
int n;
class CStudent
{public:int Num;
char Name[10];
char Sex[10];
int Age;
float Math,Com,Eng,Total,ave;
public: void getdata() //输入类元素
{cout<<"编号: ";
cin>>Num;
cout<<endl<<"姓名: ";
cin>>Name;
cout<<endl<<"性别: ";
cin>>Sex;
cout<<endl<<"年龄: ";
cin>>Age;
cout<<endl<<"数学成绩: ";
cin>>Math;
cout<<endl<<"计算机成绩:";
cin>>Com;
cout<<endl<<"外语成绩: ";
cin>>Eng;
cout<<endl; }
void outdate() //输出类元素
{Total=Math+Com+Eng;
ave=(Math+Com+Eng)/3;
cout<<setw(5)<<Num<<setw(5)<<Name<<setw(5)<<Sex<<setw(5)<<Age<<setw(8)<<Math<<setw(10)<<Com<<setw(8)<<Eng<<setw(8)<<Total<<setw(8)<<ave<<endl;
} };
void get() //把类数据输入到磁盘中
{ ofstream outfile("stud.dat");
CStudent s[50];
int i;
cout<<"输入数据:"<<endl;
for( i=0;i<n;i++)
{
cout<<"第"<<i+1<<"个学生:"<<endl;
s[i+1].getdata();
outfile.write((char*)&s,sizeof(s));
};
outfile.close(); }
void shaixuan() //把类数据从磁盘中输出
{
ifstream infile("stud.dat");
CStudent s[50];
int i;
string sex;
float total;
cout<<"请输入你要筛选同学的性别:"<<" ";
cin>>sex;
cout<<"请输入你要筛选同学的总成绩超过多少分:"<<" ";
cin>>total;
infile.read((char *)&s,sizeof(s));
while(infile)
{
for( i=0;i<50;i++)
{
if((sex==s[i].Sex)&&(total<=s[i].Total))
{ cout<<" 编号 姓名 性别 年龄 数学成绩 计算机成绩 外语成绩 总分 平均分"<<endl;
s[i].outdate();}
}
infile.read((char*)&s,sizeof(s));
};
infile.close();
}
void xingming() //把类数据从磁盘中输出
{
ifstream infile("stud.dat");
CStudent s[50];
int i;
string str;
cout<<"请输入你要筛选同学的姓名:"<<" ";
cin>>str;
infile.read((char *)&s,sizeof(s));
while(infile)
{
for( i=0;i<50;i++)
{
if(str==s[i].Name)
{ cout<<" 编号 姓名 性别 年龄 数学成绩 计算机成绩 外语成绩 总分 平均分"<<endl;
s[i].outdate();}
}
infile.read((char*)&s,sizeof(s));
};
infile.close();
}
void xuehao() //把类数据从磁盘中输出
{
ifstream infile("stud.dat");
CStudent s[50];
int i,m;
cout<<"请输入你要筛选同学的编号:"<<" ";
cin>>m;
infile.read((char *)&s,sizeof(s));
while(infile)
{
for( i=0;i<50;i++)
{
if(m==s[i].Num)
{ cout<<" 编号 姓名 性别 年龄 数学成绩 计算机成绩 外语成绩 总分 平均分"<<endl;
s[i].outdate();}
}
infile.read((char*)&s,sizeof(s));
};
infile.close();
}
int main()
{
int a;
cout<<"请输入你想添加多少个学生的信息n:"<<' ';
cin>>n;
do //选择应执行程序
{ cout<<"如果你输入数字7,你就可以添加学生信息了;"<<'\n';
cout<<"如果你输入数字8,你就可以筛选出所有总成绩超过n分的性别为sex同学的有关信息了;"<<'\n';
cout<<"如果你输入数字9,你就可以按编号进行筛选了;"<<'\n';
cout<<"如果你输入数字10,你就可以按姓名进行筛选了;"<<'\n';
cout<<"如果你输入数字1,你就可以退出此程序了;"<<'\n';
cin>>a;
switch(a)
{
case 7:get();break;
case 8:shaixuan();break; //输入数据
case 9:xuehao();break;
case 10:xingming();break; //输出数据
default:cout<<"error"<<endl;break;
} }
while(a==7||a==8||a==9||a==10);
return 0;
}
哈哈,自己调试一下再改进一下吧!

2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询