图书管理系统

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<<"输入错误,请从新输入:";
			}
	}
}
    最后还是想说一句:老师辛苦了。

  

通过C++实习简单的设计出图书管理系统 class Student { private: int snumber; string sname; string ssex; int sage; string sdapt; string srutime; string sbiyetime; string sjieyuetime; int sjiecount; public: Student(int number=0,string name="0",string sex="0",int age=0,string dapt="0", string rutime="0",string biyetime="0",string jieyuetime="0",int jiecount=0); virtual ~Student(); int Getsnumber(); void Setsnumber(int number); string Getsname(); void Setsname(string name); string Getssex(); void Setssex(string sex); int Getsage(); void Setsage(int age); string Getsdapt(); void Setsdapt(string dapt); string Getsrutime(); void Setsrutime(string rutime); string Getsbiyetime(); void Setsbiyetime(string biyetime); string Getsjieyuetime(); void Setsjieyuetime(string jieyutime); int Getsjiecount(); void Setsjiecount(int jiecount); void Studentshow(); }; 2)将文本文件信息存入Stulist容器 int snumber; string sname; string ssex; int sage; string sdapt; string srutime; string sbiyetime; string sjieyuetime; int sjiecount; //定义Stulist容器和相应迭代器 list<Student> Stulist; list<Student>::iterator s_iter=Stulist.begin(); list<Student>::iterator iter=Stulist.begin(); //定义文件输入流,读取文件 ifstream infile2; infile2.open("Student.txt",ios::in); //将文本文件信息存入Stulist容器中 infile2>>snumber>>sname>>ssex>>sage>>sdapt>>srutime>>sbiyetime>>sjieyuetime>> sjiecount; Student std(snumber,sname,ssex,sage,sdapt,srutime,sbiyetime,sjieyuetime,sjiecount); Stulist.push_back(std); while(infile2>>snumber>>sname>>ssex>>sage>>sdapt>>srutime>>sbiyetime>>sjieyuet ime>>sjiecount) { Student std(snumber,sname,ssex,sage,sdapt,srutime,sbiyetime,sjieyuetime, sjiecount); Stulist.push_back(std); } 3)查询学生信息 cout<<"1、显示所有信息\t\t2、查询某个学生"<<endl; cout<<"请选择······"<<endl; int xuan; cin>>xuan; if(xuan==1) { cout<<"全部学生信息如下:"<<endl; for(s_iter=Stulist.begin(); s_iter!=Stulist.end(); s_iter++) { s_iter->Studentshow(); } } else if(xuan==2) { cout<<"请输入您要查询学生的编号(20100128**)->>"; int xuehao; int judge=0; cin>>xuehao; for(s_iter=Stulist.begin(); s_iter!=Stulist.end(); s_iter++) { if(s_iter->Getsnumber()==xuehao) { cout<<"查询结果如下:"<<endl; s_iter->Studentshow(); judge=1; break; } } if(judge == 0) { cout<<"你要查找的学生不存在!"<<endl; } } else{ cout<<"无此选项!"<<endl;} 4)删除学生信息 cout<<"请输入要删除学生的学号(20100128**)->>"; int number; int judge=0; int ok=0; cin>>number; for(s_iter=Stulist.begin(); s_iter!=Stulist.end(); s_iter++) { if(s_iter->Getsnumber()==number) { iter=s_iter; iter->Studentshow(); judge=1; break; } else{;} } cout<<"是否删除:1、是2、否->>"; cin>>ok; if(judge==1 && ok==1) { Stulist.erase(s_iter); ofstream Delestu; Delestu.open("Student.txt",ios::out); for(s_iter=Stulist.begin(); s_iter!=Stulist.end(); s_iter++) { Delestu<<s_iter->Getsnumber()<<""<<s_iter->Getsname()<<""<<s_iter-> Getssex()<<""<<s_iter->Getsage()<<""<<s_iter->Getsdapt()<<""<<s_iter-> Getsrutime()<<""<<s_iter->Getsbiyetime()<<""<<s_iter->Getsjieyuetime() <<""<<s_iter->Getsjiecount()<<endl; } cout<<"删除成功!"<<endl; } else if(judge==0) { cout<<"未找到相应学生编号,无法删除!"<<endl; } else{;}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值