运用面向对象的方法设计“图书管理系统”
题目要求:
编写实现图书信息的输入、显示、查找、添加、删除、保存、排序等功能的函数;
图书分为教材,参考书,期刊等;需提供多态例子;
应提供键盘式选择菜单实现功能选择;
数据输入和结果输出要用文件存放。
注:
1)图书信息包括:图书编号、书名、作者、出版社、出版时间、价格;
2)数据输入要求实现2种功能,即可以从键盘输入也可以从文件“book.txt”输入;
3)查找需要按照不同字段都可以进行查找,如按编号查找、按书名查找等;
4)删除需要按照不同字段都可以进行删除,如按编号删除、按书名删除等;
5)排序需要按照不同字段都可以进行排序(升序和降序),如按编号排序、按书名排序等;
6)结果存入文件“book.txt”中。
第一次写这种大型程序,还是有一点不知所措,一点点的摸索,还是用了一段时间才完成;
以下均个人拙见:
1.为了实现必要的多态,我不得不多加了一些类,但是这些类的使用也仅仅在于实现多态,也就是说,除去多态,这些代码毫无意义;
2.定义一个 Book 类,然后里面加上图书编号、书名、作者、出版社、出版时间、价格等信息即可,不过当时脑子一抽,把时间单独拿了出来,其实后来想想单独把时间做一个类还是不错的,所以我的 Book 利用 Date 的组合,其后的多态的实现是在 Book 的基础上进行派生;
3.规定从键盘输入也可以从文件输入,难受的是,什么不会就需要用到什么,大写的尴尬;
4.其后的是图书管理系统的重点了,我觉得其实不需要多态会更好,或者利用其他的方式,本人想不出,我还是只会用容器装起来,把所有的书包括从键盘输入和文件输入的书籍全部放在一个容器中,然后进行一系列需要的操作;
5.根据要求逐步实现代码;
6.直接把输出的结果全部放入文件会比较好;
但是,但是,重点来了,由于文件没有学好,我只能在键盘上输入英文,这样才能得到正确的输入,如果输入汉字,会形成乱码,目前我还不能解决,日后再回来进一步修改;
头文件:
1 #include<iostream> 2 #include<fstream> 3 #include<sstream> 4 #include<string> 5 #include <iomanip> 6 #include<vector> 7 #include<algorithm>
各种类:
1 class Date 2 3 class Book 4 5 class TextBook:public Book 6 7 class NovelBook:public Book 8 9 class MagazineBook:public Book
容器与文件:
1 vector <Book> v; 2 ifstream ifs("E:\\s1.txt",ios::in); 3 ofstream ofs("E:\\s1_result.txt");
其次便是问题集中地带,既然我是利用的容器,那么我可以进行删除,排序,查找等操作,但是如何进行?
比如查找,我可以利用 ID 查找,也可以利用书名,作者等查找,这需要我如何去设计?
再比如排序,我需要利用各种方式排序,还需要从小到大何从大到小排序,但是一般给出的 sort 并没有告诉你它的原型,他是如何进行的,这些都需要我们在编写的时候进行查找,学习,然后才能合理的解决这些问题;
在设计出一系列功能后,其实我们可以设计一个菜单函数,然后把其中每个功能集中在菜单中,菜单是主函数必定运行的函数,Menu 函数的退出,只能取决于函数函数内部,也就是说,根据用户的输入情况来判断是否退出;
至于每个功能的实现一步一步来即可,
对于查找和删除还是比较简单的,我们利用 switch 分别进行所需要的查找方式;
但是排序会有一点小问题,我起先也是准备和查找删除的方式一样,但是后来发现不太行,因为sort的大小比较需要一个函数,于是突发奇想,可以设置一个中介函数,sort调用这个中介函数,然后由这个中介函数来选择所需要的正确的排序函数,由此解决了一个sort需要多个排序函数的问题;
至于其他问题,均可慢慢解决,只有自己动手试过,方知其中奥妙;
附上两个文件:
PS:不能利用时间排序,额,本人写的时候没有对时间的大小比较进行正确的比较,实属本人错误,其他排序无误;
额,还有一个问题,在I/O流的格式化输出的问题上没有处理好,才疏学浅;
完整代码:
1 #include<iostream> 2 #include<fstream> 3 #include<sstream> 4 #include<string> 5 #include <iomanip> 6 #include<vector> 7 #include<algorithm> 8 9 using namespace std; 10 11 class Date // Date 12 { 13 private: 14 int year,month,day; 15 public: 16 Date(int year_ = 0,int month_ = 0,int day_ = 0):year(year_),month(month_),day(day_) { } 17 Date(const Date & rhs) 18 { 19 if(this != & rhs) 20 { 21 year = rhs.year; 22 month = rhs.month; 23 day = rhs.day; 24 } 25 } 26 Date & operator = (const Date & rhs) 27 { 28 year = rhs.year; 29 month = rhs.month; 30 day = rhs.day; 31 return (*this); 32 } 33 friend istream & operator >>(istream & is,Date & rhs) 34 { 35 is>>rhs.year>>rhs.month>>rhs.day; 36 return (is); 37 } 38 friend ostream & operator <<(ostream & os,const Date & rhs) 39 { 40 os<<rhs.year<<"."<<rhs.month<<"."<<rhs.day; 41 return (os); 42 } 43 bool operator == (const Date & rhs) 44 { 45 if( (year == rhs.year)&&(month == rhs.month)&&(day == rhs.day) ) 46 return 1; 47 else 48 return 0; 49 } 50 bool operator < (const Date & rhs) 51 { 52 if( (year < rhs.year)&&(month < rhs.month)&&(day < rhs.day) ) 53 return 1; 54 else 55 return 0; 56 } 57 bool operator > (const Date & rhs) 58 { 59 if( (year > rhs.year)&&(month > rhs.month)&&(day > rhs.day) ) 60 return 1; 61 else 62 return 0; 63 } 64 }; 65 66 class Book 67 { 68 private: 69 string id,name,author,publish; 70 double price; 71 Date date; 72 public: 73 Book(int year_ = 0,int month_ = 0,int day_ = 0,string id_ = "NULL",string name_ = "NULL",string author_ = "NULL",string publish_ = "NULL",double price_ = 0) 74 :date(year_,month_,day_) 75 { 76 id = id_; 77 name = name_; 78 author = author_; 79 publish = publish_; 80 price = price_; 81 } 82 Book(const Book & rhs) 83 { 84 if(this != &rhs) 85 { 86 id = rhs.id; 87 name = rhs.name; 88 author = rhs.author; 89 publish = rhs.publish; 90 price = rhs.price; 91 date = rhs.date; 92 } 93 } 94 Book & operator = (const Book & rhs) 95 { 96 id = rhs.id; 97 name = rhs.name; 98 author = rhs.author; 99 publish = rhs.publish; 100 price = rhs.price; 101 date = rhs.date; 102 return (*this); 103 } 104 friend ostream & operator << (ostream & os ,const Book & rhs) 105 { 106 os<<setiosflags(ios::right)<<rhs.id<<setw(20)<<rhs.name<<setw(20)<<rhs.author<<setw(20)<<rhs.publish<<setw(20)<<rhs.price<<setw(20)<<rhs.date; 107 return (os); 108 } 109 virtual void ShowBook(ofstream & Ofs) // 多态显示 110 { 111 Ofs<<(*this); 112 } 113 void Set() 114 { 115 cout<<"id>>name>>author>>publish>>price>>date"<<endl; 116 cin>>id>>name>>author>>publish>>price>>date; 117 } 118 virtual void SetBook() // 多态输入 119 { 120 this->Set() ; 121 } 122 bool operator == (const Book & rhs) 123 { 124 int arr[6] = {0}; 125 switch(1) 126 { 127 case 1 : if(id == rhs.id) 128 arr[0] = 1; 129 case 2 : if(name == rhs.name) 130 arr[1] = 1; 131 case 3 : if(author == rhs.author) 132 arr[2] = 1; 133 case 4 : if(publish == rhs.publish) 134 arr[3] = 1; 135 case 5 : if(date == rhs.date) 136 arr[4] = 1; 137 case 6 : if(price == rhs.price) 138 arr[5] = 1; 139 } 140 if( (arr[0]+arr[1]+arr[2]+arr[3]+arr[4]+arr[5]) > 0 ) 141 return 1; 142 } 143 bool Conparesmall(const Book & rhs,int i) 144 { 145 switch(i) 146 { 147 case 1 : return(id < rhs.id); 148 case 2 : return(name < rhs.name); 149 case 3 : return(author < rhs.author); 150 case 4 : return(publish < rhs.publish); 151 case 5 : return(date < rhs.date); 152 case 6 : return(price < rhs.price); 153 } 154 } 155 bool Conparelarge(const Book & rhs,int i) 156 { 157 switch(i) 158 { 159 case 1 : return(id > rhs.id); 160 case 2 : return(name > rhs.name); 161 case 3 : return(author > rhs.author); 162 case 4 : return(publish > rhs.publish); 163 case 5 : return(date > rhs.date); 164 case 6 : return (price > rhs.price); 165 } 166 } 167 }; 168 169 class TextBook:public Book 170 { 171 private: 172 string subject; 173 public: 174 TextBook(int year_ = 0,int month_ = 0,int day_ = 0,string id_ = "NULL",string name_ = "NULL",string author_ = "NULL",string publish_ = "NULL",double price_ = 0,string subject_ = "NULL") 175 :Book(year_,month_,day_,id_,name_,author_,publish_,price_),subject(subject_) { } 176 TextBook(const TextBook & rhs):Book(rhs) 177 { 178 if(this != &rhs) 179 subject = rhs.subject; 180 } 181 virtual void ShowBook(ofstream & Ofs) // 显示 182 { 183 Ofs<<(*this)<<setiosflags(ios::right)<<setw(20)<<subject<<endl; 184 } 185 virtual void SetBook() // 输入 186 { 187 this->Set() ; 188 cout<<"subject"<<endl; 189 cin>>subject; 190 } 191 }; 192 193 class NovelBook:public Book 194 { 195 private: 196 string kind; 197 public: 198 NovelBook(int year_ = 0,int month_ = 0,int day_ = 0,string id_ = "NULL",string name_ = "NULL",string author_ = "NULL",string publish_ = "NULL",double price_ = 0,string kind_ = "NULL") 199 :Book(year_,month_,day_,id_,name_,author_,publish_,price_),kind(kind_) { } 200 NovelBook(const NovelBook & rhs):Book(rhs) 201 { 202 if(this != &rhs) 203 kind = rhs.kind; 204 } 205 virtual void ShowBook(ofstream & Ofs) // 显示 206 { 207 Ofs<<(*this)<<setiosflags(ios::right)<<setw(20)<<kind<<endl; 208 } 209 virtual void SetBook() // 输入 210 { 211 this->Set() ; 212 cout<<"kind"<<endl; 213 cin>>kind; 214 } 215 }; 216 217 class MagazineBook:public Book 218 { 219 private: 220 string theme; 221 public: 222 MagazineBook(int year_ = 0,int month_ = 0,int day_ = 0,string id_ = "NULL",string name_ = "NULL",string author_ = "NULL",string publish_ = "NULL",double price_ = 0,string theme_ = "NULL") 223 :Book(year_,month_,day_,id_,name_,author_,publish_,price_),theme(theme_) { } 224 MagazineBook(const MagazineBook & rhs):Book(rhs) 225 { 226 if(this != &rhs) 227 theme = rhs.theme; 228 } 229 virtual void ShowBook(ofstream & Ofs) // 显示 230 { 231 Ofs<<(*this)<<setiosflags(ios::right)<<setw(20)<<theme<<endl; 232 } 233 virtual void SetBook() // 输入 234 { 235 this->Set() ; 236 cout<<"theme"<<endl; 237 cin>>theme; 238 } 239 }; 240 241 vector <Book> v; 242 ifstream ifs("E:\\s1.txt",ios::in); 243 ofstream ofs("E:\\s1_result.txt"); 244 245 void Find(const Book & b) // 查找 246 { 247 vector <Book> ::iterator p; 248 p = find(v.begin(),v.end(),b); 249 if( p != v.end() ) 250 { 251 ofs<<*p<<endl; 252 cout<<"存在此书"<<endl; 253 } 254 else 255 cout<<"此书不存在"<<endl; 256 } 257 258 void Delete(const Book & b) // 删除 259 { 260 vector <Book> ::iterator ite; 261 for(ite = v.begin();ite != v.end(); ) 262 { 263 if(*ite == b) 264 { 265 cout<<"删除成功"<<endl; 266 ite = v.erase(ite); 267 } 268 else 269 ++ite; 270 } 271 } 272 273 bool lesssort_1(Book & rhs1,Book & rhs2) 274 { 275 return rhs1.Conparesmall(rhs2,1); 276 } 277 bool lesssort_2(Book & rhs1,Book & rhs2) 278 { 279 return rhs1.Conparesmall(rhs2,2); 280 } 281 bool lesssort_3(Book & rhs1,Book & rhs2) 282 { 283 return rhs1.Conparesmall(rhs2,3); 284 } 285 bool lesssort_4(Book & rhs1,Book & rhs2) 286 { 287 return rhs1.Conparesmall(rhs2,4); 288 } 289 bool lesssort_5(Book & rhs1,Book & rhs2) 290 { 291 return rhs1.Conparesmall(rhs2,5); 292 } 293 bool lesssort_6(Book & rhs1,Book & rhs2) 294 { 295 return rhs1.Conparesmall(rhs2,6); 296 } 297 298 void Sortsmall(int b) // sort排序:从小到大 299 { 300 switch(b) 301 { 302 case 1 : sort(v.begin(),v.end(),lesssort_1); 303 break; 304 case 2 : sort(v.begin(),v.end(),lesssort_2); 305 break; 306 case 3 : sort(v.begin(),v.end(),lesssort_3); 307 break; 308 case 4 : sort(v.begin(),v.end(),lesssort_4); 309 break; 310 case 5 : sort(v.begin(),v.end(),lesssort_5); 311 break; 312 case 6 : sort(v.begin(),v.end(),lesssort_6); 313 break; 314 } 315 } 316 317 bool greatersort_1(Book & rhs1,Book & rhs2) 318 { 319 return rhs1.Conparelarge(rhs2,1); 320 } 321 bool greatersort_2(Book & rhs1,Book & rhs2) 322 { 323 return rhs1.Conparelarge(rhs2,2); 324 } 325 bool greatersort_3(Book & rhs1,Book & rhs2) 326 { 327 return rhs1.Conparelarge(rhs2,3); 328 } 329 bool greatersort_4(Book & rhs1,Book & rhs2) 330 { 331 return rhs1.Conparelarge(rhs2,4); 332 } 333 bool greatersort_5(Book & rhs1,Book & rhs2) 334 { 335 return rhs1.Conparelarge(rhs2,5); 336 } 337 bool greatersort_6(Book & rhs1,Book & rhs2) 338 { 339 return rhs1.Conparelarge(rhs2,6); 340 } 341 342 void Sortlarge(int b) // sort排序:从大到小 343 { 344 switch(b) 345 { 346 case 1 : sort(v.begin(),v.end(),greatersort_1); 347 break; 348 case 2 : sort(v.begin(),v.end(),greatersort_2); 349 break; 350 case 3 : sort(v.begin(),v.end(),greatersort_3); 351 break; 352 case 4 : sort(v.begin(),v.end(),greatersort_4); 353 break; 354 case 5 : sort(v.begin(),v.end(),greatersort_5); 355 break; 356 case 6 : sort(v.begin(),v.end(),greatersort_6); 357 break; 358 } 359 } 360 361 void Menu() // 菜单 362 { 363 364 int int_choose,char_choose,nub,i; 365 string id,name,author,publish; 366 double price; 367 int year,month,day; 368 while(1) 369 { 370 cout<<"A : 若查找书籍,请于下方输入 1 ;"<<endl<<"B : 若删除书籍,请于下方输入 2 ;"<<endl<<"C : 若对书籍从小到大排序,请于下方输入 3 ;"<<endl<<"D : 若对书籍从大到小排序,请于下方输入 4 ;"<<endl<<"BREAK : 若退出菜单请输入 0 ;"<<endl; 371 cin>>int_choose; 372 if( int_choose == 0 ) // 退出 373 { 374 break; 375 } 376 if( int_choose == 1 ) // 查找 377 { 378 cout<<"请输入待查书籍数量 :"<<endl; 379 cin>>nub; 380 for(i = 0;i < nub;i++) 381 { 382 cout<<"若按编号查找,请于下方输入 1 "<<endl<<"若按书名查找,请于下方输入 2 "<<endl<<"若按作者查找,请于下方输入 3 "<<endl<<"若按出版社查找,请于下方输入 4 "<<endl 383 <<"若按出版时间查找,请于下方输入 5 "<<endl<<"若按价格查找,请于下方输入 6 "<<endl; 384 cin>>char_choose; 385 switch(char_choose) 386 { 387 case 1 : 388 { 389 cout<<"请输入编号 :"; 390 cin>>id; 391 Book temp(0,0,0,id,"NULL","NULL","NULL",0); 392 Find(temp); 393 break; 394 } 395 case 2 : 396 { 397 cout<<"请输入书名 :"; 398 cin>>name; 399 Book temp(0,0,0,"NULL",name,"NULL","NULL",0); 400 Find(temp); 401 break; 402 } 403 case 3 : 404 { 405 cout<<"请输入作者 :"; 406 cin>>author; 407 Book temp(0,0,0,"NULL","NULL",author,"NULL",0); 408 Find(temp); 409 break; 410 } 411 case 4 : 412 { 413 cout<<"请输入出版社:"; 414 cin>>publish; 415 Book temp(0,0,0,"NULL","NULL","NULL",publish,0); 416 Find(temp); 417 break; 418 } 419 case 5 : 420 { 421 cout<<"请输入时间 :"; 422 cin>>year>>month>>day; 423 Book temp(year,month,day,"NULL","NULL","NULL","NULL",0); 424 Find(temp); 425 break; 426 } 427 case 6 : 428 { 429 cout<<"请输入价格 :"; 430 cin>>price; 431 Book temp(0,0,0,"NULL","NULL","NULL","NULL",price); 432 Find(temp); 433 break; 434 } 435 } 436 } 437 } 438 if( int_choose == 2 ) // 删除 439 { 440 441 cout<<"请输入待删除书籍数量 :"<<endl; 442 cin>>nub; 443 444 for(i = 0;i < nub;i++) 445 { cout<<"若按编号删除,请于下方输入 1 "<<endl<<"若按书名删除,请于下方输入 2 "<<endl<<"若按作者删除,请于下方输入 3 "<<endl<<"若按出版社删除,请于下方输入 4 "<<endl <<"若按出版时间删除,请于下方输入 5 "<<endl<<"若按价格删除,请于下方输入 6 "<<endl; 446 cin>>char_choose; 447 switch(char_choose) 448 { 449 case 1 : 450 { 451 cout<<"请输入编号 :"; 452 cin>>id; 453 Book temp(0,0,0,id,"NULL","NULL","NULL",0); 454 Delete(temp); 455 break; 456 } 457 case 2 : 458 { 459 cout<<"请输入书名 :"; 460 cin>>name; 461 Book temp(0,0,0,"NULL",name,"NULL","NULL",0); 462 Delete(temp); 463 break; 464 } 465 case 3 : 466 { 467 cout<<"请输入作者 :"; 468 cin>>author; 469 Book temp(0,0,0,"NULL","NULL",author,"NULL",0); 470 Delete(temp); 471 break; 472 } 473 case 4 : 474 { 475 cout<<"请输入出版社:"; 476 cin>>publish; 477 Book temp(0,0,0,"NULL","NULL","NULL",publish,0); 478 Delete(temp); 479 break; 480 } 481 case 5 : 482 { 483 cout<<"请输入时间 :"; 484 cin>>year>>month>>day; 485 Book temp(year,month,day,"NULL","NULL","NULL","NULL",0); 486 Delete(temp); 487 break; 488 } 489 case 6 : 490 { 491 cout<<"请输入价格 :"; 492 cin>>price; 493 Book temp(0,0,0,"NULL","NULL","NULL","NULL",price); 494 Delete(temp); 495 break; 496 } 497 } 498 } 499 } 500 if( int_choose == 3 ) // 从小到大 501 { 502 cout<<"若按编号排序,请于下方输入 1 "<<endl<<"若按书名排序,请于下方输入 2 "<<endl<<"若按作者排序,请于下方输入 3 "<<endl<<"若按出版社排序,请于下方输入 4 "<<endl <<"若按出版时间排序,请于下方输入 5 "<<endl<<"若按价格排序,请于下方输入 6 "<<endl; 503 cin>>char_choose; 504 switch(char_choose) 505 { 506 case 1 : 507 { 508 cout<<"按编号排序 :"<<endl; 509 Sortsmall(1); 510 break; 511 } 512 case 2 : 513 { 514 cout<<"按书名排序 :"<<endl; 515 Sortsmall(2); 516 break; 517 } 518 case 3 : 519 { 520 cout<<"按作者排序 :"<<endl; 521 Sortsmall(3); 522 break; 523 } 524 case 4 : 525 { 526 cout<<"按出版社排序:"<<endl; 527 Sortsmall(4); 528 break; 529 } 530 case 5 : 531 { 532 cout<<"按时间排序 :"<<endl; 533 Sortsmall(5); 534 break; 535 } 536 case 6 : 537 { 538 cout<<"按价格排序 :"<<endl; 539 Sortsmall(6); 540 break; 541 } 542 } 543 cout<<"排序成功 !"<<endl; 544 ofs<<endl; 545 typename vector <Book>::const_iterator i; 546 for(i = v.begin();i != v.end();i++) 547 ofs<<*i<<endl; 548 } 549 if( int_choose == 4 ) // 从大到小 550 { 551 cout<<"若按编号排序,请于下方输入 1 "<<endl<<"若按书名排序,请于下方输入 2 "<<endl<<"若按作者排序,请于下方输入 3 "<<endl<<"若按出版社排序,请于下方输入 4 "<<endl <<"若按出版时间排序,请于下方输入 5 "<<endl<<"若按价格排序,请于下方输入 6 "<<endl; 552 cin>>char_choose; 553 switch(char_choose) 554 { 555 case 1 : 556 { 557 cout<<"按编号排序 :"<<endl; 558 Sortlarge(1); 559 break; 560 } 561 case 2 : 562 { 563 cout<<"按书名排序 :"<<endl; 564 Sortlarge(2); 565 break; 566 } 567 case 3 : 568 { 569 cout<<"按作者排序 :"<<endl; 570 Sortlarge(3); 571 break; 572 } 573 case 4 : 574 { 575 cout<<"按出版社排序:"<<endl; 576 Sortlarge(4); 577 break; 578 } 579 case 5 : 580 { 581 cout<<"按时间排序 :"<<endl; 582 Sortlarge(5); 583 break; 584 } 585 case 6 : 586 { 587 cout<<"按价格排序 :"<<endl; 588 Sortlarge(6); 589 break; 590 } 591 } 592 cout<<"排序成功 !"<<endl; 593 ofs<<endl; 594 typename vector <Book>::const_iterator i; 595 for(i = v.begin();i != v.end();i++) 596 ofs<<*i<<endl; 597 } 598 } 599 } 600 601 int main() 602 { 603 string id,name,author,publish,xxxx; 604 double price; 605 int year,month,day,i = 0,w,j = 0; 606 string line; 607 Book b; 608 TextBook t; 609 NovelBook n; 610 MagazineBook m; 611 t.SetBook() ; // 键盘输入 612 n.SetBook() ; 613 m.SetBook() ; 614 ofs<<setiosflags(ios::right)<<"id"<<setw(20)<<"name"<<setw(20)<<"author"<<setw(20)<<"publish"<<setw(20)<<"price"<<setw(20)<<"date"<<endl; 615 ofs<<" // duo tai de shi xian "<<endl; 616 t.ShowBook(ofs) ; // 多态输出 and 输出到文件 617 n.ShowBook(ofs) ; 618 m.ShowBook(ofs) ; 619 ofs<<" // cong wen jian shu ru "<<endl; 620 if(ifs) 621 while(getline(ifs,line)) // 文件输入 622 { 623 istringstream is(line); 624 is>>id>>name>>author>>publish>>price>>year>>month>>day>>xxxx; 625 v.push_back( Book(year,month,day,id,name,author,publish,price) ); 626 ofs<<setiosflags(ios::right)<<id<<setw(20)<<name<<setw(20)<<author<<setw(20)<<publish<<setw(20)<<price<<setw(20)<<year<<"."<<month<<"."<<day<<endl; 627 // ofs<<id<<" "<<name<<" "<<author<<" "<<publish<<" "<<price<<year<<"."<<month<<"."<<day<<" "<<xxxx<<endl; 628 } 629 else 630 cout<<"error !"<<endl; 631 cout<<" // cong jian pan shu ru "<<endl; 632 cin>>w; 633 cout<<"year>>month>>day>>id>>name>>author>>publish>>price"<<endl; 634 while(1) 635 { 636 cin>>year>>month>>day>>id>>name>>author>>publish>>price; 637 v.push_back( Book(year,month,day,id,name,author,publish,price) ); 638 if(++j == w) 639 break; 640 } 641 Menu(); 642 ifs.close(); 643 ofs.close(); 644 return 0; 645 }
2020-01-11
原文地址:https://www.cnblogs.com/2015-16/p/12180535.html