📄 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 + -