C++实验最后自我设计

                                         C++实验最后自我设计

功能:实现对书籍的一些简易操作,基本的图书的查找,删除和修改等操作;

要求:定义两个类分别对书籍信息进行存储和对书籍的操作

界面:较为人性化,易理解和操作

实验分析:新学习了容器vector是C++标准模板库中的部分内容,是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

  1 #include <iostream>
  2 #include <vector>
  3 #include <string>
  4 using  namespace std;
  5 class Book//图书类
  6 {
  7 public:
  8     Book(int recordnum,string name,float price);
  9     int    RecordNumber;//编号
 10     string    Name;//书名
 11     float    Price;//价格
 12     void Display();//输出函数
 13 };
 14 Book::Book(int recordnum,string name,float price)
 15 {
 16     RecordNumber=recordnum;
 17     Name=name;
 18     Price=price;
 19 }//Book类的构造函数
 20 void Book::Display()
 21 {
 22     cout<<RecordNumber<<"     "<<Name<<"    "<<Price<<endl;
 23 }//输出书籍信息
 24 typedef vector<Book*> BookOperate;//创建一个Book类型的空的vector对象,BookOperate别名
 25 class Management//管理图书类
 26 {
 27 public:
 28     BookOperate ebook;//创建vector<Book*>对象
 29     void AddBook(Book* book);//增加图书
 30     void DeleteBook(int num);//根据编号删除图书
 31     void ModifyBook(Book* book);//修改图书
 32     void SearchBook(int nums);//根据编号查找
 33     void SearchBook(string names);//根据书名查找
 34     void SearchBook(float prices);//根据价格查找
 35 };
 36 void Management::AddBook(Book* book)//增加图书
 37 {
 38     this->ebook.push_back(book);//在尾部加入一个数据。
 39 }
 40 void Management::DeleteBook(int num)//删除图书
 41 {
 42     BookOperate::iterator First=ebook.begin();//指向第一个数据的迭代指针.
 43     while(First!=ebook.end())//ebook.end()指向迭代器中末端元素的下一个,指向一个不存在元素。
 44     {
 45         if((*First)->RecordNumber==num)
 46         {
 47             ebook.erase(First);//删除该位置的数据,传回下一个数据的位置。    
 48         }
 49         ++First;
 50     }
 51 }
 52 void Management::ModifyBook(Book* book)//修改图书
 53 {
 54     int lenth=ebook.size();//返回容器中数据个数
 55     if(lenth>0)
 56     {
 57         for(int i=0;i<lenth;i++)
 58         {
 59             if(ebook[i]->RecordNumber==book->RecordNumber)
 60             {
 61                 ebook[i]->Name=book->Name;
 62                 ebook[i]->Price=book->Price;        
 63             }
 64         }
 65     }
 66 }
 67 void Management::SearchBook(int nums)//根据编号查找
 68 {
 69     int lenth=ebook.size();
 70     if(lenth>0)
 71     {
 72         for(int i=0;i<lenth;i++)
 73         {
 74             if(ebook[i]->RecordNumber==nums)
 75             {
 76                 ebook[i]->Display();        
 77             }
 78         }
 79     }
 80 }
 81 void Management::SearchBook(string names)//根据书名查找
 82 {
 83     int lenth=ebook.size();
 84     if(lenth>0)
 85     {
 86         for(int i=0;i<lenth;i++)
 87         {
 88             if(ebook[i]->Name==names)
 89             {
 90                 ebook[i]->Display();        
 91             }
 92         }
 93     }
 94 }
 95 void Management::SearchBook(float prices)//根据价格查找
 96 {
 97     int lenth=ebook.size();
 98     if(lenth>0)
 99     {
100         for(int i=0;i<lenth;i++)
101         {
102             if(ebook[i]->Price==prices)
103             {
104                 ebook[i]->Display();
105             }
106         }
107     }
108 }
109 int main()
110 {
111     Management bookmanage;//创建Management对象
112     bookmanage.AddBook(new Book(1, "高等数学",35.0));
113     bookmanage.AddBook(new Book(2, "线性代数",27.0));
114     bookmanage.AddBook(new Book(3, "C语言程序设计",36.0));
115     bookmanage.AddBook(new Book(4, "大学物理",23.5));
116     bookmanage.AddBook(new Book(5,"电子技术基础",45.0));
117     bookmanage.AddBook(new Book(6,"信号与系统",83.5));
118     bookmanage.AddBook(new Book(7,"概率论与数理统计",32.0));
119     bookmanage.AddBook(new Book(8,"英语",41.5));
120     bookmanage.AddBook(new Book(9,"现代经济管理基础",35.5));
121     bookmanage.AddBook(new Book(10,"线性电子线路实验",26.5));//增加图书
122     int full=1;
123     char p;
124     int a,b,n1,n2,n3;
125     string mod,sear;
126     float pri,pris;
127     cout<<"          实现简易书籍管理         "<<endl;
128     while(full)
129     {
130         cout<<"选择你想进行的操作(输入数字):1.删除图书 2.修改图书 3.查找图书"<<endl;
131         cin>>a;
132         switch(a)
133         {
134         case 1:{
135             cout<<"输入你想删除的图书的编号:";
136             cin>>n1;
137             bookmanage.DeleteBook(n1);
138             break;
139                }
140         case 2:{
141             cout<<"输入你想修改的图书的信息(例 3 C++程序设计 30.0):";
142             cin>>n2>>mod>>pri;
143             Book book(n2,mod,pri);
144             bookmanage.ModifyBook(&book);
145             break;
146                }//修改图书
147         case 3:{
148             cout<<"输入你想查找的图书的信息(数字编号)1.编号 2.书目 3.价格):";
149             cin>>b;
150             switch(b)   
151             {
152                case 1 :{
153                    cout<<"编号:";
154                    cin>>n3;
155                    bookmanage.SearchBook(n3);
156                    break;
157                        }
158                case 2 :{
159                    cout<<"书目:";
160                    cin>>sear;
161                    bookmanage.SearchBook(sear);
162                    break;
163                        }
164                case 3 :{
165                    cout<<"价格:";
166                    cin>>pris;
167                    bookmanage.SearchBook(pris);
168                    break;
169                        }
170                
171             } 
172                }
173         }
174         cout<<"继续操作(Y/N)?";
175         cin>>p;
176         if(p=='N') full=0;
177         cout<<endl;
178 
179     }
180     int lenth=bookmanage.ebook.size();
181     for(int i=0;i<lenth;i++)
182     {
183         bookmanage.ebook[i]->Display();
184     }
185     return 0;
186 }

 

 

posted @ 2013-12-21 23:55  a梦想去柬埔寨  阅读(224)  评论(0编辑  收藏  举报