高级语言程序设计II
实验报告一
姓名:许恺
学号:2014011329
日期:2015年5月25日
1. 实验目的
掌握c++的基本语法和编码模式,学会用c++编写小型的项目
2. 设计思路
没什么思路,就是按照 c的代码去改编,毕竟对于c++我还是知之甚少。
3. 代码实现
#include <iostream>
#include <stdio.h>
#include <string> //字符串头文件
#include <iomanip> //控制输出的头文件
using namespace std;
const int N=1000;
class student //类
{
public:
void input(int a,int n,student stu[N]); //在公有中的输入函数
void write(int a,int n,student stu[N],FILE *fp1); //写入文件函数
void output(int a,int n,student stu[N]); //输出到屏幕的函数
private: //私有性质
int num;
string name;
char sex;
string address;
};
void student::input(int a,int n, student stu[N]) //输入函数
{
char ch;
cout<<"num:";
cin>>stu[a].num;
cout<<"name:";
cin>>stu[a].name;
cout<<"sex(f is woman and m is man):";
cin>>ch;
cout<<"address:";
cin>>stu[a].address[1];
stu[a].address[0]=sizeof(stu[a].address);
}
void student:: write(int a,int n,student stu[N],FILE *fp1)
{
fwrite(stu,sizeof(stu[a].num),1,fp1);
fwrite(stu,sizeof(stu[a].name),1,fp1);
fwrite(stu,1,1,fp1);
fwrite(stu,stu[a].address[0],1,fp1);
fwrite("\n\r",2,1,fp1);
}
void student::output(int a,int n,student stu[N])
{
cout<<setw(10)<<setiosflags(ios::left)<<stu[a].num; //控制输出10个字符左对齐
cout<<setw(10)<<setiosflags(ios::left)<<stu[a].name;
cout<<setw(5)<<setiosflags(ios::left)<<stu[a].sex;
cout<<setw(stu[a].address[0])<<setiosflags(ios::left)<<stu[a].address[1]<<endl;
}
int main()
{
int a,n;
student stu[N]; //定义对象
FILE *fp1;
cout<<"How many student?"<<endl;
cin>>n; //输入学生人数
fp1=fopen("d:\\aaa.txt","w+");
for(a=0;a<n;a++) //进入函数n次
stu[a].input(a,n,stu);
for(a=0;a<n;a++) //进入函数n次
stu[a].write(a,n,stu,fp1);
for(a=0;a<n;a++) //进入函数n次
stu[a].output(a,n,stu);
fclose(fp1); //关闭文件
return 0;
}
4. 实验结果及分析
- 这部分要求说明生成的数据量,写文件的记录个数、文件大小,读取文件中一个记录、所有记录的时间等内容,并贴出代码运行的结果图。请测试多种数据量下,你文件读取和写入速度。
例如:本次实验向文件中写入了1000条学生情况的记录,生成的文件大小1.2M,生成数据的时间为1.2s,将文件中所有记录读取出来话费3s;写入10000条记录,生成文件大小12M,生成数据时间为15s,全部读取时间为25s。