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

 

 

 

相关文章
|
5月前
|
C++
C++ 语言异常处理实战:在编程潮流中坚守稳定,开启代码可靠之旅
【8月更文挑战第22天】C++的异常处理机制是确保程序稳定的关键特性。它允许程序在遇到错误时优雅地响应而非直接崩溃。通过`throw`抛出异常,并用`catch`捕获处理,可使程序控制流跳转至错误处理代码。例如,在进行除法运算或文件读取时,若发生除数为零或文件无法打开等错误,则可通过抛出异常并在调用处捕获来妥善处理这些情况。恰当使用异常处理能显著提升程序的健壮性和维护性。
85 2
|
5月前
|
算法 C语言 C++
C++语言学习指南:从新手到高手,一文带你领略系统编程的巅峰技艺!
【8月更文挑战第22天】C++由Bjarne Stroustrup于1985年创立,凭借卓越性能与灵活性,在系统编程、游戏开发等领域占据重要地位。它继承了C语言的高效性,并引入面向对象编程,使代码更模块化易管理。C++支持基本语法如变量声明与控制结构;通过`iostream`库实现输入输出;利用类与对象实现面向对象编程;提供模板增强代码复用性;具备异常处理机制确保程序健壮性;C++11引入现代化特性简化编程;标准模板库(STL)支持高效编程;多线程支持利用多核优势。虽然学习曲线陡峭,但掌握后可开启高性能编程大门。随着新标准如C++20的发展,C++持续演进,提供更多开发可能性。
93 0
|
3月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
62 5
|
3月前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
3月前
|
存储 分布式计算 编译器
深入计算机语言之C++:C到C++的过度-2
深入计算机语言之C++:C到C++的过度-2
|
3月前
|
编译器 Linux C语言
深入计算机语言之C++:C到C++的过度-1
深入计算机语言之C++:C到C++的过度-1
|
4月前
|
JavaScript 前端开发 测试技术
一个google Test文件C++语言案例
这篇文章我们来介绍一下真正的C++语言如何用GTest来实现单元测试。
29 0
|
5月前
|
编译器 C++ 容器
C++语言的基本语法
想掌握一门编程语言,第一步就是需要熟悉基本的环境,然后就是最重要的语法知识。 C++ 程序可以定义为对象的集合,这些对象通过调用彼此的方法进行交互。现在让我们简要地看一下什么是类、对象,方法、即时变量。 对象 - 对象具有状态和行为。例如:一只狗的状态 - 颜色、名称、品种,行为 - 摇动、叫唤、吃。对象是类的实例。 类 - 类可以定义为描述对象行为/状态的模板/蓝图。 方法 - 从基本上说,一个方法表示一种行为。一个类可以包含多个方法。可以在方法中写入逻辑、操作数据以及执行所有的动作。 即时变量 - 每个对象都有其独特的即时变量。对象的状态是由这些即时变量的值创建的。 完整关键字
|
6月前
|
前端开发 编译器 程序员
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
协程问题之为什么 C++20 的协程代码比其他语言的协程 demo 长很多如何解决
|
7月前
|
程序员 编译器 C++
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
探索C++语言宝库:解锁基础知识与实用技能(类型变量+条件循环+函数模块+OOP+异常处理)
54 0