高级语言程序设计II 实验报告二文本文件形式读写c++

 

 

 

高级语言程序设计II

实验报告二

 

 

 

姓名:许恺

学号:2014011329

日期:6月4日

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. 实验目的

学会用文本文件形式读写,通过c++实现。更加深入对c++的了解

2. 设计思路

使用c++的文件读写方式进行读写并进行函数调用,用一个类来描述一个学生的资料,把一个对象看做学生,先输入学生人数,再写入学生信息,写入文件,输出。

 

3. 代码实现

主函数:

// c++À¡§?2.cpp : ¡§°???¬¡§®|®?¨¬¨°Ì?¨?¨²Ì?¡ê

//

 

#include "stdafx.h"

#include <iostream>

#include <string>  //Á?¤?ä?ª¡¤?t

#include "student.h"

#include <fstream>

#include <iomanip>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])

{

int a,n,e,s[N];

char b[30],c,d[1000];

fstream fp1;

fp1.open("D:\\aaa.txt",ios::out);

cout<<"How many student?"<<endl;

cin>>n; //º?¨?¡ì¦¨²¨?ºy

student* stu=new student[n]; //¡§°??¨®

for(a=0;a<n;a++) //?¨?¡¥ºynä?

  s[a]=stu[a].input(n);

for(a=0;a<n;a++) //?¨?¡¥ºynä?

  stu[a].write(n,fp1,stu);

fp1.close(); //?À??t

fp1.open("d:\\aaa.txt",ios::in);

for(a=0;a<n;a++) //¨¢¨?º???t

//stu[a].output(n,fp1);

{

fp1>>setw(10)>>e;

cout<<setw(10)<<setiosflags(ios::left)<<e; //??º??10?Á?¤?Á¨®??

fp1>>setw(20)>>b;

cout<<setw(20)<<setiosflags(ios::left)<<b;

fp1>>setw(5)>>c;

cout<<setw(5)<<setiosflags(ios::left)<<c;

fp1>>setw(s[a]+1)>>d;

cout<<setiosflags(ios::left)<<d<<endl;

}

fp1.close();

delete[] stu;

return 0;

}

 

.h文件:

#pragma once

#include <string>

const int N=1000;

class student

{

public:

int input(int n); //¨²?®DDÌ?º?¨?¡¥ºy

void write(int n,std::fstream& fp1,student *stu); //¡ä¨??t¡¥ºy

void output(int n,std::fstream& fp1); //º??Ì?¨¢?Ì?¡¥ºy

private: //?®D?¨º

int num;

  char name[20];

char sex;

char address[N];

};

 

.cpp文件:

#include "StdAfx.h"

#include "student.h"

#include <iostream>

#include <fstream>

#include <string>

#include <iomanip>//??º??Ì?ª¡¤?t

using namespace std;

int  student::input(int n) //º?¨?¡¥ºy

{

int s; //??address¡è¨¨

cout<<"num:"<<endl;

cin>>num;

cout<<"name:"<<endl;

cin>>name;

cout<<"sex(f is woman and m is man):"<<endl;

cin>>sex;

cout<<"address:"<<endl;

cin>>address;

s=strlen(address);

return s;

}

void student:: write(int n,std::fstream& fp1,student *stu)

{

fp1<<setw(10)<<setiosflags(ios::left)<<num;

fp1<<setw(20)<<setiosflags(ios::left)<<name;

fp1<<setw(5)<<setiosflags(ios::left)<<sex;

fp1<<setw(strlen(address))<<address<<endl;

}

void student::output(int n,std::fstream& fp1) //放弃了函数读文件的方法

{

/*int a;

char b[30],c,d[1000];

fp1>>setw(10)>>a;

cout<<setw(10)<<setiosflags(ios::left)<<a; //??º??10?Á?¤?Á¨®??

fp1>>setw(20)>>b;

cout<<setw(20)<<setiosflags(ios::left)<<b;

fp1>>setw(5)>>c;

cout<<setw(5)<<setiosflags(ios::left)<<c;

fp1>>setw(strlen(address))>>d;

cout<<setiosflags(ios::left)<<d<<endl;*/

}

 

4. 实验结果及分析

  1. 这部分要求说明生成的数据量,写文件的记录个数、文件大小,读取文件中一个记录、所有记录的时间等内容,并贴出代码运行的结果图。请测试多种数据量下,你文件读取和写入速度。

例如:本次实验向文件中写入了1000条学生情况的记录,生成的文件大小1.2M,生成数据的时间为1.2s,将文件中所有记录读取出来话费3s;写入10000条记录,生成文件大小12M,生成数据时间为15s,全部读取时间为25s。

  1. 请分析一下,数据写入和读取量对程序速度的影响,说说为什么?想想是否还能够提高文件的读写速度,如何来改进你的程序?(选做

 

 

 

posted @ 2017-02-20 20:37  拓海藤原  阅读(195)  评论(0编辑  收藏  举报