?? 簡易圖書管理系統.cpp
字號:
long num2;
userInfo people;
f4.seekp(0,ios::end);
long posEnd2=f4.tellp();//記錄文件末尾位置
f.seekp(0,ios::end);
long posEnd=f.tellp();//記錄文件末尾位置
//cout<<"借還書登記:\n";
while(1)
{
P: f.seekp(0,ios::beg);//從文件頭開始檢索
cout<<"書名:";
cin>>Book;
do //按書名查找
{
f.read((char*)&book,sizeof(bookData));
}while(strcmp(book.bookName,Book)!=0&&f.tellp()!=posEnd);
if(strcmp(book.bookName,Book)==0)//找到
{
cout<<"圖書編號:"<<book.TP<<endl;
cout<<"圖書名稱:"<<book.bookName<<endl;
cout<<"作者編號:"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號:"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫存量:"<<book.balance<<endl;
cout<<"剩余量:"<<book.balanceleave<<endl;
cout<<endl;
cout<<"請鍵入操作選擇:\n";
L: cout<<"1.借書 2.還書 0.退出;\n";
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"書本數量:";
cin>>num;
if(num>0&&book.balanceleave>=num)//修改剩余量
{
book.balanceleave-=num;
f.seekp(-long(sizeof(bookData)),ios::cur);//文件指針復位
f.write((char*)&book,sizeof(bookData));//修改文件記錄
cout<<"圖書編號:"<<book.TP<<endl;
cout<<"圖書名稱:"<<book.bookName<<endl;
cout<<"作者編號:"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號:"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫存量:"<<book.balance<<endl;
cout<<"剩余量:"<<book.balanceleave<<endl;
cout<<endl;
strcpy(people.bbookName,book.bookName);
people.balance=num;
cout<<"輸入用戶編號";
cin>>people.userNumber;
time_t lt;
lt = time(NULL);
strcpy(people.bDate,ctime(<));
f4.seekp(0,ios::end);
f4.write((char*)&people,sizeof(userInfo));
goto L;
}
else
{
cout<<"存量不足!\n";
goto L;
}
}
case 2:
{
cout<<"輸入用戶編號:";
cin>>num2;
cout<<"書本數量:";
cin>>num;
f4.seekp(0,ios::beg);
do //按書名查找
{
f4.read((char*)&people,sizeof(userInfo));
if(strcmp(people.bbookName,Book)==0
&&num>0
&&num<=people.balance
&&people.userNumber==num2
&&book.balance>=(num+book.balanceleave))//找到
{
flag=1;
people.balance-=num;
book.balanceleave+=num;
f.seekp(-long(sizeof(bookData)),ios::cur);//文件指針復位
f.write((char*)&book,sizeof(bookData));//修改文件記錄
cout<<"圖書編號:"<<book.TP<<endl;
cout<<"圖書名稱:"<<book.bookName<<endl;
cout<<"作者編號:"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號:"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫存量:"<<book.balance<<endl;
cout<<"剩余量:"<<book.balanceleave<<endl;
cout<<endl;
f4.seekp(-long(sizeof(userInfo)),ios::cur);//文件指針復位
f4.write((char*)&people,sizeof(userInfo));//修改文件記錄
if(people.balance==0)
{
userInfo *b;
int m,i;
f4.close();
f4.open("userbookFile.dat",ios::binary|ios::in|ios::out);
if(!f4)
{
cerr<<"error!";
abort();
}
f4.seekg(0,ios::end);
long posEnd2=f4.tellg();
m=posEnd2/sizeof(userInfo);
b=new userInfo[m];
f4.seekg(0,ios::beg);
i=0;
do
{
f4.read((char *)&b[i],sizeof(userInfo));
i++;
}while (f4.tellp()!=posEnd2);
f4.close();
f4.open("userbookFile.dat",ios::binary|ios::trunc|ios::out);
if(!f4)
{
cerr<<"error!";
abort();
}
i=0;
do
{
if(strcmp(b[i].bbookName,Book)==0&&b[i].userNumber==num2)
{
goto K;
}
f4.write((char*)&b[i],sizeof(userInfo));
K: i++;
}while (i!=m);
cout<<"\t該記錄已被刪除!"<<endl;
delete []b;
f4.close();
f4.open("userbookFile.dat",ios::binary|ios::in|ios::out);
if(!f4)
{
cerr<<"error!";
abort();
}
}
goto L;
}
}while(f4.tellp()!=posEnd2);
if(flag==0)
{ cout<<"找不到借書信息!"<<endl;
goto L;
}
}
case 0:manageBook(f,f4);
default:cout<<"輸入錯誤,請再次輸入:\n";
}
}
else
cout<<"書名輸入錯誤\n";
goto P;
}
}
//inquire.cpp,查詢
void Inquire(fstream f,fstream f4)
{
int choice;
bookData book;
char bName[40];
char writerName[40];
char bpublish[40];
f.seekg(0,ios::end);
long posEnd=f.tellp();
long key;
f4.seekg(0,ios::end);
long posEnd2=f4.tellp();
userInfo people;
int flag=0;
cout<<"查詢"<<endl;
while(1)
{
cout<<"請鍵入操作選擇:"<<endl;
cout<<"1:按圖書名稱查詢"<<endl;
cout<<"2:按作者信息查詢"<<endl;
cout<<"3:按出版社名稱查詢"<<endl;
cout<<"4:組合查詢"<<endl;
cout<<"5:瀏覽圖書信息"<<endl;
cout<<"6:按編號查詢用戶信息:"<<endl;
cout<<"7:瀏覽用戶信息"<<endl;
cout<<"0:退出\n";
cin>>choice;
switch(choice)
{
case 1://按圖書名稱查詢
{
f.seekg(0,ios::beg);
cout<<"請輸入要查找的圖書名稱:";
cin>>bName;
do
{
f.read((char*)&book,sizeof(bookData));
}while(strcmp(book.bookName,bName)!=0&&f.tellg()!=posEnd);
if(strcmp(book.bookName,bName)==0)
{
cout<<"圖書編號:"<<book.TP<<endl;
cout<<"圖書名稱:"<<book.bookName<<endl;
cout<<"作者編號:"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號:"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫存量:"<<book.balance<<endl;
cout<<"剩余量:"<<book.balanceleave<<endl;
cout<<endl;
}
else
{
cout<<"查無此書!"<<endl;
cout<<endl;
continue;
}
break;
}
case 2://按作者信息查詢
{
f.seekg(0,ios::beg);
cout<<"請輸入要查找的作者名稱:";
cin>>writerName;
do
{
f.read((char*)&book,sizeof(bookData));
if(strcmp(book.writerName1,writerName)==0
||strcmp(book.writerName2,writerName)==0
||strcmp(book.writerName3,writerName)==0)
{
flag=1;
cout<<"圖書編號:"<<book.TP<<endl;
cout<<"圖書名稱:"<<book.bookName<<endl;
cout<<"作者編號:"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號:"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫存量:"<<book.balance<<endl;
cout<<"剩余量:"<<book.balanceleave<<endl;
cout<<endl;
}
}while(f.tellg()!=posEnd);
if(flag==0)
{
cout<<"查無此書!"<<endl;
cout<<endl;
continue;
}
break;
}
case 3://按出版社名稱
{
f.seekg(0,ios::beg);
cout<<"請輸入要查找的出版社名稱:";
cin>>bpublish;
do
{
f.read((char*)&book,sizeof(bookData));
if(strcmp(book.publish,bpublish)==0)
{
flag=1;
cout<<"圖書編號:"<<book.TP<<endl;
cout<<"圖書名稱:"<<book.bookName<<endl;
cout<<"作者編號:"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號:"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫存量:"<<book.balance<<endl;
cout<<"剩余量:"<<book.balanceleave<<endl;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -