当前位置:编程学习 > C/C++ >>

求C语言编写图书管理系统

概述本系统主要实现图书录入、借书、还书、查询书籍、删除书籍等功能,要求界面菜单设置和布局合理,用户操作方便。
答案:#include<iostream>  
#include<iomanip>  
#include<string> 
#include<fstream>
#include<stdio.h>
using namespace std;  
const   int   Maxb=10000;   //最多的图书  
class   Book//图书类  
{  
int   tag;   //删除标记1:已删0:未删  
int   number;   //ISBN书号 
char   name[20];   //书名  
char author[10]; //主编
char number2[10];//版次
char position[20];//出版社
char time[20];//出版年
int price;//定价
int   onshelf;   //是否在架1:在架0:已借  
public:  
Book()   {}  
char  *getname()   {   return   name;   }   //获取姓名  
int   getnumber()   {   return   number;   }     //获取ISBN书号 
int   gettag()   {   return   tag;   }   //获取删除标记  
char *getauthor()    {return author;}       //获取主编
char *getnumber2()       {return number2;}               //获取版次
char *getposition() {return position;}               //获取出版社
char *gettime() {return time;}             //获取出版年
char getprice() {return price;}           //获取图书定价

void   delbook()   {   tag=1;   }   //删除图书  
void   addbook(int n,char *na,char *au,char *n2,char *da,char *ti,int pr)   //增加图书  
{  
tag=0;  
number=n;
price=pr;
strcpy(name,na);
strcpy(author,au);
strcpy(number2,n2);
strcpy(position,da);
strcpy(time,ti);
onshelf=1;  
}  

 

 

 

void   disp()   //输出图书  
{
cout   <<   setw(10)   <<   number   <<   setw(10)   <<   name   <<   setw(10)  
<<   setw(10)<<author<<setw(10)<<number2<<setw(10)<<position<<setw(10)<<time<<setw(10)<<price<<endl;  
}  
};  

 

class   BDatabase   //图书库类  
{  
int   top;   //图书记录指针  
Book   book[Maxb];   //图书记录  
public:  
BDatabase()   //构造函数,将book.txt读到book[]中  
{  
Book   b;  
top=-1;  
fstream   file("book.txt",ios::in);  
while   (1)  
{  
file.read((char   *)&b,sizeof(b));  
if   (!file)   break;  
top++;  
book[top]=b;  
}  
file.close();  
}  

 


void   clear()   //全删  
{  
top=-1;  
}  

 


int   addbook(int   n,char   *na,char *au, char *n2, char *da,char *ti,int pr)   //增加图书  
{  
Book   *p=search1(n);  
if   (p==NULL)  
{  
top++;  
book[top].addbook(n,na,au,n2,da,ti,pr);  
return   1;  
}  
return   0;  
}  

 


Book   *search1(int   bookid)   //查找图书  
{  
for   (int   i=0;i<=top;i++)  
if   (book[i].getnumber()==bookid   &&  
book[i].gettag()==0)  
return   &book[i];  
return   NULL;  
}  

 

 

Book *search2(int bookid,char *name)          //按书名查找图书
{
   for(int i=0;i<=top;i++)
       if(strcmp(book[i].getname(),name)==0)
    {bookid=book[i].getnumber();
    return &book[i];
    }
  
   return NULL;
}

 

Book *search3(int bookid,char *author)          //按主编查找图书
{
   for(int i=0;i<=top;i++)
       if(strcmp(book[i].getauthor(),author)==0)
    {bookid=book[i].getnumber();
    return &book[i];
    }
  
   return NULL;
}

 

void   bookdata();   //图书库维护  


void   disp()  
{  
   cout<<setw(10)<<"图书书号"<<setw(10)<<"图书名字"<<setw(10)<<"图书主编"<<setw(10)<<"版次"<<setw(10)<<"出版社"<<setw(10)<<"出版年"<<setw(10)<<"价格"<<endl<<endl<<endl<<endl;
for   (int   i=0;i<=top;i++)  
if   (book[i].gettag()==0)  
book[i].disp();  
}  
~BDatabase()   //析构函数,将book[]写入book.txt文件中  
{  
fstream   file("book.txt",ios::out);  
for   (int   i=0;i<=top;i++)  
if   (book[i].gettag()==0)  
file.write((char   *)&book[i],sizeof(book[i]));  
file.close();  
}  
};  

 

void   BDatabase::bookdata()  
{  
int  choice=1;  
int  choice2=1;
int  choice3=1;
int  choice4;
char bname[40];  
char editor[40];
char banci[40];
char position[40];
char year[40];
int  value;
int  bookid;  
Book   *b;  
while   (choice!=0)  
{   
 cout<<endl<<endl;
cout<<"    **************************** "<<endl;
cout<<"    ****   1添加图书        **** "<<endl;
cout<<"    ****   3 删除图书       **** "<<endl;
cout<<"    ****   4 图书查询       **** "<<endl;
cout<<"    ****   5 显示图书       **** "<<endl;
cout<<"    ****   6 全部删除       **** "<<endl;
cout<<"    ****   7 借书           **** "<<endl;
cout<<"    ****   8 还书   

上一个:c语言栈实现a+b*c
下一个:C语言问题,看详细提问

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,