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

📄 yingdie.h

📁 影碟出租系统
💻 H
字号:
#include <iostream.h>
#include <fstream.h>
#include <iomanip.h>
#include<string.h>
#include<stdio.h>

class yingdie
{
protected:
  char name[22];
  int type;  
  double price,allprice;  
  int amount,amount1;
  double riqi;
public:
  yingdie(){num=0;  name[0]=0;  type=0; price=0; amount=0; riqi=0; next=0;}
  virtual ~yingdie(){}
  yingdie *next;
  int num;
  virtual void Input()  //增加信息
  {
    cout<<"请输入影碟编号:";  cin>>num;
    cout<<"请输入影碟名称:";  cin>>name;
    cout<<"影碟的租价:";      cin>>price;
	cout<<"入库日期为:";      cin>>riqi;
    cout<<"公司的库存数量:";  cin>>amount;
  }

  virtual void Input(ifstream &f)  
  {
    f>>num>>name>>type>>price>>riqi>>amount;
  }

  virtual void Output()=0; //读取值为空 
  virtual void Output(ofstream& f)=0;  

  friend class cangku;
};

class CD:virtual public yingdie 
{
public:
  CD(){type=1;}  
  virtual void Output()
  {
    
    cout<<setw(6)<<num;             
    cout<<setw(10)<<name;           
    cout<<setw(10)<<type;         
    cout<<setw(10)<<price; 
	cout<<setw(10)<<riqi;
    cout<<setw(6)<<amount<<endl;   
  }
  virtual void Output(ofstream& f)
  {
    
    f<<setw(6)<<num;              
    f<<setw(10)<<name;          
    f<<setw(10)<<type;           
    cout<<setw(8)<<price; 
	cout<<setw(12)<<riqi;
    f<<setw(8)<<amount<<endl;   
  }
};

class DVD:virtual public yingdie
{
public:
  DVD(){type=2;}
  virtual void Output()
  {
    cout<<setw(6)<<num;
    cout<<setw(10)<<name;
    cout<<setw(10)<<type;
    cout<<setw(10)<<price;
	cout<<setw(10)<<riqi;
    cout<<setw(6)<<amount<<endl;
  }
  virtual void Output(ofstream& f)
  {
    f<<setw(6)<<num;
    f<<setw(10)<<name;
    f<<setw(10)<<type;
    f<<setw(8)<<price;
	f<<setw(12)<<riqi;
    f<<setw(8)<<amount<<endl;
  }
};

class VCD:public CD,public DVD  
{
private:
 double dvd_price;
public:
  VCD(){type=3;}



  virtual void Output()
  {
    cout<<setw(6)<<num;
    cout<<setw(10)<<name;
    cout<<setw(10)<<type;
    cout<<setw(10)<<price;
	cout<<setw(10)<<riqi;
    cout<<setw(6)<<amount<<endl;
  }

  virtual void Output(ofstream& f)
  {
   
    f<<setw(6)<<num;
    f<<setw(10)<<name;
    f<<setw(10)<<type;
    f<<setw(8)<<price;
	f<<setw(12)<<riqi;
    f<<setw(8)<<amount<<endl;
  }
};

class cangku//定义各操作函数
{
private:
  yingdie* GL;
public:
  cangku()
  {
    GL=new CD;
  }
  ~cangku()
  {
    yingdie* p; 
    p=GL;  
    while(p)
    {
      GL=p->next; 
      delete p;
      p=GL; 
    }
  }
  
  void Clear();
  int Find(int ID,yingdie **p1,yingdie **p2);
  void Add();
  void Delete();
  void search();
  void Print();
  void Save();
  void chuzu();
};
			

void cangku::Clear()  
{
  yingdie *p=GL->next;
  while(p)
  {
    GL->next=p->next;
    delete p;
    p=GL->next;
  }
}


int cangku::Find(int ID,yingdie **p1,yingdie **p2)   
{
  *p1=GL;
  *p2=GL->next;
  while(*p1)
  {
    if((*p1)->num==ID)
      break;  
    else 
    {
      *p2=*p1;  
      *p1=(*p1)->next;
    }
  }
  return *p1?1:0;
}

void cangku::Add() 
{
  cout<<"\n** 增加影碟的相关信息 **\n";

  
  yingdie *p=GL;
  while(p->next)p=p->next;

  char ch;
  yingdie *p2;
  cout<<"输入影碟分类码[1=CD,2=DVD,3=VCD]:";  cin>>ch;
  
  switch(ch)
  {
    case '1':  p2=new CD;  break;
    case '2':  p2=new DVD;  break;
    case '3':  p2=new VCD;  break;
    default:  return;
  }
  p->next=p2;  p2->Input();
	printf("是否继续输入:(Y/N)?");
		cin>>ch;
		if(ch=='Y'||ch=='y')
		{
			cout<<"输入影碟分类码[1=CD,2=DVD,3=VCD]:";  cin>>ch;
      switch(ch)
  {
    case '1':  p2=new CD;  break;
    case '2':  p2=new DVD;  break;
    case '3':  p2=new VCD;  break;
    default:  return;
  }
  p->next=p2;  p2->Input();
		
		}
		if(ch=='N'||ch=='n')
		{
		  return;
		}
}

void cangku::Delete()   
{
	

  cout<<"\n** 删除影碟 **\n";

  int No;
  yingdie *p1,*p2;
  
  cout<<"编号:";  cin>>No;
  if(!Find(No,&p1,&p2))
  {
    cout<<"sorry此影碟类型没有找到!\n";
  }
  else
  {
    p2->next=p1->next;  
    delete p1;
	
    cout<<"正确删除!\n";
  }
  
}

void cangku::search()  
{
  ifstream in("yingdie.txt");
  cout<<"\n** 查找影碟类型 **\n";
  int No;
  yingdie *p1,*p2;
  
  cout<<"编号:";  cin>>No;
  if(!Find(No,&p1,&p2))
  {
    cout<<"此影碟类型没有找到!\n";
  }
  else
  {
    p1->Output(); 
    cout<<"查找完成!\n";
  }
}

void cangku::Print()  
{
  cout<<"\n** 影碟信息列表 **\n";
  cout<<setw(6)<<"编号"<<setw(10)<<"影碟名称"<<setw(10)<<"影碟类别"<<setw(10)<<"租价"<<setw(10)<<"入库日期"<<setw(8)<<" 库存\n";

  yingdie *p=GL->next;
  if(!p)
  {
    cout<<"无相关影碟记录!\n";
    return;
  }

  while(p)  
  {
    p->Output();
    p=p->next;
  }
}
void cangku::Save() 
{
  ofstream f("yingdie.txt",ios::out); 

 
  yingdie *p=GL->next;
  while(p)  
  {
    p->Output(f);
    p=p->next;
  }

  f.close();                              

  cout<<"影碟信息已经保存在:yingdie.txt.\n";
}

void cangku::chuzu() //出租
{
	int amount1,day;
	double allprice;
	ifstream in("yingdie.txt");
    cout<<"\n** 出租 **\n";
  int No;
  yingdie *p1,*p2;
  
  cout<<"编号:";  cin>>No;
  if(!Find(No,&p1,&p2))
  {
    cout<<"此影碟类型没有找到!\n";
  }
  else
  {
	  p1->Output(); 
	  cout<<"查找完成!\n";
	  cout<<"请输入影碟数目:";
	  cin>>amount1; 
	  cout<<"请输入出租天数:";
	  cin>>day;
      allprice=p1->price*amount1*day;
      cout<<"总租价为:"<<allprice<<endl;
	  cout<<setw(6)<<"编号"<<setw(10)<<"影碟名称"<<setw(10)<<"影碟类别"
		  <<setw(10)<<"租价"<<setw(12)<<"数目"<<setw(10)<<"天数"<<setw(10)<<"总租金\n";
      cout<<setw(4)<<p1->num<<setw(10)<<p1->name<<setw(10)<<p1->type<<setw(10)<<p1->price
		  <<setw(12)<<amount1<<setw(10)<<day<<setw(8)<<allprice<<endl;

   ofstream f("出租.txt",ios::out); 
   yingdie *p=GL->next;
  while(p)  
  {
    p->Output(f);
    p=p->next;
  }

  f.close();                              

  cout<<"出租信息已经保存在:出租.txt.\n";
  }

}

⌨️ 快捷键说明

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