📄 indent.h
字号:
#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++;}//static int newspaperIndentNO(return 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; virtual void display(ostream&out);protected: Newspaper paper;};ostream& operator<<(ostream& out,newspaper_indent&of);void newspaper_indent::display(ostream&out){ out<<setiosflags(ios::left)<<setw(20)<<contractor<<" " <<address<<" "<<postcode<<" "<<teleno<<" "<<teleno <<" "<<piece<<" "<<months<<" "<<term;}ostream& operator<<(ostream& out,newspaper_indent&of){ of.display(out); out<<endl; return out;}//...............................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<<"订阅份数为:"<<piece<<endl<<"起始月为:"<<months<<endl<<"期限为:"<<term;}//.....................//.....................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); ofstream out("Newspaper_indent.txt",ios::ate); out<<*pS; newspaperread(); Newspaper *ps=Newspaper::countfind(pmagazinecode); if(!ps) cout<<"您输入的报刊号不存在"; else {pS->Display(); cout<<"报刊名为:"<<ps->name<<endl<<"报刊号为:"<<ps->number<<endl<<"单价为:"<<ps->unitprice<<endl<<"您需要交的费用为:"<<ps->unitprice*3*pterm*ppiece<<endl;cout<<"您的订阅已成功!"<<endl; } delete[]pName; delete[]pAddress; delete[]pTeleno; delete[]pmagazinecode; cout<<endl<<"需要继续订阅吗?(y/n)"<<endl; cin>>c; }while(c=='y'||c=='Y'); } //....................... //.......................void Newspaper_indentread(){ifstream fin("Newspaper_indent.txt");char pName[40];char pAddress[60];char pTeleno[12];char pmagazinecode[10];int pPostcode;int ppiece;int startmonth;int pterm;newspaper_indent *ps;int i=0;fin>>pName>>pAddress>>pTeleno>>pmagazinecode>>pPostcode>>ppiece>>startmonth>>pterm;while(!fin.eof()){ ps=new newspaper_indent(pName,pAddress,pTeleno, pmagazinecode,pPostcode,ppiece, startmonth,pterm);ps=0;fin>>pName>>pAddress>>pTeleno>>pmagazinecode>>pPostcode>>ppiece>>startmonth>>pterm;}}//.......................//.......................void searchnewspaperindent(){ Newspaper_indentread(); 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&);//static int magazine_indentNO(return count);//取链表中的订单数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 magazinefind();friend void officemagazinefind();friend void searchmagazineindent();friend void magazine_indentmagage();static int count;static magazine_indent *pFirst;//链表首指针 magazine_indent *pNext;//指向下一个的指针 virtual void display(ostream&out);protected: Magazine magazine;};ostream& operator<<(ostream& out,magazine_indent&of);void magazine_indent::display(ostream&out){ out<<setiosflags(ios::left)<<setw(20)<<contractor<<" " <<address<<" "<<postcode<<" "<<teleno<<" "<<teleno <<" "<<piece<<" "<<months<<" "<<term;}ostream& operator<<(ostream& out,magazine_indent&of){ of.display(out); out<<endl; return out;}//...........................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<<"订阅份数为:"<<piece<<endl<<"起始月为:"<<months<<endl<<"期限为:"<<term<<endl;}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); ofstream out("Magazine_indent.txt",ios::ate); out<<*pS; Magazineread(); Magazine *ps=Magazine::countfind(pmagazinecode); if(!ps) cout<<"您输入的杂志号不存在"; else { pS->Display(); cout<<"杂志名为:"<<ps->name<<endl<<"杂志号为:"<<ps->number<<endl<<"单价为:"<<ps->unitprice<<endl<<"您需要交的费用为:"<<ps->unitprice*3*pterm*ppiece<<endl;cout<<"您的订阅已成功!"<<endl; } delete[]pName; delete[]pAddress; delete[]pTeleno; delete[]pmagazinecode; cout<<endl<<"需要继续订阅吗?(y/n)"<<endl; cin>>c; }while(c=='y'||c=='Y'); } void Magazine_indentread(); magazine_indent*magazine_indent::countfind(int sn){ Magazine_indentread(); for(magazine_indent*ps=pFirst;ps;ps=ps->pNext) if(ps->count==sn) {return ps; } else return(magazine_indent*)0; return 0;} //..........................//..............................void Magazine_indentread(){ifstream fin("Magazine_indent.txt");char pName[40];char pAddress[60];char pTeleno[12];char pmagazinecode[10];int pPostcode;int ppiece;int startmonth;int pterm;magazine_indent *ps;int i=0;fin>>pName>>pAddress>>pTeleno>>pmagazinecode>>pPostcode>>ppiece>>startmonth>>pterm;while(!fin.eof()){ps=new magazine_indent(pName,pAddress,pTeleno, pmagazinecode,pPostcode,ppiece, startmonth,pterm);ps=0;i++;fin>>pName>>pAddress>>pTeleno>>pmagazinecode>>pPostcode>>ppiece>>startmonth>>pterm;}}void searchmagazineindent(){ Magazine_indentread(); if(magazine_indent::count==0) cout<<"无报刊订单存在!"<<endl; else { void Magazine_indentread(); 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'); }} /*void magazine_indentmagage(){ int i=0; Magazine_indentread(); for(magazine_indent*ps=pFirst;ps;ps=ps->pNext) i++;}*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -