sirius6 2013-07-08 14:12 采纳率: 0%
浏览 5796
已结题

c++图书管理系统 有做过的来

文件读写有问题,结构体数据保存时包含了地址,怎么区分开啊?
// new2.cpp : 定义控制台应用程序的入口点。
//

// new.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include "iostream"
#include "string"
#include
#include
#include
#include "fstream"
#define UNIT_COST 0.1 //每本书每天0.1元
#define MAX_DAY 60 //最长借阅 60天
#define MAX_RENEW 30 //续借30天
#define MAX_RENEW_NUM 1 //续借次数 1
using namespace std;
typedef struct BOOK
{
char sheet_number[10];//编号 名称 类别 作者 出版社 出版时间 价格 数量 备注
char name[10];
char writer[10];
char press[10];
char publication_date[10];
int sort;
int price;
int note;
struct BOOK *next;
}Book,*Booklist;
BOOK *a;
struct Password
{
string name;//用户名
string password;//密码
//struct Password *next;
}pass={"admin","123456"},*Passlist;
Password *c;
typedef struct READER
{
char card_number[10];//读者证号 姓名 单位 当前借阅数 密码
char name[10];
char unit[10];
int current_borrow;
char password[6];
struct READER *next;
}*Reader;
READER *b;
class Log_in
{
public:
int Administrator_Load();//管理员登陆
int Reader_Load(Reader &b);//读者登陆
int Log();//登陆界面
int Borrow_Book(Booklist &a,Reader &b);//借书
int Return_Book(Booklist &a,Reader &b);//还书
void Search_Book(Booklist &a);//图书查询
void Load_Book(Booklist &a);
void Delete_Book(Booklist &a);
void Manage_load(Reader &b);
void Manage_Delet(Reader &b);
private:

bool Book_State(string sheet_number);//图书状态 借/还
int pay_cost;//缴费

};
int Log_in::Administrator_Load()
{
Password *p;
p=&pass;
int n=0,f=0;
int i=1;
string na,pas;
while(i!=3)
{
cout<<"--------------------------------------------------------------------------------"< cout cout //cout cin>>na;
cout< cout cin>>pas;
cout< if(na!=p->name||pas!=p->password)
{
cout<<"输入错误,重新输入!"<<endl;
system("cls");
i++;
}
else
{
cout<<"登录成功!"<<endl;
system("cls");
f=1;
}

if(i==3)break;
else
    if(f==1)
    {
while(n!=3)
{
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<"                                  管理面板                                       "<<endl;
cout<<"          1.增添读者                                      2.删除读者              "<<endl;
cout<<"          3.增添图书                                      4.删除图书                    "<<endl;
cin>>n;
system("cls");
switch(n)
{
case 1:Manage_load(b); system("cls");break;
case 2:Manage_Delet(b);system("cls");break;
case 3:Load_Book(a); system("cls");break;
case 4:Delete_Book(a);system("cls");break;
case 5:cout<<" "<<endl;break;

}
}break;
}break;
}

system("cls");
return 0;

}
BOOK *Creat_BOOK() //初试化图书链表
{
BOOK *p;

p=new BOOK;
if(!p) exit(1);
p->next=NULL;
return p;
}
READER *Creat_READER() //初试化图书链表
{
READER *p;

p=new READER;
if(!p) exit(1);
p->next=NULL;
return p;
}
int Log_in::Reader_Load(Reader &b)
{

READER p;
//p=new READER;
//p=b;
ifstream file2("Reader.dat",ios::binary|ios::in);
if(!file2)
cerr<<"file2 error!"<<endl;
int n=0,f=0;
int i=1;
string na,pas;
while(i!=3)
{
system("cls");
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<"                                  读者登录                                       ";
cout<<"          证件号:                                                                "<<endl;
//cout<<"                                                     按 3 返回上级菜单     "<<endl;
cin>>na;
cout<<endl;
cout<<"          密码:                                                                 ";
cin>>pas;
cout<<endl;
while(!file2.eof())
{
    file2.read((char*)&p,sizeof(p));
    cout<<p.card_number<<endl;

if(na!=p.card_number&&pas!=p.password)
    {cout<<"输入错误,重新输入!"<<endl; system("cls");i++;}
else 
    {
        cout<<"登录成功!"<<endl;
         system("cls");
        f=1;
        break;
    }
    }
}
    if(f==1)
    {
while(n!=4)
{
cout<<"--------------------------------------------------------------------------------"<<endl;
cout<<"                                  图书管理                                       "<<endl;
cout<<"          1.查询图书                                      2.借书              "<<endl;
cout<<"          3.还书                                          4.返回上级菜单                "<<endl;
cin>>n;
switch(n)
{
case 1:Search_Book(a);cout<<endl; system("cls");break;
case 2:Borrow_Book(a,b);cout<<endl; system("cls");break;
case 3:Return_Book(a,b);cout<<endl; system("cls");break;
case 4:break;

}
}
    }

system("cls");
file2.close();
return 0;

}
int Log_in::Log()
{
int n=0;
while(n!=9)
{
cout<<"--------------------------------------------------------------------------------"< cout cout cin>>n;
system("cls");
switch(n)
{
case 1:Administrator_Load();break;
case 2:Reader_Load(b);break;

}
}
return 0;

}
class Info
{
public:
BOOK *bok;
READER *rea;
//Info():BOOK(bok),READER(rea){}
void Load_Book(Booklist &a);
void Delete_Book(Booklist &a);
void Manage_load(Reader &b);
void Manage_Delet(Reader &b);
int Return_Book(Booklist &a,Reader &b);
private:
};
void Log_in::Search_Book(Booklist &a)
{
BOOK *p;
p=a->next;
char str[10];
cout<<"input the number: ";
cin>>str;
for(;p!=NULL;p=p->next)
{
if(strcmp(p->sheet_number,str)==0)
{
cout<<"编号 名称 类别 作者 出版社 出版时间 价格 数量 备注"< coutsheet_number<<" "<name<<" "<sort<<" "<writer<<" "<press<<" "<publication_date<<" "<price<<" "<note;
}

}

}

void Log_in::Load_Book(Booklist &a) //借阅时以编号作为主键

{
BOOK p;
p=new BOOK;
//fstream file1;
ofstream file1("book.dat",ios::binary|ios::out);
if(!file1)
cerr<<"file1 error!"< //p=new BOOK;
//if(!p) exit(1);
if(a!=NULL)
{
cout cin>>p->sheet_number;
cout<<" 名称:";
cin>>p->name;
cout<<" 数量:";
cin>>p->sort;
cout<<" 出版社名称:";
cin>>p->press;
cout<<" 作者:";
cin>>p->writer;
cout<<" 出版时间:";
cin>>p->publication_date;
cout<<" 价格:";
cin>>p->price;
p->note=1; //1表示没有借出
}
file1.write((char
)&p,sizeof(p));

file1.close();

}
/*
void Info::load_Book()
{
BOOK p;
p=bok->next;
cout<<"输入书的 编号 名称 类别 作者 出版社 出版时间 价格 数量 备注"< cin>>p->sheet_number>>p->name>>p->sort>>p->writer>>p->press>>p->publication_date>>p->price>>p->amount>>p->note;
cout<sheet_number<<" "<name<<" "<sort<<" "<writer<<" "<press<<" "<publication_date<<" "<price<<" "<amount<<" "<note;
}
*/
void Log_in::Delete_Book(Booklist &a)
{
BOOK *p;
fstream file1;
file1.open("book.dat",ios::in|ios::out);
if(!file1)
cerr<<"file1 error!"< p=a;
char num[10];
cout cin>>num;
while(p->next!=NULL)
{
file1.read((char
)&p,sizeof(p));
if(p->sheet_number==num)
delete p;
}
file1.write((char*)&p,sizeof(p));
file1.close();
}
int Log_in::Borrow_Book(Booklist &a,Reader &b)
{
BOOK p;
p=new BOOK;
READER *r;
r=new READER;
fstream file1,file2;
file1.open("book.dat",ios::in|ios::out);
if(!file1)
cerr<<"file1 error!"< file2.open("Reader.dat",ios::in|ios::out);
if(!file2)
cerr char al[10];
char card[10];
cout cin>>al;
while(p->next!=NULL)
{
file1.read((char
)&p,sizeof(p));
if((strcmp(p->sheet_number,al)==0)&&(p->sort>0))
{
cout<<"请输入读者证号:"< cin>>card;
while(r->next!=NULL)
{
file2.read((char*)&r,sizeof(r));
if((strcmp(r->card_number,card)==0)&&(r->current_borrow {
p->sort-=1;
r->current_borrow+=1;
return 0;
}
else
{
if(r->current_borrow>=MAX_DAY)
cout<<"读者已达到最大借阅数!"< if(strcmp(r->card_number,card)!=0)
cout<<"读者证号错误!"< return 0;
}
}
}
else
{
if((p->sort)==0)
cout<<"本书已全部借出!"< if(strcmp(p->sheet_number,al)!=0)
cout<<"对不起本书不存在!"< return 0;
}
}
file1.write((char*)&p,sizeof(p));
file2.write((char*)&r,sizeof(r));
file1.close();
file2.close();
return 0;
}
int Log_in::Return_Book(Booklist &a,Reader &b)
{
BOOK *p;
READER *r;
p=new BOOK;
r=new READER;
fstream file1,file2;
file1.open("book.dat",ios::in|ios::out);
if(!file1)
cerr file2.open("Reader.dat",ios::in|ios::out);
if(!file2)
cerr char al[10];
char card[10];
cout cin>>al;
while(p->next!=NULL)
{
if(strcmp(p->sheet_number,al)==0)
{
cout<<"请输入读者证号:"< cin>>card;
while(r->next!=NULL)
{
if(strcmp(r->card_number,card)==0)
{
p->sort+=1;
r->current_borrow-=1;
return 0;
}
else
{

                  if(strcmp(r->card_number,card)!=0)
                      cout<<"读者证号错误!"<<endl;
                  return 0;
              }
          }
   }
    else
    {
        if(strcmp(p->sheet_number,al)!=0)
            cout<<"对不起本书不存在!"<<endl;
        return 0;
    }
    return 0;
}
file1.write((char*)&p,sizeof(p));
file2.write((char*)&r,sizeof(r));
file1.close();
file2.close();
return 0;

}
void Log_in::Manage_load(Reader &b)
{
READER p;
//p=b;
//fstream file2;
p=new READER;
fstream file2("Reader.dat",ios::in|ios::out);
if(!file2)
cerr<<"file2 error!"< if(b->next==NULL)
{
cout<<" 读者证号:";
cin>>p->card_number;
cout<<" 姓名:";
cin>>p->name;
cout<<" 单位:";
cin>>p->unit;
cout<<" 当前借阅数:";
cin>>p->current_borrow;
cout<<" 密码:";
cin>>p->password;
}
file2.write((char
)p,sizeof(*p));
file2.close();
}
void Log_in::Manage_Delet(Reader &b)
{
READER p;
p=b;
fstream file2;
file2.open("Reader.dat",ios::in|ios::out);
if(!file2)
cerr<<"file2 error!"< char card[10];
cout cin>>card;
for(;p!=NULL;p=p->next)
{
if(p->next!=NULL&&(p->card_number==card))
delete p;
}
file2.write((char
)&p,sizeof(p));
file2.close();
}
int _tmain(int argc, _TCHAR* argv[])
{
// fstream file1,file2,file3;
// BOOK *p1;
// READER *p2;
//Password *p33;
a=Creat_BOOK();
b=Creat_READER();
//c=Creat_Password();
Log_in lo;
lo.Log();
return 0;
}

  • 写回答

2条回答 默认 最新

  • 普通网友 2015-12-05 08:34
    关注

    你的问题在哪里,还是要源代码...

    评论

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘