//******************************************************************** // 南京航空航天大学信息科学与技术学院计算机专业 // 课程设计 // 编写日期:2007年6月 // 040630206王健 //******************************************************************** #include <iostream.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #include <fstream.h> #include <conio.h> #include <iomanip.h> class titleInfo{ private: char ISBN[14]; char bookTitle[51]; char author[31]; char publisher[31]; public: char* getTitle(){ char *p; p=bookTitle; return p; } char* getISBN(){ char *p; p=ISBN; return p; } char* getauthor(){ char *p; p=author; return p; } char* getpublisher(){ char *p; p=publisher; return p; } void setTitle(char *p) {strcpy(bookTitle,p); } void setISBN(char *p) {strcpy(ISBN,p); } void setAuthor(char *p) { strcpy(author,p); } void setpublisher(char *p) { strcpy(publisher,p); } }; class bookDate:public titleInfo{ private: char DateAdded[11]; int Qty; float Wholesales; float Retail; public: char* getDateAdded(){ char *p; p=DateAdded; return p; } int getQty() { return Qty; } float getWholesales() { return Wholesales; } float getRetail() { return Retail; } void setDateAdded(char *p1) { //容易忽视的地方!!! char DateAdded1[11],temp[5]; strcpy(DateAdded1,p1); if(DateAdded1[6]=='-'){ strcpy(temp,&DateAdded1[5]); DateAdded1[5]='0'; strcpy(&DateAdded1[6],temp); } if(DateAdded1[9]=='/0'){ strcpy(temp,&DateAdded1[8]); DateAdded1[8]='0'; strcpy(&DateAdded1[9],temp); } strcpy(DateAdded,DateAdded1); } void setQty(int qty) {Qty=qty;} void setWholesales(float wholesales) {Wholesales=wholesales;} void setRetail(float retail) {Retail=retail;} }; bookDate oneBook; //============================ void manage(fstream &); void lookUpBook(fstream &); void lookUpBook1(fstream &); void lookUpBook2(fstream &); void addBook(fstream & ); void editBook(fstream &); void deleteBook(fstream &); //============================ void mainMenu(fstream &); //============================ void cash(fstream &); float lookUpRetail(fstream & ,char *,int); //============================ void report(fstream & ); void detailList(fstream & ); void wholesalesList(fstream & ); void retailList(fstream & ); void qtyList(fstream & ); void valueList(fstream & ); void addDateList(fstream & ); //============================ void quit(fstream & ); //----------------------------------------------------------------------------- void main() { fstream DateFile("书库资料.dat",ios::out|ios::in|ios::binary); mainMenu(DateFile); } //****************************************************************************** // 0.主菜单: //****************************************************************************** void mainMenu(fstream & file) { system("cls"); char choice; bool status=0; cout<<"/n/t***********************************************************"<<endl; cout<<"/t/t/t图书管理系统----主菜单"<<endl; cout<<"/t/t/t 开 发 作 者 : 王 健"<<endl; cout<<"/t***********************************************************"<<endl; cout<<"/t 1.收银模块 2.管理模块 3.报表模块 4.退出"<<endl; cout<<"/t***********************************************************"<<endl; cout<<"/n-------------------请选择:"; while(status==0){ cin>>choice; if(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4') cout<<"输入错误请重输:",status=0; else status=1; } cout<<endl; switch(choice){ case '1': cash(file); break; case '2': manage(file); break; case '3': report(file); break; case '4': quit(file); break; } } //****************************************************************************** // 1.收银模块 //****************************************************************************** void cash(fstream & file){ // system("cls"); char isbn[14],status; double price=0,sum=0,tax,taxRate=0.06; int number; cout<<"/n/n/t***********************************************************"<<endl; cout<<"/t/t 图书管理系统-------收银模块/n"; cout<<"/t***********************************************************"<<endl; do{ cout<<"输入该书的 ISBN 号:"; cin>>isbn; cout<<"购买本书的数量 : "; cin>>number; price=lookUpRetail(file,isbn,number); sum+=price*number; cout<<"/n还有没有其它书? Y or N :"; cin>>status; status=toupper(status); }while(status=='Y'); tax=sum*taxRate; cin.ignore(); cout<<endl<<" 谢谢光临!"; cout<<"/n -*_*- -------------------------------------------- -*_*-/n"; cout<<" [销售合计]: RMB "<<sum<<endl; cout<<" [零 售 税]: RMB "<<tax<<endl; cout<<" [应付总额]: RMB "<<sum+tax<<endl; cout<<"/n 计算完成,按[Enter]键返回主菜单./n"; cin.get(); mainMenu(file); } //------------------------------查找零售价并扣除购买的书----------------------------- float lookUpRetail(fstream & file ,char *ISBN,int amount){ char bookisbn[14],*p_ISBN; bool status=0; int subscript=0, i=1,Qty=0; strcpy(bookisbn,ISBN ); file.clear(); do{ file.seekg(subscript*sizeof(oneBook),ios::beg); file.read((char *)&oneBook,sizeof(oneBook)); subscript=subscript+1; p_ISBN=oneBook.getISBN(); if(*p_ISBN==bookisbn[0]){ p_ISBN++; i=1; while(*p_ISBN==bookisbn[i]&&bookisbn[i]!=NULL) {i++;p_ISBN++;} if(bookisbn[i]==NULL&&*p_ISBN==NULL){ status=1;break; } } }while(!file.eof()); if(status==1) { Qty=oneBook.getQty()-amount;//<------从书库中扣除书 if(Qty<0) cout<<"书库中没有足够的书!交易失败.",exit(0); oneBook.setQty(Qty); cout<<"/n[书 名] [书ISBN号] [零 售 价]"<<endl; cout<<setw(5)<<oneBook.getTitle()<<setw(18)<<oneBook.getISBN()<<setw(15)<<oneBook.getWholesales()<<endl; file.seekp((subscript-1)*sizeof(oneBook),ios::beg);// file.write((char *)&oneBook,sizeof(oneBook)); return oneBook.getRetail(); } else { cout<<"/n该图书不存在,请到管理模块中检查..."<<endl; return 0; } } //********************************************************************************** // 2.管理模块 //********************************************************************************** void manage(fstream & file){ file.clear(); char choice; bool status=0; cout<<"/n/n/t***********************************************************"<<endl; cout<<"/t/t/t图书管理系统----管理模块/n"; cout<<" *****************************************************************"<<endl; cout<<" 1.查找书的信息 2.增加书 3.修改书的信息 4.删除书 5.返回主菜单"<<endl; cout<<" *****************************************************************"<<endl; cout<<"/n------------------请选择:"; while(status==0){ cin>>choice; if(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4'&&choice!='5') cout<<"输入错误请重输:",status=0; else status=1; } switch(choice){ case '1': lookUpBook(file); break; case '2': addBook(file); break; case '3': editBook(file); break; case '4': deleteBook(file); break; case '5': mainMenu(file); break; } } //------------------------------------1查找书-------------------------------- void lookUpBook(fstream & file){ char choice; bool status=0; cout<<"输入 1 选择精确查找; 输入 2 选择模糊查找"<<endl; cout<<"/n------------------请选择:"; while(status==0){ cin>>choice; if(choice!='1'&&choice!='2')cout<<"输入错误,请重输:",status=0; else status=1; } switch(choice){ case '1' : lookUpBook1(file);break; case '2': lookUpBook2(file);break; } } //------------------------------------1-1.精确查找-------------------------------- void lookUpBook1(fstream & file){ file.clear(); char *p_title,title[51]; int subscript=0; bool status=0; cout<<"输入要查找的书名: "; cin.ignore(); cin.getline(title,51); do{ file.seekg(subscript*sizeof(oneBook),ios::beg); file.read((char *)&oneBook,sizeof(oneBook)); subscript=subscript+1; p_title=oneBook.getTitle(); if(*p_title==title[0]){ p_title++; for(int i=1;*p_title==title[i]&&title[i]!=NULL;){p_title++,i++;} if(title[i]==NULL&&*p_title==NULL){ status=1;break; } } }while(!file.eof()); if(status==1){ cout<<"-----------<该书的信息如下>----------"<<endl; cout<<" [书 名]: "<<oneBook.getTitle()<<endl; cout<<" [ISBN 号]: "<<oneBook.getISBN()<<endl; cout<<" [作 者]: "<<oneBook.getauthor()<<endl; cout<<" [出 版 社]: "<<oneBook.getpublisher()<<endl; cout<<" [进书日期]: "<<oneBook.getDateAdded()<<endl; cout<<" [库 存]: "<<oneBook.getQty()<<endl; cout<<" [批 发 价]: "<<oneBook.getWholesales()<<endl; cout<<" [零 售 价]: "<<oneBook.getRetail()<<endl; } else if(status==0) cout<<"书库中没有此书."; cout<<"/n查找完成,按[Enter]键返回管理模块--->"; cin.get(); file.clear(); manage(file); } //------------------------------------1-2.模糊查找-支持部分匹配------------------------------- void lookUpBook2(fstream & file){ file.clear(); char title[51]; int subscript=0; bool status=0; cout<<"输入要查找的书名: "; cin.ignore(); cin.getline(title,51); do{ file.seekg(subscript*sizeof(oneBook),ios::beg); file.read((char *)&oneBook,sizeof(oneBook)); subscript=subscript+1; if(strstr(oneBook.getTitle(),title)){ status=1;break; } }while(!file.eof()); if(status==1){ cout<<"-----------<与之匹配的书信息如下>----------"<<endl; cout<<" [书 名]: "<<oneBook.getTitle()<<endl; cout<<" [ISBN 号]: "<<oneBook.getISBN()<<endl; cout<<" [作 者]: "<<oneBook.getauthor()<<endl; cout<<" [出 版 社]: "<<oneBook.getpublisher()<<endl; cout<<" [进书日期]: "<<oneBook.getDateAdded()<<endl; cout<<" [库 存]: "<<oneBook.getQty()<<endl; cout<<" [批 发 价]: "<<oneBook.getWholesales()<<endl; cout<<" [零 售 价]: "<<oneBook.getRetail()<<endl; } else if(status==0) cout<<"书库中没有此书."; cout<<"/n查找完成,按[Enter]键返回管理模块--->"; cin.get(); file.clear(); manage(file); } //------------------------------------2.增加书-------------------------------- void addBook(fstream & file){ char title[51], ISBN[14], author[31],publisher[31], DateAdded[11]; int Qty; float Wholesales; float Retail; file.clear(); int subscript=0; do{ file.seekg(subscript*sizeof(oneBook),ios::beg); file.read((char *)&oneBook,sizeof(oneBook)); subscript=subscript+1; if(*oneBook.getTitle()==NULL) break; } while(!file.eof()); cout<<"---请输入数据:/n"; cin.ignore(); cout<<" [书 名]: "; cin.getline(title,51); oneBook.setTitle(title); cout<<" [ISBN 号]: "; cin.getline(ISBN,14); oneBook.setISBN(ISBN); cout<<" [作 者]: "; cin.getline(author,31); oneBook.setAuthor(author); cout<<" [出 版 社]: "; cin.getline(publisher,31); oneBook.setpublisher(publisher); cout<<" [进书日期]: "; cin.getline(DateAdded,11); oneBook.setDateAdded(DateAdded); cout<<" [库 存]: "; cin>>Qty; oneBook.setQty(Qty); cout<<" [批 发 价]: "; cin>>Wholesales; oneBook.setWholesales(Wholesales); cout<<" [零 售 价]: "; cin>>Retail; oneBook.setRetail(Retail); file.clear(); //very important!!! file.seekp((subscript-1)*sizeof(oneBook),ios::beg); file.write((char *)&oneBook,sizeof(oneBook)); file.flush(); cin.ignore(); cout<<"/n增加完成,按[Enter]键返回管理模块--->"; cin.get(); file.clear(); manage(file); } //-----------------------3.编辑书------------------------------ void editBook(fstream &file){ file.clear(); char title[51],choice,*p_title; int subscript=0; bool status=0,status0=0; cout<<"输入要修改的书名: "; cin.ignore(); cin.getline(title,51); do{ file.seekg(subscript*sizeof(oneBook),ios::beg); file.read((char *)&oneBook,sizeof(oneBook)); subscript=subscript+1; p_title=oneBook.getTitle(); if(*p_title==title[0]){ p_title++; for(int i=1;*p_title==title[i]&&title[i]!=NULL;){ p_title++; i++; } if(title[i]==NULL&&*p_title==NULL){ status=1;break; } } }while(!file.eof()); if(status==1){ cout<<"-----------<对该书的信息做修改>----------"<<endl; cout<<"/n/n---------------------修改哪一项?/n"<<endl; cout<<"1.[书 名] 2.[ISBN 号] 3.[作 者] 4.[出 版 社]/n"; cout<<"5.[进书日期] 6.[库 存] 7.[批 发 价] 8.[零 售 价]"<<endl; cout<<"/n--------------------请选择:"; while(status0==0){ cin>>choice; if(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4'&&choice!='5'&&choice!='6'&&choice!='7'&&choice!='8') cout<<"输入错误请重输:",status=0; else status0=1; } cin.ignore(); switch(choice){ case '1': cout<<" [书 名]: "<<oneBook.getTitle()<<"---->"; char *titlePtr;titlePtr=new char[52]; cin.getline(titlePtr,51); oneBook.setTitle(titlePtr);break; case '2': cout<<" [ISBN 号]: "<<oneBook.getISBN()<<"---->"; char *ISBNPtr ; ISBNPtr=new char[15]; cin.getline(ISBNPtr,14); oneBook.setISBN(ISBNPtr);break; case '3': cout<<" [作 者]: "<<oneBook.getauthor()<<"---->"; char *authorPtr ;authorPtr=new char [32]; cin.getline(authorPtr,31); oneBook.setAuthor(authorPtr);break; case '4': cout<<" [出 版 社]: "<<oneBook.getpublisher()<<"---->"; char *publisherPtr ;publisherPtr=new char [32]; cin.getline(publisherPtr,31); oneBook.setpublisher(publisherPtr); break; case '5': cout<<" [进书日期]: "<<oneBook.getDateAdded()<<"---->"; char *DateAddedPtr; DateAddedPtr=new char [12]; cin.getline(DateAddedPtr,11); oneBook.setDateAdded(DateAddedPtr); break; case '6': cout<<" [库 存]: "<<oneBook.getQty()<<"---->"; int Qty; cin>>Qty; oneBook.setQty(Qty);break; case '7': cout<<" [批 发 价]: "<<oneBook.getWholesales()<<"---->"; float Wholesales; cin>>Wholesales; oneBook.setWholesales(Wholesales); break; case '8': cout<<" [零 售 价]: "<<oneBook.getRetail()<<"---->"; float Retail; cin>>Retail;oneBook.setRetail(Retail);break; } file.seekp((subscript-1)*sizeof(oneBook),ios::beg); file.write((char *)&oneBook,sizeof(oneBook)); file.flush(); } else if(status==0) cout<<"书库中没有此书."; cout<<"/n完成,按任意键返回管理模块--->/n"<<endl; file.clear(); getch(); manage(file); } //-----------------------4.删除书----------------------------- void deleteBook(fstream &file){ file.clear(); char title[51],*p_title,ensure; int subscript=0; bool status=0; cout<<"输入要删除的书名: "; cin.ignore(); cin.getline(title,51); cout<<"您确认要删除这本书吗?按 N 取消删除,按其他键确认删除. "; cin>>ensure; ensure=toupper(ensure); if(ensure=='N') cout<<"已取消删除,"; else{ do{ file.seekg(subscript*sizeof(oneBook),ios::beg); file.read((char *)&oneBook,sizeof(oneBook)); subscript=subscript+1; p_title=oneBook.getTitle(); if(*p_title==title[0]){ p_title++; for(int i=1;*p_title==title[i]&&title[i]!=NULL;){i++;p_title++;} if(title[i]==NULL&&*p_title==NULL){ status=1;break; } } }while(!file.eof()); if(status==1){ char p[1]={'/0'}; oneBook.setISBN(p); oneBook.setTitle(p); oneBook.setAuthor(p); oneBook.setpublisher(p); oneBook.setDateAdded(p); oneBook.setQty(0); oneBook.setWholesales(0); oneBook.setRetail(0); file.seekp((subscript-1)*sizeof(oneBook),ios::beg); file.write((char *)&oneBook,sizeof(oneBook)); file.flush(); cout<<"---------------------删除完成."<<endl; } else if(status==0) cout<<"/n书库中没有此书."; } cout<<"/n按任意键返回管理模块--->/n"<<endl; file.clear(); getch(); manage(file); } //********************************************************************************** // 3.报表模块 //********************************************************************************** void report(fstream & file){ // system("cls"); file.clear(); char choice; bool status=0; cout<<"/n/n/t***********************************************************"<<endl; cout<<"/t/t/t图书管理系统----报表模块/n"; cout<<"/t***********************************************************"<<endl; cout<<"/t1.书库列表 2.批发价列表 3.零售价列表 4.按书数量列表"<<endl; cout<<"/t5.按书的价值额列表 6.按进书日期列表 7.返回主菜单"<<endl; cout<<"/t***********************************************************"<<endl; cout<<"/n--------------------请选择:"; while(status==0){ cin>>choice; if(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4'&&choice!='5'&&choice!='6'&&choice!='7') cout<<"输入错误请重输:",status=0; else status=1; } switch(choice){ case '1': detailList(file); break; case '2': wholesalesList(file);break; case '3': retailList(file);break; case '4': qtyList(file);break; case '5': valueList(file);break; case '6': addDateList(file);break; case '7': mainMenu(file);break; } } //-----------------------------------1.书库列表------------------------------- void detailList(fstream & file){ file.clear(); int subscript=0,count=0; bool status=0; cout<<"-------------<书库内容如下>-------------/n"<<endl; do{ file.seekg(subscript*sizeof(oneBook),ios::beg); if(file.read((char *)&oneBook,sizeof(oneBook))){ subscript=subscript+1; cout<<" [书 名]: "<<oneBook.getTitle()<<endl; cout<<" [ISBN 号]: "<<oneBook.getISBN()<<endl; cout<<" [作 者]: "<<oneBook.getauthor()<<endl; cout<<" [出 版 社]: "<<oneBook.getpublisher()<<endl; cout<<" [进书日期]: "<<oneBook.getDateAdded()<<endl; cout<<" [库 存]: "<<oneBook.getQty()<<endl; cout<<" [批 发 价]: "<<oneBook.getWholesales()<<endl; cout<<" [零 售 价]: "<<oneBook.getRetail()<<endl; count++; cout<<"-------------------------------------------------------/n"; if(count==2){ cout<<"--<按任意键继续输出>./n"<<endl; count=0; getch(); } } } while(!file.eof()); cin.ignore(); cout<<"/n书库列表完成,按[Enter]键返回报表模块--->"; cin.get(); file.clear(); report(file); } //-----------------------------------2.批发价列表------------------------------- void wholesalesList(fstream &file){ int subscript=0; bool status=0; long unsigned float sum=0; file.clear(); cout<<"-------------<批发价列表>-------------/n"<<endl; do{ file.seekg(subscript*sizeof(oneBook),ios::beg); if(file.read((char *)&oneBook,sizeof(oneBook))){ subscript=subscript+1; cout<<" [书 名]: "<<setw(15)<<oneBook.getTitle(); cout<<" [批 发 价]: "<<oneBook.getWholesales()<<endl; sum=sum+oneBook.getWholesales()*oneBook.getQty(); cout<<"------------------------------------------------------------/n"<<endl; } } while(!file.eof()); cout<<" 批发价价值总额为:"<<sum<<endl; cout<<"------------------------------------------------------------/n"<<endl; cin.ignore(); cout<<"/n批发价列表完成,按[Enter]键返回报表模块--->"; cin.get(); file.clear(); report(file); } //-----------------------------------3.零售价列表------------------------------- void retailList(fstream &file){ int subscript=0; bool status=0; long unsigned float sum=0; file.clear(); cout<<"-------------<零售价列表>-------------/n"<<endl; do{ file.seekg(subscript*sizeof(oneBook),ios::beg); if(file.read((char *)&oneBook,sizeof(oneBook))){ subscript=subscript+1; cout<<" [书 名]: "<<setw(15)<<oneBook.getTitle(); cout<<" [零 售 价]: "<<oneBook.getRetail()<<endl; sum=sum+oneBook.getRetail()*oneBook.getQty(); cout<<"------------------------------------------------------------/n"<<endl; } } while(!file.eof()); cout<<" 零售价价值总额为:"<<sum<<endl; cout<<"------------------------------------------------------------/n"<<endl; cin.ignore(); cout<<"/n零售价列表完成,按[Enter]键返回报表模块--->"; cin.get(); file.clear(); report(file); } //-------------------------------4.按书的数量排序列表---------------------------- void qtyList(fstream &file){ file.clear();//!!! int min_place, k=0,subscript=0, i=0; int min=0; bookDate A,B; file.seekg(0,ios::beg); file.read((char *)&A,sizeof(A)) ; while(!file.eof()){ min=A.getQty(); min_place=i; i++; file.seekg((i*sizeof(B)),ios::beg); file.read((char *)&B,sizeof(B)); k=i; while(!file.eof()){ k++; if(B.getQty()<min) { min_place=k-1; min=B.getQty(); } file.seekg(k*sizeof(B),ios::beg); file.read((char *)&B,sizeof(B)); } if((i-1)!=min_place){ file.clear(); //!!! file.seekg(min_place*sizeof(B),ios::beg); file.read((char *)& B,sizeof(B)); file.seekp((i-1)*sizeof(B),ios::beg); file.write((char *)& B,sizeof(B)); file.seekp(min_place*sizeof(A),ios::beg); file.write((char *)& A,sizeof(A)); file.flush(); } file.clear(); file.seekg(i*sizeof(A),ios::beg); file.read((char *)&A,sizeof(A)); //file.clear();千万不能有!!! } cout<<"-------------<书的数量排序列表>-------------/n"<<endl; file.clear(); //!!!! do{ file.seekg(subscript*sizeof(oneBook),ios::beg); if(file.read((char *)&oneBook,sizeof(oneBook))){ subscript=subscript+1; cout<<" [书 名]: "<<oneBook.getTitle()<<endl; cout<<" [库 存]: "<<oneBook.getQty()<<endl; cout<<"---------------------------------------------------------/n"<<endl; } } while(!file.eof()); cin.ignore(); cout<<"/n书的库存数量排序列表完成,按[Enter]键返回报表模块--->"; cin.get(); file.clear(); report(file); } //-----------------------------------5.书价值额列表-----------------------------指的是批发价 void valueList(fstream &file){ file.clear();//!!! int min_place, k=0,subscript=0, i=0; float min=0; bookDate A,B; file.seekg(0,ios::beg); file.read((char *)&A,sizeof(A)) ; while(!file.eof()){ min=A.getWholesales()*A.getQty(); min_place=i; i++; file.clear(); file.seekg((i*sizeof(B)),ios::beg); file.read((char *)&B,sizeof(B)); k=i; while(!file.eof()){ k++; if(B.getWholesales()*B.getQty()<min) { min_place=k-1; min=B.getWholesales()*B.getQty(); } file.seekg(k*sizeof(B),ios::beg); file.read((char *)&B,sizeof(B)); } if((i-1)!=min_place){ file.clear(); //!!! file.seekg(min_place*sizeof(B),ios::beg); file.read((char *)& B,sizeof(B)); file.seekp((i-1)*sizeof(B),ios::beg); file.write((char *)& B,sizeof(B)); file.seekp(min_place*sizeof(A),ios::beg); file.write((char *)& A,sizeof(A)); file.flush(); } file.clear();//!!! file.seekg(i*sizeof(A),ios::beg); file.read((char *)&A,sizeof(A)); //file.clear();千万不能有!!! } cout<<"-------------<书价值额排序列表>-------------/n"<<endl; file.clear();//!!! do{ file.seekg(subscript*sizeof(oneBook),ios::beg); if(file.read((char *)&oneBook,sizeof(oneBook))){ subscript=subscript+1; cout<<" [书 名]: "<<oneBook.getTitle()<<endl; cout<<" [价 值 额]: "<<oneBook.getWholesales()*oneBook.getQty()<<endl; cout<<"------------------------------------------------------/n"<<endl; } } while(!file.eof()); cin.ignore(); cout<<"/n书价值额排序列表完成,按[Enter]键返回报表模块--->"; cin.get(); file.clear(); report(file); } //-----------------------------------6.进书日期列表------------------------------- void addDateList(fstream &file){ file.clear(); //!!! int min_place=0, k=0,subscript=0, i=0; char min[11]; bookDate A,B; file.seekg(0,ios::beg); file.read((char *)&A,sizeof(A)); while(!file.eof()){ strcpy(min,A.getDateAdded()); min_place=i; i++; file.seekg((i*sizeof(B)),ios::beg); file.read((char *)&B,sizeof(B)); k=i; while(!file.eof()){ k++; if(strcmp(min,B.getDateAdded())>0) { min_place=k-1; strcpy(min,B.getDateAdded()); } file.seekg(k*sizeof(B),ios::beg); file.read((char *)&B,sizeof(B)); } if((i-1)!=min_place){ file.clear(); //!!! file.seekg(min_place*sizeof(B),ios::beg); file.read((char *)& B,sizeof(B)); file.seekp((i-1)*sizeof(B),ios::beg); file.write((char *)& B,sizeof(B)); file.seekp(min_place*sizeof(A),ios::beg); file.write((char *)& A,sizeof(A)); file.flush(); } file.clear();//!!! file.seekg(i*sizeof(A),ios::beg); file.read((char *)&A,sizeof(A)); //千万不能有!!!file.clear(); } cout<<"-------------<进书日期排序列表>-------------/n"<<endl; file.clear(); do{ file.seekg(subscript*sizeof(oneBook),ios::beg); if(file.read((char *)&oneBook,sizeof(oneBook))){ subscript=subscript+1; cout<<" [书 名]: "<<oneBook.getTitle()<<endl; cout<<" [进书日期]: "<<oneBook.getDateAdded()<<endl; cout<<"------------------------------------------------------/n"<<endl; } } while(!file.eof()); file.clear(); cin.ignore(); cout<<"/n进书日期排序列表完成,按[Enter]键返回报表模块--->"; cin.get(); file.clear(); report(file); } //*************************************************************** // 4.退出系统 //*************************************************************** void quit(fstream & file){ system("cls"); char ensure; cout<<"/n/n/n确定要退出吗?按 N 可以取消,按其他键确认退出 : "; cin>>ensure; ensure=toupper(ensure); if(ensure=='N') mainMenu(file); else exit(0); }