?? 簡(jiǎn)易圖書(shū)管理系統(tǒng).cpp
字號(hào):
#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];
};
//圖書(shū)號(hào)、圖書(shū)名;作者號(hào)、作者姓名;出版社號(hào)、出版社名;現(xiàn)存量和總庫(kù)存量。
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"
<<"************ 歡迎使用圖書(shū)管理系統(tǒng) *************\n"
<<"************ (簡(jiǎ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<<"文件不能打開(kāi)"<<endl;
return;
}
fstream iof4("userbookFile.dat",ios::binary|ios::in|ios::out);
if(!iof4)
{ cerr<<"文件不能打開(kāi)"<<endl;
return;
}
int choice;
char yourname[20];
char name[20]="admin";
int pw=1111;
int key;
while(1)
{ cout<<endl;
cout<<"請(qǐng)輸入用戶名:";
cin>>yourname;
cout<<"請(qǐng)輸入密碼:";
cin>>key;
if(strcmp(name,yourname)==0&&key==pw)
{
cout<<"請(qǐng)鍵入操作選擇\n"
<<"1:圖書(shū)管理 "
<<"0:退出\n";
cin>>choice;
switch(choice)
{
case 1:manageBook(iof,iof4);break;
case 0:exit(1);
default:cout<<"輸入錯(cuò)誤,請(qǐng)?jiān)佥斎隲n";
}
}
else
{
cout<<"用戶名或密碼輸入錯(cuò)誤\n";
continue;
}
}
iof4.close();
iof.close();
}
void manageBook(fstream f,fstream f4)
{
int choice;
while(1)
{
cout<<endl;
cout<<"***********************書(shū)庫(kù)管理**********************\n"
<<"輸入操作選擇:\n"
<<"1:出入庫(kù) "
<<"2:借還書(shū) "
<<"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<<"輸入錯(cuò)誤,請(qǐng)?jiān)佥斎隲n";
}
}
}
//Append.cpp入庫(kù)操作(無(wú)文件建立文件,有文件修改或追加文件)
void Append(fstream f,fstream f4)
{
int choice;
bookData book;
long key;
long num;
f.seekp(0,ios::end);//讀指針移到文件末尾
long posEnd=f.tellp();//記錄文件尾位置
cout<<"出入庫(kù)登記:\n";
while(1)
{
cout<<"請(qǐng)鍵入操作選擇\n"
<<"1:新書(shū)入庫(kù) "
<<"2:舊書(shū)追加 "
<<"3:清除庫(kù)存 "
<<"0:退出\n";
cin>>choice;
switch(choice)
{
case 1://追加新記錄
{ cout<<"圖書(shū)編號(hào):";
cin>>book.TP;
cout<<"圖書(shū)名稱:";
cin>>book.bookName;
cout<<"第一作者編號(hào):(無(wú)則輸入0)";
cin>>book.writerNumber1;
cout<<"第一作者姓名:(無(wú)則輸入NULL)";
cin>>book.writerName1;
cout<<"第二作者編號(hào):(無(wú)則輸入0)";
cin>>book.writerNumber2;
cout<<"第二作者姓名:(無(wú)則輸入NULL)";
cin>>book.writerName2;
cout<<"第三作者編號(hào):(無(wú)則輸入0)";
cin>>book.writerNumber3;
cout<<"第三作者姓名:(無(wú)則輸入NULL)";
cin>>book.writerName3;
cout<<"出版社編號(hào):";
cin>>book.publishNumber;
cout<<"出版社名稱:";
cin>>book.publish;
cout<<"入庫(kù)量:";
cin>>book.balance;
book.balanceleave=book.balance;
cout<<endl;
f.write((char*)&book,sizeof(bookData));//寫(xiě)入文件
return;
}
case 2://修改記錄
{
f.seekp(0,ios::beg);//寫(xiě)指針移動(dòng)到文件頭
cout<<"圖書(shū)編號(hào):";
cin>>key;//輸入書(shū)號(hào)
do //按書(shū)號(hào)查找,讀數(shù)據(jù)賦給結(jié)構(gòu)變量book
{
f.read((char*)&book,sizeof(bookData));
}while(book.TP!=key&&f.tellp()!=posEnd);
if(book.TP==key)//找到記錄
{
cout<<"圖書(shū)編號(hào):"<<book.TP<<endl;
cout<<"圖書(shū)名稱:"<<book.bookName<<endl;
cout<<"作者編號(hào):"<<book.writerNumber1<<endl;
cout<<"作者姓名:"<<book.writerName1<<endl;
cout<<" :"<<book.writerNumber2<<endl;
cout<<" :"<<book.writerName2<<endl;
cout<<" :"<<book.writerNumber3<<endl;
cout<<" :"<<book.writerName3<<endl;
cout<<"出版社編號(hào):"<<book.publishNumber<<endl;
cout<<"出版社名稱:"<<book.publish<<endl;
cout<<"庫(kù)存量:"<<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ù)量輸入錯(cuò)誤\n";
continue;
}
f.seekp(-long(sizeof(bookData)),ios::cur);
f.write((char*)&book,sizeof(bookData));
cout<<"現(xiàn)庫(kù)存量:\t\t"<<book.balance<<endl;
}
else
cout<<"書(shū)號(hào)輸入錯(cuò)誤\n";
break;
}
case 3://清除庫(kù)存
{
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<<"請(qǐng)輸入需清除圖書(shū)的編號(hào):";
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<<"該書(shū)尚有借出未歸還,不能清除庫(kù)存!"<<endl;
flag=3;
}
else
{
flag=1;
cout<<"圖書(shū)編號(hào):"<<a[i].TP<<endl;
cout<<"圖書(shū)名稱:"<<a[i].bookName<<endl;
cout<<"作者編號(hào):"<<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<<"出版社編號(hào):"<<a[i].publishNumber<<endl;
cout<<"出版社名稱:"<<a[i].publish<<endl;
cout<<"庫(kù)存量:"<<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<<"找不到圖書(shū)記錄!"<<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借還書(shū)登記,根據(jù)書(shū)號(hào)查找文件。如果找到,用入出數(shù)修改庫(kù)存量
void borrow_turn2(fstream f,fstream f4)
{
bookData book;
int flag=0;
char Book[20];
long num;
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -