C++编写的一个图书管理系统,供大家参考,具体内容如下
2018大一的课设,搬到这纪念一下,共1200多行代码
为图书管理人员编写一个图书管理系统,图书管理系统的设计主要是实现对图书的管理和相关操作,包括3个表:
图书信息表——存储图书的基本信息,包括书号、书名、作者、出版社、出版日期、存馆数量、定价等。
读者信息表——存储读者的基本信息,包括学号、姓名、学院、专业班级等。
图书借阅表——存储读者借书的相关信息,包括学号、姓名、书号、书名、借阅日期、应还日期、归还日期等。
用菜单选择方式完成了以下功能:
1、图书信息添加功能:包括书号、书名、作者、出版社、出版日期、存馆数量、定价等。
2、图书信息查询:分别按书名, 按作者名,
按出版单位等进行查询。
3、图书信息排序:按书号、书名等按升序进行排序。
4、图书信息的修改、删除:按书号或书名进行图书的修改和删除。
5、读者信息添加功能:包括学号、姓名、学院、专业、班级等。
6、读者信息查询:分别按学号、姓名、班级等进行查询。
7、读者信息排序:按学号、学院等按升序进行排序。
8、读者信息的修改、删除:按学号+姓名进行读者信息的修改和删除
9、图书借阅:输入学号+书号,如果该书图书信息表中的存馆数量大于0,则可以借出,借出相应数量后修改图书信息表中的存馆数量,在图书借阅表添加该同学的借阅。
10、图书归还:输入学号+书号,修改图书信息表中的存馆数量,在图书借阅表中记录该同学的归还时间。
11、图书借阅查询:分别按学号、书名、学院等进行查询。
#include#include #include #include #include #include #include const int INC=20; using namespace std; class Date{ //Date类 :日期类 public: int day; //日 int month; //月 int year; //年 Date(int d=1,int m=1,int y=2012){ //构造函数 默认初始日期2012.1.1 //判断日期的合法性 if(d>0&&d<32)day=d;else day=1; if(m>0&&m<13)month=m;else m=1; if(y>0)year=y;else year=2012; } void setDay(int d){day=d;} //设置日 void setMonth(int m){month=m;} //设置月 void setYear(int y){year=y;} //年 int getDay(){return day;} //获取年月日 int getMonth(){return month;} int getYear(){return year;} void disp(){cout< =0) { if(isLeapYear(yy)) { dtmp-=366; flag=true; } else { dtmp-=365; flag=false; } yy++; } if(flag) dtmp+=366; else dtmp+=365; yy--; if(isLeapYear(yy)) { m2=29; } else { m2=28; } mtmp=dtmp+dd; int m_day[]={0,31,m2,31,30,31,30,31,31,30,31,30,31}; //每月天数 for(;mtmp>m_day[mm];) { mtmp-=m_day[mm]; if(mm==12) { mm=0; yy++; } mm++; } dd=mtmp; Date dt(yy,mm,dd); return dt; //返回一个新日期 } class Book{ //书号、书名、作者、出版社、出版日期、出版定价、存馆数量 private: string num; //s书号 string title; //标题 string author; //作者 string publisher; //出版社 Date publishdate; //Date类:出版日期 float price; //价格 int howmany; //存馆数量 public: Book(string num0="24416-5",string title0="数据结构",string author0="王红梅,胡明,王涛", string pub0="清华大学出版社",int bd=1,int bm=1,int by=2012,float pr=29.0,int ct=10):publishdate((bd,bm,by)){ num=num0;title=title0;author=author0;publisher=pub0;price=pr;howmany=ct;} void setNum(string num0){num=num0;} //设置书号 void setTitle(string title0){title=title0;} //设置标题 void setAuthor(string author0){author=author0;} //设置作者 void setPublisher(string publisher0){publisher=publisher0;} //设置出版社 void setPublishdate(int bd,int bm,int by){Date d(bd,bm,by);publishdate=d;} //设置出版日期,先构造在复制 void setHowmany(int ct){howmany=ct;} //设置库存 void setPrice(float pr){price=pr;} //设置价格 string getNum(){return num;} // 获取 书号 标题 作者 等信息 string getTitle(){return title;} string getAuthor(){return author;} string getPublisher(){return publisher;} Date getPublishdate(){return publishdate;} int getHowmany(){return howmany;} float getPrice(){return price;} void dispABook(){ cout < '9')&&k >price>>ct; if(title.length()>0) i++; } bookcount=i; cout< >price>>ct;//inf,getchar(); if(title.length()>0){ int d[3]; if(num[0]==10)num=num.substr(1); string2date(pdates,d); by=d[0];bm=d[1];bd=d[2]; book[i]=Book(); book[i].setNum(num); book[i].setTitle(title); book[i].setAuthor(author); book[i].setPublisher(publisher); book[i].setPrice(price); book[i].setHowmany(ct); book[i].setPublishdate(bd,bm,by); } } inf.close() ; return bookcount; } friend class ReaderBorrowBook; int addbook(string num,string title,string author,string publisher,int bd,int bm,int by,float price,int ct)//添加图书信息 { int i=bookcount; book[i]=Book(); book[i].setNum(num); book[i].setTitle(title); book[i].setAuthor(author); book[i].setPublisher(publisher); book[i].setPrice(price); book[i].setHowmany(ct); book[i].setPublishdate(bd,bm,by); ++bookcount; return bookcount; } void searchbookbytitle(string title) //按照书名查找 { bool found=false; for(int i=0;i =0) { book[k].setNum(newnum); cout<<"changebookbynum successed:"< 0) i++; } readercount=i; cout< 0){ if(num[0]==10)num=num.substr(1); reader[i]=Reader(); reader[i].setNum(num); reader[i].setName(name); reader[i].setCollege(college); reader[i].setClassno(classno); } } inf.close() ; return readercount; } int addreader(string num,string name,string college,string classno) //添加读者 { int i=readercount; reader[i]=Reader(); reader[i].setNum(num); reader[i].setName(name); reader[i].setCollege(college); reader[i].setClassno(classno); ++readercount; return readercount; } void searchreaderbynum(string num){ //按学号查询读者 bool found=false; for(int i=0;i =0) { cout<<"reader to be deleted :"< 1) i++; } borrowbookcount=i; cout< 0){ if(num[0]==10)num=num.substr(1); borrowbook[i]=BorrowBook(); int d[3]; string2date(borrowdates,d); int by=d[0],bm=d[1],bd=d[2]; borrowbook[i].setBorrowdate(bd,bm,by); string2date(toreturndates,d); by=d[0];bm=d[1];bd=d[2]; borrowbook[i].setToreturndate(bd,bm,by); string2date(returndates,d); by=d[0];bm=d[1];bd=d[2]; borrowbook[i].setReturndate(bd,bm,by); borrowbook[i].setNum(num); borrowbook[i].setName(name); borrowbook[i].setBookNum(booknum); borrowbook[i].setTitle(title); } } inf.close() ; return borrowbookcount; } friend class ReaderBorrowBook; int searchbyreaderbook(string readernum,string booknum) //按学号查询 { for(int i=0;i >num1>>title0>>author0>>pub0>>pd0>>pm0>>py0>>price0>>howmany0; bk.addbook(num1,title0,author0,pub0,pd0,pm0,py0,price0,howmany0); bk.write2Bookfile(); int i=bk.bookcount-1; cout <>num1>>name0>>college0>>class0; rd.addreader(num1,name0,college0,class0); rd.write2Readerfile(); int i=rd.readercount-1; cout <>select; cin.get(); switch(select){ case 1: cout<<"书名:"; getline(cin,title,'\n'); bk.searchbookbytitle(title); break; case 2: cout<<"作者名:"; getline(cin,author,'\n'); bk.searchbookbyauthor(author); break; case 3: cout<<"出版社:"; getline(cin,pub,'\n'); bk.searchbookbypub(pub);break; case 0:return; } } } void sortbook(){ //排序 int select; cout<<"3.图书信息排序:按书号、书名等按升序进行排序。"< >select; switch(select){ case 1: cout<<"书号:"; bk.sortbookbynum(); dispBook(); break; case 2: cout<<"书名:"; bk.sortbookbytitle(); dispBook(); break; case 0:return; } } void editbook(){ //编辑书 string oldtitle="VisualBasic 程序设计教程",newtitle="VisualBasic 程序设计教程-C",oldnum="40667",newnum="40667-C"; int select; cout<<"4.图书信息的修改、删除:按书号或书名进行图书的修改和删除。"< >select; cin.get(); switch(select){ case 1: cout<<"old书号:"; getline(cin,oldnum,'\n'); cout<<"new书号:"; getline(cin,newnum,'\n'); cout<<"changebookbynum: "< >select; cin.get(); if(select==0)return; cout<<"borrow学号:"; getline(cin,rdnum,'\n'); cout<<"borrow书号:"; getline(cin,booknum,'\n'); bookpos=bk.searchbookbynump(booknum); rdpos=rd.searchreaderbynump(rdnum); if(bookpos>0&&rdpos>0){ int hm=bk.book[bookpos].getHowmany(); if(hm>0){ name=rd.reader[rdpos].getName(); title=bk.book[bookpos].getTitle(); bk.book[bookpos].setHowmany(hm-1); //修改图书信息表中的存馆数量 bb.borrowbook[bb.borrowbookcount].setNum(rdnum); bb.borrowbook[bb.borrowbookcount].setBookNum(booknum); bb.borrowbook[bb.borrowbookcount].setName(name); bb.borrowbook[bb.borrowbookcount].setTitle(title); SYSTEMTIME ct; GetLocalTime(&ct);//取系统时间,如果用GetSystemTime(&ct);那么获取的是格林尼治标准时间 y=ct.wYear; m=ct.wMonth; d=ct.wDay; Date toret=Date(d,m,y)+60; bb.borrowbook[bb.borrowbookcount].setBorrowdate(d,m,y); bb.borrowbook[bb.borrowbookcount].setToreturndate(toret.getDay(),toret.getMonth(),toret.getYear()); bb.borrowbook[bb.borrowbookcount].setReturndate(1,1,1); bb.borrowbookcount++; } else cout< >selectttt; cin.get(); if(selectttt==0) {return;} cout<<"return学号:"< =0){ if(bookpos>0&&rdpos>0){ bk.book[bookpos].setHowmany(bk.book[bookpos].getHowmany()+1); SYSTEMTIME ct; GetLocalTime(&ct);//取系统时间 y=ct.wYear; m=ct.wMonth; d=ct.wDay; bb.borrowbook[k].setReturndate(d,m,y); } else{ if(bookpos<0)cout<<"No book "< >selectt; cin.get(); switch(selectt) { case 1: cout<<"学号:"< >selectt1; switch(selectt1){ case 1: cout<<"学号:"; rd.sortreaderbyxuahao(); dispReader(); break; case 2: cout<<"学院:"; rd.sortreaderbyxueyuan(); dispReader(); break; case 0:return; } } void editreader() { string xh,xm,xy,bj,newxh,newxm,newxy,newbj; int select2; cout<<"8.学生信息的修改、删除:。"< >select2; cin.get(); switch(select2) { case 1:cout<<"要修改学生的学号为:"< >xh; cout<<"请输入新学号"< >newxh; rd.changereaderbyxuehao(xh,newxh); break; case 2:cout<<"要删除的学生学号为:"< >xh; rd.deletereaderbyxuehao(xh); break; case 3:cout<<"修改的学生姓名为:"< >xm; cout<<"请输入修改后的姓名:"< >newxm; rd.changereaderbyxingming(xm,newxm); break; case 4:cout<<"要删除的学生姓名为:"< >xm; rd.deletereaderbyxingming(xm); break; case 0: rd.write2Readerfile(); cout<<"修改成功"; return; } } } void searchreaderborrowbook() { int bz; string xxh,ssm; while(1) {cout<<"11.图书借阅查询:分别按学号、书名、学院等进行查询。"< >bz; switch(bz) { case 1:cout<<"请输入学号"< >xxh; bb.searchborrowbookbyxuehao(xxh);break; case 2:cout<<"请输入书名"< >ssm;bb.searchborrowbookbysm(ssm);break; case 0: return; } } } }; int main(){ ReaderBorrowBook rbb; rbb.init(); rbb.dispBook(); rbb.dispReader(); rbb.dispBorrowbook(); rbb.dispCount(); int select; while(1){ cout<<"菜单选择功能:"< >select; switch(select){ case 1:rbb.addbook(); rbb.dispCount();break; case 2:rbb.searchBook();break; case 3:rbb.sortbook();break; case 4:rbb.editbook();break; case 5:rbb.addreader(); rbb.dispCount();break; case 6:rbb.searchreader();break; case 7:rbb.sortreader();break; case 8:rbb.editreader();break; case 9:rbb.readerborrowabook();break; case 10:rbb.readerreturnabook();break; case 11:rbb.searchreaderborrowbook();break; case 0:rbb.write2file();exit(0); } } return 0; }
部分截图
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。