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

简介:   高级语言程序设计II实验报告二   姓名:许恺学号:2014011329日期:6月4日                     1. 实验目的学会用文本文件形式读写,通过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. 请分析一下,数据写入和读取量对程序速度的影响,说说为什么?想想是否还能够提高文件的读写速度,如何来改进你的程序?(选做

 

 

 

相关文章
|
13天前
|
存储 Java C#
C++语言模板类对原生指针的封装与模拟
C++|智能指针的智能性和指针性:模板类对原生指针的封装与模拟
|
14天前
|
数据安全/隐私保护 C++
C++语言深入理解类的封装与数据隐藏
深入理解类的封装与数据隐藏
|
14天前
|
C++
C++语言的lambda表达式
C++从函数对象到lambda表达式以及操作参数化
|
9天前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
10 0
|
10天前
|
存储 JavaScript 前端开发
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
程序与技术分享:C++程序设计实验考试准备资料(2019级秋学期)
|
11天前
|
C++
技术经验分享:C++程序设计的技巧
技术经验分享:C++程序设计的技巧
|
13天前
|
存储 编译器 开发工具
C++语言教程分享
C++语言教程分享
|
13天前
|
自然语言处理 编译器 C语言
C++语言入门教程
C++语言入门教程
|
13天前
|
存储 编译器 程序员
C++语言基础学习
C++语言基础学习
|
13天前
|
存储 编译器 程序员
C++语言速成方法
C++语言速成方法