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

📄 book.cpp

📁 图书管理系统!!有简单基本功能
💻 CPP
字号:
#include <iostream.h>
#include <iomanip>
#include <stdio.h>
#include <conio.h>
#include <string>
#include "tushu.h"
#include "time1.h"
#include "student.h"
#include <fstream>
#include <stdlib.h>
void del(int);
using namespace std;
void tushuinput(fstream &);
static int tnum=10;
char *s[5]={"小白","小黑","小红","小绿","小花"};
void input();
bool tim(ttime &,ttime &);
int enterchoice1();
void search(fstream &);
void outputline(fstream &, int);
void newbook(int);
void borrow(fstream &,fstream &);
void back(fstream &,fstream &);
void stufir();
int getbooknum(char *);
student getstu(int,fstream &);
tushu getbook(int,fstream &);
bool check(int,fstream &); 
void menu();              
int main()
{
	cout<<"您现在即将进入图书管理系统,不要紧张,任意键继续..."<<endl;
	getch();
	menu();
	stufir();
	system("cls");
    int choice;
   while ( ( choice = enterchoice1() ) != 0 ) {
	  switch ( choice ) {
	  case 1:{
		  system("cls");
		  fstream access;
		  access.open("1.txt",ios::in); if(!access){cout<<"wrong!!!"<<endl;}
			if(!access){cout<<"错误!!!\n";break;}
			else 
	search(access);
			break;}
		case 2:
			{system("cls");
			fstream access1;
		  access1.open("1.txt",ios::in|ios::ate); if(!access1){cout<<"wrong!!!"<<endl;}
			fstream as;
			as.open("studata.dat",ios::in|ios::ate);
			if(!as){cout<<"错误!!!\n";break;}
		
             borrow(access1,as);
			break;}
        case 3:
			{system("cls");
			fstream access2;
			access2.open("1.txt",ios::in|ios::ate); if(!access2){cout<<"wrong!!!"<<endl;}
			fstream as1;
			as1.open("studata.dat",ios::in|ios::ate);
			if(!as1){cout<<"错误!!!\n";break;}
		
             back(access2,as1);
			break;}
        
        case 4:
			{
				system("cls");
				int admin=1111,ad;
	int pass=1111,pa;
	cout<<"输入管理员帐号:\n";
	cin>>ad;
	cout<<"输入管理员密码:\n";
	cin>>pa;
	if(ad==admin&&pa==pass){
			int boo = getbooknum( "Enter a new book number" );
		  newbook(boo);}else cout<<"用户名或密码错误!!!将返回主菜单,请谅解...\n";
		  break;}
        case 5:
			{system("cls");
			input();
			break;}
		case 6:{system("cls");
			cout<<"恭喜你中了彩蛋!!!\n本系统是软件053 孙骁勐,叶馨,林零,朱佳锦 作品\n嘎嘎"<<endl;
            cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;
			break;}
		default:
			{	system("cls");
			cerr << "跟你说不要乱按了嘛,再输一遍!!!\n";
				getch();
	cout<<endl; }
		  break;
	  }
	}
return 0;
}
int enterchoice1()
{
	
		system("cls");
	cout <<"=================================================== ||\n"
		<< "\n||键入你所要的选择:                                 ||\n"<<"===================================================\n"
		 << "||1-图书查询                                        ||\n"<<"===================================================\n"
         << "||2-借书                                            ||\n"<<"===================================================\n"
         << "||3-还书                                            ||\n"<<"===================================================\n"
         << "||4-图书信息更新   (添加或删除)(需管理员权限)    ||\n"<<"===================================================\n"
		 << "||5-图书库资料修改(图书手动初始化)(需管理员权限) ||\n"<<"===================================================\n"
         << "||0-退出                                            ||\n"<<"=================================================== ||\n"
		 << "=================================================== ||\n";
	int menuchoice;
	cin >> menuchoice;
	return menuchoice;
}
void input()
{
	
	int admin=1111,ad;
	int pass=1111,pa;
	cout<<"输入管理员帐号:\n";
	cin>>ad;
	cout<<"输入管理员密码:\n";
	cin>>pa;
	if(ad==admin&&pa==pass){
    fstream access;
	access.open("1.txt",ios::out|ios::in); 
	if(!access){cout<<"wrong!!!"<<endl;
	return ;}
	access.seekp(0);
	tushuinput(access);
	}
	else cout<<"用户名或密码错误!!!将返回主菜单,请谅解...\n";
	cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;
	return ;

}
void tushuinput(fstream &access)
{
    tushu keji;int x=1,y,z=0;
	cout<<"请输入要添加书的总数目\n";
	cin>>tnum;
	for(int l=0;l<tnum;l++)
	{
		if(l>0&&l%2==0)system("cls");
		
        cout<<"请输入书的类型:(1:科技书---2:文艺书)"<<endl;
		do{ 
			if(x!=1&&x!=2)cout<<"错误!!!重新输入..."<<endl;
			cin>>x;
		
				keji.number=++z;
				cout<<z<<"请输入书名:"<<endl;                 
			    cin>>keji.name;
			    cout<<"请输入书的数目:"<<endl;
			    cin>>keji.restnum;
			    cout<<"请输入地点:(1:留西 ---2:留下)"<<endl;
			    do{
					cin>>y;
			        if(y!=1&&y!=2)cout<<"错误!!!重新输入..." ;}
			    while(y!=1&&y!=2);
			    if(y==1)strcpy(keji.place,"留西");
			    else strcpy(keji.place,"留下");
				if(x==1)keji.sort=1;
				else keji.sort=2;
				if(x!=1&&x!=2)cout<<"wrong input!!!"<<endl;
				else access.write(reinterpret_cast<char *>(&keji),sizeof(tushu));
			}while(x!=1&&x!=2);

      
	}
	access.close();

}
void search(fstream& book)
{ cout << "1-科技类\n"
       << "2-文化类\n" <<endl;
    int a;
	cin>>a;
outputline(book , a);
}
void outputline(fstream& books, int a)
{  tushu convert;
   books.seekg(0);
   cout<<"图书编号   图书名称   图书数量   图书放置地点\n";
   for ( int i=0; i<tnum; i++ )
   { books.read( reinterpret_cast<char *>( &convert ),sizeof(tushu) );
       if(convert.sort==a&&convert.number==i+1) 
	   cout << convert.number <<"          " << convert.name<<"        "
            << convert.restnum <<"         " << convert.place<<endl;
   }
   cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;
}
void newbook(int b)
{  
	tushu convert,p;
      fstream bookq;
	  bookq.open("1.txt",ios::in|ios::out);if(!bookq){cout<<"wrong!!!"<<endl;}
  int y,x=1;
  bookq.seekg(0);
  for( int i=0; i<tnum; i++ ){bookq.read( reinterpret_cast<char *>( &convert ),
			sizeof(tushu) );
	  if(convert.number==b){
cout << " Book number# " <<b
     << " 已经存在.你想删除它吗?(y/n)" << endl;
char g;
g=getche();
if(g=='y'||g=='n'){if(g=='y'){del(b);return;}else {cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;
return ;}}
else
{cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;}

  }}
		  
  cout<<"请输入书的类型:(1:科技书---2:文艺书)"<<endl;
		do{ 
			if(x!=1&&x!=2)cout<<"错误!!!重新输入..."<<endl;
			cin>>x;
			p.number=b;
                cout<<"请输入书名:"<<endl;                 
			    cin>>p.name;
			    cout<<"请输入书的数目:"<<endl;
			    cin>>p.restnum;
			    cout<<"请输入地点:(1:留西 ---2:留下)"<<endl;
			    do{
					cin>>y;
			        if(y!=1&&y!=2)cout<<"错误!!!重新输入..." ;}
			    while(y!=1&&y!=2);
			    if(y==1)strcpy(p.place,"留西");
			    else strcpy(p.place,"留下");
				if(x==1)p.sort=1;
				else p.sort=2;
				if(x==1||x==2) {
					bookq.seekp(sizeof(tushu)*(b-1));
					
					bookq.write(reinterpret_cast<char *>(&p),sizeof(tushu));
                  bookq.close();}
				if(tnum<b)tnum=b;}while(x!=1&&x!=2);
cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;

  getch();
}
void borrow(fstream &shu,fstream &stu)  
{
	int k;
	tushu m;
	cout<<"输入你要借的书的序号:"<<endl;
	cin>>k;
	if(k<=tnum&&k>0){
		shu.seekg((k-1)*sizeof(tushu));
		shu.read(reinterpret_cast<char *>(&m),sizeof(tushu));
		if(m.restnum>0)
		{cout<<"输入你的学号:"<<endl;
		int num; cin>>num;
		if(check(num,stu)){student kk;ttime nn; (kk.lendtime)=nn;         
            kk=getstu(num,stu);
			tushu dd=getbook(k,shu);
			cout<<(kk).name<<" 你要借的书为 "<<(dd).name;
			cout<<" 借书时间为:";
			nn.ShowTime();
			kk.booknum+=1;
			dd.number-=1;
			cout<<endl;
          stu.seekp(sizeof(student)*(num-1)); 
		  shu.seekp(sizeof(tushu)*(k-1));
		  strcpy(kk.bookname,(getbook(k,shu)).name);
		 shu.write(reinterpret_cast<char *>(&dd),sizeof(tushu)); 
		stu.write(reinterpret_cast<char *>(&kk),sizeof(student));
		}
		else cout<<"没有此学号!!!"<<endl;
	}
	else cout<<"对不起,此书已经被借光,请下次再来。"<<endl;
	}
	else cout<<"没有此书,请仔细核对!!!"<<endl;
	cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;
}
void back(fstream &shu,fstream &stu)   //反对
{
	cout<<"请输入你的学号"<<endl;
	
	int num;
	cin>>num;
	if(check(num,stu)){
		cout<<"输入你要还的书的序号:"<<endl;
		int p;
		cin>>p;
		tushu dd=getbook(p,shu);
		student kk;
		kk=getstu(num,shu);
		ttime nn; (kk.backtime)=nn;
        cout<<(kk).name<<" 你要借的书为 "<<(dd).name;
		cout<<"还书时间为:";
		nn.ShowTime();
		kk.booknum-=1;
		dd.number+=1;
		kk.backtime.ShowTime();kk.lendtime.ShowTime();
		if(tim(kk.backtime,kk.lendtime))
		cout<<"你借的书已经过期,想死啊!!!"<<endl;
		else cout<<"还书成功!!!"<<endl;
		stu.seekp(sizeof(student)*(num-1)); 
		  shu.seekp(sizeof(tushu)*(p-1));
		  strcpy(kk.bookname,"");
		 shu.write(reinterpret_cast<char *>(&dd),sizeof(tushu)); 
		stu.write(reinterpret_cast<char *>(&kk),sizeof(student));
	}
	cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;



}

bool check(int num,fstream &stu)
{
	student kk;
	stu.seekg(sizeof(student)*(num-1));
	stu.read(reinterpret_cast<char *>(&kk),sizeof(student));
	if(kk.number==num&&kk.booknum<7)return true;
	else return false;
}
tushu getbook(int a,fstream &b)
{
    tushu kk;
	b.seekg(sizeof(tushu)*(a-1));
	b.read(reinterpret_cast<char *>(&kk),sizeof(tushu));
	return kk;
}
student getstu(int a,fstream &b)
{
    student stu;
	b.seekg(sizeof(student)*(a-1));
	b.read(reinterpret_cast<char *>(&stu),sizeof(student));
	return stu;
}

int getbooknum(char *u)
{
	cout<<u<<endl;
	int k;
	cin>>k;
	return k;
}
void stufir()
{
	fstream stu;
	int z=1;
	stu.open("studata.dat",ios::in|ios::out);
	if(!stu){
		cout<<"Open wrong!!!"<<endl;
		return;}
	student k;
	for(int i=0;i<5;i++)
	{
		stu.seekp(sizeof(student)*i);
		k.number=z++;
		strcpy(k.name,s[i]);
		(k.lendtime).SetTime(0,0,0,0,0,0);
		(k.backtime).SetTime(0,0,0,0,0,0);
		k.booknum=0;
		stu.write(reinterpret_cast<char *>(&k),sizeof(student));
	}
	
}
bool tim(ttime &a,ttime &b)
{
	if(a.m_year-b.m_year>0)return true;
	else {
		if(a.m_month-b.m_month>0)return true;
	    else return false;
	}
}
void del(int b)
{
    fstream access1;
    access1.open("1.txt",ios::in|ios::ate); if(!access1){cout<<"wrong!!!"<<endl;}
    access1.seekp(sizeof(tushu)*(b-1));
	tushu kk;
	access1.write(reinterpret_cast<char *>(&kk),sizeof(tushu));
	cout<<"成功删除!!!"<<endl;
	
    cout<<"按任意键返回..."<<endl;
    getch();
	cout<<endl;
}
void menu()
{
   int k;
   char a[132]="=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-==-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=";
	for(int i=0;i<132;i++)
	{
		for(int k=i;k<133;k++)
	cout<<a[i];}
	cout<<endl;
		
}









⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -