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

📄 find.cpp

📁 1、 模拟一间公司(有普通工人、经理、销售员、计时工人和计件工人)的雇员月工资单管理系统
💻 CPP
字号:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <graphics.h>
#include <strstrea.h>
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include "item.h"
#include "employee.h"
#include "labour.h"
#include "manager.h"
#include "commis.h"
#include "piece.h"
#include "hourly.h"
#include "lpiece.h"
extern void MessageBox(char *);
extern void judgeKey(Item *);
extern int jkey(char *,int);

int fn(Employee *p,char *f,char *l)
{
  int flag=0;
  for(;p;p=p->getNext())
    if(strcmp(p->getFirstName(),f)==0&&strcmp(p->getLastName(),l)==0)
    {
      cout<<*p<<endl;
      flag=1;
      if(wherey()>22)
      {
	cout<<"Press space to continue"<<endl;
	while(getch()!=32);
	setfillstyle(1,BLACK);
	bar(0,0,470,458);
	gotoxy(1,1);
      }
    }
  if(flag) return 1;
  return 0;
};

int fs(Employee *p,char x,int s)
{
  int flag=1;
  switch(x)
  {
    case '>':for(;p;p=p->getNext())
	       if(p->getSalary()>s)
	       {
		 cout<<*p<<endl;flag=0;
		 if(wherey()>22)
		 {
		   cout<<"Press space to continue"<<endl;
		   while(getch()!=32);
		   setfillstyle(1,BLACK);
		   bar(0,0,470,458);
		   gotoxy(1,1);}
		 }
	     if(flag) return 0;
	     break;
    case '<':for(;p;p=p->getNext())
	       if(p->getSalary()<s)
	       {
		 cout<<*p<<endl;flag=0;
		 if(wherey()>22)
		 {
		   cout<<"Press space to continue"<<endl;
		   while(getch()!=32);
		   setfillstyle(1,BLACK);
		   bar(0,0,470,458);
		   gotoxy(1,1);
		 }
	       }
	     if(flag) return 0;
	     break;
    case '=':for(;p;p=p->getNext())
	       if(p->getSalary()==s)
	       {
		 cout<<*p<<endl;flag=0;
		 if(wherey()>22)
		 {
		   cout<<"Press space to continue"<<endl;
		   while(getch()!=32);
		   setfillstyle(1,BLACK);
		   bar(0,0,470,458);
		   gotoxy(1,1);
		 }
	       }
	     if(flag) return 0;
	     break;
    default:return 0;
  }
  return 1;
};

void fNameFun()
{
  int x1=150,y1=80,x2=400,y2=200,flag1=1,flag2=1;
  char fName[10],lName[10];
  setcolor(GREEN);
  rectangle(x1,y1,x2,y2);
  setfillstyle(1,CYAN);
  floodfill(x1+2,y1+2,GREEN);
  setfillstyle(1,BLACK);
  bar(x1+20,y2+1,x2+20,y2+20);
  bar(x2+1,y1+20,x2+20,y2);
  setcolor(BLUE);
  settextjustify(CENTER_TEXT,CENTER_TEXT);
  settextstyle(0,0,2);
  outtextxy(275,110,"Find With Name");
  settextstyle(0,0,1);
  outtextxy(220,146,"First Name:");
  outtextxy(220,178,"Last Name:");
  while(flag1&&flag2)
  {
    setfillstyle(1,BLACK);
    bar(280,138,380,162);
    setfillstyle(1,CYAN);
    bar(280,170,380,194);
    gotoxy(37,10);
    if(jkey(fName,10)) flag1=0;
    if(flag1)
    {
      setfillstyle(1,BLACK);
      bar(280,170,380,194);
      gotoxy(37,12);
      if(jkey(lName,10)) flag1=0;
    }
    if(flag1)
    {
      setfillstyle(1,BLACK);
      bar(0,0,470,458);
      gotoxy(1,1);
      Manager *pm=Manager::getFirst();
      if(fn(pm,fName,lName)) flag2=0;
      CommissionWorker *pc=CommissionWorker::getFirst();
      if(fn(pc,fName,lName)) flag2=0;
      HourlyWorker *ph=HourlyWorker::getFirst();
      if(fn(ph,fName,lName)) flag2=0;
      PieceWorker *pp=PieceWorker::getFirst();
      if(fn(pp,fName,lName)) flag2=0;
      LabourWorker *pl=LabourWorker::getFirst();
      if(fn(pl,fName,lName)) flag2=0;
      LabourAndPiece *pu=LabourAndPiece::getFirst();
      if(fn(pu,fName,lName)) flag2=0;
      if(flag2){MessageBox("Sorry,Not Found!");}
      else
      {
	cout<<"Press space to continue"<<endl;
	while(getch()!=32);
      }
    }
  }
  setfillstyle(1,BLUE);
  bar(0,0,470,458);
};

void fSaFun()
{
  int x1=130,y1=80,x2=420,y2=170,flag1=1,flag2=0,salary;
  char temp[10],*t;
  setcolor(GREEN);
  rectangle(x1,y1,x2,y2);
  setfillstyle(1,CYAN);
  floodfill(x1+2,y1+2,GREEN);
  setfillstyle(1,BLACK);
  bar(x1+20,y2+1,x2+20,y2+20);
  bar(x2+1,y1+20,x2+20,y2);
  setcolor(BLUE);
  settextjustify(CENTER_TEXT,CENTER_TEXT);
  settextstyle(0,0,2);
  outtextxy(275,110,"Find With Salary");
  settextstyle(0,0,1);
  outtextxy(220,146,"using <,=,> as \">100\"");
  while(flag1)
  {
    flag2=0;
    setfillstyle(1,BLACK);
    bar(310,138,410,162);
    gotoxy(40,10);
    for(int k=0;k<10;k++) temp[k]=0;
    if(jkey(temp,10)) flag1=0;
    else
    {
      if((temp[0]==60)||(temp[0]==61)||(temp[0]==62))
      {
	for(int i=1;temp[i];i++)
	  if((temp[i]<48)||(temp[i]>57)){ flag2=1;break;}
      }
      else flag2=1;
      if(flag2) MessageBox("Error:input like \">1000\"");
      else
      {
	t=&temp[1];
	salary=strtol(t,0,10);
	setfillstyle(1,BLACK);
	bar(0,0,470,458);
	gotoxy(1,1);
	Manager *pm=Manager::getFirst();
	if(fs(pm,temp[0],salary)) flag1=0;
	CommissionWorker *pc=CommissionWorker::getFirst();
	if(fs(pc,temp[0],salary)) flag1=0;
	HourlyWorker *ph=HourlyWorker::getFirst();
	if(fs(ph,temp[0],salary)) flag1=0;
	PieceWorker *pp=PieceWorker::getFirst();
	if(fs(pp,temp[0],salary)) flag1=0;
	LabourWorker *pl=LabourWorker::getFirst();
	if(fs(pl,temp[0],salary)) flag1=0;
	LabourAndPiece *pu=LabourAndPiece::getFirst();
	if(fs(pu,temp[0],salary)) flag1=0;
	if(flag1)
	{
	  MessageBox("Sorry,Not Found!");
	  break;
	}
	else
	{
	  cout<<"Press space to continue"<<endl;
	  while(getch()!=32);
	}
      }
    }
  }
  setfillstyle(1,BLUE);
  bar(0,0,470,458);
};

void findFun()
{
  int x1=480,y1=200,x2=635,y2=220;
  Item fName(x1,y1+20,x2,y2+20,15,14,9,"Name Searching",fNameFun);
  fName.drawItem();
  Item fSa(x1,y1+40,x2,y2+40,15,14,9,"Salary Searching",fSaFun);
  fSa.drawItem();
  fName.changeBK(7);
  Item *po;
  po=po->getFirst();
  judgeKey(po);
  setfillstyle(1,BLUE);
  bar(480,220,635,260);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -