您的当前位置:首页正文

c++图书管理系统(完整精华排版)

2021-07-12 来源:易榕旅网


//图书管理系统

#include

#include

#include

#include

using namespace std;

const int Maxb=10000; //最多的图书

class Book//图书类

{

int tag; //删除标记1:已删0:未删

int no; //图书编号

char name[20]; //书名

char author[10]; //作者名

char no2[10];//输入分类号

char dan[20];//输入出版单位

char time[20];//出版时间

int price;//价格

public:

Book() {}

char *getname() { return name; } //获取姓名

int getno() { return no; }//获取图书编号

int gettag() { return tag; } //获取删除标记

char *getauthor() {return author;} //获取作者名

char *getno2() {return no2;} //获取分类号

char *getdan() {return dan;} //获取出版单位

char *gettime() {return time;} //获取出版时间

char getprice() {return price;} //获取图书价格

void setname(char na[]) //设置书名

{

strcpy(name,na);

}

void setauthor(char au[]) //设置作者名

{

strcpy(author,au);

}

void setno2(char n[]) //设置分类号

{

strcpy(no2,n);

}

void setdan(char d[]) //设置出版单位

{

strcpy(dan,d);

}

void settime(char t[]) //设置出版时间

{

strcpy(time,t);

}

void delbook() { tag=1; } //删除图书

void addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr) 增加图书

{

tag=0;

no=n;

//

price=pr;

strcpy(name,na);

strcpy(author,au);

strcpy(no2,n2);

strcpy(dan,da);

strcpy(time,ti);

}

void disp() //输出图书

{

cout << setw(10) << no << setw(10) << name << setw(10)

<<

setw(10)<}

};

class BDatabase //图书库类

{

int top; //图书记录指针

Book book[Maxb]; //图书记录

public:

BDatabase() //构造函数,将book.txt读到book[]中

{

Book b;

top=-1;

fstream file(\"book.txt\

while (1)

{

file.read((char *)&b,sizeof(b));

if (!file) break;

top++;

book[top]=b;

}

file.close();

}

void clear() //全删

{

top=-1;

}

int addbook(int n,char //增加图书

{

*na,char *au, char *n2, char *da,char *ti,int pr)

Book *p=query(n);

if (p==NULL)

{

top++;

book[top].addbook(n,na,au,n2,da,ti,pr);

return 1;

}

return 0;

}

Book *query(int bookid) //查找图书

{

for (int i=0;i<=top;i++)

if (book[i].getno()==bookid &&

book[i].gettag()==0)

return &book[i];

return NULL;

}

Book *query2(int bookid,char *name) {

for(int i=0;i<=top;i++)

if(strcmp(book[i].getname(),name)==0)

{bookid=book[i].getno();

return &book[i];

}

return NULL;

}

//按书名查找图书

Book *query3(int bookid,char *author) //按作者查找图书

{

for(int i=0;i<=top;i++)

if(strcmp(book[i].getauthor(),author)==0)

{bookid=book[i].getno();

return &book[i];

}

return NULL;

}

void bookdata(); //图书库维护

void disp()

{

cout<\"<for (int i=0;i<=top;i++)

if (book[i].gettag()==0)

book[i].disp();

}

~BDatabase() //析构函数,将book[]写入book.txt文件中

{

fstream file(\"book.txt\

for (int i=0;i<=top;i++)

if (book[i].gettag()==0)

file.write((char *)&book[i],sizeof(book[i]));

file.close();

}

};

void BDatabase::bookdata()

{

int choice=1;

int choice2=1;

int choice3=1;

int choice4=1;

char bname[40];

char bauthor[10];

char bno2[20];

char bdan[20];

char btime[20];

int bprice;

int bookid;

Book *b;

while (choice!=0)

{ cout<cout<<\" * * * * * * * * * * * *\"<cout<<\" * 1 添加信息 *\"<cout<<\" * 2 修改信息 *\"<cout<<\" * 3 删除信息 *\"<cout<<\" * 4 信息查询 *\"<cout<<\" * 5 显示信息 *\"<cout<<\" * 6 全部删除 *\"<cout<<\" * 0 退出 *\"<cout<<\" * * * * * * * * * * * *\"<cout<cin >> choice;

//如果输入的编号在菜单里不存在的情况---在for循环内部如果出现这样的错的时候

while(choice!=1&&choice!=2&&choice!=3&&choice!=4&&choice!=5&&choice!=6&&choice!=0){

cout<cout<<\" 请选择您需要的操作:\";

cin>>choice;

}

switch (choice)

{

case 1:

cout <<\"输入图书编号:\";

cin >> bookid;

cout <<\"输入图书书名:\";

cin >> bname;

cout <<\"输入作者名:\";

cin >>bauthor;

cout <<\"输入分类号:\";

cin>>bno2;

cout<<\"输入出版单位:\";

cin>>bdan;

cout<<\"输入出版时间:\";

cin>>btime;

cout<<\"输入价格:\";

cin>>bprice;

addbook(bookid,bname,bauthor,bno2,bdan,btime,bprice);

cout<<\"图书编号\"<break;

case 2:

cout << \" 输入图书编号:\"; cin >> bookid;

b=query(bookid);

if (b==NULL)

{

cout << \" 该图书不存在\" break;

}

cout<endl;

<<

cout<<\" * * * * * * * * * * * *\"<cout<<\" * 1 书名 *\"<cout<<\" * 2 作者 *\"<cout<<\" * 3 分类号 *\"<cout<<\" * 4 出版单位 *\"<cout<<\" * 5 出版时间 *\"<cout<<\" * 0 退出系统 *\"<cout<<\" * * * * * * * * * * * *\"<cout<<\"请输入要更改的:1书名 2作者名 3分类号 4出版单位 5出版时间 0退出\";

cin>>choice2;

switch(choice2)

{

case 1:

cout << \" 输入新的书名:\"; //修改图书名

cin >> bname;

b->setname(bname);

break;

case 2:

cout<<\"输入新的作者名:\"; cin>>bauthor;

b->setauthor(bauthor);

break;

case 3:

cout<<\"输入新的分类号:\"; cin>>bno2;

b->setno2(bno2);

//修改图书作者

//修改图书的分类号

break;

case 4:

cout<<\"输入新的出版单位:\"; //修改图书出版单位

cin>>bdan;

b->setdan(bdan);

break;

case 5:

cout<<\"输入新的出版时间:\";

cin>>btime;

b->settime(btime); break;

}

break;

//修改出版时间

case 3:

cout << \" 输入图书编号:\";

cin >> bookid;

b=query(bookid);

if (b==NULL)

{

cout << \" 该图书不存在\" << endl;

break;

}

b->delbook();

break;

case 4:

cout<<\"查找方式:\"<cin>>choice3;

switch(choice3)

{

case 1:

{cout << \" 输入图书编号:\"; cin >> bookid;

b=query(bookid);

if (b==NULL)

{

cout << \" 该图书不存在\" break;

}

b->disp();

//按图书编号查询 endl;

<<

}

break;

case 2:

{

cout<<\"请输入图书名:\";

cin>>bname;

b=query2(bookid,bname);

if(b==NULL)

{

cout<<\"该图书不存在啊!\"<break;

}

b->disp();

}

break;

case 3:

{

cout<<\"请输入作者名:\";

cin>>bauthor;

b=query3(bookid,bauthor);

if(b==NULL)

{

cout<<\"该作者不存在!\"<break;

}

b->disp();

}

break;

}

break;

case 5:

disp();

break;

case 6:

clear();

break;

}

}

cout<★☆ 谢谢您的支持! 欢迎下次继续使用☆★

};

void main()

{ system(\"color 2f\");

cout<cout<cout<<\" ******************************************************\"<cout<<\" 请登录! \"<cout<<\" ******************************************************\"<cout<cout<int q=0,w=1001;

number:

int e;

cout<<\"请输入账号\"<cin>>e;

if(q==e)

{

number1:

int r;

cout<<\"请输入密码\"<cin>>r;

if (w==r)

{

fstream iofile;

if(!iofile)

{

cout<<\"打开文件失败!\"<}

system(\"cls\");

BDatabase BookDB; Book *b;

int nb;

{

cout<cout<<\" cout<<\" cout<<\" cout<<\" cout<<\"

★☆☆★☆☆★☆☆★☆☆★☆☆★☆☆★\"<☆ ☆\"<☆ ☆\"<★ 欢迎使用图书馆信息管理系统 ★\"<☆ ☆\"<cout<<\" ☆ ☆\"<cout<<\" ★☆☆★☆☆★☆☆★☆☆★☆☆★☆☆★\"<}

cout<cin>>nb;

while(nb!=1)

{ cout<cout<cin>>nb;

}

if(nb==1)

BookDB.bookdata();

}

else

cout<<\" *********************密码错误!请重新输入

*******************\"<goto number1; }

else

cout<<\" *****************************************\"<goto number;

}

账号错误请重新输入

!

因篇幅问题不能全部显示,请点此查看更多更全内容