运用面向对象的方法设计“图书管理系统”

运用面向对象的方法设计“图书管理系统”

题目要求:

编写实现图书信息的输入、显示、查找、添加、删除、保存、排序等功能的函数;

图书分为教材,参考书,期刊等;需提供多态例子;

应提供键盘式选择菜单实现功能选择;

数据输入和结果输出要用文件存放。

注:

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

时间: 2024-10-29 19:06:25

运用面向对象的方法设计“图书管理系统”的相关文章

面向对象设计-图书管理系统

1.1需求分析 图书馆管理系统是图书馆管理工作中不可缺少的部分,对于图书馆的管理者和使用者来说都非常重要了,故相对于传统的手工方式或性能较低的图书馆管理系统管理图书馆的日常事务相比,设计一个能提供快速的图书信息检索功能.快捷的图书借阅.归还流程,为管理者与读者提供充足的信息和快捷的数据处理手段的系统,能更好的对图书进行管理.所以从读者与图书管理员的角度出发,本着以读者借书.还书快捷.方便的原则,要求本系统应具有以下特点: √  具有良好的系统性能,友好的用户界面. √  较高的处理效率,便于使用

C语言课程设计—图书管理系统

这是本人大一第二学期初C语言课程设计的作品,嘿嘿,本来以为已经找不到原稿了,今天无意中居然在QQ网络硬盘中找到了当初的teta版,公布于此,以作纪念. C源码例如以下: #include<stdio.h> #include<stdlib.h> #include<string.h> struct book{ char book_name[30]; int bianhao; double price; char author[20]; char state[20]; cha

图书管理系统类图

一. 实验目的  使用面向对象的建模方法创建图书管理系统的类图. 二. 实验要求 画出该系统的类图 . 三. 实验器材 计算机一台. Office Visio 2010或Rational Rose工具软件. 四.  实验内容 创建类图,以及他们之间的关系 users:用户 record:记录 books:图书信息

OC面向对象之方法

OC面向对象之方法 设计一个Caculator计算器类,它拥有计算的功能(行为) 1不带参数的方法 设计一个返回PI的方法 //方法声明 -(double)pi; //方法实现 -(double) pi { Return 3.1415926; } 方法声明 方法调用 2带一个参数的方法 设计一个计算平方的方法 //方法声明 -(double)square:(double)number; //方法实现 -(double)square:(double)number { Return number *

[mysql+qt] 图书管理系统

一.图书管理数据库概念模式设计 图书管理系统包括了游客.用户登录.管理员登录三种模式. 在游客模式下,可以实现检索书籍的功能. 游客可以注册用户,但是借书权限需要管理员授予. 用户登录后,在检索书籍功能的基础上,还可以进行书籍的借阅,并且查看自己的借还情况. 管理员登录后,可以对图书进行管理,即入库新的书籍,也可以对用户进行管理,即授予用户借书证,注销用户. 二.数据库设计         管理员(manager) 属性 主码/外码 数据类型 说明 Username 主码 varchar(20)

Django之url上的include,URL命名和反向解析,命名空间 以及图书管理系统删除功能二合一方法

include其他的URLconfs #At any point, your urlpatterns can "include" other URLconf modules. This #essentially "roots" a set of URLs below other ones. #For example, here's an excerpt of the URLconf for the Django website itself. #It include

图书管理系统------软件设计图纸

图书管理系统------软件设计图纸 一.图书馆管理系统总体功能概述 图书馆管理系统功能图: 1.系统登录模块 : 本模块的功能点包括: (1) 判断用户名和密码是否相符: (2) 根据用户的权限类型,登录到系统的制定界面操作使用. 2.图书管理模块: 在本模块中图书馆工作人员可以对图书进行管理操作. 本模块的功能点包括: (1) 新书入库,将新进图书按其类型将图书的基本信息录入系统数据库: (2) 图书出库,某一部分图书会随着时间的增长及知识的更新而变得不再有收藏的价值,或者图书被损坏,这些图

课程设计-图书信息管理系统

介绍: 课程设计-银行储蓄系统-->在这里 图书信息管理系统包括:登录号.书名.作者名.分类号.出版单位.出版时间.价格等.试设计一图书信息管理系统,使之能提供以下功能: (1)系统以菜单方式工作 (2)图书信息录入功能(学生信息用文件保存)---输入 (3)图书信息浏览功能---输出 (4)查询.排序功能 按登录号查询 按书名查询 (5)图书信息的删除与修改 源代码: 下面是源代码: book.h: #ifndef BOOK_H_INCLUDED #define BOOK_H_INCLUDED

图书管理系统的设计

1.导言 1.1.目的 1.2.范围 2.系统定义 2.1.项目来源背景 2.2.项目要达到的目标 2.3.系统整体结构 3.应用环境 3.1.系统运行网络环境 3.2.系统运行硬件环境 3.3.系统运行软件环境 4.功能规格 4.1.XXX模块功能说明 5.性能需求 5.1.界面需求 6.产品提交 7.实现约束       1.目 的 1.1.目 的    为了方便借阅图书,制定了图书管理系统,可以从网上直接进行预定借阅,y在网上阅读电子版的书籍. 1.2.范 围 适用于本校学生,和老师,以及