📄 简易图书管理系统.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];
};
//图书号、图书名;作者号、作者姓名;出版社号、出版社名;现存量和总库存量。
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"
<<"************ 欢迎使用图书管理系统 *************\n"
<<"************ (简易版) *************\n"
<<"************ by Z.Q. *************\n"
<<"*****************************************************\n";
cout<<endl;
cout<<"***********************欢迎登陆**********************\n";
administrator();break;
//关闭文件
}
}
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 //按书号查找,读数据赋给结构变量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<<"追加数量:";
cin>>num;
if(num>0)
{
book.balance+=num;
book.balanceleave+=num;
}
else
{
cout<<"数量输入错误\n";
continue;
}
f.seekp(-long(sizeof(bookData)),ios::cur);
f.write((char*)&book,sizeof(bookData));
cout<<"现库存量:\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借还书登记,根据书号查找文件。如果找到,用入出数修改库存量
void borrow_turn2(fstream f,fstream f4)
{
bookData book;
int flag=0;
char Book[20];
long num;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -