Chinaunix首页 | 论坛 | 博客
  • 博客访问: 124350
  • 博文数量: 31
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 470
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-31 20:04
文章分类

全部博文(31)

文章存档

2011年(1)

2008年(30)

我的朋友

分类:

2008-04-01 23:14:07

#include
#include
#include        //包含清屏、退出程序函数。
#include       //备份数据
#include
 
 
 
class Employee
{
public:
 friend class worker;
 void shanchu() {*name=*sex=0;number=age=0;}
 Employee() {next=0;}
 virtual void print()=0;
 void input()
 {
  cout<<"员工号:"<<"              "                                         
   <<"姓名:"<<"               "                 
   <<"性别:"<<"               "                              
   <<"年龄:"<  cin>>number>>name>>sex>>age;  /*说明此处没用setw()函数,只用空格符号分开来。所以------*/
 }  
protected:                  //不能使用私有成员
 int number,age;
 char name[20],sex[10];
 Employee *next;  
};
 
 
 
 

class technician:virtual public Employee
{
public:
 technician() {}
    virtual void shanchu() {*name=*sex=0;number=age=hour=0;pay1=0;}
 void wage() { pay1=100*hour;}
 virtual void print()
 {
  wage();
  cout<<"技术员员工号:"<   <<"姓名:"<   <<"性别:"<   <<"年龄:"<   <<"工资:"< }
 void input()
 {
  Employee::input();
  cout<<"工作时间(以小时计算)"<  cin>>hour;
 }
protected:
 int hour,pay1;
};
 
 
 
 
 
 
 
 

class manager:virtual public Employee
{
public:
 friend class SM;
    manager() {}
    virtual void shanchu() {*name=*sex=0;number=age=month=0;pay2=0;}
 void  wage() {pay2=800*month;}
 virtual void print()
 {
  wage();
  cout<<"经理的员工号:"<      <<"姓名:"<      <<"性别:"<   <<"年龄:"<            <<"工资:"< }
 void input()
 {
  Employee::input();
  cout<<"工作时间(以月份计算)"<  cin>>month;
 }
protected:
 int month,pay2;
};
 
 
 
 
 
 
 

class seller:virtual Employee
{
public:
 friend class SM;
 seller() {}
    virtual void shanchu()
 {*name=*sex=0;number=age=0;salesvolume=pay3=0;} //salesvolume表示销售额
 void wage() {pay3=salesvolume*0.04;}
 void input()
 {
  Employee::input();
  cout<<"销售额为(以人民币计算)"<  cin>>salesvolume;
 }
 virtual void print()
 {
  pay3=salesvolume*0.04;
  cout<<"销售员员工号:"<  <<"姓名:"<  <<"性别:"<  <<"年龄:"<  <<"工资:"<}
protected:
 double salesvolume, pay3;
};
 
 
 
 
 
 
 
 
 
 

class SM:public manager,public seller
{
public:
 friend class worker;
 SM() {}
    virtual void shanchu() {*name=*sex=0;number=age=0;total=pay4=0;}
 void wage()
 { 
  pay4=5000+(total)*0.005;
 }
 void input()
 {
  Employee::input();
  cout<<"销售总额为(以人民币计算):"<  cin>>total;
 }
    virtual void print()
 {
  wage();
  cout<<"销售经理员工号:"<      <<"姓名:"<   <<"性别:"<   <<"年龄:"<   <<"工资:"<protected:
 double total,pay4;
};
 
 
 
 
 
 
 
 

class worker
{
     public:
  technician *pa;
  seller *pb;
  manager *pc;
  SM *pd;
      Employee *p;
  Employee *p1; /* int number,age,hour,month;salemoney;char *name,*sex; 重复定义*/
  worker()
  {
   Employee *p=new technician;p1=p;
  }
  void add();
  void output();      //不能用print() 二义性
  void find();
  void change();
  void del();        //不能使用关键字delete
  void save();
};
 
 
 
 
 
 
 
 
 
  
void worker::add()
{
 int a;
 Employee *p=p1;
 while(p->next)
  p=p->next;
 cout<<"请选择您所想输入员工的岗位代码,再进行操作.谢谢合作!"< cout<<"1.技术员 2.销售员 3.经理 4.销售经理"< cin>>a;
 switch(a)
 {
 case 1:
  cout<<"技术员数据:"<  pa=new technician;
  pa->input();
  p->next=pa;
  break;
 case 2:
  cout<<"销售员数据:"<  pb=new seller;
  pb->input();
  p->next=pb;
  break;
 case 3:  
  cout<<"经理数据:"<  pc=new manager;
  pc->input();
  p->next=pc;
  break;
 case 4: 
  cout<<"销售经理数据:"<  pd=new SM;
  pd->input();
  p->next=pd;
  break;
 default:
  cout<<"对不起!你所选的操作错误,请重新做作!"< }
}
 
 
 
 
 
 
 
 

void worker::output()
{
 Employee  *p=p1;
 if(!p)
 {
  cout<<"无职工记录或者记录已清除!"<        return;
 }
 while(p)
 {
  p->print();
  p=p->next;
 }
}
 
 
 
 
 
 
 
 

void worker::find()
{
 Employee *p=p1;
 if(!p)
 {
  cout<<"无职工记录或者记录已清除!"<        return;
 }
 cout<<"请输入该员工的员工号:"< int b;
    cin>>b;
 for(p;p=p->next;)
 {
  if(p->number==b)
  {
   cout<<"您好,该员工已找到."<   p->print();
   break;
  }
    }
 if(!p)
 {
  cout<<"对不起!无该员工数据,请重新操作."<   }
}
 
 
 
 
 
 

void worker::change()
{
 Employee *p=p1;
 if(!p)
 {
  cout<<"无职工记录或者记录已清除!"<        return;
 }
 cout<<"请输入该员工的员工号:"<    int c;
    cin>>c;
    for(p;p=p->next;)
    {
  if(p->number==c)
  {
   cout<<"该员工的原数据是"<   p->print();
   cout<<"请输入你想修改的数据"<   p->input();
   cout<<"恭喜您,修改成功!"<   break;
  }
   }
 if(!p)
 {
  cout<<"对不起!无该员工数据,请重新操作."< }
}
 
 
 
 
 
 
 
 
 
 
void worker::del()
{
 Employee *p=p1;
 if(!p)
 {
  cout<<"无职工记录或者记录已清除!"<        return;
 }
 cout<<"请输入该员工的员工号:"< int d;
    cin>>d;
 for(p;p=p->next;)
 {
  if(p->number==d)
  {
   cout<<"您好,删除成功!"<   p->shanchu();
   break;
  }
    }
 if(!p)
 {
  cout<<"对不起!无该员工数据,请重新操作."<   }
}
 
 
 
 
 

void worker::save()
{
 char sh;
 ifstream f1("F:\\ccx1.cpp");
 if(!f1)
 {
  cout<<"cannot openf1for input";
  abort();
 }
 ofstream f2("F:\\ccx.cpp");
 if(!f2)
 {
  cout<<"cannot open f2 output";
  abort();
 }
 while(f1.get(sh))
  f2.put(sh);
 f1.close();
 f2.close();
 cout<<"您好,您的数据已成功备份在F盘ccx.cpp文件中"<}
 
 
 
 
 
 
 
void main()
{
MessageBox(0,"欢迎使用本程序!!"," ",0);   //包含在#include头文件里
cout<<"请输入密码(plaese input the pass word):"< int e;
 cin>>e;
 if(e==19871121)
 {
  cout<<"          ********欢迎进入本公司工资管理系统******          "<  worker w; 
  int f=1;
  while(f)
  {
   cout<<"以下是菜单选项,请选择!"<      cout<<"1.输入成员数据"<      cout<<"2.输出成员数据"<      cout<<"3.查找成员数据"<      cout<<"4.修改成员数据"<      cout<<"5.删除成员数据"<      cout<<"6.清屏成员数据"<      cout<<"7.备份成员数据"<      cout<<"8.退出程序"<      int g;
   cin>>g;
   switch(g)
   {
   case 1:
    w.add();
    break;
      case 2:  
       w.output();
       break;
      case 3:  
       w.find();
       break;
      case 4:  
       w.change();
       break;
      case 5:
       w.del();
       break;
      case 6:
       system("cls");
       break;
      case 7:
       w.save();
       break;
      case 8:  
       exit(1); 
      default:
       cout<<"对不起!你所选的操作错误,请重新做作!"<   }
  }
 }
 else
 {
  cout<<"密码错误,系统将自动关闭!"<  exit(1);
 }
}
 
 
 

 
阅读(1472) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-06-25 16:57:33

死去吧