C++图书管理系统源代码
- 格式:docx
- 大小:238.54 KB
- 文档页数:67
图书管理系统系统功能:1. 借书:根据借书人提出的图书编号(id)查询该图书,如果该图书现存量(store)不为0,则提示输入借阅者的学号(num),为借书人办理借书手续,提示用户该书已被借出。
2. 归书:根据借书人的学号查询该读者的信息,若有该读者,则提示输入所借书籍的编号(id),为该读者办理还书手续,提示该书已还。
3. 书籍管理:弹出书籍管理界面,输入所要执行操作的号码:(1 )增加书籍:弹出注册新书的窗口,按照提示输入所增加书籍的信息,最后,提示用户该书已被注册。
(2)删除书籍:弹出删除书籍的窗口,输入所要删除书籍的编号(id),输出该书的信息,确认是否删除该书, 1 为删除,0 为放弃。
(3)修改书籍:弹出修改书籍的窗口,输入所要修改书籍的编号(id),输出该书的信息,确认是否修改该书, 1 为修改,0 为放弃。
之后按照提示重新输入书籍的信息。
4. 读者管理:弹出读者管理界面,输入所要执行操作的号码:1)增加读者:弹出注册读者的窗口,按照提示输入所增加读者的信息,最后,提示用户该读者已被注册。
(2)删除书籍:弹出删除读者的窗口,输入所要删除读者的学号( num ),输出该读者的信息,确认是否删除该读者, 1 为删除,0 为放弃。
(3 )修改书籍:弹出修改读者的窗口,输入所要修改读者的学号( num ),输出该读者的信息,确认是否修改该读者, 1 为修改,0 为放弃。
之后按照提示重新输入读者的信息。
5. 搜索:此搜索包括两方面的搜索,书籍搜索以及读者搜索,弹出搜索的窗口,按照提示输入所要搜索的内容, 1 为书籍搜索, 2 为读者搜索:(1)搜索书籍:弹出搜索书籍的窗口,按照提示输入所要搜索的方式,包括按<1> 书名搜索,<2> 书号搜索,<3> 作者搜索,<4> 出版社搜索,<5> 出版时间搜索;根据所选方式输入相应的内容,若是该书籍存在,则输出该书籍的信息,否则,返回主界面。
(2)搜索读者:弹出搜索读者的窗口,按照提示输入所要搜索的方式,包括按<1> 名字搜索,<2>学号搜索;根据所选方式输入相应的内容,若是该读者存在,则输出该读者的信息,否则,返回主界面。
6. 退出:退出图书管理系统。
图书类设计:私有成员:书名(name) 、编号(id) 、作者名(writer) 、价格(price) 、总存量(total) 、现存量(store) 、出版单int book_mod(); //修改书籍函数位 (publish) 、出版时间 (pub_time) 。
及该书的借阅情况(借阅者名字 (borrower) 、借阅者学 号 (borr_num) :若无人借阅该书,则 borrower=0, borr_num=0 ;否则 borrower= 借阅者名 字 ,borr_num= 借阅者学号)class book{private://书名//作者//借书人//书号//借书人学号//现存量// 总存量//出版时间//价格//出版社//book 类构造函数//书籍管理界面函数 //增加书籍函数 删除书籍函数char name[50];char writer[10];char borrower[10];int id;int borr_num;int store;int total;int pub_time; floatprice;char publish[50];public:book();int book1();int book_add();int book_del(); //int book_out(); // 借书函数int book_in(); //还书函数int book_name(); //按书名搜索书籍函数int book_id(); //按书号搜索书籍函数int book_pub(); //按出版社搜索书籍函数int book_time(); //按出版时间搜索书籍函数int book_writer(); //按作者搜索书籍函数int seach_book(); //搜索书籍界面函数int seach(); //主搜索界面函数读者类设计:私有成员:借书人的姓名(name) 、性别(sex) 、年级( grade )、班级( class )、学号(num) 。
及所借图书名字(book_name) 、借书日期(date) 、可借天数(avai_days) 。
class reader{private:char name[10]; //名字int num; //学号char grade[10]; //年级char clas[10]; //班级char sex[10];char book_name[50]; char date[10];int avai_days; //性别// 所借书的书名//借书日期//可借天数int reader_1(); //读者管理界面函数int reader_add(); //增加读者函数int reader_del(); //删除读者函数int reader_mod();//修改读者函数int reader_name(); //按读者名字搜索读者函数int reader_num(); //按读者学号搜索读者函数int seach_reader(); //搜索读者界面函数char *getname(); //获取读者姓名函数int getnum(); //获取读者学号函数char *getgrade(); //获取读者年级函数char *getclas();//获取读者班级函数char *getsex(); //获取读者性别函数char *getbook_name(); // 获取所借书书名函数char *getdate(); //获取借书日期函数int getavaiday(); //获取可借天数函数int setname(char *); //设置读者姓名函数int setnum(int); //设置读者学号函数public:int setgrade(char *);//设置读者年级函数 int store;//现存量 int setclas(char *);int setsex(char *); int setbook_name(char *);int setdate(char *);int setavaiday(int);}; //设置读者班级函数//设置读者性别函数//设置所借书籍书名函数 //设置借书日期函数 //设置可借天数函数 图书管理系统源代码:#include<iostream>using namespace std;class reader;class book{private:char name[50];// 书名 char writer[10];// 作者 char borrower[10];// 借书人 int id;//书号 int borr_num;//借书人学号int total; // 总存量 int seach(); //主搜索界面函数 int pub_time; // 出版时间 float price; // 价格 char publish[50]; // 出版社//book 类构造函数 //书籍管理界面函数 //增加书籍函数 int book_del(); // 删除书籍函数 int book_mod(); // 修改书籍函数 int book_out(); // 借书函数 int book_in(); //还书函数 int book_name(); //按书名搜索书籍函数 int book_id(); //按书号搜索书籍函数 int book_pub(); // 按出版社搜索书籍函数 int book_time(); // 按出版时间搜索书籍函数 int book_writer(); //按作者搜索书籍函数 int seach_book(); //搜索书籍界面函数public:book(); int book1(); int book_add(); };int seach_reader(); //搜索读者界面函数//名字//学号//年级 //班级 //性别 //所借书的书名 //借书日期 //可借天数 //读者管理界面函数 //增加读者函数 //删除读者函数 //修改读者函数//按读者名字搜索读者函数//按读者学号搜索读者函数class reader {private:char name[10]; int num; char grade[10]; char clas[10]; char sex[10]; char book_name[50]; char date[10]; int avai_days; public: int read1();int reader_add();int reader_del();int reader_mod();int reader_name();int reader_num();char *getgrade(); //获取读者年级函数};#include<string.h>char *getname();int getnum(); //获取读者姓名函数 //获取读者学号函数char *getclas(); char *getsex(); //获取读者班级函数 //获取读者性别函数 char *getbook_name(); // 获取所借书书名函数char *getdate(); //获取借书如期函数 int getavaiday(); //获取可借天数函数 int setname(char *); int setnum(int); int setgrade(char *); int setclas(char *); int setsex(char *); int setbook_name(char *); int setdate(char *); int setavaiday(int);//设置读者姓名函数 //设置读者学号函数 //设置读者年级函数 //设置读者班级函数 //设置读者性别函数 //设置所借书籍书名函数 //设置借书日期函数//设置可借天数函数#include<conio.h>#include<stdlib.h>#include<windows.h>#define SIZE 100#define AMOUNT 50book books[SIZE];reader stud[AMOUNT];int return_back(){cout<<" 请按下任何键. "getch();return 0;}char *reader::getname(){return name;}int reader::getnum()return num;}{char *reader::getgrade(){return grade;}char *reader::getclas(){return clas;}char *reader::getsex(){return sex;}char *reader::getbook_name() {return book_name;}char *reader::getdate(){return date;}int reader::getavaiday(){return avai_days;}int reader::setname(char *names) {strcpy(name,names);return 0;}int reader::setnum(int nums){num=nums;return 0;int reader::setgrade(char *grades){strcpy(grade,grades);return 0;}int reader::setclas(char *classes){strcpy(clas,classes);return 0;}int reader::setsex(char *sexs){strcpy(sex,sexs);return 0;}int reader::setbook_name(char *book_names) {strcpy(book_name,book_names);return 0;}int reader::setdate(char *dates){strcpy(date,dates);return 0;}int reader::setavaiday(int avaiday){avai_days=avaiday;return 0;}int page_title(){system("cls");cout<<" * ☆★☆欢迎来到图书管理系统☆★☆ *\n ";cout<<" ************************* *\n ";cout<<" * * * * * * * * * * * * * * * * * * * * * * * * * *\n ";return 0;book::book(){system("color 17");reader read;menu:page_title();cout<<" ★主采单^ "<<e ndl<<e ndl<<e ndl;cout<<" * * * * * * * * * * * "<< endl;cout<<" * 1. 借书* "<< endl<<endl;cout<<" * 2. 还书* "<< endl<<endl;cout<<" * 3. 书籍管理* "<< endl<<endl;* 4. 读者管理* "<< endl<<endl;cout<<"cout<<" * 5. 搜索* "<< endl<<endl;cout<<" * 0.退出* "<< endl;* * * * * * * * * * *"<<endl<<endl;cout<<"cout<<" 请输入你的选择:" ;switch(getch()){case'1':book_out();break;case'2':book_in();break;case'3':book1();break;case'4':read.read1();break;case'5':seach();break;case'0':exit(0);break;default:system("cls");page_title();cout<<" \n 错误,请再输入一遍! "<< endl;}goto menu;}int book::book1(){system("cls");page_title();cout<<"☆管理☆" <<e ndl<< en dl<< en dl;cout<<" * * * * * * * * * * *"<<}}cout<<" * 1.增加书籍 * "<< endl<< endl; cout<<" * 2.注销书籍 * "<< endl<< endl; cout<<" * 3.修改书籍 * "<< endl<< endl; cout<<" *0. 返回*"<<endl;cout<<" * * * * * * * * * * * "<< endl<< endl;cout<<"请输入你的选择・・ Jswitch(getch()){case'1':book_add();break; case'2':book_del();break; case'3':book_mod();break; case'0':return_back();break; default:system("cls");cout<<"\n 错误,请再输入一遍 !\n";}return 0;}int book::book_add() //定义增加书籍的函数{FILE *bfp; int i,n;page_title();cout<<" ☆增加书籍☆ "<< endl;cout<<">>> 请输入书的信息<<<"<< endl;bfp=fopen("books","rb");for(n=0;n<SIZE;n++){fread(&books[n],sizeof(books[n]),1,bfp);if(books[n].id==0) break;}fclose(bfp);do{cout<<" 请输入一个新的书号(书号从1001 开始,但必须不同于已存在的书号) cin>>books[n].id;for(i=0;i<SIZE;i++){if(books[n].id==books[i].id&&n!=i){cout<<"\n 这个书号已经存在. "<< endl;break;}}}while(books[n].id==books[i].id); cout<<" 书名: "; cin>>books[n].name; cout<<" 作者: "; cin>>books[n].writer; cout<<" 价格 : "; cin>>books[n].price; cout<<" 总存量 : "; cin>>books[n].total; cout<<" 现存量 : "; cin>>books[n].store; cout<<" 出版社 : "; cin>>books[n].publish; cout<<" 出版时间 : "; cin>>books[n].pub_time; cout<<" 借书人 : "; cin>>books[n].borrower; cout<<" 借书者学号 : "; cin>>books[n].borr_num; bfp=fopen("books","wb"); for(n=0;n<SIZE;n++)fwrite(&books[n],sizeof(books[n]),1,bfp);fclose(bfp);cout<<"\n 该书已经添加.\n"<< endl;return 0;}int book::book_del() // 定义删除书籍的函数{FILE *bfp;int i,id,s;page_title();cout<<" ☆注销旧书☆ "<< endl;if((bfp=fopen("books","rb"))==0){cout<<" 无法打开文件. ";}for(i=0;i<SIZE;i++){fread(&books[i],sizeof(books[i]),1,bfp);fclose(bfp);}cout<<"\n 请输入书号cin>>id; for(i=0,s=-1;i<SIZE;i++) {if(books[i].id==id){cout<<" 书名: "<<books[i].name<< endl;cout<<" 书号: "<<books[i].id<< endl;cout<<" 作者: "<<books[i].writer<< endl;cout<<" 价格: "<<books[i].price<< endl;cout<<" 总存量: "<<books[i].total<< endl;cout<<" 现存量: "<<books[i].store<< endl;cout<<" 出版社: "<<books[i].publish<< endl;cout<<" 出版时间: "<<books[i]. pub_time<< endl;cout<<" 读者: "<<books[i].borrower<< endl;cout<<" 读者学号: "<<books[i].borr_num<< endl;<< endl;cout<<"cout<<" 请问是否确定注销此书(1 为是,0 为否): ";cin>>s;if(s==1){for(;i<SIZE;i++)books[i]=books[i+1];}else if(s==0){return 0;}}}if(s==-1){cout<<" 该书不存在."<< endl;}if((bfp=fopen("books", "wb"))==0){cout<<" 无法打开文件. ";}for(i=0;i<SIZE;i++){fwrite(&books[i],sizeof(books[i]),1,bfp); }fclose(bfp);return 0;}int book::book_mod() // 定义修改书籍的函数{FILE *bfp;int i,id,s,n;page_title();cout<<" ☆修改书籍☆ "<<e ndl;if((bfp=fopen("books","rb"))==0){cout<<" 无法打开文件. ";}for(i=0;i<SIZE;i++){fread(&books[i],sizeof(books[i]),1,bfp);}fclose(bfp);cin>>id;cout<<endl<<" 请输入书号: ";cout<<">>> 请重新输入书籍的信息 :<<<"<<endl;for(i=0,s==0;i<SIZE;i++){if(books[i].id==id){cout<<" 书名 :"<<books[i].name<<endl;cout<<" 书号 : "<<books[i].id<< endl;cout<<" 作者 : "<<books[i].writer<< endl;cout<<" 价格 : "<<books[i].price<< endl;cout<<" 总存量 : "<<books[i].total<< endl;cout<<" 现存量 : "<<books[i].store<< endl;cout<<" 出版社 : "<<books[i].publish<< endl;cout<<" 出版时间 : "<<books[i]. pub_time<< endl;cout<<" 读者 : "<<books[i].borrower<< endl;cout<<" 读者学号 : "<<books[i].borr_num<< endl;cout<<" 是否确定修改该书籍 (1 为是 ,0 为否 ): ";cin>>s;if(s==1){ page_title();do cout<<" **********************************************************H << endl;{cout<<endl<<" 请输入一个新的书号(学号从1001 开始,但必须不同于已存在的书号):";cin>>books[i].id;for(n=0;n<SIZE;n++){if(books[i].id==books[n].id&&n!=i){cout<<" 该书号已存在. "<<endl;break;}}}while(books[i].id==books[n].id);cout<<" 书名: ";cin>>books[i].name;cout<<" 作者: ";cin>>books[i].writer;cout<<" 价格: ";cin>>books[i].price;cout<<" 总存量: ";cin>>books[i].total;cout<<" 现存量: ";{cin>>books[i].store;cout<<" 出版社: ";cin>>books[i].publish; cout<<" 出版时间: "; cin>>books[i].pub_time; cout<<" 借书人: ";cin>>books[i].borrower; cout<<" 借书者学号: "; cin>>books[i].borr_num;}else if(s==0){return 0;}}}if(s==-1){cout<<" 该书不存在。