?? 簡易圖書管理系統(tǒng).cpp
字號:
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<string.h>
#include <time.h>
#include <stdio.h>
#include <conio.h>
struct userInfo
{
long userNumber;
char bbookName[40];
long balance;
char bDate[50];
};
//圖書號、圖書名;作者號、作者姓名;出版社號、出版社名;現(xiàn)存量和總庫存量。
struct bookData
{
long TP;
char bookName[40];
long writerNumber1;
long writerNumber2;
long writerNumber3;
char writerName1[40];
char writerName2[40];
char writerName3[40];
long publishNumber;
char publish[40];
long balance;
long balanceleave;
};
void administrator();
void manageUser(fstream f,fstream f4);
void manageBook(fstream f,fstream f4);
void Append(fstream f,fstream f4);
void Inquire(fstream f,fstream f4);
void useruse(fstream f,fstream f4);
void borrow_turn2(fstream f,fstream f4);
void main()
{
while(1)
{
cout<<"*****************************************************\n"
<<"************ *************\n"
<<"************ 歡迎使用圖書管理系統(tǒng) *************\n"
<<"************ (簡易版) *************\n"
<<"************ by Z.Q. *************\n"
<<"*****************************************************\n";
cout<<endl;
cout<<"***********************歡迎登陸**********************\n";
administrator();break;
//關(guān)閉文件
}
}
void administrator()
{
fstream iof("bookFile.dat",ios::binary|ios::in|ios::out);
if(!iof)
{ cerr<<"文件不能打開"<<endl;
return;
}
fstream iof4("userbookFile.dat",ios::binary|ios::in|ios::out);
if(!iof4)
{ cerr<<"文件不能打開"<<endl;
return;
}
int choice;
char yourname[20];
char name[20]="admin";
int pw=1111;
int key;
while(1)
{ cout<<endl;
cout<<"請輸入用戶名:";
cin>>yourname;
cout<<"請輸入密碼:";
cin>>key;
if(strcmp(name,yourname)==0&&key==pw)
{
cout<<"請鍵入操作選擇\n"
<<"1:圖書管理 "
<<"0:退出\n";
cin>>choice;
switch(choice)
{
case 1:manageBook(iof,iof4);break;
case 0:exit(1);
default:cout<<"輸入錯誤,請再輸入\n";
}
}
else
{
cout<<"用戶名或密碼輸入錯誤\n";
continue;
}
}
iof4.close();
iof.close();
}
void manageBook(fstream f,fstream f4)
{
int choice;
while(1)
{
cout<<endl;
cout<<"***********************書庫管理**********************\n"
<<"輸入操作選擇:\n"
<<"1:出入庫 "
<<"2:借還書 "
<<"3:查詢 "
<<"0:退出\n";
cin>>choice;
switch(choice)
{
case 1:Append(f,f4);break;
case 2:borrow_turn2(f,f4);break;
case 3:Inquire(f,f4);break;
case 0:exit(1);
default:cout<<"輸入錯誤,請再輸入\n";
}
}
}
//Append.cpp入庫操作(無文件建立文件,有文件修改或追加文件)
void Append(fstream f,fstream f4)
{
int choice;
bookData book;
long key;
long num;
f.seekp(0,ios::end);//讀指針移到文件末尾
long posEnd=f.tellp();//記錄文件尾位置
cout<<"出入庫登記:\n";
while(1)
{
cout<<"請鍵入操作選擇\n"
<<"1:新書入庫 "
<<"2:舊書追加 "
<<"3:清除庫存 "
<<"0:退出\n";
cin>>choice;
switch(choice)
{
case 1://追加新記錄
{ cout<<"圖書編號:";
cin>>book.TP;
cout<<"圖書名稱:";
cin>>book.bookName;
cout<<"第一作者編號:(無則輸入0)";
cin>>book.writerNumber1;
cout<<"第一作者姓名:(無則輸入NULL)";
cin>>book.writerName1;
cout<<"第二作者編號:(無則輸入0)";
cin>>book.writerNumber2;
cout<<"第二作者姓名:(無則輸入NULL)";
cin>>book.writerName2;
cout<<"第三作者編號:(無則輸入0)";
cin>>book.writerNumber3;
cout<<"第三作者姓名:(無則輸入NULL)";
cin>>book.writerName3;
cout<<"出版社編號:";
cin>>book.publishNumber;
cout<<"出版社名稱:";
cin>>book.publish;
cout<<"入庫量:";
cin>>book.balance;
book.balanceleave=book.balance;
cout<<endl;
f.write((char*)&book,sizeof(bookData));//寫入文件
return;
}
case 2://修改記錄
{
f.seekp(0,ios::beg);//寫指針移動到文件頭
cout<<"圖書編號:";
cin>>key;//輸入書號
do //按書號查找,讀數(shù)據(jù)賦給結(jié)構(gòu)變量book
{
f.read((char*)&book,sizeof(bookData));
}while(book.TP!=key&&f.tellp()!=posEnd);
if(book.TP==key)//找到記錄
{
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<<"追加數(shù)量:";
cin>>num;
if(num>0)
{
book.balance+=num;
book.balanceleave+=num;
}
else
{
cout<<"數(shù)量輸入錯誤\n";
continue;
}
f.seekp(-long(sizeof(bookData)),ios::cur);
f.write((char*)&book,sizeof(bookData));
cout<<"現(xiàn)庫存量:\t\t"<<book.balance<<endl;
}
else
cout<<"書號輸入錯誤\n";
break;
}
case 3://清除庫存
{
bookData *a;
int m,i,bh,flag=0;
f.close();
f.open("bookFile.dat",ios::binary|ios::in|ios::out);
if(!f)
{
cerr<<"error!";
abort();
}
f.seekg(0,ios::end);
long posend=f.tellg();
m=posend/sizeof(bookData);
a=new bookData[m];
f.seekg(0,ios::beg);
i=0;
do
{
f.read((char *)&a[i],sizeof(bookData));
i++;
}while (f.tellp()!=posend);
f.close();
cout<<"請輸入需清除圖書的編號:";
cin>>bh;
f.open("bookFile.dat",ios::binary|ios::trunc|ios::out);
if(!f)
{
cerr<<"error!";
abort();
}
i=0;
do
{
if(a[i].TP==bh)
{
if(a[i].balance!=a[i].balanceleave)
{
cout<<"該書尚有借出未歸還,不能清除庫存!"<<endl;
flag=3;
}
else
{
flag=1;
cout<<"圖書編號:"<<a[i].TP<<endl;
cout<<"圖書名稱:"<<a[i].bookName<<endl;
cout<<"作者編號:"<<a[i].writerNumber1<<endl;
cout<<"作者姓名:"<<a[i].writerName1<<endl;
cout<<" :"<<a[i].writerNumber2<<endl;
cout<<" :"<<a[i].writerName2<<endl;
cout<<" :"<<a[i].writerNumber3<<endl;
cout<<" :"<<a[i].writerName3<<endl;
cout<<"出版社編號:"<<a[i].publishNumber<<endl;
cout<<"出版社名稱:"<<a[i].publish<<endl;
cout<<"庫存量:"<<a[i].balance<<endl;
cout<<"剩余量:"<<a[i].balanceleave<<endl;
cout<<endl;
goto L;
}
}
f.write((char*)&a[i],sizeof(bookData));
L: i++;
}while (i!=m);
if (flag==0)
{
cout<<"找不到圖書記錄!"<<endl;
do
{
f.write((char*)&a[i],sizeof(bookData));
i++;
}while(i!=m);
}
if(flag==1)
{ cout<<"\t該記錄已被刪除!"<<endl;}
delete []a;
f.close();
f.open("bookFile.dat",ios::binary|ios::in|ios::out);
if(!f)
{
cerr<<"error!";
abort();
}
}
case 0:{manageBook(f,f4);}
}
}
}
//borrow_turn.cpp借還書登記,根據(jù)書號查找文件。如果找到,用入出數(shù)修改庫存量
void borrow_turn2(fstream f,fstream f4)
{
bookData book;
int flag=0;
char Book[20];
long num;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -