⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 简易图书管理系统.cpp

📁 初学者…… 很简单的东西…… ……
💻 CPP
📖 第 1 页 / 共 3 页
字号:
#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 + -