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

📄 create.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);
struct Data
{
  char name[20];
  char data[12];
};
int cFun(char *text,Data *d,int num)
{
  int x1=130,y1=80,x2=420,y2=134+32*num,flag=1;
  char temp[12],*x;
  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);
  setfillstyle(1,BLACK);
  settextstyle(0,0,1);
  for(int i=0;i<num;i++) outtextxy(220,150+32*i,d[i].name);
  for(i=0;i<2;i++)
  {
    flag=1;
    while(flag)
    {
      for(int k=0;k<12;k++) temp[k]=0;
      setfillstyle(1,BLACK);
      bar(280,138+32*i,380,162+32*i);
      gotoxy(37,10+i*2);
      if(jkey(temp,10)) return 0;
      if(!temp[0]) MessageBox("Error:name can't be empty");
      else
      {
	for(x=temp;*x;x++)
	  if((*x<65)||(*x>90&&*x<97)||(*x>122)){MessageBox("Error:it's not a name");break;}
	if(!*x) {flag=0;}
      }
    }
    strcpy(d[i].data,temp);
  }
  return 1;
};

void cmanFun()
{
  char *d,temp[12];
  int wages,subsidy,flag=1;
  Data dl[4]={{"First Name:"},{"Last Name:"},{"Base Wages:"},{"Subsidy:"}};
  if(cFun("MANAGER",dl,4))
  {
    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,6)) 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)
    {
      new Manager(dl[0].data,dl[1].data,wages,subsidy);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*4);
};
void ccomFun()
{
  int quantity,flag=1;
  char type,*d,temp[12];
  Data dl[4]={{"First Name:"},{"Last Name:"},{"Type:(A,B)"},{"Quantity:"}};
  if(cFun("COMMISSION WORKER",dl,4))
  {
    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);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)
    {
      new CommissionWorker(dl[0].data,dl[1].data,quantity,type);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*4);
};
void chourFun()
{
  int hours,flag=1;
  char *d,temp[12];
  Data dl[3]={{"First Name:"},{"Last Name:"},{"Hours:"}};
  if(cFun("HOURLY WORKER",dl,3))
  {
    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)
    {
      new HourlyWorker(dl[0].data,dl[1].data,hours);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*3);
};
void cpieceFun()
{
  int quantity,flag=1;
  char type,*d,temp[12];
  Data dl[4]={{"First Name:"},{"Last Name:"},{"Type:(A,B)"},{"Quantity:"}};
  if(cFun("PIECE WORKER",dl,4))
  {
    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);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)
    {
      new PieceWorker(dl[0].data,dl[1].data,quantity,type);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*4);
};
void clabFun()
{
  int bonus,flag=1;
  char *d,temp[12];
  Data dl[3]={{"First Name:"},{"Last Name:"},{"Bonus:"}};
  if(cFun("LABOUR WORKER",dl,3))
  {
    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)
    {
      new LabourWorker(dl[0].data,dl[1].data,bonus);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*3);
};
void cunitFun()
{
  int bonus,quantity,flag=1;
  char type,*d,temp[12];
  Data dl[5]={{"First Name:"},{"Last Name:"},{"Bonus:"},{"Type:(A,B)"},{"Quantity:"}};
  if(cFun("LABOUR AND PIECE",dl,5))
  {
    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);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)
    {
      new LabourAndPiece(dl[0].data,dl[1].data,bonus,quantity,type);
      MessageBox("Create Completed");
    }
  }
  setfillstyle(1,BLUE);
  bar(130,80,440,160+32*5);
};

void createFun()
{
  int x1=480,y1=200,x2=635,y2=220;
  Item cman(x1,y1+20,x2,y2+20,15,14,9,"Manager",cmanFun);
  cman.drawItem();
  Item ccom(x1,y1+40,x2,y2+40,15,14,9,"Commission Worker",ccomFun);
  ccom.drawItem();
  Item chour(x1,y1+60,x2,y2+60,15,14,9,"Hourly Worker",chourFun);
  chour.drawItem();
  Item cpiece(x1,y1+80,x2,y2+80,15,14,9,"Piece Worker",cpieceFun);
  cpiece.drawItem();
  Item clab(x1,y1+100,x2,y2+100,15,14,9,"Labour Worker",clabFun);
  clab.drawItem();
  Item cunit(x1,y1+120,x2,y2+120,15,14,9,"Unit:Labour&Piece",cunitFun);
  cunit.drawItem();
  Item *pc;
  cman.changeBK(7);
  pc=pc->getFirst();
  judgeKey(pc);
  setfillstyle(1,BLUE);
  bar(480,220,635,380);
};

⌨️ 快捷键说明

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