C图书信息管理系统_第1页
C图书信息管理系统_第2页
C图书信息管理系统_第3页
C图书信息管理系统_第4页
C图书信息管理系统_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品文档C图书信息管理系统设计题目:3、图书信息管理设计图书信息包括: 登录号、 书名、 作者名、 分类号、 出版单位、 出版时间、 价格等。试设计一图书信息管理系统,使之能提供以下功能:(1) 系统以菜单方式工作(2) 图书信息录入功能 ( 图书信息用文件保存) 输入(3) 图书信息浏览功能输出(4) 查询和排序功能: (至少一种查询方式) 算法* 按书名查询* 按作者名查询(5) 图书信息的删除与修改 ( 可选项 )(6) 参考界面如下:*图书信息管理* 图书信息录入* 图书信息浏览* 图书查询1 书名2 作者* 图书信息更改* 程序结束/Book.h#pragma once#includ

2、e <string>#include <iostream>#include <fstream>class Timepublic:int Year;int Month;int Day;friend std:istream& operator>>(std:istream & in,Time &r);friend std:ifstream& operator>>(std:ifstream & in,Time &r);friend std:ostream& operator<<

3、;(std:ostream& out,Time &r);friend bool operator<=(Time &t1,Time &t2);friend bool operator>=(Time &t1,Time &t2);friend bool operator<(Time &t1,Time &t2);friend bool operator>(Time &t1,Time &t2);friend bool operator=(Time &t1,Time &t2);frien

4、d bool operator!=(Time &t1,Time &t2);class Bookpublic:int Number;static int Count;std:string Name;std:string Author;int Type;std:string Unit;Time Date;double Price;public:static void SetCount(int count);friend std:istream & operator >>(std:istream &in,Book & r);friend std:i

5、fstream & operator>>(std:ifstream &in,Book &r);friend std:ostream & operator <<(std:ostream &out,Book &r);friend void Swap(Book & a,Book &b);/Book.cpp#include "Book.h"using namespace std;istream& operator>>(istream& in,Time &r)s

6、tring s;cout<<"ny="in>>r.Year;cout<<"m="in>>r.Month;cout<<"d="in>>r.Day;return in;ifstream& operator>>(ifstream &in,Time &r)string s;in>>r.Year>>s;in>>r.Month>>s;in>>r.Day;return in;ostr

7、eam& operator<<(ostream& out,Time& r)out<<r.Year<<"- "out<<r.Month<<"- "out<<r.Day;return out;bool operator<=(Time &t1,Time &t2)return t1<t2 | t1=t2;bool operator>=(Time &t1,Time &t2)return t1>t2 | t1=t2;

8、bool operator<(Time &t1,Time &t2)return t1.Year<t2.Year | t1.Year=t2.Year && t1.Month<t2.Month | t1.Year=t2.Year && t1.Month=t2.Month && t1.Day<t2.Day;bool operator>(Time &t1,Time &t2)return t1.Year>t2.Year | t1.Year=t2.Year && t1.Mon

9、th>t2.Month | t1.Year=t2.Year && t1.Month=t2.Month && t1.Day<=t2.Day;bool operator=(Time &t1,Time &t2)return t1.Year=t2.Year && t1.Month=t2.Month && t1.Day=t2.Day ;bool operator!=(Time &t1,Time &t2)return !(t1=t2);int Book:Count=0;精品文档精品文档void Bo

10、ok:SetCount(int count)(Count=count;)istream & operator>>(istream& in,Book & r)(cout<<"登录号:t"<<(r.Number=r.Count+)<<endl;cout<<"书名:t"in>>r.Name;cout<<"作者:t"in>>r.Author;cout<<"分类号:t"in>>r.T

11、ype;cout<<"出版单位:t"in>>r.Unit;cout<<"出版时间:t"in>>r.Date;cout<<"价格:t"in>>r.Price;return in;)ifstream& operator>>(ifstream& in,Book &r)(string s;in>>s>>r.Number;in>>s>>r.Name;in>>s>>r.

12、Author;in>>s>>r.Type;in>>s>>r.Unit;in>>s;in>>r.Date;in>>s>>r.Price;return in;)ostream& operator<<(ostream& out,Book & r)(out<<"登录号:t"<<r.Number<<endl;out<<"书名:t"<<r.Name<<endl;ou

13、t<<"作者:t"<<r.Author<<endl;out<<"分类号:t"<<r.Type<<endl;out<<"出版单位:t"<<r.Unit<<endl;out<<"出版时间:t"<<r.Date<<endl;out<<" 价格 :t"<<r.Price<<endl;return out;void Swap(B

14、ook &a,Book &b)Book t;t=a,a=b,b=t;/Create.h#pragma once#include "Book.h"#include <deque>class Createpublic:void Start(std:deque<Book> & d);/Create.cpp#include "Create.h"using namespace std;void Create:Start(std:deque<Book> &d)Book t;int n;cout<

15、;<" 欢迎使用图书管理系统信息录入功能 "<<endl; docin>>t;d.push_back(t);while(cout<<"1. 继续 t2. 返回 n",cin>>n,n=1);cout<<" 信息录入完毕 "<<endl;return ;/Veiw.h#pragma once#include <deque>#include "Book.h"class Veiwpublic:void Start(std:deque

16、<Book> &d); ;/Veiw.cpp#include "Veiw.h"using namespace std;void Veiw:Start(std:deque<Book> &d)int n;cout<<" 欢迎使用图书信息浏览功能"<<endl;cout<<" 请选择每页的信息量 "<<endl;do cout<<"1.10t2.20t3.40t4.100n",cin>>n; while(!(n

17、>=1 && n<=4);switch(n)case 1:n=10;break;case 2:n=20;break;case 3:n=40;break;case 4:n=100;break;Book t;int i,j,m,p;p=0;doi=n;cout<<"第"<<p/n+1<<"页"<<endl;while(p<d.size() && i-)cout<<dp+<<endl;cout<<endl;do cout<

18、<"1. 下 一页 t2. 上 一 页 t3. 跳转 到 .t4. 返回 n",cin>>m; while(!(m>=1 && m<=4);switch(m)case 1:continue;break;case 2:if(p-n<=0)cout<<" 这已经是第一页了 "<<endl;p=0;continue;elsep=p+(p>=d.size() ? n-d.size()%n:0)-2*n;continue;break;case 3:do cout<<&qu

19、ot; 请输入页号: ",cin>>j;while(!(j>0) &&(cout<<" 输入有误,请重新输入! n",1) | !(j<=d.size()/n+ (d.size()%n!=0)&& (cout<<" 输入的页数过大,请重新输入 !n",1);p=(j-1)*n;continue;break;default:m=4;break;while(m!=4);return ;/Sort.h#pragma once#include <deque>#i

20、nclude "Book.h"class Sortstruct area int a;int b;std:deque<area> byname1(std:deque<Book>& d,area t);std:deque<area> byname2(std:deque<Book>& d,area t);std:deque<area> byauthor1(std:deque<Book>& d,area t);std:deque<area> byauthor2(std:de

21、que<Book>& d,area t);std:deque<area> bytype1(std:deque<Book>& d,area t);std:deque<area> bytype2(std:deque<Book>& d,area t); std:deque<area> byunit1(std:deque<Book>& d,area t); std:deque<area> byunit2(std:deque<Book>& d,area t)

22、;std:deque<area> bydate1(std:deque<Book>& d,area t); std:deque<area> bydate2(std:deque<Book>& d,area t); std:deque<area> byprice1(std:deque<Book>& d,area t); std:deque<area> byprice2(std:deque<Book>& d,area t); public:void Start(std:deq

23、ue<Book> &d);/Sort.cpp#include "Sort.h"#include <deque>#include <iostream>using namespace std;void Sort:Start(std:deque<Book> &d)int m;int a,b,c;cout<<"欢迎使用图书信息管理系统排序功能"<<endl;do cout<<"请选择第一、第二、第三排序方式,如: 1 2 3"<<e

24、ndl;cout<<"1.按书名- cout<<"2.按书名- cout<<"3.按作者名- cout<<"4.按作者名- cout<<"5.按分类号- cout<<"6.按分类号-cout<<"7.按出版单位- cout<<"8.按出版单位- cout<<"9.按出版时间- cout<<"10.按出版时间"<<endl;"<<end

25、l;由小到大"<<endl;由大到小"<<endl;由小到大"<<endl;由大到小"<<endl;由小到大"<<endl;"<<endl;"<<endl;由大到小"<<endl;cout<<"11.按价格-由小到大"<<endl;cout<<"12.按价格-由大到小"<<endl;do cout<<"第一标准:

26、",cin>>a;while(!(a>=1 && a<=12);do cout<<"第二标准:",cin>>b;while(!(b>=1 && b<=12) | b=a && (cout<<" 不能与第一标准重复!n",1);do cout<<"第三标准:",cin>>c;while(!(c>=1 && c<=12) | c=a && (c

27、out<<"不能与第一标准重复!n",1) | c=b && (cout<<"不能与第二标准重复!n",1); std:deque<area> (Sort:*f3)(std:deque<Book> &d,area t); int i,j;for(i=0;i<3;i+)m = i=0?a:i=1?b:c;switch(m)case 1:fi=&Sort:byname1;break;case 2:fi=&Sort:byname2;break;case 3:fi=&a

28、mp;Sort:byauthor1;break;case 4:fi=&Sort:byauthor2;break;case 5:fi=&Sort:bytype1;break;case 6:fi=&Sort:bytype2;break;case 7:fi=&Sort:byunit1;break;case 8:fi=&Sort:byunit2;break;case 9:fi=&Sort:bydate1;break;case 10:fi=&Sort:bydate2;break;case 11:fi=&Sort:byprice1;break

29、;case 12:fi=&Sort:byprice2;break;area t;t.a=0,t.b=d.size()-1;deque<area> r,s;r=(this->*f0)(d,t);for(i=0;i<r.size();i+)s=(this->*f1)(d,ri);for(j=0;j<s.size();j+)(this->*f2)(d,sj);cout<<" 排序已完毕"<<endl;while(cout<<"1. 继续 t2. 返回 n",cin>&g

30、t;m,m=1); return ; std:deque<Sort:area> Sort:byauthor1(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Author<dm.Author)m=j;if(m!=i)Swap(di,dm); i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<

31、=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r; std:deque<Sort:area> Sort:byauthor2(std:deque<Book> &d, Sort:area t)int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Author>dm.Author)m=j;if(m!=i)Swap(di,dm);i=0;area a;

32、std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;std:deque<Sort:area> Sort:byname1(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<

33、;=t.b;j+)if(dj.Name<dm.Name)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;std:deque<Sort:area> Sort:byname2(std:deque<Book> &d,

34、Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Name>dm.Name)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;std:

35、deque<Sort:area> Sort:bytype1(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Type<dm.Type)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.

36、a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;t) std:deque<Sort:area> Sort:bytype2(std:deque<Book> &d, Sort:area int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Type>dm.Type)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;

37、while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r; std:deque<Sort:area> Sort:bydate1(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Date<dm.Date)m=j;

38、if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;std:deque<Sort:area> Sort:bydate2(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i&

39、lt;=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Date>dm.Date)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;std:deque<Sort:area> Sort:byunit1

40、(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Unit<dm.Unit)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_

41、back(a);a.a=a.b+1; return r;std:deque<Sort:area> Sort:byunit2(std:deque<Book> &d, Sort:area t)int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Unit>dm.Unit)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<

42、;=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1;return r;std:deque<Sort:area> Sort:byprice1(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<=t.b;j+)if(dj.Price<dm.Price)m=j;if(m!=i)Swap(di,dm);i=0;area a;st

43、d:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1; return r;std:deque<Sort:area> Sort:byprice2(std:deque<Book> &d, Sort:area t) int i,j,m;for(i=t.a;i<=t.b-1;i+)m=i;for(j=i+1;j<

44、;=t.b;j+)if(dj.Price>dm.Price)m=j;if(m!=i)Swap(di,dm);i=0;area a;std:deque<area> r;a.a=a.b=t.a;while(a.b=a.a)<t.b)while(+a.b<=t.b && da.b.Price=da.a.Price);a.b-;if(a.b>a.a)r.push_back(a);a.a=a.b+1; return r;/Search.h#pragma once#include <deque>#include "Book.h&qu

45、ot;class Searchprivate:std:deque<int> byname(std:deque<Book> &d,std:deque<int> & a); std:deque<int> byauthor(std:deque<Book> & d,std:deque<int> &a); std:deque<int> bytype(std:deque<Book>& d,std:deque<int> &a); std:deque<

46、;int> byunit(std:deque<Book>& d,std:deque<int> &a); std:deque<int> bydate(std:deque<Book>& d,std:deque<int> &a); std:deque<int> byprice(std:deque<Book>& d,std:deque<int> &a); std:deque<int> Find(std:deque<Book> &a

47、mp;d,std:deque<int> &a);double Like(std:string & s,std:deque<std:string> & k);public:void Start(std:deque<Book> &d);std:deque<int> Find(std:deque<Book> &d);/Search.cpp#pragma once#include <deque>#include "Book.h"class Searchprivate:st

48、d:deque<int> byname(std:deque<Book> &d,std:deque<int> & a); std:deque<int> byauthor(std:deque<Book> & d,std:deque<int> &a); std:deque<int> bytype(std:deque<Book>& d,std:deque<int> &a); std:deque<int> byunit(std:deque

49、<Book>& d,std:deque<int> &a); std:deque<int> bydate(std:deque<Book>& d,std:deque<int> &a); std:deque<int> byprice(std:deque<Book>& d,std:deque<int> &a); std:deque<int> Find(std:deque<Book> &d,std:deque<int>

50、 &a);double Like(std:string & s,std:deque<std:string> & k);public:void Start(std:deque<Book> &d);std:deque<int> Find(std:deque<Book> &d);/Delete.h#pragma once#include <deque>#include "Book.h"class Deletepublic:void Start(std:deque<Book&g

51、t; &d);void Remove(std:deque<Book> &d,std:deque<int> & a);/Delete.cpp#include "Delete.h"#include "Search.h"using namespace std;void Delete:Start(std:deque<Book> &d)deque<int> ar;cout<<" 欢迎使用图书信息管理系统信息删除功能 "<<endl;int m

52、,n,i,j;docout<<" 你打算通过哪种方式删除信息?"<<endl;cout<<"1. 通过登录号查找到图书并删除"<<endl;cout<<"2. 删除一个区间的登录号的图书信息 "<<endl;cout<<"3. 通过查询功能查找到图书并删除"<<endl;cout<<"4. 删除全部图书信息 "<<endl;do cin>>n;while(!(n&g

53、t;=1 && n<=3);switch(n)case 1:do cout<<" 请 输 入 要 删 除 的 图 书 的 登 录 号 "<<endl,cin>>n;while(!(n>=1 && n<d.size();for(i=0;i<d.size();i+)if(n=di.Number)break;if(i>=d.size()cout<<" 未能找到该登录号,可能是该图书已被删除"<<endl;continue;cout<&

54、lt;" 确认要删除此图书? "<<endl;cout<<di<<endl;do cout<<"1. 删除 t2. 取消 n",cin>>m;while(!(m>=1 && m<=2);if(m=1)for(j=i;j<d.size()-1;j+)dj=dj+1;d.pop_back();cout<<"该图书信息已成功删除"<<endl; break;case 2:int a,b;do cout<<&quo

55、t;请输入起始登录号:",cin>>a;while(!(a>=1 && a<d.size() && (cout<<"输入的登录号有误!n",1);do cout<<"请输入结束登录号:",cin>>b;while(!(b>=1 && b<d.size() && (cout<<"输入的登录号有误!n",1);if(a>b)m=a,a=b,b=m;for(i=0;i<d.

56、size();i+)if(di.Number>=a && di.Number<=b) ar.push_back(i);if(ar.size()=0)(cout<<"未找到任何位于此登录号区间的图书,可能信息已被删除!"<<endl;break;cout<<"确认要删除这"<<ar.size()<<"条信息吗? "<<endl;for(i=0;i<ar.size();i+)cout<<dari<<endl;d

57、o cout<<"1.删除t2.取消 n",cin>>m;while(!(m>=1 && m<=2); if(m!=1)break;else(Remove(d,ar);cout<<"信息已成功删除"<<endl;break; break;case 3:(Search s;ar=s.Find(d);if(ar.size()=0) (cout<<"未查找到任何结果!"<<endl; break;)cout<<"确认要删

58、除以下这"<<ar.size()<<"条信息吗?"<<endl;for(i=0;i<ar.size();i+)cout<<dari<<endl;do cout<<"1.删除t2.取消n",cin>>m;while(!(m>=1 && m<=2);if(m=1)break;Remove(d,ar);cout<<"信息已成功删除"<<endl;)break;case 4:cout<&

59、lt;"确认要删除所有共"<<d.size()<<" 条信息吗?"<<endl;do cout<<"1.删除t2.取消 n",cin>>m;while(!(m>=1 && m<=2);if(m!=1)break;d.clear();cout<<"信息已全部删除"<<endl;break;)while(cout<<"1. 继续t2.返回 n”,cin>>m,m=1);return ; void Delete:Remove(std:deque<Book>

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论