实验五:输入输出流答案—专业版

  • 格式:doc
  • 大小:50.50 KB
  • 文档页数:7

08计算机4班 实验五:输入输出流 1 1. 设计一个职员类EMPLOYEE,主要包括工号、姓名、部门、年龄、工资等属性以及更换部门、年龄变更、工资增长等操作,为EMPLOYEE类提供输入/输出运算“<<”和“>>”。(提示:类EMPLOYEE应有多个重载的构造函数) /main.cpp #include "employee.h"

int main(int argc , char *argv[]) { EMPLOYEE A(200701, "Tom", "DEPARTMENT A",34,2345.6); cout<

EMPLOYEE B; cin>>B; cout<<"输入的信息:"<

return 0; } // employee.h #include #include

using namespace std; const int MAX_LEN=100; class EMPLOYEE{ private: long id; char name[MAX_LEN]; char department[MAX_LEN]; int age; double salary; public: EMPLOYEE(); EMPLOYEE(const EMPLOYEE& obj); EMPLOYEE(long idd, char namee[], char depar[], int agee, double sala); ~EMPLOYEE();

void changeDepartment(char newDepar[]); 08计算机4班 实验五:输入输出流 2 void changeAge(int agee); void raiseSalary(double delta);

// 定义友元函数,提供输入/输出运算"<<"和">>"。 friend ostream& operator<<(ostream& stream, EMPLOYEE& obj); friend istream& operator>>(istream& stream, EMPLOYEE& obj); }; EMPLOYEE::EMPLOYEE() { id=000000; } EMPLOYEE::EMPLOYEE(const EMPLOYEE& obj) //拷贝构造函数 { id=obj.id; strcpy(name,obj.name); strcpy(department,obj.department); age=obj.age; salary=obj.salary; } EMPLOYEE::EMPLOYEE(long idd, char namee[], char depar[], int agee, double sala) { id=idd; strcpy(name,namee); strcpy(department,depar); age=agee; salary=sala; } EMPLOYEE::~EMPLOYEE() {

} ostream& operator<<(ostream& stream, EMPLOYEE& obj) { stream<<"{ "

} istream& operator>>(istream& stream, EMPLOYEE& obj) { cout<<"输入 工号:"; stream>>obj.id; // 接收键盘上的字符串处理起来比较麻烦。。。。 cout<<"输入 姓名:"; 08计算机4班 实验五:输入输出流 3 stream.ignore(1); stream.getline(obj.name,MAX_LEN,'\n'); cout<<"输入 部门:"; stream.ignore(1); stream.getline(obj.department,MAX_LEN,'\n');

cout<<"输入 年龄:"; stream>>obj.age; cout<<"输入 工资:"; stream>>obj.salary; return stream; }

2.设计一个管理图书目的简单程序,提供的基本功能包括:可

连续将新书存入文件book.dat中,新书信息加入到文件的尾部;也可以根据输入的书名进行查找;把文件book.dat中同书名的所有书目信息显示出来。(为简单起见,描述一本书的信息包括:书号,书名,出版社和作者) //main.cpp #include #include using namespace std;

const int MAX_LEN=20; // 定义描述书信息的结构体 struct Book{ long id; char name[MAX_LEN]; char publisher[MAX_LEN]; char author[MAX_LEN]; };

// 向文件book.dat中添加新的一条书的信息 void addBookInfo(Book aBook) { ofstream outfile("e:\\book.dat",ios::app|ios::binary); if(! outfile) { cerr<<"open error!"<08计算机4班 实验五:输入输出流 4 abort(); } outfile.write((char*)&aBook,sizeof(Book)); outfile.close(); } // 从文件book.dat中读出书名为namee的所有书的记录 void selectBook(char namee[]) { Book aBook; ifstream infile("e:\\book.dat",ios::binary); if(! infile) { cerr<<"open error!"

cout<} infile.read((char*)&aBook,sizeof(Book)); } infile.close(); }

int main(int argc , char*argv[]){ Book aBook={2001, "Star", "yahoo", "Li Ming"}; Book bBook={2002, "Boold", "Sina", "Tom Berry"}; Book cBook={2003, "Star", "google", "Li Ming"};

addBookInfo(aBook); addBookInfo(bBook); addBookInfo(cBook);

selectBook("Star"); return 0; } 08计算机4班 实验五:输入输出流 5 3.建立两个磁盘文件f1.dat和f2.dat,编程序实现以下工作:①从键盘输入20个整数,分别存放在两个磁盘文件中(每个文件中放10个整数);②从f1.dat读入10个数,然后存放到f2.dat文件原有数据的后面;③从f2.dat中读入20个整数,将它们按从小到大的顺序存放到f2.dat(不保留原来的数据)。 //main.cpp #include #include

using namespace std; const int COUNT=2; void bubble(int A[], int len) { int tmp; int i,j; for(i=0;i{ for(j=i+1;j{ if(A[j]{ tmp=A[j]; A[j]=A[i]; A[i]=tmp; } } } } int main(int argc, char *argv[]) { int number[2*COUNT]; int tmpNumber[2*COUNT];

int i; cout<<"请输入 "<<2*COUNT<<"个整数:"; for(i=0;i<2*COUNT;i++)