文件+结构体实现实用系统+拓展()


使用了容器vector。还有就是number类型设置整形错误,导致文件打开了,但是数据没有读入。。。

=,(),[],->只能成员重载。。。

如何定义<,让sort函数自动排序

  //   2014-03-10-13.07
   #include<iostream>
   #include<fstream>
   #include<cstdlib>
   #include<vector>
   #include<iomanip>
   #include<algorithm>
   using namespace std;
   void Show()
   {
		cout<<"选择功能:"<<endl;
		cout<<"1  ,输出成绩单:"<<endl;
		cout<<"2  ,总分排序并且输出成绩单:"<<endl;
		cout<<"3  ,获得奖学金同学名单:"<<endl;
		cout<<"输入序号(0退出):";
	}
   class Student
   {
private:
	string number;
	string name;
	int cpp;
	int math;
	int english;
	int grade;
public:
	Student(){};
	int Grade(){grade=cpp+math+english;return grade;}
	Student operator=(Student&bb)
	{
		number=bb.number;
		name=bb.name;
		cpp=bb.cpp;
		math=bb.math;
		english=bb.english;
		grade=bb.grade;
		return *this;
	}
//	friend bool operator<(Student&a,Student&b)
//	{
//		return a.Grade()<b.Grade();
//	}
    friend 	istream &operator>>(istream& is,Student &ss)
		{
			is>>ss.number>>ss.name>>ss.cpp>>ss.math>>ss.english;
			return is;
		}
		friend ostream &operator<<(ostream&os,const Student &ss)
		{
			os<<ss.number<<" "<<left<<setw(6)<<ss.name<<"\t"<<ss.cpp<<"\t"<<ss.math<<"\t"<<ss.english<<"\t"<<ss.grade<<endl;
			return os;
		}
   };
   //从文件中读出数据,存放到你定义的结构体数组中;
   int main()
   {
			ifstream infile("score.txt",ios::in); 	//以输入的方式打开文件
			if(!infile)   	 //测试是否成功打开
				{
					cerr<<"open error!"<<endl;
					exit(1);
				}
			vector<Student> vec;
			Student ss;
			while(infile>>ss)
				{
					ss.Grade();
					vec.push_back(ss);
				}
			infile.clear();
			infile.close();
			cout<<"数据读取完毕。。"<<endl;
			Show();
			 int num;
			 vector<Student>::iterator iter=vec.begin();
			 typedef vector<int>::size_type  TT;
			 bool qq=false;
			 while(cin>>num)
			 {
			 	switch(num)
				 {
				 	case 0:qq=true;break;
					case 1:
						{
							cout<<"2133"<<endl;
							while(iter!=vec.end())
							{
								cout<<*iter;
								++iter;
							}
								cout<<endl;
							    break;
						}
					case 2:
						{
//							sort(vec.begin(),vec.end());
                            Student ss;
                            for(TT i=0;i<vec.size()-1;i++)
								for(TT j=i+1;j<vec.size();j++)
								  if(vec[i].Grade()<vec[j].Grade())
								  {
								  	ss=vec[i];
								  	vec[i]=vec[j];
								  	vec[j]=ss;
								  }
								  cout<<"排序完成。。"<<endl;
								  break;
						}
					case 3:
						{
							cout<<"没课大于80得到奖学金。。"<<endl;break;
						}
					default:cout<<"输入不对,重新输入。。"<<endl;
					              break;
				 }
				 if(qq)break;
				 Show();
			 }
			 cout<<endl;
			 cout<<"程序完成。。。"<<endl;
			return 0;
   }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值