图书信息管理系统.docx

上传人:b****4 文档编号:27128728 上传时间:2023-06-27 格式:DOCX 页数:20 大小:18.68KB
下载 相关 举报
图书信息管理系统.docx_第1页
第1页 / 共20页
图书信息管理系统.docx_第2页
第2页 / 共20页
图书信息管理系统.docx_第3页
第3页 / 共20页
图书信息管理系统.docx_第4页
第4页 / 共20页
图书信息管理系统.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

图书信息管理系统.docx

《图书信息管理系统.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统.docx(20页珍藏版)》请在冰豆网上搜索。

图书信息管理系统.docx

图书信息管理系统

图书信息包括:

登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

系统以菜单方式工作?

图书信息录入功能(图书信息用文件保存)--输入?

图书信息浏览功能--输出?

查询和排序功能:

(至少一种查询方式)--算法?

?

按书名查询

?

按作者名查询

图书信息的删除与修改(可选项)

#include

#include

#include

#include

structbookData

{

intbooknumber;

charbookname[30];

intstore;

};

structPerson

{

charname[20];

charstudynumber[10];

intcount;

bookDataRbook[2];

//bookDataRbook;

};

classHistory

{

public:

History(fstream&a){readerbook=a;}

voidwritehistory();

voidreadhistory(fstream&);

private:

fstreamreaderbook;

};

classLiberian;

voidFind(fstream&);

voidCreateTxt(fstream&);

classReader

{

friendLiberian;

public:

Reader(fstream&);

voidprint();

voidhandlebook(fstream&);

voidchange();

boolfindreader();

voidAddreader();

voiddeletereader();

private:

fstreamfile;

Personperson;

};

classLiberian

{

public:

Liberian(char*,char*);

voidchangeReader(Reader&);

voidselfprint();

voidAppend(fstream&);

private:

charworkname[20];

charworknumber[20];

};

 

intmain()

{

fstreambookRecord("book.dat",ios:

:

in|ios:

:

out);

if(!

bookRecord)

{

cerr<<"Can'topen,tryagain!

"<

exit

(1);

}

fstreamreaderRecord("reader.dat",ios:

:

in|ios:

:

out);

if(!

readerRecord)

{

cerr<<"Can'topen,tryagain!

"<

exit

(1);

}

 

intchoice;

intkey;Readerreader(readerRecord);//读者管理系统

Liberianliberian("李天","123456");//图书管理员

Historyrec(readerRecord);//声明显示历史记录类

while

(1)

{

cout<<"请输入您的选择:

\n\n"

<<"1--图书管理员\n"

<<"2--读者系统\n"

<<"0--结束程序\n";

cin>>choice;

switch(choice)

{

case1:

{

cout<<"Hello,图书管理员:

\n";

liberian.selfprint();cout<

cout<<"1--增加新图书\n"

<<"2--改变读者的属性\n"

<<"3--显示历史记录\n"

<<"0--返回\n";

cin>>key;

switch(key)

{

case1:

liberian.Append(bookRecord);

break;

case2:

liberian.changeReader(reader);

break;

case3:

rec.readhistory(readerRecord);

case0:

break;

}

}

break;

case2:

{

cout<<"学生读者\n";intiflag=1;

//reader.findreader();

cout<<"1--借书与还书信息\n"

<<"2--修改个人信息\n"

<<"0--返回\n";

cin>>key;

switch(key)

{

case1:

reader.handlebook(bookRecord);

break;

case2:

reader.change();

break;

case0:

break;

}

}

break;

default:

return0;

}

}

 

return0;

}

//增加书籍

voidLiberian:

:

Append(fstream&storef)

{

bookDatabook;

intchoice;

intkey;

intnum;

storef.seekp(0,ios:

:

end);

intposEnd=storef.tellp();

cout<<"*************书籍入库***************"<

while

(1)

{

cout<<"Pleaseenteryourchoice:

"<

cout<<"1--添加新书\n"<<"2--已有书籍\n"<<"0--返回\n";

cin>>choice;

switch(choice)

{

case1:

cout<<"书号,书名,数量?

"<

cin>>book.booknumber>>book.bookname>>book.store;

storef.write(reinterpret_cast(&book),sizeof(bookData));

break;

case2:

storef.seekg(0,ios:

:

beg);

cout<<"Booknumber?

\n";

cin>>key;

do{

storef.read(reinterpret_cast(&book),sizeof(bookData));

}while(book.booknumber!

=key&&storef.tellg()!

=posEnd);

if(book.booknumber==key)

{

cout<

cout<<"输入已有书增加的数量:

"<

cin>>num;

if(num>0)

book.store+=num;

else

{

cout<<"Invalidinput"<

}

storef.seekp(-long(sizeof(bookData)),ios:

:

cur);////////////////////

storef.write(reinterpret_cast(&book),sizeof(bookData));

cout<<"现在书籍:

"<

"<

}

else

cout<<"找不到此书,请重新查阅书号是否正确!

"<

break;

case0:

return;

}

}

}

//书籍查询

voidFind(fstream&f)

{

bookDatabook;

intkey;

intchoice;

f.seekg(0,ios:

:

end);

intposEnd=f.tellp();

cout<<"*************书籍查询***************"<

while

(1)

{

cout<<"请输入您的选择\n"

<<"1--检索一本书\n"

<<"2--显示全部书籍\n"

<<"0--返回\n";

cin>>choice;

switch(choice)

{

case1:

f.seekg(0,ios:

:

beg);

cout<<"输入你想检索书的书号"<

cin>>key;

do{

f.read(reinterpret_cast(&book),sizeof(bookData));

}while(book.booknumber!

=key&&f.tellg()!

=posEnd);

if(book.booknumber==key)

cout<

else

cout<<"找不到此书,请重新确认!

"<

break;

case2:

f.seekg(0,ios:

:

beg);

do{

f.read(reinterpret_cast(&book),sizeof(bookData));

cout<

}while(f.tellg()!

=posEnd);

break;

case0:

return;

}

}

}

Reader:

:

Reader(fstream&c)

{

file=c;

Personperson={"0","0",0,{{0,"0",0},{0,"0",0}}};

}

voidReader:

:

print()

{

cout<<"Name"<<"---"<

}

 

//操作书籍?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

?

voidReader:

:

handlebook(fstream&filee)

{

intkey;intchoice;

bookDatabook;booliflag;intnum=0;

filee.seekp(0,ios:

:

end);

intposEnd=filee.tellp();

while(!

(iflag=findreader()))

{

num++;

if(num>=3)

return;

}

//cout<

while

(1)

{

cout<<"1--借书\n"

<<"2--还书\n"

<<"3--查找一本书\n"

<<"0--返回"<<'\n';

cin>>choice;

switch(choice)

{

case1:

{

filee.seekp(0,ios:

:

end);

intposEnd=filee.tellp();

if(person.count<=1)

{

cout<<"输入你要借阅图书的书号:

"<

cin>>key;

filee.seekg(0);

do{

filee.read(reinterpret_cast(&book),sizeof(bookData));

}while(book.booknumber!

=key&&filee.tellp()!

=posEnd);

//cout<

if(book.booknumber==key)

{

//cout<<"找到你想借阅的图书,成功借阅!

"<

if(book.store>0)

{

person.Rbook[person.count]=book;

person.count+=1;

book.store-=1;

filee.seekp(-long(sizeof(bookData)),ios:

:

cur);

filee.write(reinterpret_cast(&book),sizeof(bookData));

cout<<"找到你想借阅的图书,成功借阅!

"<

cout<<"书籍:

"<

"<

}

else

cout<<"现在此图书已经被借完了,请耐心等待几天!

"<

}

else

cout<<"找不到你想要的图书"<

}

else

cout<<"你最多只能借2本\n\n";

}

break;

 

case2:

{

bookDatablankbook={0,"0",0};

//if(person.count>0)

//{

intiflag=0;

filee.seekg(0);

cout<<"输入你想要还的书的书号:

"<

cin>>key;

for(inti=0;i<2;i++)

{

if(key==person.Rbook[i].booknumber)

{

person.Rbook[i]=blankbook;

cout<<"成功归还此书!

";

iflag=1;

person.count--;

do{

filee.read(reinterpret_cast(&book),sizeof(bookData));

}while(book.booknumber!

=key&&filee.tellp()!

=posEnd);

if(book.booknumber==key)

{

book.store+=1;

filee.seekp(-long(sizeof(bookData)),ios:

:

cur);

filee.write(reinterpret_cast(&book),sizeof(bookData));

cout<<"书籍:

"<

"<

}

}

 

}

if(!

iflag)

{

cout<<"你没有借阅那本书,请确认!

"<

}

//}

//else

//cout<<"你没有借书,请重新确认!

\n\n";

}

break;

case3:

Find(filee);

break;

case0:

return;

}

}

}

 

voidReader:

:

change()

{

charnewname[20];charnewnumber[10];

intchoice;

file.seekp(0,ios:

:

cur);

intPosend=file.tellp();booliflag;intnum=0;

while(!

(iflag=findreader()))

{

num++;

if(num>=3)

return;

}

cout<<"请输入你的选择!

"<

cout<<"1--改变名字!

\n"

<<"2--修改学号r\n"

<<"0--返回\n";

cin>>choice;

switch(choice)

{

case1:

cout<<"输入你的新名字!

\n";

cin>>newname;

strcpy(person.name,newname);

break;

case2:

cout<<"输入你的信学号?

\n";

cin>>newnumber;

strcpy(person.studynumber,newnumber);

break;

default:

break;;

}

file.seekp(-long(sizeof(Person)),ios:

:

cur);

file.write(reinterpret_cast(&person),sizeof(Person));

cout<<"信息修改成功!

"<

}

voidLiberian:

:

selfprint()

{

cout<<"图书管理员:

\n"

<

\n";

}

Liberian:

:

Liberian(char*a,char*b)

{

strcpy(workname,a);

strcpy(worknumber,b);

}

voidLiberian:

:

changeReader(Reader&a)

{

intchoice;charnewname[20];charnewnumber[10];

cout<<"修改读者的数据信息!

\n";

cout<<"1--增加一个读者\n"

<<"2--删除一个读者\n"

<<"0--结束程序\n";

cin>>choice;

switch(choice)

{

case1:

a.Addreader();

break;

case2:

a.deletereader();

break;

case0:

return;

}

}

voidReader:

:

Addreader()

{

Persontemp;bookDatabook={0,"0",0};

file.seekp(0,ios:

:

end);

intPosend=file.tellp();

cout<<"输入你想要增加的读者的名字"<

cin>>temp.name;

cout<<"新读者的学号:

"<

cin>>temp.studynumber;

temp.Rbook[1]=book;temp.Rbook[0]=book;temp.count=0;

file.write(reinterpret_cast(&temp),sizeof(Person));

cout<<"成功添加!

"<

}

voidReader:

:

deletereader()

{

file.seekp(0,ios:

:

end);

intPosend=file.tellp();

Personperson;

charname[20];

cout<<"输入要删除的读者的名字!

"<

cin>>name;

file.seekg(0);

do{

file.read(reinterpret_cast(&person),sizeof(Person));

}while(strcmp(name,person.name)&&file.tellp()!

=Posend);

if(!

strcmp(name,person.name))

{

bookDatablankbook={0,"0",0};

Personguest={"0","0",0,{{0,"0",0},{0,"0",0}}};

file.seekp(-long(sizeof(Person)),ios:

:

cur);

file.write(reinterpret_cast(&guest),sizeof(Person));

cout<<"成功删除!

"<

}

else

cout<<"查无此人!

"<

}

boolReader:

:

findreader()

{

file.seekp(0,ios:

:

end);

intPosend=file.tellp();

charname[20];

Personguest={"0","0",0,{{0,"0",0},{0,"0",0}}};

cout<<"输入查找人的名字!

";

cin>>name;

file.seekg(0);

do{

file.read(reinterpret_cast(&person),sizeof(Person));

}while(strcmp(name,person.name)&&file.tellp()!

=Posend);

if(!

strcmp(name,person.name))

{

cout<<"查到此人:

"<

returntrue;

}

else

{

cout<<"找不到此人,请重新确认!

"<

returnfalse;

}

 

}

//借阅历史

voidHistory:

:

readhistory(fstream&a)

{

readerbook=a;

charname[10]="0";

readerbook.seekp(0,ios:

:

end);

intPosend=readerbook.tellp();

Personguest;intiflag=1;

cout<<"书籍借阅信息如下:

"<

cout<<"姓名学号借书量书籍名"<

readerbook.seekg(0,ios:

:

beg);

do{

readerbook.read(reinterpret_cast(&guest),sizeof(Person));

if(strcmp(guest.Rbook[1].bookname,name)||strcmp(guest.Rbook[1].bookname,name))

{

cout<

for(inti=0;i<2;i++)

if(st

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 林学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1