2012-06-04 21:01:09 shitoujianqiang123 阅读数 4249
  • Java系列技术之Spring-Data-Jpa

    Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的。Spring-data-jpa这门课,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。

    511 人正在学习 去看看 钟洪发
/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生 
* All rights reserved.
* 文件名称:    十六周任务二 学生成绩排序文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩
读入这名学生的成绩,用对象数组进行存储
在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中                        
* 作    者:     石丽君                         
* 完成日期:      2012   年     6  月      4  日
* 版 本 号:          

* 对任务及求解方法的描述部分
* 输入描述: 学生成绩排序
文件score.dat 中保存的是100 名学生的姓名和C++课、高数和英语成绩。
(1)定义学生类,其中包含姓名、C++课、高数和英语成绩及总分、均分数据成员,成员函数根据
需要确定。
(2)读入这名学生的成绩,用对象数组进行存储。
(3)求出各科和总分的最高分。
(4)请按总分的降序(高成绩在前,低成绩在后)排序
(5)在屏幕上显示各科及总分的最高分,排序后的成绩单(包括总分)保存到文件odered_score.dat中。
* 问题描述: 
* 程序输出: 
* 程序头部的注释结束
*/


#include<iostream>
#include<fstream>
#include<string>
using namespace std;
class Student
{
private:
	string name;
	int C;
	int Math;
	int English;
	int All_score;
	double Average;
public:
	Student();
	Student(int c,int math,int english,int all_score,double average):C(c),Math(math),English(english),All_score(all_score),Average(average){}
	friend void arrange_all_score(Student stu[]);
	friend void get_frome_file(Student stu[]);
	friend void save_to_file(Student stu[]);
	friend void get_heigh_allscore(Student stu[]);
	friend void get_height_Cscore(Student stu[]);
	friend void get_height_Mathscore(Student stu[]);
	friend void get_height_Englishscore(Student stu[]);

};
Student::Student()
{
	C=0;
	Math=0;
	English=0;
	All_score=0;
	Average=0;
}
void arrange_all_score(Student stu[])
{
	int i,j,t;
	for( j=0;j<99;j++)
	{
		for( i=0;i<99-j;i++)
			if(stu[i].All_score<stu[i+1].All_score)
			{
				t=stu[i].All_score;
				stu[i].All_score=stu[i+1].All_score;
				stu[i+1].All_score=t;
			}
	}
}
void get_heigh_allscore(Student stu[])
{
	Student s;
	int i=0;
	s.All_score=stu[i].All_score;
	for(i=0;i<100;i++)
	{
		if(stu[i].All_score>s.All_score)
		{
			s.All_score =stu[i].All_score ;
			s.name =stu[i].name ;
		}
	}
	cout<<"总分成绩最高为:"<<s.All_score<<'\t'<<"成员:";
	for(i=0;i<100;i++)
		if(s.All_score ==stu[i].All_score )
			cout<<stu[i].name<<" ";
}
void get_height_Cscore(Student stu[])
{
	Student s;
	int i=0;
	s.C=stu[i].C;
	for(i=0;i<100;i++)
	{
		if(stu[i].C>s.C)
		{
			s.C =stu[i].C;
			s.name =stu[i].name ;
		}
	}
	cout<<"C++成绩最高为:"<<s.C<<'\t'<<"成员:";
	for(i=0;i<100;i++)
		if(s.C ==stu[i].C )
			cout<<stu[i].name<<" ";

}
void get_height_Mathscore(Student stu[])
{
	Student s;
	int i=0;
	s.Math=stu[i].Math;
	for(i=0;i<100;i++)
	{
		if(stu[i].Math>s.Math)
		{
			s.Math =stu[i].Math;
			s.name =stu[i].name ;
		}
	}
	cout<<"高数成绩最高为:"<<s.Math<<'\t'<<"成员:";
	for(i=0;i<100;i++)
		if(s.Math==stu[i].Math )
			cout<<stu[i].name<<" ";
}
void get_height_Englishscore(Student stu[])
{
	Student s;
	int i=0;
	s.English=stu[i].English;
	for(i=0;i<100;i++)
	{
		if(stu[i].English>s.English)
		{
			s.English =stu[i].English;
			s.name =stu[i].name ;
		}
	}
	cout<<"英语成绩最高为:"<<s.English<<'\t'<<"成员:";
	for(i=0;i<100;i++)
		if(s.English==stu[i].English )
			cout<<stu[i].name<<" ";

}

void get_frome_file(Student stu[])
{
	ifstream infile("score.dat",ios::in);
	if(!infile)
	{
		cerr<<"open score.dat error!"<<endl;
		exit(1);
	}
	for(int i=0;i<100;i++)
	{
		infile>>stu[i].name>>stu[i].C>>stu[i].Math>>stu[i].English;
		stu[i].Average=(stu[i].C+stu[i].Math+stu[i].English)/3;
		stu[i].All_score=stu[i].C+stu[i].Math+stu[i].English;
	}
	infile.close();

}
void save_to_file(Student stu[])
{
	cout<<"姓名"<<'\t'<<"C++"<<'\t'<<"高数"<<'\t'<<"英语"<<'\t'<<"平均分"<<'\t'<<"总分"<<endl;

	ofstream outfile("ordered_score.dat",ios::out);
	if (!outfile)
	{
		cerr<<"open error!"<<endl;

	}
	for(int i=0;i<100;i++)
	{
		outfile<<stu[i].name<<'\t'<<stu[i].C<<'\t'<<stu[i].Math<<'\t'<<stu[i].English<<'\t'<<stu[i].Average<<'\t'<<stu[i].All_score<<endl;
		cout<<stu[i].name<<'\t'<<stu[i].C<<'\t'<<stu[i].Math<<'\t'<<stu[i].English<<'\t'<<stu[i].Average<<'\t'<<stu[i].All_score<<endl;
	}
	outfile.close();
}
int main()
{
	Student stu[100];
	get_frome_file(stu);
	arrange_all_score( stu);
	get_heigh_allscore(stu);
	cout<<endl;
	get_height_Cscore( stu);
	cout<<endl;
	get_height_Mathscore( stu);
	cout<<endl;
	get_height_Englishscore( stu);
	cout<<endl;
	cout<<endl;
	save_to_file(stu);
	cout<<endl;
	system("pause");
	return 0;

}


 

 

2011-07-13 11:43:53 neicole 阅读数 3075
  • Java系列技术之Spring-Data-Jpa

    Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的。Spring-data-jpa这门课,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。

    511 人正在学习 去看看 钟洪发

作业13: 文件的输入与输出

/*************************** 第13章  14题  P458   ******************************

4.建立两个磁盘文件 f1.dat 和 f2.dat,编程序实现以下工作:
1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);
2)从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;
3)从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)

******************************************************************************/


// T4_RWFile.cpp 
/*************************** 第13章  14题  P458   ******************************
4.建立两个磁盘文件 f1.dat 和 f2.dat,编程序实现以下工作:
1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);
2)从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;
3)从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)
******************************************************************************/

#include <iostream>
#include <fstream>
using namespace std;

int main()
{
 	int onceagain = 0;
 	do
 	{
// statement
   char* stat =
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
"   该程序实现的功能:建立两个磁盘文件 f1.dat 和 f2.dat,\n"
"1)从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);\n"
"2)从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;\n"
"3)从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据) \n"
"^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^"
"     要开始咯    GO... GO... GO... \n\n";
   cerr << stat;

 	
// 从键盘输入20个整数

	int a[20];								// 用作储存数字
	int i;					  				// 用作循环条件
	cerr << "输入20个整数:(每输入一个按一下回车):" << endl;
	for(i = 1; i <= 20; ++i)
	{
		cout << "第 " << i << " 个:  ";
		cin >> a[i-1];
	}
  cout << endl << "输入完毕!" << endl << endl;
  
// 分别存放在两个磁盘文件中(每个文件中放10个整数)

  ofstream outfile;		    	// 定义 ofstream 类(输出文件流类)对象 outfile
  ifstream infile;				// 定义 ifstream 类(输入文件流类)对象 infile
  const char * f1 = "f1.dat";
  const char * f2 = "f2.dat";

	
	
	cerr << "开始写入数据到 " << f1 << " 文件..." << endl;
	outfile.open(f1, ios::out);         	//.open()  f1.dat
	for(i = 0; i < 10; ++i)
	{
		outfile << a[i] << endl;
		cerr << a[i] << endl;
	}
	outfile.close();						// .close()  f1.dat
	cerr << "写入成功!" << endl << endl;


	cerr << "开始写入数据到 " << f2 << " 文件..." << endl;
	outfile.open(f2, ios::out);          	//.open()    f2.dat
	for(i = 10; i < 20; ++i)
	{
		outfile << a[i] << endl;
		cerr << a[i] << endl;
	}
	outfile.close();					   // .close()  f2.dat
	cerr << "写入成功!" << endl << endl;	
	cerr << endl << "Yeah! 第一任务执行成功。" << endl << endl; 
	
	cerr << "请按回车键继续..." << endl; 
	cin.get();
	cin.get();
	
// 从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;
// 读取  // 写入 ios::app 可加到末尾 ios::ate 文件指针指向末尾
    int t[20];
	infile.open(f1, ios::in);				//.open() f1.dat
	outfile.open(f2, ios::out | ios::app);	//.open() f2.dat
	cerr << "正在从 " << f1 
		 << " 读入10个数,然后存放到 " << f2 << " 文件原有数据的后面..." 
		 << endl;
	for(i = 0; i < 10; ++i)
	{
        cerr << "- -正在读取第 " << i+1 << " 个数: "; 
		infile >> t[i];
		cerr << t[i] << endl;
		cerr << " + 正在写入第 " << i+1 << " 个数: ";
		outfile << t[i] << endl;
		cerr << t[i] << endl;
	}
	infile.close();							//.close() f1.dat
	outfile.close();						//.close() f2.dat
	cerr << "Yeah! 第二任务执行成功。" << endl << endl; 
	
	cerr << "请按回车键继续..." << endl; 
	cin.get();
	

// 从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)

// 读取 
    infile.open(f2, ios::in);
    for(i = 0; i < 20; ++i)
	{
	infile >> t[i];
	cerr << "成功读取第 " << i+1 << " 个数: " << t[i] << endl; 
	}
    infile.close();

// 排序 -- 选择法 
   int k;
   int j; 
   int min;
   for (i = 0; i < 20; ++i)
   {
   	   k = i;
   	   min = t[i];
   	 // 找出最小值 
   	   for (j = i; j < 20; ++j)
   	   	  if (t[j] < min)
   	   	   {
   	   	   	  min = t[j];
   	   	   	  k = j;
	  	  }
    // 换位 
 		 min = t[k];		// min此时只作temp临时比较作用 
 		 t[k] = t[i];
 		 t[i] = min;
    }


	cerr << endl;
// 输出 
    outfile.open(f2, ios::out);
    for(i = 0; i < 20; ++i)
	{
	outfile << t[i] << endl;
	cerr << "成功输出第 " << i+1 << " 个数: " << t[i] << endl; 
	}
	outfile.close();
	cerr << endl << "Yeah! 成功排序输出!第三任务执行成功!" << endl; 
	
	
	cerr << endl << "若想退出,请输入0,否则请输入其它数字:"; 
	cin >> onceagain;
	cout << endl << endl;
	}while(onceagain);
	
	return 0;
	
}


2020-02-25 20:43:37 c_messi 阅读数 63
  • Java系列技术之Spring-Data-Jpa

    Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的。Spring-data-jpa这门课,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。

    511 人正在学习 去看看 钟洪发

//文件的读写
//1.文件打开
//2.文件是否打开
//3.文件输入输出操作
//4.文件关闭
//ifstream–只能从文件中读数据
//ofstream-- 只能从文件中写数据
// ios::app --追加模式
// ios::ate --如果已存在,直接转到文件尾部
// ios::binary --二进制
// ios::in --从文件中读数据
// ios::out --向文件中些
// iOS::nocreate 如果文件不存在,不能创建
// ios::noreplace 如果文件存在,失败
// ios::trunc 文件存在,删除其内容

#include<fstream>
#include<iostream>
using namespace std;
int main(){
	//1.先定义流对象,打开文件
	fstream dataFile;
	string fileName = "A://in.txt";
	dataFile.open( "A://in.txt",ios::out|ios::app);
	//定义流对象时打开文件 
	//fsteam dataFile(fileName);
	//2.是否打开文件成功
	if(!dataFile){
		cout<<"open file error!";
		return 0;
	} 
	//3.操作
		//写--<<
		dataFile<<"write to file";
	 	//文件不关闭,写入内容在文件缓冲区中 
		dataFile.close();
		
		//读-->>
		dataFile.open( "A://in.txt",ios::in); 
		
		while(!dataFile.eof()){
			string s;
			dataFile>>s;
			//上一步操作失败返回
			if(dataFile.fail() ){
				break;
			} 
			cout<<s<<endl;
		}
		//读--getline(str,81,'\n')
		//----str:存储读取数据
		//----81:最多读取的字符数
		//----'\n':界符,优先级高于81 
		/*
		while(!dataFile.eof() ){
			string s;
			dataFile.getline(s);
			if(dataFile.fail() ){
				break; 
			}
			cout<<s<<endl;
		}
		*/
		//读--单个字符 
		/*
		while(!dataFile.eof() ){
			char ch;
			dataFile.get(ch);
			if(dataFile.fail() ){
				break; 
			}
			cout<<ch<<endl;
		}
		*/
		dataFile.close();
	//4.文件关闭
	//dataFile.close(); 
	return 0;
}
2010-05-31 17:26:00 wangpf2008 阅读数 8268
  • Java系列技术之Spring-Data-Jpa

    Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的。Spring-data-jpa这门课,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。

    511 人正在学习 去看看 钟洪发

把网上搜索的内容大致汇总一下:

1.text方式写入文件会将换行(/n)扩展成/r/n, 读文件时则自动转换回来

2.binary方式则不会作任何扩展,与读写内容一致

3.默认为text方式

 

详细参考:http://blog.csdn.net/wanfustudio/archive/2007/09/14/1785131.aspx

 

附录:自己写的使用fstream读写文件的两个函数

#include <fstream>

using namespace std;

 

bool Preprocess::ReadParseRsltFile(tstring FileName)

{

    TCHAR szFull[MAX_PATH] = {0};

    _tcscpy_s(szFull, MAX_PATH, m_szDataFileDir);

    _tcscat(szFull, TEXT("//"));

    _tcscat(szFull, FileName.c_str());

    _tcscat(szFull, TEXT("_r"));

 

    wifstream fin;

    fin.open(szFull, ios::binary);

    if (fin.bad())

    {

        return false;

    }

    fin.imbue(std::locale("chs"));

 

    TCHAR szSize[16] = {0};

    fin.getline(szSize,16);  //第一行为文件大小

    int nSize = _ttoi(szSize);

 

    tstring strTmp;

    for(int i=0; i<nSize; i++)

    {

        getline(fin, strTmp);

        m_vSenParRslt.push_back(strTmp);

    }

    fin.close();

 

    return true;

}

void Preprocess::WriteFiles(tstring FileName, const vector<tstring>&vContent)

{

    TCHAR szFull[MAX_PATH] = {0};

    _tcscpy_s(szFull, MAX_PATH, m_szDataFileDir);

    _tcscat(szFull, TEXT("//"));

    _tcscat(szFull, FileName.c_str());

 

    wofstream fout;

    fout.open(szFull, ios::binary|ios_base::trunc);

  //  fout.clear();

    fout.imbue(std::locale("chs"));

    fout<<vContent.size()<<"/n";

    for(int i=0; i<vContent.size(); i++)

    {

        fout<<vContent[i].c_str()<<"/n";

    }

    fout.close();

}

写入的内容包含中文,所以必须加上: fout.imbue(std::locale("chs"));

tstring 是自己定义的宏,代表string 或者wstring

#ifdef _UNICODE

#define tstring wstring

#else

#define tstring string

#endif

2016-05-02 15:02:00 weixin_30410119 阅读数 2
  • Java系列技术之Spring-Data-Jpa

    Spring家族越来越强大,作为一名javaWeb开发人员,学习Spring家族的东西是必须的。Spring-data-jpa这门课,几乎涵盖该框架的所有方面,在日常的开发当中,基本上能满足所有需求。

    511 人正在学习 去看看 钟洪发

17.1 文件流类

17.2 文件的打开关闭

 #include<fstream>

 fstream oFile("D:\\dang.dat",ios::out|ios::binary); 或 fstream oFile;

                                                                             oFile.open("D:\\......",ios::out|ios::binary);

检查是否成功打开  

 if(!oFile)

  cout<<"oFile open error"<<endl;

17.3 文件的读写

(1)文本文件的读写

#include<iostream>
#include<fstream>
using namespace std;
char *a;
int main(){
    ofstream oFile("D:\\dang.txt",ios::out);
    if(!oFile)
    cout<<"ofile open error";
    char p[10];
    for(int i=0;i<5;i++)
    cin>>p[i];
    for(int i=0;i<5;i++)
    oFile<<p[i];
    oFile.close();
    
    ifstream iFile("D:\\dang.txt",ios::in);
    if(!iFile)
    cout<<"ifile open error";
    char str[10];
    iFile.getline(str,10);
    cout<<str<<endl;
    iFile.close();
    
    return 0;
}

 

(2)二进制文件读写

     write和read

   *   ostream write(const char * buffer,int count);

        继承自ostream,将内存中buffer指向的count个字节写入文件

   **  istream read(char * buffer,int count);

         继承自iostream,从文件中读取count个字节内容存放到buffer指向的内存缓冲区中

#include<iostream>
#include<fstream>
#include<cstring>

using namespace std;

class student{
    public:
        char name[20]; 
        int age;
}; 

int main() {
    //写入几个对象至文件 
    student stu;
    fstream oFile("erjinzhi.dat",ios::out|ios::binary);
    if(!oFile) 
    cout<<"oFile open error";
    while(cin>>stu.name>>stu.age){ 
      if(strcmp(stu.name,"end")==0) break; 
        oFile.write( (char *) & stu, sizeof(stu) );
        } 
       oFile.close();
       
     //读出刚刚写入的文件  
    fstream iFile("erjinzhi.dat",ios::in|ios::binary);
    if(!iFile)
    cout<<"iFile open error";
    while(iFile.read((char*)&stu,sizeof(stu)))
    cout<<stu.name<<" "<<stu.age<<endl;
    iFile.close();
    
    //改变第三个对象的名字,再读出文件 
    fstream make_File("erjinzhi.dat",ios::in|ios::out|ios::binary);
    if(!make_File)
    cout<<"make_FIle open error";
    make_File.seekp(2*sizeof(stu),ios::beg);//定位写指针 
    make_File.write("Make",sizeof("Make")+1);
    make_File.seekg(0,ios::beg);//定位读指针 
    while(make_File.read((char*)&stu,sizeof(stu)))
    cout<<stu.name<<" "<<stu.age<<endl;
    make_File.close();
    
       
    return 0; 
}

   文件流类put和get成员函数读写(文件拷贝)

    在控制台里面执行

#include<iostream>
#include<fstream>
using namespace std;
int main(int argc,char *argv[]){
    if(argc!=3){
        cout<<"File name missing!"<<endl;
        return 0;
    }
    
    ifstream iFile(argv[1],ios::binary|ios::in);//打开文件用于读
    if(!iFile){
    cout<<"iFile open error"<<endl;
    return 0;    
    }
    ofstream oFile(argv[2],ios::binary|ios::in);
    if(!oFile){
    cout<<"oFile open error"<<endl;
    iFile.close();
    return 0;    
    }

    
    char c;
    while(iFile.get(c))
        oFile.put(c);
        
    oFile.close();
    iFile.close();    
    
    return 0;
} 

17.4 操作文件读写指针

     ostream & seekp(int offset,int mode);

     istream & seekg(int offset,int mode);

*  mode 代表读写指针的模式

    ios::beg   从文件开始向后移动offset字节,offset为正或0

    ios::cur    从当前位置向后(或前)移动offset个字节,offset正负数,0皆可

    ios::end   从文件结尾向前offset字节,offset只能是正数或0

** 得到读写指针位置

    int tellp();//返回写指针位置

    int tellp();//返回读指针位置

转载于:https://www.cnblogs.com/by-dxm/p/5452272.html

对ASCII文件的操作

阅读数 475

从文件中提取数字

阅读数 893

c++ -- 文件操作

阅读数 22

没有更多推荐了,返回首页