C++课程设计(图书管理系统)
2014-06-15 11:11
288 查看
#include <iostream> #include <iomanip> #include <cstring> using namespace std; #define N 20 struct book //一本书所应该包含的内容(名字,书籍编码,作者,出版社,库存) { char name ; //名字 int num; //书籍编码 char author ;//作者 char pub ; //出版社 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 ; 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 ; 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; } } else cout<<"书籍已全被借阅!"<<endl; } else cout<<"找不到该书籍!"<<endl<<endl; return head; } /*********************归还书籍*********************/ book *back(book *head) { if(head==NULL) //如果原先链表为空 { cout<<"书库未借出过任何书籍! "<<endl; return head; } cout<<"请输入要归还书籍的名称:"<<endl; char name ; 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; } } else cout<<"输入错误,你没有权限修改图书管理系统!"<<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了
还书后书库显示
最后是退出界面
相关文章推荐
- 图书管理系统需求规格说明书
- 图书管理系统设计blog
- 图书管理系统
- 图书管理系统项目总结(转贴)
- 简单图书管理系统
- J2EE三层结构图书管理系统DEMO 1.0
- 软件工程案例学习-图书管理系统
- 图书管理系统数据库设计
- 图书管理系统读写功能实现
- UML对基于B/S模式的图书管理系统的分析与设计
- 图书管理系统论文
- 图书资料管理系统
- 做了3天的课设--图书管理系统
- UML对基B/S模式的图书管理系统的分析与设计
- java-图书管理系统
- 古老而经典的话题--图书管理系统 C++语言实现
- [软件截图]考研图书销售管理系统软件一期截图(近期发布!)
- 第一个用ASP.NET做的网站---图书管理系统
- 图书管理系统数据库设计
- 图书管理系统分析