📄 yingdie.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 + -