您的位置:首页 > 编程语言 > C语言/C++

c++图书管理系统

2010-12-24 10:48 423 查看
#include <iostream>
#include <fstream>
#include <string>
#include <iomanip> //排版
#include<conio.h> //与getch()连用,用于按下即跳出
using namespace std;
const int n = 500; //定义书籍最大数
int count
={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,};
string Student
= { "1001","1002","1004","1005","1003","1006","1007","1008","1009","1010","1011","1012","1013","1014","1015","1016","1017","1018","1019","1020"};
int j = 0 ;
int jj=0; //全局变量将用于添加时增加记录使用
struct Date //定义结构体,用于标记借还书日期
{
int year;
int month;
int day ;
}day1,day2; //声明两个结构体变量,day1为借书日期,day2为还书日期

class init
{
public:
void Print(); //主界面
void AddBook(); //定义共有成员函数AddBook,用于添加书籍信息
void DeleteBook(); //定义共有成员函数DeleteBook,用于删除书籍信息
void AlterBook(); //定义共有成员函数AlterBook,用于修改书籍信息
void Select(); //定义查询函数
void BorrowBook(); //定义借书函数
void ReturnBook(); //定义还书函数
friend void display(init &); //定义友元函数display,用于显示书籍信息
private:
string BookID
; //定义书号
string BookName
; //定义书名
string Publisher
; //定义出版社
string Location
; //定义存放地

};

void init::Print() //这是主界面
{
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、退出 "<<endl;
}

void init::AddBook()
{
int i = 0 ;
int nn; //定义所要添加的书籍信息的个数
ofstream outfile("lib.txt",ios::app); //打开文件,将此数组写入文件
if(!outfile) //找不到该文件!
{
cerr<<"找不到该文件!"<<endl;
exit(1);
}
cout<<"请输入您要添加的书籍信息的个数: ";
cin>>nn;
for(i=j;i<nn+j;i++)
{
cout<<"请输入您要添加的第"<<i+1<<"个书籍信息: "<<endl ;
cout<<"请添加书号: ";
cin>>BookID[i];
outfile<<BookID[i]; //写入文件
cout<<"请添加书名: ";
cin>>BookName[i];
outfile<<BookName[i];
cout<<"请添加书的出版社: ";
cin>>Publisher[i];
outfile<<Publisher[i];
cout<<"请输入书所在存放地: ";
cin>>Location[i];
outfile<<Location[i];
cout<<"添加成功!!!"<<endl;
}
outfile.close();
j=j+nn;
}

void init::DeleteBook() //删除成员函数,用于删除该书记录
{
string id ;
int flag1=0; //用于检查是否符合删除条件,初始值为0,当有此书记录时,flag1=1
cout<<"请输入您要删除的书号: ";
cin>>id ;
for(int i = 0 ; i < j ; i++)
{
if(BookID[i] == id)
{
flag1 = 1; //当有这本书时,flag设置为1
cout<<"删除成功!"<<endl;
for(int ii = 0; ii<j-i;ii++) //定义ii,ii只是一个标志,用于执行j-i次下面操作
{
BookID[i] = BookID[i+1]; //后面的往前覆盖
BookName[i]=BookName[i+1];
Publisher[i] = Publisher[i+1];
Location[i]= Location[i+1];
}
j=j-1; //删除一个,全局变量值相应减少1
}
}
if(flag1==0) //没有这本书
{
cout<<"没有该书信息!,请确认后在删除!"<<endl;
}

}

void init::AlterBook()
{
string id ;
int flag1 = 0;
int chose;
string a1,a2,a3;
begin2: //返回此操作
cout<<"请输入您要修改书籍的书号: ";
cin>>id;
for(int i = 0 ; i<j ;i++)
{
if(BookID[i]==id)
{
flag1=1;
cout<<"找到该书,请选择操作:"<<endl;
begin1:
cout<<"按1修改书名;按2修改出版社;按3修改存放地..."<<endl;
cin>>chose;
switch(chose)
{
case 1:
cout<<"请输入修改后的书名: ";
cin>>a1;
BookName[i]=a1;//将字符串a1复制到BookName[i]
break;
case 2:
cout<<"请输入修改后的出版社名: ";
cin>>a2;
Publisher[i]=a2;
break;
case 3:
cout<<"请输入修改后的存放地: ";
cin>>a3;
Location[i]=a3;
break;
}
cout<<"继续修改本书信息?继续请按‘y’或者‘Y’,否则请按任何键! ";
char chose1;
cin>>chose1;
if(chose1=='y'||chose1=='Y')
{
goto begin1;
}
else
{
cout<<"继续修改其他书籍信息?继续请按‘y’或者‘Y’,否则请按任何键! ";
char chose2;
cin>>chose2;
if(chose2=='y'||chose2=='Y')
{
goto begin2;
}
else
cout<<"返回主菜单!"<<endl;
}
}
}

if(flag1==0)
{
cout<<"没有该书信息!请确认后再修改!"<<endl;
}
}

void display(init &t) //定义友元函数,用于显示所有书籍信息
{
cout<<" 书号"<<" 书名"<<" 出版社"<<" 存放地"<<endl;
for( int i = 0 ;i<j;i++)
{

cout<<setw(6)<<t.BookID[i]<<setw(6)<<t.BookName[i]<<setw(6)<<t.Publisher[i]<<setw(6)<<t.Location[i]<<endl;
}

}

void init::Select()
{
string id;
string name;
string pub;
string loc;
int flag1 = 0;
int i;
int getchose; //用于选择查询方式
cout<<" 欢迎进入图书查询系统 "<<endl;
cout<<" 1、按书 号 查询 "<<endl;
cout<<" 2、按书 名 查询 "<<endl;
cout<<" 3、按出版社查询 "<<endl;
cout<<" 4、按存放地查询 "<<endl;
cin>>getchose;
switch(getchose)
{
case 1:
cout<<"请输入您要查询的书籍书号: ";
cin>>id;
for(i=0; i<j; i++)
{
if(BookID[i]==id)
{
flag1=1;
cout<<"查询成功!,数据如下:"<<endl;
cout<<" 书号"<<" 书名"<<" 出版社"<<" 存放地"<<endl;
cout<<BookID[i]<<setw(6)<<BookName[i]<<setw(6)<<Publisher[i]<<setw(6)<<Location[i]<<endl;
}
}
if(flag1==0)
{
cout<<"找不到该书籍,请确认后重新查询!"<<endl;
}
break;
case 2:
cout<<"请输入您要查询的书籍书名: ";
cin>>name;
for( i=0; i<j; i++)
{
if(BookName[i]==name)
{
flag1=1;
cout<<"查询成功!,数据如下:"<<endl;
cout<<" 书号"<<" 书名"<<" 出版社"<<" 存放地"<<endl;
cout<<BookID[i]<<setw(6)<<BookName[i]<<setw(6)<<Publisher[i]<<setw(6)<<Location[i]<<endl;
}
}
if(flag1==0)
{
cout<<"找不到该书籍,请确认后重新查询!"<<endl;
}
break;
case 3:
cout<<"请输入您要查询的书籍所在出版社: ";
cin>>pub;
for( i=0; i<j; i++)
{
if(Publisher[i]==pub)
{
flag1=1;
cout<<"查询成功!,数据如下:"<<endl;
cout<<" 书号"<<" 书名"<<" 出版社"<<" 存放地"<<endl;
cout<<BookID[i]<<setw(6)<<BookName[i]<<setw(6)<<Publisher[i]<<setw(6)<<Location[i]<<endl;
}
}
if(flag1==0)
{
cout<<"找不到该书籍,请确认后重新查询!"<<endl;
}
break;
case 4:
cout<<"请输入您要查询的书籍存放地: ";
cin>>loc;
for( i=0; i<j; i++)
{

if(Location[i]==loc)
{
flag1=1;
cout<<"查询成功!,数据如下:"<<endl;
cout<<" 书号"<<" 书名"<<" 出版社"<<" 存放地"<<endl;
cout<<BookID[i]<<setw(6)<<BookName[i]<<setw(6)<<Publisher[i]<<setw(6)<<Location[i]<<endl;
}
}
if(flag1==0)
{
cout<<"找不到该书籍,请确认后重新查询!"<<endl;
}
break;
}

}
void init::BorrowBook()
{

int i=0;
string id;
int flag = 0;
string s1;
int flag1= 0;
if(count[i]<5)
{
cout<<"请输入借书学生的学号: ";
cin>>s1;
for(i=0;i<n;i++)
{
if(s1==Student[i])
{
flag=1;
cout<<"找到该学生!请输入所借的书号!"<<endl;
cin>>id;

for ( int ii = 0; ii<j;ii++)
{
if(BookID[ii]==id )
{
flag1=1;
cout<<"找到该书"<<endl;
cout<<"请输入借书时间:"<<endl;
cout<<"年: ";
cin>>day1.year;
cout<<"月: ";
cin>>day1.month;
cout<<"日: ";
cin>>day1.day;
count[i]++;
cout<<"该生已经借了"<<count[i]<<"本书!"<<endl;
}
}
}
}
if(flag1==0)
{
cout<<"很抱歉,没有这本书!"<<endl;
}
if(flag==0)
{
cout<<"找不到该学生!借书失败!"<<endl;

}
}
else

{
cout<<"您借书已经超过5本,不能继续借书!"<<endl;
}
}

void init::ReturnBook()
{
string s1,id;
int flag =0 ;
cout<<"请输入还书者学号:"<<endl;
cin>>s1;
for(int i =0 ;i<n; i++)
{
if(s1==Student[i])
{
cout<<"找到该学生!"<<endl;
flag = 1;
cout<<"该生所还书的书号是:"<<endl;
cin>>id;
cout<<"该生借此书时间是:"<<endl;
cout<<day1.year<<"年"<<day1.month<<"月"<<day1.day<<"日"<<endl;
cout<<"请输入还书时间:"<<endl;
cout<<"年: ";
cin>>day2.year;
cout<<"月: ";
cin>>day2.month;
cout<<"日: ";
cin>>day2.day;
if(day2.year-day1.year==0)
{
if(day2.month-day1.month==0)
{
cout<<"如期还书,还书成功!"<<endl;
cout<<"该生还有"<<count[i]-1<<"本书未还"<<endl;
count[i]--;
}
else
{
if(day2.month-day1.month==1)
{
if(day2.day-day1.day<1)
{
cout<<"如期还书,还书成功!"<<endl;
cout<<"该生还有"<<count[i]-1<<"本书未还"<<endl;
count[i]--;
}
else
{
int d=day2.day-day1.day;
cout<<"该生借书已超过三十天,需要提交罚款!"<<0.1*d<<"元!!!"<<endl;
}
}
else
{
int m = day2.month -day1.month ;
int d1 = day2.day-day1.day;
cout<<"该生借书已超过三十天,需要提交"<<(30*m+d1)*0.1<<"元罚款!"<<endl;
}
}
}
else
{
int y=day2.year-day1.year;
if(y>0)
{
int m = day2.month -day1.month ;
int d1 = day2.day-day1.day;
cout<<"该生借书已超过三十天,需要提交"<<(365*y+(30*m+d1))*0.1<<"元罚款!"<<endl;
}
}
}
}
if(flag = 0)
{
cout<<"找不到该学生!还书失败!"<<endl;
}
}

int main() //主函数
{
init t;
int choice;
string a,pw;
bool flag=1; //为真的时候,就继续执行程序
begin:
cout<<"请输入您的身份:"<<endl; //访问权限
{
cin>>a;
if(a=="1")
{
cout<<"请输入密码:"<<endl;
cin>>pw;
if(pw=="1")
{
cout<<"登陆成功"<<endl;
}
else
{
cout<<"密码错误!请重试!;"<<endl;
goto begin;
}
}
else
{
cout<<"用户名错误!请重试!"<<endl;
goto begin;
}
}

while(flag)
{
system("cls"); //返回表头,与getch()连用
t.Print();
cout<<"请输入您要执行的操作:"<<endl;
cin>>choice;
switch(choice)
{
case 1:
t.AddBook();getch();break;
case 2:
t.DeleteBook();getch();break;
case 3:
t.AlterBook();getch();break;
case 4:
t.Select(); getch(); break;
case 5:
display(t);getch();break;
case 6:
t.BorrowBook();t.DeleteBook();getch();break;
case 7:
t.ReturnBook();t.AddBook();getch();break;
case 0:
flag=0 ;exit(1);break; //为假的时候,退出程序
default:
cout<<"没有此功能,请重新输入";getch();
break;
}
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: