?? refer.h
字號:
//文件refer.h (職工信息查詢函數的實現)
#include<iostream>
#include<fstream>
#include<cstdlib>
#include<iomanip>
#include<string>
#include"str.h"
using namespace std;
void refer()
{
int have=0; //記錄編號的匹配數。
char back='1'; //詢問用戶是否返回。
int num_in; //用戶輸入的編號。
char num_in_char[20];
int back_out=1; //判斷是否退出這個for循環回到主菜單。
int max_Current; //記錄當前的職工最大數。
/***********從數據文件max.dat中得知當前的職工最大數是多少*********/
int max;
ifstream fcin("max.dat");
if(fcin.fail()) //判斷文件max.dat是否成功打開。
{
cout<<"文件max.dat打開失敗,程序將結束"<<endl;
exit(1);
}
fcin>>max; //從數據文件max.dat得到職工的最大數。
fcin.close(); //關閉文件max.dat。
/**********************從數據文件中讀取職工的信息*****************/
struct _Employee //_Employee結構的定義。
{
int num;
string name;
string sex;
int age;
int wage; //工資
};
_Employee *employee=new _Employee[max]; //定義動態結構體數組。
ifstream fin("name.dat"); //定義一個輸入流對象,用于讀取文件的記錄。
if(fin.fail())
{
cout<<"文件name.dat打開失敗,程序將結束"<<endl;
exit(1);
}
/******這個while循環是很容易出錯的,注意*****/
int i=0;
while(!fin.eof()) //文件末尾檢查,如果文件讀取沒結束,返回0。
{
fin>>employee[i].num>>employee[i].name>>employee[i].sex
>>employee[i].age>>employee[i].wage;
i++;
}
max_Current=i; //記錄當前的職工最大數。
fin.close(); //關閉文件name.dat。
/**********************從數據文件中讀取職工的信息完畢*****************/
for( ; ; ) //查詢職工信息開始。
{
bool temp_bool=false; //判斷用戶輸入是否合法的變量。
cout<<"**************開始查詢職工信息****************"<<endl;
cout<<"請輸入想要查詢的職工編號("<<max+1<<"-"<<max*2<<"):";
cin>>num_in_char;
temp_bool=check(num_in_char);
while(!temp_bool)
{
cout<<"對不起,您的輸入帶有非法字符!請重新輸入:";
cin>>num_in_char;
temp_bool=check(num_in_char);
}
num_in=atoi(num_in_char); //
while(have==0)
{
for(i=0;i<max_Current;i++) //將用戶輸入的編號原始的職工記錄匹配。
{
if(employee[i].num!=num_in)
;
else
{
have+=1;
num_in=i;
break;
}
}
if(have==0) //判斷想要查詢的職工信息是否存在。
{
cout<<"對不起,您想要查詢的這個職工信息不存在或者已經被刪除!"<<endl;
cout<<"返回主菜單請按1,重新輸入請按2:";
cin>>back;
while(back!='1' && back!='2')
{
cout<<"對不起,您輸入的只能是1或2!"<<endl;
cout<<"返回主菜單請按1,重新輸入請按2:";
cin>>back;
}
if(back=='1')
{
back='0';
back_out=0;
break; //退出while循環,回到外層的for循環。
}
cout<<"請輸入想要查詢的職工編號("<<max+1<<"-"<<max*2<<"):";
cin>>num_in_char;
temp_bool=check(num_in_char);
while(!temp_bool)
{
cout<<"對不起,您的輸入帶有非法字符!請重新輸入:";
cin>>num_in_char;
temp_bool=check(num_in_char);
}
num_in=atoi(num_in_char); //
continue;
}
else
if(have==1)
break; // 跳出while循環。
} //匹配循環while循環j結束。
if(back_out==0)
break; //跳出for循環。
/***************************開始顯示查詢結果**********************************/
have=0; //記錄是否匹配變量歸0.
cout<<"************************************************"<<endl;
cout<<setw(8)<<"職工編號"<<setw(8)<<"姓名"<<setw(8)<<"性別"
<<setw(8)<<"年齡"<<setw(10)<<"工資(元)"<<endl;
cout<<setw(8)<<employee[i].num<<setw(8)<<employee[i].name<<setw(8)<<employee[i].sex
<<setw(8)<<employee[i].age<<setw(10)<<employee[i].wage<<endl;
cout<<"************************************************"<<endl;
cout<<"返回主菜單請按0,繼續查詢請按1:";
cin>>back;
while(back!='0' && back!='1')
{
cout<<"對不起,您輸入的只能是0或1!"<<endl;
cout<<"返回主菜單請按0,繼續查詢請按1:";
cin>>back;
}
if(back=='0')
{
back='0';
back_out=0;
break; //退出while循環,回到外層的for循環。
}
} //for循環結束
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -