⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 refer.h

📁 职工信息管理系统的功能是设置职工最大数.职工信息查询.增加职工记录.删除职工记录.生成信息简表.显示原始记录.显示简表记录.显示工资平均值.帮助菜单,退出该系统
💻 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 + -