#include <iostream>
#include <fstream>//文件输入输出
#include<iomanip>//控制输出格式
#include<string>
#include<time.h>//时间输出
using namespace std;
//书本类
class Book
{
protected:
string code,name,author,press,time;
int deadline;//借书期限
double price;//价格
bool Is_Lend;//书是否被借出
public:
bool Is_teacher;
static int Book_Number;
Book(string c,string n,string a,string p,double pr)
{
code=c;name=n;author =a;press =p;
price =pr;Is_Lend=0;Book_Number++;
};
Book(){
Is_Lend=false;}
string Gettime(){
return time;}
string GetCode(){
return code;}
string GetName(){
return name;}
string GetAuthor(){
return author;}
string GetPress(){
return press;}
int GetDeadline(){
return deadline;}
double GetPrice(){
return price;}
bool GetIs_Lend(){
return Is_Lend;}
void SetDeadline(int);
void SetTime(string);
void SetIs_Lend(bool);
void SetCode(string);
void SetName(string);
void SetAuthor(string);
void SetPress(string);
void SetPrice(float);
void Display();
friend const std::string getCurrentSystemTime();//获取现在的时间
friend istream& operator >> (istream &stream,Book &b);//重载操作符>>
friend ostream& operator << (ostream &stream,Book &b);//重载操作符<<
};
ostream &operator << (ostream &stream,Book &b)
{
stream<<"编号"<<setw(9)<<b.code<<" 书名:"<<setw(9)
<<b.name<<" 作者:"<<setw(9)<<b.author<<" 出版社:"
<<setw(9)<<b.press<<" 单价:"<<setw(5)<<b.price<<endl;
return stream;
}
istream &operator >> (istream &stream,Book &b)
{
cout<<"请输入编号:";
stream>>b.code;
cout<<"请输入书名:";
stream>>b.name;
cout<<"请输入作者名:";
stream>>b.author;
cout<<"请输入出版社:";
stream>>b.press;
cout<<"请输入单价:";
stream>>b.price;
return stream;
}
//获取系统当前时间的函数.
const string getCurrentSystemTime()
{
time_t t;
struct tm lt;
time (&t);
localtime_s (<,&t);//转为时间结构。
char date[60] = {
0};
sprintf_s(date, "%d-%02d-%02d %02d:%02d:%02d",
(int)lt.tm_year + 1900,(int)lt.tm_mon + 1,(int)lt.tm_mday,
(int)lt.tm_hour,(int)lt.tm_min,(int)lt.tm_sec);
return string(date);
}
void Book::SetDeadline(int a){
deadline =a;}
void Book::SetTime(string a){
time =a;}
void Book::SetIs_Lend(bool a){
Is_Lend =a;}
void Book::Display()//用来展示借书情况
{
cout<<"编号"<<setw(9)<<GetCode()<<" 书名:"<<setw(9)
<<GetName()<<" 作者:"<<setw(9)<<GetAuthor()<<" 出版社:"
<<setw(9)<<GetPress()<<" 单价:"<<setw(5)<<GetPrice()<<" 借书时间:"
<<setw(10)<<Gettime()<<" 借书期限:"<<GetDeadline()<<"天"<<endl;
}
void Book::SetCode(string code1)
{
code=code1;}
void Book::SetName(string name1)
{
name=name1;}
void Book::SetAuthor(string author1)
{
author=author1;}
void Book::SetPress(string press1)
{
press=press1;}
void Book::SetPrice(float price1)
{
price=price1;}
int Book::Book_Number=0;
static string LogName;//记录当前登陆用户的用户名
//用户类
class User
{
protected:
string name;//用户姓名
string key;//用户密码
bool Is_Admin,Is_Librarian,Is_Reader;//什么用户类型
public:
void key_change(User *U);//修改用户密码
int Judge();//判断用户类型
static int User_Number;
User(){
Is_Admin=0;Is_Librarian=0;Is_Reader=1;};//默认读者类型
void Setname(string name1);
void Setkey(string key1);
void SetIdentity(bool ad,bool li,bool re )//设置用户类型
{
Is_Admin=ad;Is_Reader=re;Is_Librarian=li;}
string Getname(){
return name;}
string Getkey(){
return key;}
bool GetisAd(){
return Is_Admin;}
bool Getisli(){
return Is_Librarian;}
bool Getisre(){
return Is_Reader;}
};
void User::key_change(User *U)
{
int find=0;string key,key1;
for(int i=0;i<User::User_Number;i++)
{
if(U[i].Getname()==LogName)
{
find=i;break;
}
}
cout<<"请输入原密码:";
cin>>key;
if(key==U[find].Getkey())
{
cout<<"请输入新密码:";
cin>>key;
cout<<"再输入一次新密码:";
cin>>key1;
if(key==key1)
{
U[find].Setkey(key);
cout<<"修改成功!"<<endl;
}
else
{
cout<<"两次密码输入不一致,修改失败!"<<endl;
}
}
else
{
cout<<"密码错误!"<<endl;
}
}
int User::Judge()
{
if(Is_Librarian==1)return 5;
else if(Is_Admin==1)return 6;
else return 7;
};
void User::Setname(string name1)
{
name=name1;
};
void User::Setkey(string key1)
{
key=key1;
};
int User::User_Number=0;
class Log
{
public:
User tp;//存储登陆成功的用户的信息
int number;//存储当前用户信息对应的User类中下标值
void Login(User *p);//登陆
void SignIN(User *p);//注册
Log(){
number=0;};
bool Is_Log;//判断是否登陆成功。
};
void Log::SignIN(User *p)
{
int f1;string a,b,bb;
while(1)
{
f1=1;
cout<<"请输入用户名:";
cin>>a;
for(int i=0;i<=User::User_Number;i++)
{
if(p[i].Getname()==a)
{
cout<<"用户名已存在,请重新输入."<<endl;f1=0;
}
}
if(f1==0){
};
if(f1==1) {
break;}
}
while(1)
{
cout<<"请设置密码:";
cin>>b;
cout<<"再次输入密码:";
cin>>bb;
if(bb!=b)
{
cout<<"两次密码不一致,请重新输入."<<endl;
}
if(bb==b)
{
break;
}
}
//将注册成功的用户信息存储到user类里。
(p+User::User_Number)->Setname(a);
(p+User::User_Number)->Setkey(b);
(p+User::User_Number)->SetIdentity(0, 0, 1);
tp.Setname(a);
number=User::User_Number;
User::User_Number++;
};
void Log::Login(User *p)
{
string a,b;int flag=0;
cout<<"请输入账号:"<<endl;
cin>>a;
cout<<"请输入密码:"<<endl;
cin>>b;
for(int i=0;i<User::User_Number;i++)
{
if(a==p[i].Getname()&&b==p[i].Getkey())
{
tp.SetIdentity(p[i].GetisAd(), p[i].Getisli(), p[i].Getisre());
flag=1;tp.Setname(a);tp.Setkey(b)
C++图书管理系统
最新推荐文章于 2024-04-03 11:05:06 发布