C++课程设计(图书管理系统)
来源:互联网 发布:mac 日历 广告 编辑:程序博客网 时间:2024/05/01 11:01
#include <iostream>#include <iomanip>#include <cstring>using namespace std;#define N 20struct book //一本书所应该包含的内容(名字,书籍编码,作者,出版社,库存){char name[N];//名字int num;//书籍编码char author[N];//作者char pub[N];//出版社int total;//这本书总共数量book *next;}*head=NULL,*p1,*p2;int n=0; /********************增加书籍**********************/book *creat() //建立链表 { p1=new(book); //开辟动态内存存储空间存放新结点 cout<<"请输入要增加的书籍编号,输入为0时停止输入: "; cin>>p1->num; while(p1->num!=0) { n++; if(n==1) head=p1; //第一个结点赋给头结点 else p2->next=p1; //往下链接新建立的结点 cout<<"请输入书籍名字:"; cin>>p1->name; cout<<"请输入书籍作者:"; cin>>p1->author; cout<<"请输入书籍出版社:"; cin>>p1->pub; cout<<"请输入要添加该书籍数目:";cin>>p1->total; p2=p1; cout<<"请输入要增加的书籍编号,输入为0时停止输入: "; p1=new(book); //继续开辟动态内存存储空间存放新结点 cin>>p1->num; }cout<<endl<<endl; delete p1; //停止建立新结点 p2->next=NULL; return head; } /*********************输出显示当前书籍信息*******************/ void print(book *head)//输出链表 { book *p; p=head; if(p==NULL){cout<<"书库里没有书籍! "<<endl; return;} cout<<"目前书库所含书籍信息为:"<<endl<<"编号"<<" "<<"名字"<<" "<<"作者"<<" "<<"出版社"<<" "<<"数目"<<endl;do { cout<<p->num<<" "<<p->name<<setw(10)<<p->author<<" "<<p->pub<<setw(10)<<p->total<<endl; p=p->next; } while(p!=NULL); }/****************删除书籍**************************/book *del(book *head) //删除结点 { book *p1,*p2; int num;if(head==NULL) //如果原先链表为空 { cout<<"书库里没有书籍!"<<endl; return head; } cout<<"请输入要删除书籍的编码:"<<endl;cin>>num; p1=head; while(num!=p1->num && p1->next!=NULL) //找不到相应的结点就往下继续搜索 { p2=p1; p1=p1->next; } if(num==p1->num) //找到结点 { if(p1==head) //结点是第一位 head=p1->next; else //结点不是第一位 p2->next=p1->next; cout<<"删除成功"<<endl<<endl; n--; print(head); } else cout<<"不存在该编号的书籍"<<endl<<endl; return head; } /****************通过编号查询书籍**************************/void find_num(book *head) //删除结点 { book *p1; int num;cout<<"请输入要查询的书籍编号:"<<endl;cin>>num; if(head==NULL) //如果原先链表为空 { cout<<"书库里没有书籍!"<<endl; return; } p1=head; while(num!=p1->num && p1->next!=NULL) //找不到相应的结点就往下继续搜索 { p1=p1->next; } if(num==p1->num) //找到结点 { cout<<"查找到的书籍信息为:"<<endl<<"编号"<<" "<<"名字"<<" "<<"作者"<<" "<<"出版社"<<" "<<"数目"<<endl;cout<<p1->num<<setw(10)<<p1->name<<setw(7)<<p1->author<<setw(10)<<p1->pub<<setw(8)<<p1->total<<endl; } else cout<<"找不到该书籍!"<<endl<<endl; }/****************通过书名查询书籍**************************/void find_name(book *head) //删除结点 { book *p1;char name[N];cout<<"请输入要查询的书籍名字:"<<endl;cin>>name; if(head==NULL) //如果原先链表为空 { cout<<"书库里没有书籍!"<<endl;return; } p1=head; while(strcmp(name,p1->name)!=0 && p1->next!=NULL) //找不到相应的结点就往下继续搜索 { p1=p1->next; } if(strcmp(name,p1->name)==0) //找到结点 { cout<<"查找到的书籍信息为:"<<endl<<"编号"<<" "<<"名字"<<" "<<"作者"<<" "<<"出版社"<<" "<<"数目"<<endl;cout<<p1->num<<setw(10)<<p1->name<<setw(7)<<p1->author<<setw(10)<<p1->pub<<setw(8)<<p1->total<<endl; } else cout<<"找不到该书籍!"<<endl<<endl; }/*********************借阅书籍*******************/ book *borrow(book *head){if(head==NULL) //如果原先链表为空 { cout<<"书库里没有书籍!"<<endl;return head; } cout<<"请输入要借阅书籍的名称:"<<endl;char name[N];cin>>name;book *p1; p1=head; while(strcmp(name,p1->name)!=0 && p1->next!=NULL) //找不到相应的结点就往下继续搜索 { p1=p1->next; } if(strcmp(name,p1->name)==0) //找到结点 { cout<<"查找到的书籍信息为:"<<endl<<"编号"<<" "<<"名字"<<" "<<"作者"<<" "<<"出版社"<<" "<<"数目"<<endl;cout<<p1->num<<setw(10)<<p1->name<<setw(7)<<p1->author<<setw(10)<<p1->pub<<setw(8)<<p1->total<<endl;if(p1->total!=0){cout<<"确定要借阅该书籍吗?"<<endl<<"1.确定"<<'\t'<<"2.取消"<<endl;int num; cin>>num;switch(num){case 1:cout<<"借阅成功!"<<endl;(p1->total)--;break;case 2: break;default:cout<<"输入有误!"<<endl;break;}}elsecout<<"书籍已全被借阅!"<<endl; } else cout<<"找不到该书籍!"<<endl<<endl; return head;}/*********************归还书籍*********************/book *back(book *head){if(head==NULL) //如果原先链表为空 { cout<<"书库未借出过任何书籍! "<<endl;return head; } cout<<"请输入要归还书籍的名称:"<<endl;char name[N];cin>>name;book *p1; p1=head; while(strcmp(name,p1->name)!=0 && p1->next!=NULL) //找不到相应的结点就往下继续搜索 { p1=p1->next; } if(strcmp(name,p1->name)==0) //找到结点 { cout<<"确定要归还该书籍吗?"<<endl<<"1.确定"<<'\t'<<"2.取消"<<endl;int num; cin>>num;switch(num){case 1:cout<<"还书成功!"<<endl;(p1->total)++;break;case 2: break;default:cout<<"输入有误!"<<endl;break;} } else cout<<"不存在该书籍!"<<endl<<endl; return head;} /***********************查询菜单***********************/void find(){int num;cout<<"***************************************************"<<endl;cout<<"* 请输入对应功能的数字完成操作 *"<<endl;cout<<"* 1.通过编号查找 *"<<endl;cout<<"* 2.通过书名查找 *"<<endl;cout<<"***************************************************"<<endl;cin>>num;switch(num){case 1:find_num(head);break;case 2:find_name(head);break;default:cout<<"输入有误!"<<endl;break;}} /***********************管理菜单***********************/void manage(){int num1;cout<<"请输入管理员密码(123456):"<<endl;//规定只有管理员才有权限增减图书cin>>num1;if(num1==123456){int num;cout<<"***************************************************"<<endl;cout<<"* 请输入对应功能的数字完成操作 *"<<endl;cout<<"* 1.增加书籍 *"<<endl;cout<<"* 2.删除书籍 *"<<endl;cout<<"***************************************************"<<endl;cin>>num;switch(num){case 1:head=creat();print(head);break;case 2:head=del(head);break;default:cout<<"输入有误!"<<endl;break;}}elsecout<<"输入错误,你没有权限修改图书管理系统!"<<endl;}void displaymain(){cout<<"***************************************************"<<endl;cout<<"* 请输入对应功能的数字完成操作 *"<<endl;cout<<"* 1.查询 *"<<endl;cout<<"* 2.借书 *"<<endl;cout<<"* 3.还书 *"<<endl;cout<<"* 4.管理 *"<<endl;cout<<"* 5.书库 *"<<endl;cout<<"* 6.退出 *"<<endl;cout<<"***************************************************"<<endl;} int main(){cout<<endl<<" 欢迎使用图书管理系统"<<endl<<endl;int choice=1;while(choice!=0){displaymain();cin>>choice;switch(choice){case 1:find();break;case 2: head=borrow(head);break;case 3: head=back(head);break;case 4:manage();break;case 5:print(head);break;case 6:choice=0;break;default:cout<<"输入有误,请重新输入!"<<endl;break;}}cout<<"***************************************************"<<endl;cout<<"* *"<<endl;cout<<"* 感谢您的使用! *"<<endl;cout<<"* *"<<endl;cout<<"* designer:赵锦堃 from:自动化1122 *"<<endl;cout<<"* *"<<endl;cout<<"***************************************************"<<endl;return 0;}
菜单首页
进入界面要首先为书库添加书籍,否则其它操作无法完成例如
添加书籍在管理板块,但是我设定了只有管理员才有权限添加,这样加强了系统的安全性
选择相应编号添加书籍,输入书籍的相关信息,输入结束后会显示出所有书籍信息
如果删除书籍只需输入对应的编码便可以删除(前提也是要有管理员权限并且书籍的编码正确)
查询模块有按书名查找和按编号查找
按编号查找
按书名查找
当要找的书书库没有
借书模块是输入书名查找(因为我们借书通常都只知道书名,总不可能还没借到书就知道书的编号了吧!)
当借了书之后该书籍总量就会少一本,
当总量只剩下0本,系统就会提示借不了了
同样,还书的话如果书库有这本书,那它的总量就会+1了
还书后书库显示
最后是退出界面
1 0
- (C语言课程设计)图书管理系统
- 图书管理系统(c语言课程设计)
- C语言课程设计—图书管理系统
- C语言课程设计—图书管理系统
- 图书管理系统C语言课程设计2
- 课程设计:图书管理系统
- 课程设计:图书管理系统
- 课程设计--图书管理系统
- 数据结构课程设计(图书管理系统)
- C++课程设计(图书管理系统)
- 课程设计--图书信息管理系统(C语言)
- 课程设计---图书登记管理系统
- 数据结构课程设计 图书管理系统
- 课程设计之图书管理系统
- 数据结构课程设计-图书管理系统
- 数据结构课程设计--图书管理系统
- 数据结构课程设计-图书管理系统
- 数据结构课程设计--图书管理系统
- android网络编程——使用Android中的网络连接
- 搜狐一题面试题 链表的排序
- OCP 1Z0 051 149
- 温家宝在河北省兴隆县六道河中学作地理讲座
- nginx缓存
- C++课程设计(图书管理系统)
- android开发Day1
- 从网站细节入手提高易用性
- 枚举
- 【Flume NG用户指南】(1)设置
- Swift+HAporxy+Keepalived对象存储搭建
- u-boot学习(一):u-boot概述
- JavaScript学习笔记
- 数据源增强--主数据