首页 > 作文

C++实现图书信息管理系统

更新时间:2023-04-06 03:15:38 阅读: 评论:0

本文实例为大家分享了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 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图