zoukankan      html  css  js  c++  java
  • 高级语言程序设计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. 请分析一下,数据写入和读取量对程序速度的影响,说说为什么?想想是否还能够提高文件的读写速度,如何来改进你的程序?(选做

     

     

  • 相关阅读:
    Excel VBA 根据下拉框单元格的值来改变另一个下拉框单元格的值
    HTML Encode 和Decode
    端口号8080和8181被占用的解决方法!
    Eclipse中全局搜索和更替
    HTTP协议详解
    SQL server 常用语句
    50道 Sql语句题
    JAVA过滤器与SpringMVC拦截器之间的区别
    javaWeb中 servlet 、request 、response
    Java 中的 request 和response 区别
  • 原文地址:https://www.cnblogs.com/xukaiae86/p/6421352.html
Copyright © 2011-2022 走看看