您的位置:首页 > 其它

图书管理系统

2015-07-03 19:26 351 查看
3、图书信息管理系统

        设计一个C++程序来管理图书信息,能实现图书相关信息的具备数据的输入、查找、删除等功能,能实现。具体功能细节可以根据自己理解情况进行增加。水平不足,准备仓促,交得也比较迟,故名之为简易图书管理系统。努力,希望来日水平越来越高。进入系统界面如下:


 

       具体功能还得运行亲身实验。 记得开学的课上,老师希望我们能够学完后可以独立编写几百上千行程序,然而,这里只有248行,几百行都不到,系统也还有很多不完善的地方,还问了同学好多问题。这个学期写程序不勤奋,但是我会在暑假努力提高的。

         附上源代码:
#include <iostream>
#include <iomanip>
#include <string>
#include <fstream>
#define StrNum 10
#define Type 10
using namespace std;
const int Maxb=50;                 //最多可存储的图书
class Book                         //声明“书”这个类
{
private:
int tag;                        //删除标记
int num;                        //图书编号
int add;                        //增加标记
char number[StrNum];            //编号
char name[StrNum];              //书名
char kind[Type];                //图书类型

public:
Book(){}
char getkind()                  //获取图书类型
{
return kind[Type];
}
char getname()	                //获取书名
{
return name[StrNum];
}
int getnum()                     //获取图书编号
{
return num;
}
int gettag()                    //获取删除标记
{
return tag;
}
void setname(char na[])         //设置书名
{
strcpy(name,na);
}
void setkind(char kin[])        //设置类型
{
strcpy(kind,kin);
}
void delbook()                  //删除图书
{
tag=1;
}
void addbook(int n,char *na,char *kin)    //增加图书
{
tag=0;
num=n;
strcpy(name,na);
strcpy(kind,kin);
}
void disp()                     //输出图书
{
cout.flags (ios::left);     //设置左对齐
cout<<setw(15)<<num<<setw(20)<<name<<setw(15)<<kind<<endl;
}
};
class BDatabase
{
private:
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 *kin)     //增加图书
{
Book *p=query(n);
if(NULL==p)
{
top++;
book[top].addbook(n,na,kin);
return 1;
}
return 0;
}
Book *query(int bookid)         //查找图书
{
for (int i=0;i<=top;i++)
if (book[i].getnum()==bookid &&book[i].gettag()==0)
{
return &book[i];
}
return NULL;
}
void bookdata();                //图书资料库
void disp()
{
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()
{
char choice;
char bname[40];
char bkind[40];
char newType[20];
int bookid;
Book *b;
while (choice!='0')
{
cout<<"\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
cout<<"                                           \n\n";
cout<<"\t\t\t海  大  图  书  管  理  系  统\n\n";
cout<<"\t\t\t①    % 添加新入图书 %\n";
cout<<"\t\t\t②    % 修改具体图书 %\n";
cout<<"\t\t\t③    % 删除具体图书 %\n";
cout<<"\t\t\t④    % 查找具体图书 %\n";
cout<<"\t\t\t⑤    % 显示所有图书 %\n";
cout<<"\t\t\t⑥    % 清空全部数据 %\n";
cout<<"\t\t\t〇    % 退出管理系统 %\n";
cout<<"                                           \n\n";
cout<<"\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
cout<<"请扣入功能相应数字(1,2,3,4,5,6,0):";
cin>>choice;
switch (choice)
{
case '1':
cout<<"请输入图书编号:"<<endl;
cin>>bookid;
cout<<"请输入图书类型:"<<endl;
cin>>newType;
cout<<"请输入图书书名:"<<endl;
cin>>bname;
addbook(bookid,bname,newType);
break;
case '2':
cout<<"请输入图书编号:"<<endl;
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<<endl;
break;
}
cout<<"请输入新的书名:"<<endl;
cin>>bname;
b->setname(bname);
cout<<"请输入新的类型:"<<endl;
cin>>bkind;
b->setkind(bkind);
break;
case '3':
cout<<"读入图书编号:"<<endl;
cin>>bookid;
b=query(bookid);
if(b==NULL)
{
cout<<"该图书不存在"<<endl;
break;
}
char tg1;
cout<<"是否要删除?(Y/N)"<<endl;
cin>>tg1;
if(tg1!='n'&&tg1!='N')
{
b->delbook();
cout<<"已成功删除该书!"<<endl;
break;
}
case '4':
cout<<"读入图书编号:"<<endl;
cin>>bookid;
b=query(bookid);
if (b==NULL)
{
cout<<"该图书不存在"<<endl;
break;
}
cout<<"图书编号      图书名称            图书类型         \n";
b->disp();
break;
case '5':
cout<<"图书编号      图书名称            图书类型         \n";
disp();
break;
case '6':
char tg2;
cout<<"是否清空所有数据?(Y/N)"<<endl;
cin>>tg2;
if(tg2!='n'&&tg2!='N')
{
clear();
cout<<"已成功清空数据!"<<endl;
break;
}
case '0':
break;
default:cout<<"输入错误,请从新输入(数字为0~6):";
}
}
}
void main()     //主函数,程序的主界面
{
char choice;
BDatabase BookDB;
while(choice!='0')
{       cout<<"\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
cout<<"                                           \n\n";
cout<<"\n\n\t\t\t欢迎进入海大图书管理系统\n\n";
cout<<endl<<endl<<"\t\t\t 请扣①确认进入系统           \n\n\n\n";
cout<<"                         若离开请扣〇确认以离开                   \n\n";
cout<<"\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n";
cout<<"请扣入:";
cin>>choice;
switch(choice)
{
case '1':
BookDB.bookdata();
break;
case '0':
cout<<"\n\n\t\t\t欢迎再次光临海大图书管理系统\n\n";
break;
default:cout<<"输入错误,请从新输入:";
}
}
}
    最后还是想说一句:老师辛苦了。

  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: