編程序實現一下功能。ios
1. 按職工號由小到大的順序將5個員工的數據(包括號碼、姓名、年齡、工資)輸出到磁盤文件中保存編程
2. 從鍵盤輸入兩個員工的數據(職工號大於已有的職工號),增長到文件的末尾數組
3. 輸出文件中所有職工的數據ide
4. 從鍵盤輸入一個號碼,從文件中查找有無此職工號,若有則顯示從職工是第幾個職工,以及此職工的所有數據。如沒有,就輸出「無此人」。能夠反覆屢次查詢,若是查找的職工號爲0,就結束查詢詢spa
- #include<iostream>
- #include<fstream>
- #include<string>
- #include<iomanip>
- #include<strstream>
- using namespace std;
- class Staff
- {
- public:
- Staff(int n=0,char nam[]=" ",int a=0,int p=0)
- {
- num=n;
- strcpy(name,nam);
- age=a;
- pay=p;
- }
- int num;
- char name[20];
- int age;
- int pay;
- };
- int main()
- {
- Staff sta[7]={
- Staff(111,"Li",18,4900),
- Staff(106,"Wi",13,1700),
- Staff(103,"Qam",22,1500),
- Staff(101,"Jia",15,900),
- Staff(105,"Mena",21,2900)
- };
- int i,j;
- Staff temp[5];
- for(i=0;i<4;i++)
- for(j=i+1;j<5;j++)
- {
- if(sta[i].num>sta[j].num)
- {
- temp[i]=sta[j];
- sta[j]=sta[i];
- sta[i]=temp[i];
- }
- }
- fstream iofile("f1.dat",ios::in|ios::out|ios::binary);
- for(i=0;i<5;i++)
- iofile.write((char *)&sta[i],sizeof(sta[i]));
- cout<<"請輸入新員工數據: 工號 姓名 年齡 工資"<<endl;
- for(i=5;i<7;i++)
- {
- cin>>sta[i].num>>sta[i].name>>sta[i].age>>sta[i].pay;
- }
- for(i=5;i<7;i++)
- {
- iofile.seekp(i*sizeof(sta[i]),ios::beg);//定位新增長成員的位置
- iofile.write((char *)&sta[i],sizeof(sta[i]));
- }
- Staff put[7];//接收文件數據輸出到顯示屏
- for(i=0;i<7;i++)
- {
- iofile.seekg(i*sizeof(sta[i]),ios::beg);//定位位置
- iofile.read((char *)&put[i],sizeof(put[i]));//讀入put對象數組中
- cout<<put[i].num<<" "<<put[i].name<<" "<<put[i].age<<" "<<put[i].pay<<endl;
- }
- bool go=true;
- do{
- cout<<"請輸入你要查找的號碼:";
- int b;
- bool yes=false;
- cin>>b;
- for(i=0;i<7;i++)
- {
- if(put[i].num==b)
- {
- yes=true;
- cout<<"你要尋找的是第:"<<i+1<<"個員工"<<endl;
- cout<<put[i].num<<" "<<put[i].name<<" "<<put[i].age<<" "<<put[i].pay<<endl;
- cout<<"繼續查找嗎?Y/N";
- char c;
- cin>>c;
- if(c=='n'||c=='N')
- go=false;
- }
- }
- if(!yes)
- {
- cout<<"無此人"<<endl;
- cout<<"繼續查找嗎?Y/N";
- char c;
- cin>>c;
- if(c=='n'||c=='N')
- go=false;
- }
- }while(go);
- iofile.close();
- }