图书管理系统
系统功能:
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)、出版单位(publish)、出版时间(pub_time)。及该书的借阅情况(借阅者名字(borrower)、借阅者学号(borr_num):若无人借阅该书,则borrower=0, borr_num=0;否则borrower=借阅者名字,borr_num=借阅者学号)。
class book
{
private:
char name[50]; char writer[10]; char borrower[10]; int id; int borr_num; int store; int total; int pub_time;
//书名
//作者
//借书人
//书号
//借书人学号
//现存量
// 总存量
//出版时间
.
float price; //价格
char publish[50]; //出版社
public:
book(); //book类构造函数
int book1(); //书籍管理界面函数
int book_add(); //增加书籍函数
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(); //搜索书籍界面函数
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; //可借天数
public:
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); //设置读者学号函数
int setgrade(char *); //设置读者年级函数
int setclas(char *); //设置读者班级函数
.
int setsex(char *); //设置读者性别函数
int setbook_name(char *); //设置所借书籍书名函数
int setdate(char *); //设置借书日期函数
int setavaiday(int); };
图书管理系统源代码:
#include using namespace std; class reader; class book { private: char name[50]; //设置可借天数函数 //书名 . char writer[10]; //作者 char borrower[10]; //借书人 int id; //书号 int borr_num; //借书人学号 int store; //现存量 int total; // 总存量 int pub_time; //出版时间 float price; //价格 char publish[50]; //出版社 public: book(); //book类构造函数 int book1(); //书籍管理界面函数 . int book_add(); //增加书籍函数 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(); int seach(); }; //借书函数 //还书函数 //按书名搜索书籍函数 //按书号搜索书籍函数 //按出版社搜索书籍函数 //按出版时间搜索书籍函数 //按作者搜索书籍函数 //搜索书籍界面函数 //主搜索界面函数 . 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(); //按读者学号搜索读者函数 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); //设置读者学号函数 int setgrade(char *); int setclas(char *); int setsex(char *); int setbook_name(char *); int setdate(char *); int setavaiday(int); }; #include #include #include //设置读者年级函数 //设置读者班级函数 //设置读者性别函数 //设置所借书籍书名函数 //设置借书日期函数 //设置可借天数函数 . #include #define SIZE 100 #define AMOUNT 50 book 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<<\" cout<<\" \"; cout<<\" return 0; } * * * * * * * * * * * * * * * * * * * * * * * * * *\\n \"; * ☆★☆ 欢迎来到图书管理系统 ☆★☆ *\\n * * * * * * * * * * * * * * * * * * * * * * * * * *\\n \"; book::book() { system(\"color 17\"); reader read; menu: page_title(); cout<<\" \"< ★主菜单★ * * * * * * * * * * * \"<< endl; * 1.借 书 * \"<< * 2.还 书 * \"<< * 3.书籍管理 * \"<< . cout<<\" * 4.读者管理 * \"<< endl< 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<<\" ☆管理☆\" endl; . endl<< < cout<<\" * 1.增加书籍 * \"<< endl<< endl; cout<<\" * 2.注销书籍 * \"<< endl<< endl; cout<<\" endl; cout<<\" cout<<\" cout<<\" switch(getch()) { case'1':book_add();break; case'2':book_del();break; case'3':book_mod();break; * 3.修改书籍 * \"<< endl<< * 0.返 回 *\"< 请输入你的选择:\" ; . 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\ for(n=0;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 . if(books[n].id==books[i].id&&n!=i) { cout<<\"\\n这个书号已经存在. \"<< endl; } } }while(books[n].id==books[i].id); cout<<\"书名: \"; cin>>books[n].name; cout<<\"作者: \"; cin>>books[n].writer; cout<<\"价格: \"; cin>>books[n].price; break; . 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\ . for(n=0;n 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\ . { cout<<\"无法打开文件. \"; } for(i=0;i fread(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); cout<<\"\\n请输入书号: \"; cin>>id; for(i=0,s=-1;i if(books[i].id==id) . { cout<<\"书名: \"< cout<<\"请问是否确定注销此书(1为是,0为否): \"; . cin>>s; if(s==1) { } if(s==-1) for(;i } else if(s==0) { return 0; } } . { cout<<\"该书不存在.\"<< endl; } if((bfp=fopen(\"books\ { cout<<\"无法打开文件. \"; } for(i=0;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<<\" if((bfp=fopen(\"books\ { cout<<\"无法打开文件. \"; } for(i=0;i ☆修改书籍☆\"< fread(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); cout< for(i=0,s==0;i if(books[i].id==id) { cout<<\"书名:\"< cout<<\"总存量: \"< cout<<\"是否确定修改该书籍(1为是,0为否): \"; cin>>s; if(s==1) { page_title(); cout<<\">>>请重新输入书籍的信息:<<<\"< . { cout< for(n=0;n if(books[i].id==books[n].id&&n!=i) { cout<<\"该书号已存在. \"< } }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<<\"该书不存在。 . \"< } if((bfp=fopen(\"books\ { cout<<\"无法打开文件. \"; } for(i=0;i fwrite(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); return 0; } int reader::reader_1() { system(\"cls\"); page_title(); cout<<\" \\n\"< cout<<\" cout<<\" cout<<\" . ☆管理☆ * * * * * * * * * * *\"< switch(getch()) { case'1':reader_add();break; case'2':reader_del();break; case'3':reader_mod();break; case'0':return_back();break; default:system(\"cls\"); cout<<\"\\n错误,请再输入一遍!\\n\"; } return 0; } int reader::reader_add() { . //定义增加读者函数 . FILE *sfp; int i,n; page_title(); cout<<\" ☆增加读者☆\"< for(n=0;n fread(&stud[n],sizeof(stud[n]),1,sfp); if(stud[n].num==0) break; } fclose(sfp); do . { cout<<\"请输入一个新的学号(学号从1001开始,但必须不同于已存在的学号):\"; cin>>stud[n].num; for(i=0;i if(stud[n].num==stud[i].num&&n!=i) { cout< } } }while(stud[n].num==stud[i].num); cout<<\"名字: \"; . cin>>stud[n].name; cout<<\"年级: \"; cin>>stud[n].grade; cout<<\"班级: \"; cin>>stud[n].clas; cout<<\"性别: \"; cin>>stud[n].sex; cout<<\"书名: \"; cin>>stud[n].book_name; cout<<\"借书日期: \"; cin>>stud[n].date; cout<<\"可借天数: \"; cin>>stud[n].avai_days; . sfp=fopen(\"students\ for(n=0;n fwrite(&stud[n],sizeof(stud[n]),1,sfp); } fclose(sfp); cout< } int reader::reader_del() //定义删除读者的函数 { FILE *sfp; int i,num,s; . page_title(); cout<<\" ☆注销读者☆\"< { cout<<\"无法打开文件. \"; } for(i=0;i fread(&stud[i],sizeof(stud[i]),1,sfp); } fclose(sfp); cout< . for(i=0,s==-1;i if(stud[i].num==num) { cout<<\"名字: \"< cout<<\"是否确定注销该读者(1为是,0为否): \"; cin>>s; if(s==1) { for(;i } else if(s==0) { return 0; } if(s==-1) { . cout<<\"该读者不存在.\"; } } } if((sfp=fopen(\"students\ { cout<<\"无法打开文件. \"; } for(i=0;i fwrite(&stud[i],sizeof( stud[i]),1,sfp); } fclose(sfp); . return 0; } int reader::reader_mod() //定义修改读者的函数 { FILE *sfp; int i,num,s,n; page_title(); cout<<\" if((sfp=fopen(\"students\ { cout<<\"无法打开文件. \"; } for(i=0;i { fread(&stud[i],sizeof(stud[i]),1,sfp); } fclose(sfp); cout< for(i=0,s==-1;i if(stud[i].num==num) { cout<<\"名字:\"< cout<<\"班级: \"< cin>>s; if(s==1) { page_title(); cout<<\">>>请重新输入读者的信息.<<<\" < . { cout<<\"请输入一个新的学号(学号从1001开始,但必须不同于已存在的学号):\"; cin>>stud[i].num; for(n=0;n if(stud[i].num==stud[n].num&&n!=i) { cout<<\"该学号已存在.\"< } }while(stud[i].num==stud[n].num); cout<<\"名字: \"; cin>>stud[i].name; . cout<<\"年级: \"; cin>>stud[i].grade; cout<<\"班级: \"; cin>>stud[i].clas; cout<<\"性别: \"; cin>>stud[i].sex; cout<<\"书名: \"; cin>>stud[i].book_name; cout<<\"借书日期: \"; cin>>stud[i].date; cout<<\"可借天数: \"; cin>>stud[i].avai_days; } . else if(s==0) { return 0; } } } if(s==-1) { cout<<\"该读者不存在. \"< if((sfp=fopen(\"students\ { cout<<\"无法打开文件. \"; } for(i=0;i fwrite(&stud[i],sizeof(stud[i]),1,sfp); } fclose(sfp); return 0; } int book::book_out() { FILE *bfp,*sfp; int id,i,s,l,num, avaiday; char dates[10]; . //定义借书函数 . page_title(); cout<<\" ☆借书☆\\n\"; cout<<\"请输入书号:\"; cin>>id; if((bfp=fopen(\"books\ cout<<\"无法打开文件.\\n\"; for(i=0;i fread(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); for(i=0;i { if(id==books[i].id&&books[i].id!=0) { system(\"cls\"); page_title(); cout<<\" ☆书的信息☆\\n\"; cout<<\"书名: \"< cout<<\"出版时间: \"< if((sfp=fopen(\"students\ { cout<<\"无法打开文件. \"; } for(l=0;l fread(&stud[l],sizeof(stud[l]),1,sfp); } fclose(sfp); . cout<<\"请输入你的学号:\\n\"; A: cin>>num; for(l=0;l if(stud[l].getnum()==num) { if(books[i].store!=0) { cout<<\"请输入可借的天数:\\n\"; cin>>avaiday; stud[l].setavaiday(avaiday); cout<<\"请输入借书日期:\\n\"; cin>>dates; . stud[l].setdate(dates); if((bfp=fopen(\"books\ { cout<<\"无法打开文件.\"; } for(s=0;s fread(&books[s],sizeof(books[s]),1,bfp);fclose(bfp); if(books[s].id==books[i].id) { books[s].store--; books[s].borr_num=stud[l].getnum(); strcpy(books[s].borrower,stud[l].getname()); . strcpy(stud[l].getbook_name(),books[s].name); cout<<\"你已经借了这本书. \"; sfp=fopen(\"students\ for(l=0;l fwrite(&stud[l],sizeof(stud[l]),1,sfp); } fclose(sfp); } } } } else if(stud[l].getnum()!= num) . { cout<<\"对不起,该学号是错误的,请再输入一遍:\\n\"; goto A; } } bfp=fopen(\"books\ for(s=0;s fwrite(&books[s],sizeof(books),1,bfp); } fclose(bfp); } } . } int book::book_in() //定义还书函数 { page_title(); cout<<\" int i,num,id,n; char no[]={\"None\ FILE *bfp,*sfp; if((sfp=fopen(\"students\ { cout<<\"无法打开文件. \"; } for(i=0;i . { fread(&stud[i],sizeof(stud[i]),1,sfp); } fclose(sfp); cout<<\"请输入你的学号:\"; BEFOR: cin>>num; for(i=0;i if(stud[i].getnum()==num&&stud[i].getnum()!=0) { system(\"cls\"); page_title(); cout<<\" ☆读者信息☆\\n\"; . cout<<\"名字:\"< if((bfp=fopen(\"books\ { cout<<\"无法打开文件. \"; } . for(n=0;n fread(&books[n],sizeof(books[n]),1,bfp); } fclose(bfp); cout<<\"请输入书号:\\n\"; AGAIN: cin>>id; for(n=0;n if(books[n].id==id&&books[n].id!=0) { books[n].borr_num=0; strcpy(books[n].borrower,no); . books[n].store++; } else if(books[n].id!=id) { cout<<\"对不起,这个书号是错误的,请再输入一遍:\\n\"; goto AGAIN; } if((bfp=fopen(\"books\ { cout<<\"无法打开文件. \"; } for(n=0;n . fwrite(&books[n],sizeof(books[n]),1,bfp); } fclose(bfp); } stud[i].setavaiday(0); stud[i].setbook_name(no); stud[i].setdate(no); if((sfp=fopen(\"students\ { cout<<\"无法打开文件. \"; } for(i=0;i . fwrite(&stud[i],sizeof(stud[i]),1,sfp); } fclose(sfp); } else if(stud[i].getnum()!=num&&stud[i].getnum()!=0) { cout<<\"对不起,这个学号是不存在,请再输入一个正确的学号:\\n\"; goto BEFOR; } } return_back(); } int book::book_name() //根据书名搜书的函数 { FILE *bfp; int page_title(); char a[50]; int i; page_title(); cout<<\" cout<<\"请输入书名:\"; cin>>a; if((bfp=fopen(\"books\ cout<<\"无法打开文件.\\n\"; for(i=0;i . ☆搜书☆\\n\"; . fread(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); page_title(); cout<<\" ☆书的信息☆\\n\"; for(i=0;i if(strcmp(books[i].name,a)==0) { cout<<\"书名: \"< cout<<\"价格: \"< } } return_back(); } . int book::book_id() //根据书号搜书函数 { FILE *bfp; int id, i; page_title(); cout<<\" ☆搜书☆\\n\"; cout<<\"请输入书号:\"; cin>>id; if((bfp=fopen(\"books\ cout<<\"无法打开问件.\\n\"; for(i=0;i fread(&books[i],sizeof(books[i]),1,bfp); . } fclose(bfp); page_title(); cout<<\" ☆书的信息☆\\n\"; for(i=0;i if(books[i].id==id&&books[i].id!=0) { cout<<\"书名: \"< cout<<\"现存量: \"< } } return_back(); return 0; } int book::book_pub() //根据出版社搜书函数 { . FILE *bfp; int page_title(); char a[50]; int i; page_title(); cout<<\"请输入书的出版社:\"; cin>>a; if((bfp=fopen(\"books\ for(i=0;i fread(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); . page_title(); cout<<\" ☆书的信息☆\\n\"; for(i=0;i if(strcmp(books[i].publish,a)==0) { cout<<\"书名: \"< cout<<\"出版时间: \"< } } return_back(); return 0; } int book::book_time() //根据出版时间搜书的函数 { FILE *bfp; int page_title(); . int time,i; page_title(); cout<<\" ☆搜书☆\\n\"; cout<<\"请输入书的出版时间:\"; cin>>time; if((bfp=fopen(\"books\ cout<<\"无法打开文件.\\n\"; for(i=0;i fread(&books[i],sizeof(books[i]),1,bfp); } fclose(bfp); page_title(); . cout<<\" ☆书的信息☆\\n\";for(i=0;i