本文实例为大家分享了c++实现图书信息管理系统的具体代码,供大家参考,具体内容如下
1.题目:
类型有:编号:isbn
书名:name
价格:price
完成如下的功能:
①录入:从键盘输入(或从文件读入)图书(或学生)信息表的各个数据元素;
②查找:可按不同属性查找所有等于给定值的数据元素,找到并返回它们在表中的位序;
③插入:在表中第i(1=<i<=n+1)个位置插入一个新元素;
④删除:可删除表中第i(1=<i<=n)个位置上的元素;
⑤输出:依次打印表中的各个元素的值;
⑥排序:可按某属性对表中的元素进行排序。(可选)
2.实现方式:单链表(带头节点)
3.代码实现:
#include <io2020年四川高考状元stream>#include <string>using namespace std;struct node{ int isbn;//编号 string name;//书名 float price;//定价 node *next;};//操作类class link{private: int number;//图书数量 node *head;public: link(int a):number(a){} ~link(){delete head;} void create_node();//创建 void lect();//功能选择 int find_node(int i);//按照编号查找 int find_node(string n);//按照书名查找 int find_node(float 相逢的诗句p);//按照价格查找 int inrt_node(int pos);//插入 int delete_node(int d);//删除 int mod_node(int d);//修改 void sort_node_isbn();//按照编号排序 void sort_node_price();//按照价格排序 int get_node();//计数总数 void print();//打印操作};void link::create_node(){ node *pnew; head = new node; //cout<<"请按顺序输入图书的isbn,书名,定价"; head->isbn = 0; head->name = 'n'; head->price = 0; head->next = null; node *ptemp = head; for(int i=0;i<number;i++) { pnew = new node; cout<<endl; cout<<"请按顺序输入图书的isbn,书名,定价:"; cin>>pnew->isbn>>pnew->name>>pnew->price; pnew->next = null; ptemp->next = pnew; ptemp = pnew; }}//按编号查找int link::find_node(int i){ node *ptemp = head->next; for(int count = 0;count<number;count++) { if(ptemp->isbn == i)//按编号查找图书 { cout<<"图书的编号为:"<<ptemp-&g和符号t;isbn<<" 书名为:"<<ptemp->name<<" 定价为:"<<ptemp->price<<endl; return 1; } ptemp = ptemp->next; } return 0;}//按照书名查找int link::find_node(string n){ node *ptemp = head->next; for(int count=0;count<number;count++) { if(ptemp->name == n) { cout<<"图书的编号为:"<<ptemp->isbn<<" 书名为:"<<ptemp->name<<" 定价为:"<<ptemp->price<<endl; return 1; } ptemp = ptemp->next; } return 0;}//按照价格查找int link::find_node(float p){ node *ptemp = head->next; for(int count=0;count<number;count++) { if(ptemp->price == p) { cout<<"图书的编号为:"<<ptemp->isbn<<" 书名为:"<<ptemp->name<<" 定价为:"<<ptemp->price<<endl; return 1; } ptemp = ptemp->next; } return 0;}//插入int link::inrt_node(int pos){ if((pos > number)||(pos<0)) { cout<<"插入位置错误!"<<endl; return 0; } el { node *ptemp = head,*pnew; for(int i=0;i<pos-1;i++) { ptemp = ptemp->next; } pnew = new node; cout<<"请按顺序输入图书的isbn,书名,价格:"; cin>>pnew->isbn>>pnew->name>>pnew->price; pnew->next = ptemp->next; ptemp->next = pnew; number += 1; } return 1;}//删除int link::delete_node(int d){ if((d > number)||(d<0)) { cout<<"删除位置错误!"<<endl; return 0; } el { node *ptemp = head,*pdelete; for(int i=0;i<d-1;i++) { ptemp = ptemp->next; } pdele二十四节气歌歌词te = ptemp->next; ptemp->next = pdelete->next; delete pdelete; number -= 1; } return 1;}//修改int link::mod_node(int d){ int aa; string bb; float cc; if((d > number)||(d<0)) { cout<<"要修改的位置错误!"<<endl; return 0; } el { node *ptemp = head->next; for(int i=0;i<d-1;i++) { ptemp = ptemp->next; } cout<<"要修改编号请输入0,要修改书名请输入1,要修改价格请输入2:"; int k; cin>>k; switch(k) { ca 0: cout<<"请输入要修改的编号:"; cin>>aa; ptemp->isbn = aa; cout<<endl; break; ca 1: cout<<"请输入要更改的书名:"; cin>>bb; ptemp->name = bb; cout<<endl; break; ca 2: cout<<"请输入要更改的价格:"; cin>>cc; ptemp->price = cc; cout<<endl; break; } } return 1;}//按编号排序void link::sort_node_isbn(){ node *ptemp = head->next,*pre; node *pr = ptemp->next; ptemp->next = null; ptemp = pr; while(ptemp != null) { pr = ptemp->next; pre = head; while(pre->next != null && pre->next->isbn > ptemp->isbn) { pre = pre->next; } ptemp->next = pre->next; pre->next = ptemp; ptemp = pr; } link::print();}//按照价格排序void link::sort_node_price(){ node *ptemp = head->next,*pre; node *pr = ptemp->next; ptemp->next = null; ptemp = pr; while(ptemp != null) { pr = ptemp->next; pre = head; while(pre->next != null && pre->next->price > ptemp->price) { pre = pre->next; } ptemp->next = pre->next; pre->next = ptemp; ptemp = pr; } link::print();}//获取长度int link::get_node(){ return number;}//打印输出void link::print(){ node *ptemp = head->next; for(int k=0;k<number;k++) { cout<<"图书编号:"<<ptemp->isbn<<" 书名为:"<<ptemp->name<<" 价格为:"<<ptemp->price<<endl; ptemp = ptemp->next; }}//功能函数void link::lect(){ int a;//isbn string b;//书名 float c;//定价 int d;//位置 int p;//选择功能 cin>>p; switch(p) { ca 0: cout<<"请输入图书的编号"; cin>>a; if(this->find_node(a)) { cout<<endl; } el cout<<"该图书不存在!"<<endl; break; ca 1: cout<<"请输入图书的名字:"; cin>>b; if(this->find_node(b)) { cout<<endl; } el cout<<"该图书不存在!"<<endl; break; ca 2: cout<<"请输入图书的价格:"; cin>>c; if(this->find_node(c)) { cout<<endl; } el cout<<"该图书不存在!"<<endl; break; ca 3: cout<<"请输入要插入的位置:"; cin>>d; if(this->inrt_node(d)) { cout<<"插入操作的结果为:"<<endl; this->print();//打印插入结果 } break; ca 4: cout<<"请输入要删除的位置:"; cin>>d; if(this->delete_node(d)) { cout<<"删除操作的结果为:"<<endl; this->print();//打印插入结果 } break; ca 5: cout<<"请输入要修改的图书的位置:"; cin>>d; if(this->mod_node(d)) { cout<<"修改后的结果为:"<<endl; this->print(); } break; ca 6: cout<<"按照图书的编号进行排序的结果为:"<<endl; this->sort_node_isbn(); break; ca 7: cout<<"按照图书的价格进行排序的结果为:"<<endl; this->sort_node_price(); break; ca 8: cout<<"当前馆内的图书数量为:"; cout<<this->get_node(); break; }}int main(){ int le=1;//功能选择 int i;//最开始的数量 cout<<"请输入你要输入的图书的数量:"; cin>>i; link l(i); l.create_node(); cout<<endl; cout<<"0---------------------为查找(按编号)"<<endl; cout<<"1------------------刘弗陵---为查找(按书名)"<<endl; cout<<"2---------------------为查找(按定价)"<<endl; cout<<"3---------------------为插入"<<endl; cout<<"4---------------------为删除"<<endl; cout<<"5---------------------为修改"<<endl; cout<<"6---------------------为按照图书编号排序"<<endl; cout<<"7---------------------为按照图书的价格排序"<<endl; cout<<"8---------------------为显示当前馆内的图书总数"<<endl; cout<<"请输入要选择的功能:"; while(le == 1) { l.lect(); cout<<"是否要退出管理系统?(输入0退出、输入1继续)"; cin>>le; cout<<"请输入要选择的功能:"; } cout<<"-----------已退出图书管理系统------------"; return 0;}
4.效果
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-06 03:15:36,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/c031a8c8c781f5e7e50cd6795ede0799.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C++实现图书信息管理系统.doc
本文 PDF 下载地址:C++实现图书信息管理系统.pdf
留言与评论(共有 0 条评论) |