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

📄 edit.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 <ctype.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 eFun(Employee *p,char *text,int num)
{
  int x1=130,y1=80,x2=420,y2=200+32*num,flag=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,text);
  settextstyle(0,0,1);
  outtextxy(220,150,"First Name:");
  outtextxy(220,182,"Last Name:");
  while(flag)
  {
    setfillstyle(1,BLACK);
    bar(280,138,380,162);
    gotoxy(37,10);
    if(jkey(fName,10)) return 0;
    setfillstyle(1,BLACK);
    bar(280,170,380,194);
    gotoxy(37,12);
    if(jkey(lName,10)) return 0;
    for(;p;p=p->getNext())
      if(strcmp(p->getFirstName(),fName)==0&&strcmp(p->getLastName(),lName)==0)  {flag=0;break;}
    if(flag) MessageBox("No found:Edit Fail");
  }
  return 1;
};

void emanFun()
{
  Manager *p;
  p=p->getFirst();
  int wages,subsidy,flag=1,j;
  char *d,temp[12],t;
  if(eFun(p,"MANAGER",2))
  {
    settextstyle(0,0,1);
    outtextxy(220,214,"Base Wages:");
    outtextxy(220,246,"Subsidy:");
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*2,380,162+32*2);
      gotoxy(37,14);
      if(jkey(temp,5)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Base Wages must be integer");break;}
	if(!*d) {wages=strtol(temp,0,10);break;}
      }
    }
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*3,380,162+32*3);
      gotoxy(37,16);
      if(jkey(temp,6)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Subsidy must be integer");break;}
	if(!*d) {subsidy=strtol(temp,0,10);break;}
      }
    }
    if(flag)
    {
      p->setWages(wages);
      p->setSubsidy(subsidy);
      MessageBox("Edit Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*4);
};
void ecomFun()
{
  CommissionWorker *p;
  p=p->getFirst();
  int quantity,flag=1;
  char type,*d,temp[12];
  if(eFun(p,"Commission Worker",2))
  {
    settextstyle(0,0,1);
    outtextxy(220,214,"Type(A,B):");
    outtextxy(220,246,"Quantity:");
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*2,380,162+32*2);
      gotoxy(37,14);
      if(jkey(temp,1)) flag=0;
      else
	if((temp[0]!='a')&&(temp[0]!='b')&&(temp[0]!='A')&&(temp[0]!='B')) MessageBox("Error:Type must be A or B");
	else {type=toupper(temp[0]);break;}
    }
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*3,380,162+32*3);
      gotoxy(37,16);
      if(jkey(temp,5)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Quantity must be integer");break;}
	if(!*d) {quantity=strtol(temp,0,10);break;}
      }
    }
    if(flag)
    {
      p->setType(type);
      p->setQuantity(quantity);
      MessageBox("Edit Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*4);
};
void ehourFun()
{
  int hours,flag=1;
  char *d,temp[12];
  HourlyWorker *p;
  p=p->getFirst();
  if(eFun(p,"HOURLY WORKER",1))
  {
    settextstyle(0,0,1);
    outtextxy(220,214,"Hours:");
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*2,380,162+32*2);
      gotoxy(37,14);
      if(jkey(temp,3)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Hours must be integer");break;}
	if(!*d) {hours=strtol(temp,0,10);break;}
      }
    }
    if(flag)
    {
      p->setHours(hours);
      MessageBox("Edit Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*3);
};

void epieceFun()
{
  int quantity,flag=1;
  char type,*d,temp[12];
  PieceWorker *p;
  p=p->getFirst();
  if(eFun(p,"PIECE WORKER",2))
  {
    settextstyle(0,0,1);
    outtextxy(220,214,"Type(A,B):");
    outtextxy(220,246,"Quantity:");
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*2,380,162+32*2);
      gotoxy(37,14);
      if(jkey(temp,1)) flag=0;
      else
	if((temp[0]!='a')&&(temp[0]!='b')&&(temp[0]!='A')&&(temp[0]!='B')) MessageBox("Error:Type must be A or B");
	else {type=toupper(temp[0]);break;}
    }
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*3,380,162+32*3);
      gotoxy(37,16);
      if(jkey(temp,5)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Quantity must be integer");break;}
	if(!*d) {quantity=strtol(temp,0,10);break;}
      }
    }
    if(flag)
    {
      p->setType(type);
      p->setQuantity(quantity);
      MessageBox("Edit Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*4);
};
void elabFun()
{
  int bonus,flag=1;
  char *d,temp[12];
  LabourWorker *p;
  p=p->getFirst();
  if(eFun(p,"LABOUR WORKER",1))
  {
    settextstyle(0,0,1);
    outtextxy(220,214,"Bonus:");
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*2,380,162+32*2);
      gotoxy(37,14);
      if(jkey(temp,5)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Bonus must be integer");break;}
	if(!*d) {bonus=strtol(temp,0,10);break;}
      }
    }
    if(flag)
    {
      p->setBonus(bonus);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*3);
};
void eunitFun()
{
  int bonus,quantity,flag=1;
  char type,*d,temp[12];
  LabourAndPiece *p;
  p=p->getFirst();
  if(eFun(p,"LABOUR AND PIECE",3))
  {
    settextstyle(0,0,1);
    outtextxy(220,214,"Bonus:");
    outtextxy(220,246,"Type(A,B):");
    outtextxy(220,278,"Quantity:");
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*2,380,162+32*2);
      gotoxy(37,14);
      if(jkey(temp,5)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Bonus must be integer");break;}
	if(!*d) {bonus=strtol(temp,0,10);break;}
      }
    }
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*3,380,162+32*3);
      gotoxy(37,16);
      if(jkey(temp,1)) flag=0;
      else
	if((temp[0]!='a')&&(temp[0]!='b')&&(temp[0]!='A')&&(temp[0]!='B')) MessageBox("Error:Type must be A or B");
	else {type=toupper(temp[0]);break;}
    }
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*4,380,162+32*4);
      gotoxy(37,18);
      if(jkey(temp,5)) flag=0;
      else
      {
	for(d=temp;*d;d++)
	  if(!(*d>47&&*d<58)){MessageBox("Error:Quantity must be integer");break;}
	if(!*d) {quantity=strtol(temp,0,10);break;}
      }
    }
    if(flag)
    {
      p->setBonus(bonus);
      p->setType(type);
      p->setQuantity(quantity);
      MessageBox("Edit Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*5);
};

void editFun()
{
  int x1=480,y1=200,x2=635,y2=220;
  Item eman(x1,y1+20,x2,y2+20,15,14,9,"Manager",emanFun);
  eman.drawItem();
  Item ecom(x1,y1+40,x2,y2+40,15,14,9,"Commission Worker",ecomFun);
  ecom.drawItem();
  Item ehour(x1,y1+60,x2,y2+60,15,14,9,"Hourly Worker",ehourFun);
  ehour.drawItem();
  Item epiece(x1,y1+80,x2,y2+80,15,14,9,"Piece Worker",epieceFun);
  epiece.drawItem();
  Item elab(x1,y1+100,x2,y2+100,15,14,9,"Labour Worker",elabFun);
  elab.drawItem();
  Item eunit(x1,y1+120,x2,y2+120,15,14,9,"Unit:Labour&Piece",eunitFun);
  eunit.drawItem();
  eman.changeBK(7);
  Item *pc;
  pc=pc->getFirst();
  judgeKey(pc);
  setfillstyle(1,BLUE);
  bar(480,220,635,380);
};

⌨️ 快捷键说明

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