📄 indent.cpp
字号:
#include<iostream.h>
#include"newspaper.h"
class Indent
{
public:
Indent();//构造函数
Indent(char*pName,char*pAddress,char*pTeleno,int pPostcode,
int ppiece,int startmonth,int pterm);
Indent(Indent&n)
{
strncpy(contractor,n.contractor,sizeof(contractor));
contractor[sizeof(contractor)-1]='\0';
strncpy(address,n.address,sizeof(address));
address[sizeof(address)-1]='\0';
strncpy(teleno,n.teleno,sizeof(teleno));
teleno[sizeof(teleno)-1]='\0';
strncpy(teleno,n.teleno,sizeof(teleno));
teleno[sizeof(teleno)-1]='\0';
postcode=n.postcode;
piece=n.piece;
months=n.months;
term=n.term;
}
char *indentAddress();//取投递地址
char *Contractor();//取订阅人
protected:
char contractor[40];//订阅人
char address[60];//投递地址
int postcode;//邮政编码
char teleno[12];//联系电话
//订阅日期
int piece;//订阅份数
int months;//起始月份
int term;//期限 季度数
};
//Indent *Indent::pFirst=0;//链表为空
Indent::Indent(char*pName,char*pAddress,char*pTeleno,int pPostcode,
int ppiece,int startmonth,int pterm)
{strncpy(contractor,pName,sizeof(contractor));
contractor[sizeof(contractor)-1]='\0';
strncpy(address,pAddress,sizeof(address));
address[sizeof(address)-1]='\0';
strncpy(teleno,pTeleno,sizeof(teleno));
teleno[sizeof(teleno)-1]='\0';
postcode=pPostcode;
piece=ppiece;
months=startmonth;
term=pterm;
}
char *Indent::indentAddress()
{return address;}
char *Indent::Contractor()
{
return contractor;
}
//报刊订单
class newspaper_indent:public Indent
{
public:
newspaper_indent(char* pName, char*pAddress,char*pTeleno,
char*pmagazinecode,int pPostcode,int ppiece,
int startmonth,int pterm):Indent(pName,
pAddress,pTeleno,
pPostcode,
ppiece,startmonth,pterm),paper(pmagazinecode)
{pNext=pFirst;
pFirst=this;
count++;}
newspaper_indent(newspaper_indent &n):Indent(n.contractor,
n.address,n.teleno,
n.postcode,
n.piece,n.months,n.term),paper(n.paper)
{}
char * newspaper_name(){return paper.NewspaperName();}
char *newpaper_num()
{return paper.NewspaperNumber();}
double sum()
{ return term*3*paper.NewspaperUnitprice()*piece;}
void Display();
static newspaper_indent *countfind(int sn);
friend void searchnewspaperindent();
static newspaper_indent *pFirst;//链表首指针
newspaper_indent *pNext;//指向下一个的指针
static int count;
protected:
Newspaper paper;
};
//...............................
int newspaper_indent::count=0;
newspaper_indent *newspaper_indent::pFirst=0;
void newspaper_indent::Display()
{cout<<"订单号为:"<<count<<endl
<<"订阅人为:"<<contractor<<endl
<<"投递地址为:"<<address<<endl
<<"邮政编码为:"<<postcode<<endl
<<"联系电话为:"<<teleno<<endl
<<"报刊名为:"<<paper.NewspaperName()<<endl
<<"报刊号为:"<<paper.NewspaperNumber()<<endl
<<"单价为:"<<paper.NewspaperUnitprice()<<endl
<<"订阅份数为:"<<piece<<endl
<<"起始月为:"<<months<<endl
<<"期限为:"<<term
<<"应付金额为:"<<sum();
}
newspaper_indent*newspaper_indent::countfind(int sn)
{
for(newspaper_indent*ps=pFirst;ps;ps=ps->pNext)
if(ps->count==sn)
{return ps;
}
else return(newspaper_indent*)0;
return 0;
}
void creatnewspaperindent() //创建报刊订单
{
char c;
do{
char* pName=new char[40];
char* pAddress=new char[60];
char* pTeleno=new char[12];
char* pmagazinecode=new char[10];
int pPostcode;
int ppiece,startmonth,pterm;
cout<<"请输入您的姓名"<<endl;
cin>>pName;
cout<<"请输入您的地址"<<endl;
cin>>pAddress;
cout<<"请输入您住址的邮政编码"<<endl;
cin>>pPostcode;
cout<<"请输入您的联系电话"<<endl;
cin>>pTeleno;
cout<<"请输入您要订的杂志的期刊号(期刊号为10位以内的数字):"<<endl;
cin>>pmagazinecode;
cout<<"请输入您要订的份数."<<endl;
cin>>ppiece;
cout<<"请输入您订阅的起始月."<<endl;
cin>>startmonth;
cout<<"请输入您订阅的期限(我们是按季度订阅的,请输入您要订几个季度)."<<endl;
cin>>pterm;
newspaper_indent* pS=new newspaper_indent(pName,pAddress,pTeleno,
pmagazinecode,pPostcode,ppiece,
startmonth,pterm);
cout<<"您的订阅已成功!"<<endl;
pS->Display();
delete[]pName;
delete[]pAddress;
delete[]pTeleno;
delete[]pmagazinecode;
cout<<endl<<"需要继续订阅吗?(y/n)"<<endl;
cin>>c;
}while(c=='y'||c=='Y');
}
void searchnewspaperindent()
{
if(newspaper_indent::count==0)
cout<<"无报刊订单存在!"<<endl;
else
{
char c;
do{
int sn;
cout<<"请输入所查询报刊订单的订单号"<<endl;
cin>>sn;
newspaper_indent* pS=newspaper_indent::countfind(sn);
if(pS)
{
pS->Display();
}
else
cout<<"不存在此订单号!"<<endl;
cout<<endl<<"需要继续查询订单吗?(y/n)"<<endl;
cin>>c;
}while(c=='y'||c=='Y');
}
}
//杂志订单
//......................................
//......................................
//......................................
//......................................
class magazine_indent:public Indent
{
public:
magazine_indent();
magazine_indent(char* pName, char*pAddress,char*pTeleno,
char*pmagazinecode,int pPostcode,int ppiece,
int startmonth,int pterm);
magazine_indent(magazine_indent&);
char * magazine_name()
{return magazine.MagazineName();}
char *magazine_num()
{return magazine.MagazineNumber();}
double sum()
{ return term*3*magazine.MagazineUnitprice()*piece;}
void Display();
static magazine_indent*countfind(int sn);
friend void searchmagazineindent();
static int count;
static magazine_indent *pFirst;//链表首指针
magazine_indent *pNext;//指向下一个的指针
protected:
Magazine magazine;
};
//...........................
int magazine_indent::count=0;
magazine_indent*magazine_indent::pFirst=0;
void magazine_indent::Display()
{ Magazine *ps=Magazine::countfind(magazine.MagazineNumber());
cout<<"您的这份订单的订单号为:"<<count<<endl
<<"订阅人为:"<<contractor<<endl
<<"投递地址为:"<<address<<endl
<<"邮政编码为:"<<postcode<<endl
<<"联系电话为:"<<teleno<<endl
<<"报刊名为:"<<magazine.MagazineName()<<endl
<<"报刊号为:"<<ps->MagazineName()<<endl
<<"单价为:"<<magazine.MagazineUnitprice()<<endl
<<"订阅份数为:"<<piece<<endl
<<"起始月为:"<<months<<endl
<<"期限为:"<<term<<endl
<<"应付金额为:"<<sum();
}
magazine_indent::magazine_indent(char* pName, char*pAddress,char*pTeleno,
char*pmagazinecode,int pPostcode,int ppiece,
int startmonth,int pterm):Indent(pName,
pAddress,pTeleno,
pPostcode,
ppiece,startmonth,pterm),magazine(pmagazinecode)
{pNext=pFirst;
pFirst=this;
count++;}
void creatmagazineindent() //创建杂志订单
{
char c;
do{
char* pName=new char[40];
char* pAddress=new char[60];
char* pTeleno=new char[12];
char* pmagazinecode=new char[10];
int pPostcode,ppiece,startmonth,pterm;
cout<<"请输入您的姓名"<<endl;
cin>>pName;
cout<<"请输入您的地址"<<endl;
cin>>pAddress;
cout<<"请输入您住址的邮政编码"<<endl;
cin>>pPostcode;
cout<<"请输入您的联系电话"<<endl;
cin>>pTeleno;
cout<<"请输入您要订的杂志的期刊号(期刊号为10位以内的数字):"<<endl;
cin>>pmagazinecode;
cout<<"别输入您要订的份数."<<endl;
cin>>ppiece;
cout<<"别输入您订阅的起始月."<<endl;
cin>>startmonth;
cout<<"别输入您订阅的期限(我们是按季度订阅的,请输入您要订几个季度)."<<endl;
cin>>pterm;
magazine_indent* pS=new magazine_indent(pName,pAddress,pTeleno,
pmagazinecode,pPostcode,ppiece,
startmonth,pterm);
cout<<"您的订阅已成功!"<<endl;
pS->Display();
delete[]pName;
delete[]pAddress;
delete[]pTeleno;
delete[]pmagazinecode;
cout<<endl<<"需要继续订阅吗?(y/n)"<<endl;
cin>>c;
}while(c=='y'||c=='Y');
}
magazine_indent*magazine_indent::countfind(int sn)
{
for(magazine_indent*ps=pFirst;ps;ps=ps->pNext)
if(ps->count==sn)
{return ps;
}
else return(magazine_indent*)0;
return 0;
}
void searchmagazineindent()
{
if(magazine_indent::count==0)
cout<<"无报刊订单存在!"<<endl;
else
{
char c;
do{
int sn;
cout<<"请输入所查询订单的订单号"<<endl;
cin>>sn;
magazine_indent* pS=magazine_indent::countfind(sn);
if(pS)
{
pS->Display();
}
else
cout<<"不存在此订单号!"<<endl;
cout<<endl<<"需要继续查询订单吗?(y/n)"<<endl;
cin>>c;
}while(c=='y'||c=='Y');
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -