📄 newspaper.h
字号:
#include"office.h"class Newspaper{public: Newspaper(char* pmagazinecode) {strncpy(number,pmagazinecode,sizeof(number)); number[sizeof(number)-1]='\0'; }//构造函数 Newspaper(char*ppname,char*ppnumber,float ppunitprice,char*ppkind,char*ffname); Newspaper(Newspaper&n):off(n.off) { strncpy(name,n.name,sizeof(name)); name[sizeof(name)-1]='\0'; strncpy(number,n.number,sizeof(number)); number[sizeof(number)-1]='\0'; strncpy(kind,n.kind,sizeof(kind)); kind[sizeof(kind)-1]='\0'; unitprice=n.unitprice; } unsigned NoNewspaper();//取报纸号 char *NewspaperName(){return name;} char *NewspaperNumber(){return number;} float NewspaperUnitprice(){return unitprice;} char *NewpaperName(){return name;} void Display(); friend void creatnewspaper(); static Newspaper *countfind(char* sn);static Newspaper *pFirst;//链表首指针 Newspaper *pNext;//指向下一个的指针 static int count; friend void searchnewspaper(); friend void creatnewspaperindent(); friend void newspaperlook(); virtual void display(ostream&out);protected: char name[20];//报刊名 char number[10];//报刊号 float unitprice;//单价 char kind[10];//发行日 office off; };ostream& operator<<(ostream& out,office&of);void Newspaper::display(ostream&out){ out<<setiosflags(ios::left)<<setw(20)<<name<<" " <<number<<" "<<unitprice<<" "<<kind<<" "<<off.Name();}ostream& operator<<(ostream& out,Newspaper&of){ of.display(out); out<<endl; return out;}//............................//............................int Newspaper::count=0;Newspaper *Newspaper::pFirst=0;Newspaper::Newspaper(char*ppname,char*ppnumber,float ppunitprice,char*ppkind,char*ffname):off(ffname){ strncpy(name,ppname,sizeof(name)); name[sizeof(name)-1]='\0'; strncpy(number,ppnumber,sizeof(number)); name[sizeof(number)-1]='\0'; strncpy(kind,ppkind,sizeof(kind)); name[sizeof(kind)-1]='\0'; unitprice=ppunitprice; pNext=pFirst; pFirst=this; count++;}//......................void newspaperread(){ifstream fin("Newspaper.txt");char *ppname=new char[20];char *ppnumber=new char[10];float ppunitprice;char *ppkind=new char[10];char *ffname=new char[20];Newspaper* ps=0;fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;while(!fin.eof()){ ps=new Newspaper(ppname,ppnumber,ppunitprice,ppkind,ffname); ps=0; fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;}delete []ppname;delete []ppnumber;delete []ppkind;delete []ffname;}Newspaper *Newspaper::countfind(char* sn){ Newspaper *p=0; for(Newspaper *ps=pFirst;ps;ps=ps->pNext) { if(strcmp(ps->number,sn)==0) { p=ps; break; } else p=(Newspaper*)0; } return p;}void Newspaper::Display(){ cout<<"报刊名:"<<name<<endl<<"报刊号:"<<number<<endl<<"单价:"<<unitprice<<endl<<"发行日:"<<kind<<endl<<"报社名:"<<off.Name()<<endl;}//..................//......................void newspaperlookall(){ifstream fin("Newspaper.txt");char *ppname=new char[20];char *ppnumber=new char[10];float ppunitprice;char *ppkind=new char[10];char *ffname=new char[20];Newspaper* ps=0;fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;while(!fin.eof()){ ps=new Newspaper(ppname,ppnumber,ppunitprice,ppkind,ffname); ps->Display(); ps=0; fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;}delete []ppname;delete []ppnumber;delete []ppkind;delete []ffname; }//...................//....................void searchnewspaper(){ newspaperread(); if(Newspaper::count==0) cout<<"无报刊数据存在!"<<endl; else { char c; do{ char sn[10]; cout<<"请输入所查询报刊的报刊号"<<endl; cin>>sn; Newspaper* pS=Newspaper::countfind(sn); if(pS) { pS->Display(); } else cout<<"不存在此报刊号!"<<endl; cout<<endl<<"需要继续查阅报纸吗?(y/n)"<<endl; cin>>c; }while(c=='y'||c=='Y'); }}//....................//.........................void creatnewspaper() //创建报刊{ char c; do{ char* ppname=new char[20]; char* ppnumber=new char[10]; float ppunitprice; char* ppkind=new char[10]; char* ffname=new char[20]; cout<<"请输入报刊名"<<endl; cin>>ppname; cout<<"请输入报刊号"<<endl; cin>>ppnumber; cout<<"请输入报纸的单价"<<endl; cin>>ppunitprice; cout<<"请输入报纸的发行日种类(日报请输入daily,周报请输入weeky,月报请输入monthy"<<endl; cin>>ppkind; cout<<"请输入报社名:"<<endl; cin>>ffname; Newspaper* pS=new Newspaper(ppname,ppnumber,ppunitprice,ppkind,ffname); ofstream out("Newspaper.txt",ios::ate); out<<*pS; cout<<"您创建一个报刊数据已成功!"<<endl; pS->Display(); delete[]ppname; delete[]ppnumber; delete[]ppkind; delete[]ffname; cout<<endl<<"需要继续创建报刊数据库吗?(y/n)"<<endl; cin>>c; }while(c=='y'||c=='Y'); } //........................................................//..............................//杂志类的定义//..............................class Magazine{public: Magazine(char* pmagazinecode) {strncpy(number,pmagazinecode,sizeof(number)); number[sizeof(number)-1]='\0'; }//构造函数 Magazine(char*ppname,char*ppnumber,float ppunitprice,char*ppkind,char*ffname); Magazine(Magazine&n):off(n.off) { strncpy(name,n.name,sizeof(name)); name[sizeof(name)-1]='\0'; strncpy(number,n.number,sizeof(number)); number[sizeof(number)-1]='\0'; strncpy(kind,n.kind,sizeof(kind)); kind[sizeof(kind)-1]='\0'; unitprice=n.unitprice; } unsigned NoMagazine();//取报纸号 void Display();//显示杂志信息 char *MagazineName(){return name;} char *MagazineNumber(){return number;} float MagazineUnitprice(){return unitprice;} friend void creatmagazine(); friend void officemagazinefind(); static Magazine *countfind(char* sn); static Magazine *officefind(char *sn);static Magazine *pFirst;//链表首指针 Magazine *pNext;//指向下一个的指针 static int count; friend void searchmagazine(); friend void creatmagazineindent(); friend void magazinelook(); friend void magazinefind(); virtual void display(ostream&out);protected: char name[20];//报刊名 char number[10];//报刊号 float unitprice;//单价 char kind[10];//发行日 office off; };ostream& operator<<(ostream& out,Magazine&of);void Magazine::display(ostream&out){ out<<setiosflags(ios::left)<<setw(20)<<name<<" " <<number<<" "<<unitprice<<" "<<kind<<" "<<off.Name();}ostream& operator<<(ostream& out,Magazine&of){ of.display(out); out<<endl; return out;}//.....................//........................//.....................int Magazine::count=0;Magazine *Magazine::pFirst=0;Magazine::Magazine(char*ppname,char*ppnumber,float ppunitprice,char*ppkind,char*ffname):off(ffname){ strncpy(name,ppname,sizeof(name)); name[sizeof(name)-1]='\0'; strncpy(number,ppname,sizeof(number)); name[sizeof(number)-1]='\0'; strncpy(kind,ppkind,sizeof(kind)); name[sizeof(kind)-1]='\0'; unitprice=ppunitprice; pNext=pFirst; pFirst=this; count++;}Magazine *Magazine::countfind(char* sn){ Magazine *p=0; for(Magazine *ps=pFirst;ps;ps=ps->pNext) { if(strcmp(ps->number,sn)==0) { p=ps; break; } else p=(Magazine*)0; } return p;}//................//...........void Magazineread();Magazine *Magazine::officefind(char* sn){ Magazineread(); Magazine *p=0; for(Magazine *ps=pFirst;ps;ps=ps->pNext) { if(strcmp(ps->off.Name(),sn)==0) { p=ps; } else p=(Magazine*)0; } return p;}void Magazine::Display(){cout<<"杂志名:"<<name<<endl<<"杂志号:"<<number<<endl<<"单价:"<<unitprice<<endl<<"发祥间隔期:"<<kind<<endl<<"杂志社名:"<<off.Name()<<endl;}////.........................//...........杂志查询.......void Magazineread(){ifstream fin("Magazine.txt");char *ppname=new char[20];char *ppnumber=new char[10];float ppunitprice;char *ppkind=new char[10];char *ffname=new char[20];Magazine *ps=0;int i=0;fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;while(!fin.eof()){ ps=new Magazine(ppname,ppnumber,ppunitprice,ppkind,ffname); ps=0; fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;}delete []ppname;delete []ppnumber;delete []ppkind;delete []ffname;}//.....void magazinelookall(){ifstream fin("Magazine.txt");char ppname[20];char ppnumber[10];float ppunitprice;char ppkind[10];char ffname[20];Magazine *ps=0;int i=0;fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;while(!fin.eof()){ ps=new Magazine(ppname,ppnumber,ppunitprice,ppkind,ffname); ps->Display(); fin>>ppname>>ppnumber>>ppunitprice>>ppkind>>ffname;}}//.................void searchmagazine(){ void Magazineread(); if(Magazine::count==0) cout<<"无杂志数据存在!"<<endl; else { char c; do{ char sn[10]; cout<<"请输入所查询杂志的杂志号"<<endl; cin>>sn; Magazine* pS=Magazine::countfind(sn); if(pS) { pS->Display(); } else cout<<"不存在此杂志号!"<<endl; cout<<endl<<"需要继续查阅报纸吗?(y/n)"<<endl; cin>>c; }while(c=='y'||c=='Y'); }}//..............................//..................创建杂志......void creatmagazine() //创建{ char c; do{ char* ppname=new char[40]; char* ppnumber=new char[60]; float ppunitprice; char* ppkind=new char[10]; char* ffname=new char[20]; cout<<"请输入杂志名"<<endl; cin>>ppname; cout<<"请输入杂志号"<<endl; cin>>ppnumber; cout<<"请输入杂志的单价"<<endl; cin>>ppunitprice; cout<<"请输入杂志的发行间隔期(以月为单位)"<<endl; cin>>ppkind; cout<<"请输入杂志社名:"<<endl; cin>>ffname; Magazine* pS=new Magazine(ppname,ppnumber,ppunitprice,ppkind,ffname); ofstream out("Magazine.txt",ios::ate); out<<*pS; cout<<"您创建一个杂志数据已成功!"<<endl; pS->Display(); delete[]ppname; delete[]ppnumber; delete[]ppkind; delete[]ffname; cout<<endl<<"需要继续创建杂志数据库吗?(y/n)"<<endl; cin>>c; }while(c=='y'||c=='Y'); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -