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 }