精华内容
下载资源
问答
  • 小型图书管理系统

    2017-12-26 10:55:52
    软件工程——小型图书管理系统 软件工程——小型图书管理系统
  • 小型图书 管理系统

    2013-06-04 15:26:12
    小型图书 管理系统,Access,精美的页面,有报表
  • 小型图书管理系统Java

    2020-10-30 12:16:44
    用Java语言写的一个超级简单的小型图书管理系统,整体框架已经搭好,目前只有管理员、普通用户。功能有添加图书,查找图书,借阅图书,归还图书,删除图书,显示所有图书等基础功能。因为框架已经搭好,可以很容易...
  • 内容索引:C#源码,数据库应用,图书管理 C#2008 小型图书管理系统,采用MsSQL数据库,功能不算多,仅包括基本的模块单元,比如图片资料添加维护、用户管理、图书检索、图书借阅登记维护等,如果你对功能要求不复杂,...
  • 小型图书管理系统 asp.net 系统 小型图书管理系统 asp.net 系统
  • 含access数据库,小型图书管理系统,可运行,界面友好
  • C++ 实现小型图书管理系统

    万次阅读 多人点赞 2018-05-09 19:27:16
    因为课程设计的原因,需要实现一个小型图书管理系统包含功能:问题描述:设计一个系统,对图书信息进行管理,信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别...

    因为课程设计的原因,需要实现一个小型图书管理系统

    包含功能:


    问题描述:
    设计一个系统,对图书信息进行管理,信息描述:有关该系统基本信息的描述,如:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等。
    基本要求:
    基本功能:
    1、新进图书基本信息的输入。
    2、图书基本信息的查询。
    3、对撤消图书信息的删除。
    4、为借书人办理注册。
    5、办理借书手续(非注册会员不能借书)。
    6、办理还书手续。
    7、统计图书库存、已借出图书数量。


    需要创建三个文本文件:record.txt  book.txt reader.txt

    operating.h的头文件:

    #include <iostream>
    #include <fstream>
    #include <string>
    #include <time.h> 
    #include<sstream>
    #include<vector>
    #include <iomanip>
    
    
    using namespace std;
    
    
    int all_stock = 0;
    int out_stock = 0;
    int times=0;
    void outData(vector<string> res,int n)  // n为txt中 每行数据个数
    {
    	for(int i=0;i<res.size();i+=n){
    		for(int j=0;j<n;j++)
    			cout<<setw(12)<<res[i+j]<<" ";
    		
    		cout<<endl;
        }
    }
    
    
    
    
    
    
    
    
    void BookEntry()
    {
    	double price;
    	string bookname,writer;
    	fstream out;
    
    
    	out.open("book.txt",ios::app);
    	if(!out)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    
    
    
    
    	time_t tt = time(NULL);//这句返回的只是一个时间cuo
    	
    	cout<<"请输入书籍名称"<<endl;
    	cin>>bookname;
    	cout<<"请输入书籍作者"<<endl;
    	cin>>writer;
    	cout<<"请输入书籍价格"<<endl;
    
    
    	while(! (cin>>price)  || price <= 0 )
    	{
    		cin.clear();
    		cin.ignore(100,'\n');
    		cout<<"请输入正确的价格"<<endl;
    	}
    	
    	out<<tt<<" "<<bookname<<" "<<writer<<" "<<price<<" "<<"0"<<"\n";
    	
    	out.close();
    	
    	
    
    
    }
    
    
    void BookMes()
    {
    	fstream in;
    	string line;
    	//用于存放分割后的字符串 
        vector<string> res;
    	string temp; //暂存字符串
        
    
    
    	in.open("book.txt",ios::in);
    	if(!in)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	all_stock = 0;
    	while(getline(in,line))
    	{
    		all_stock++;
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		while(input>>temp)
    		{
    			
    			res.push_back(temp);
    		}
    	}
    	// 0 书籍编号 1 书籍名称 2作者 3价格 4书籍状态
        //输出res 
    	cout<<endl<<setw(12)<<"书籍编号"<<" "<<setw(12)<<"书籍名称"<<" "<<setw(12)<<"作者"<<" "<<setw(12)<<"价格"<<" "<<setw(12)<<"在馆0,不在1"<<"\n";
        outData(res,5);
    	in.close();
    }
    
    
    void DelBook()
    {
    	string del_book;
    	string line;
    	vector<string>res;
    	string temp;
    	bool flag=false;
    
    
    	fstream in;
    	in.open("book.txt",ios::in);
    	if(!in)
    	{
    		cerr<<"打开错误文件"<<endl;
    	}
    
    
    	cout<<"请输入需要删除的图书ID"<<endl;
    	cin>>del_book;
    	
    	
    	
    	while(getline(in,line))
    	{
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		times=0;
    		while(input>>temp)
    		{
    			if(del_book == temp && times==0)
    			{
    				
    				for(int i=0;i<3;i++)  //因为一共五个 第一个temp已经是del_book 所以这里取得是四个
    				{
    					input>>temp;
    				}
    				input>>temp;
    				if(temp != "0")
    				{
    					cout<<"书籍状态不对";
    					in.close();
    					return ;
    				}
    				flag=true;
    				cout<<"\n找到了喔,应该删除成功了\n";
    				continue;
    			}
    			res.push_back(temp);
    			times++;
    			
    		}
    	}
    	
    	//outData(res,5);
    	in.close();
    	
    	if(!flag)
    	{
    		cout<<"\n错误的书籍ID\n";
    		return ;
    	}
    	fstream out;
    
    
    	out.open("book.txt",ios::out);
    	if(!out)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	
    	for(int j=0;j<res.size();j+=5)
    	{
    		line = res[j] + " " + res[j+1] + " " + res[j+2] + " " + res[j+3] + " " + res[j+4] + "\n";
    		out<<line;
    	}
    	out.close();
    	
    }
    
    
    
    
    
    
    
    
    void ReaderEntry()
    {
    	
    	string readername,sex_str;
    	int sex;
    	fstream out;
    
    
    	out.open("reader.txt",ios::app);
    	if(!out)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    
    
    
    
    	time_t readerid = time(NULL);//这句返回的只是一个时间cuo
    	
    	cout<<"请输入读者姓名"<<endl;
    	cin>>readername;
    	
    	do
    	{
    		cout<<"请输入读者性别:0为女,1为男"<<endl;
    		while(! (cin>>sex) )
    		{
    			cin.clear();
    			cin.ignore(100,'\n');
    			cout<<"请输入正确的0或1"<<endl;
    		}
    	}while(sex != 0 && sex!=1);
    
    
    	if(sex == 1)
    	{
    		sex_str = "男";
    	}else if (sex == 0){
    		sex_str = "女";
    	}else{
    		out.close();
    		return ;
    	}
    
    
    	
    	
    	out<<readerid<<" "<<readername<<" "<<sex_str<<"\n";
    	
    	out.close();
    	
    	
    
    
    }
    /*读者信息*/
    void ReaderMes()
    {
    	fstream in;
    	string line;
    	//用于存放分割后的字符串 
        vector<string> res;
    	string temp; //暂存字符串
        
    
    
    	in.open("reader.txt",ios::in);
    	if(!in)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	
    	while(getline(in,line))
    	{
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		while(input>>temp)
            res.push_back(temp);
    	}
    	// 0读者学号 1读者姓名 2读者性别
        //输出res 
    	cout<<endl<<setw(12)<<"读者编号"<<" "<<setw(12)<<"读者"<<" "<<setw(12)<<"性别"<<"\n";
        outData(res,3);
    	in.close();
    }
    
    
    
    
    /* 借阅书籍 */
    void BorrowBook()
    {
    	
    
    
    	string book[5];
    	string readerid;
    	string readername;
    	string line;
    	vector<string>res; //取书籍状况,并且更新
    
    
    	string temp;
    	bool flag_book = false; //用于判断书籍是否存在  读者是否存在
    	bool flag_reader = false;
    
    
    	/* 取book的图书情况,并判断是否在馆*/
    	fstream in;
    	in.open("book.txt",ios::in);
    	if(!in)
    	{
    		cerr<<"打开错误文件"<<endl;
    	}
    
    
    	cout<<"请输入需要借的图书ID"<<endl;
    	cin>>book[0];
    	
    	
    	
    	while(getline(in,line))
    	{
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		times=0;
    		while(input>>temp)
    		{
    			if(book[0] == temp && times ==0)
    			{
    				res.push_back(temp);
    				for(int i=0;i<3;i++)  //从书籍名称开始取,一直取到价钱
    				{
    					input>>temp; //读取了书籍编号,要及时写入res,以后要写进文本
    					book[1+i]=temp;
    					res.push_back(temp);
    				}
    				input>>temp;  //取书籍状态,如果0在馆 如果1不在馆
    				if(temp == "0")
    				{
    					book[4]="1";
    					temp="1";
    					res.push_back(temp);
    					flag_book=true;
    				}else{
    					cout<<"\n书籍不在馆\n";
    					in.close();
    					return ;
    				}
    				continue;  //继续取
    			}
    			res.push_back(temp);
    			times++;
    			
    		}
    	}
    
    
    	
    	in.close();
    	if(!flag_book)
    	{
    		cout<<"错误的书籍ID"<<endl;
    		return ;
    	}
    	
    	in.open("reader.txt",ios::in);
    	if(!in)
    	{
    		cerr<<"打开错误文件"<<endl;
    	}
    	cout<<"\n请输入读者ID\n";
    	cin>>readerid;
    
    
    	while(getline(in,line))
    	{
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		times=0;
    		while(input>>temp)
    		{
    			if(readerid == temp && times==0)
    			{
    				input>>temp;
    				readername=temp;
    				flag_reader=true;
    				break;
    
    
    			}
    			times++;
    			
    		}
    	}
    	if(!flag_reader)
    	{
    		cout<<"错误的读者ID"<<endl;
    		in.close();
    		return ;
    	}
    
    
    	in.close();
    	
    	
    	fstream out;
    	out.open("record.txt",ios::app);
    	if(!out)
    	{
    		cerr<<"打开错误文件"<<endl;
    	}
    	line = book[0] + " " + book[1] + " " + readername + '\n';
    	out<<line;
    	cout<<"\n办理借书成功\n";
    	out.close();
    
    
    
    
    
    
    	
    
    
    	out.open("book.txt",ios::out);
    	if(!out)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	
    	for(int j=0;j<res.size();j+=5)
    	{
    		line = res[j] + " " + res[j+1] + " " + res[j+2] + " " + res[j+3] + " " + res[j+4] + "\n";
    		out<<line;
    	}
    	out.close();
    }
    
    
    void BorrowMes()
    {
    	fstream in;
    	string line;
    	//用于存放分割后的字符串 
        vector<string> res;
    	string temp; //暂存字符串
        
    
    
    	in.open("record.txt",ios::in);
    	if(!in)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	out_stock=0;
    	while(getline(in,line))
    	{
    		out_stock++;
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		while(input>>temp)
            res.push_back(temp);
    	}
    	// 0书籍编号 1书籍名称 2读者姓名
        //输出res 
    	cout<<endl<<setw(12)<<"书籍编号"<<" "<<setw(12)<<"书籍名称"<<" "<<setw(12)<<"读者"<<"\n";
        outData(res,3);
    	
    	in.close();
    }
    
    
    void RtnBook()
    {
    	string rtn_book;
    	string line;
    	vector<string>res;
    	string temp;
    	bool flag=false;
    
    
    	fstream in;
    	in.open("record.txt",ios::in);  //先打开record 查看是否有借这本书
    	if(!in)
    	{
    		cerr<<"打开错误文件"<<endl;
    	}
    
    
    	cout<<"请输入需要归还的书籍ID"<<endl;
    	cin>> rtn_book;
    	
    	
    	
    	while(getline(in,line))
    	{
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		times=0;
    		while(input>>temp)
    		{
    			if(rtn_book == temp && times==0) //如果有的话
    			{
    				flag=true;
    				
    				for(int i=0;i<2;i++)  //因为一共三个 第一个temp已经是del_book 所以这里取得是两个
    				{
    					input>>temp;// 将删除的东西不输出到向量中
    				}
    				continue;
    			}
    			res.push_back(temp);
    			times++;
    			
    		}
    	}
    	
    	//outData(res,3);
    	in.close();
    	if(!flag)
    	{
    		cout<<"该图书不存在或者没有被外借"<<endl;
    		return ;
    	}
    
    
    
    
    	fstream out;
    
    
    	out.open("record.txt",ios::out); //record已经删除成功
    	if(!out)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	
    	for(int j=0;j<res.size();j+=3)
    	{
    		line = res[j] + " " + res[j+1] + " " + res[j+2]  + "\n";
    		out<<line;
    	}
    	out.close();
    
    
    
    
    	vector<string>res_book;
    
    
    	
    	in.open("book.txt",ios::in); //开始取 被修改的书籍
    	if(!in)
    	{
    		cerr<<"打开错误文件"<<endl;
    	}	
    	
    	while(getline(in,line))
    	{
    		//cout<<line<<endl;
    		//将字符串读到input中 
    		stringstream input(line); //将line切割 通过input存入temp,然后存入res中
    		times=0;
    		while(input>>temp)
    		{
    			if(rtn_book == temp && times==0)
    			{
    				res_book.push_back(temp);
    				for(int i=0;i<3;i++)  //因为一共五个 第一个temp已经是rtn_book 所以这里取得是四个
    				{
    					input>>temp;
    					res_book.push_back(temp);
    				}
    				input>>temp;//最后一个取得是书籍状态,需要修改书籍状态
    				temp = "0";
    				res_book.push_back(temp);
    				continue;
    			}
    			res_book.push_back(temp);
    			times++;
    		}
    	}
    	
    	//outData(res,5);
    	in.close();
    	
    	out.open("book.txt",ios::out); //再存入文本中;
    	if(!out)
    	{
    		cerr<<"打开文件失败!"<<endl;
    	}
    	
    	for(int j=0;j<res_book.size();j+=5)
    	{
    		line = res_book[j] + " " + res_book[j+1] + " " + res_book[j+2] + " " + res_book[j+3] + " " + res_book[j+4] + "\n";
    		out<<line;
    	}
    	out.close();
    
    
    	cout<<"\n找到了喔,应该还书成功了\n";
    }
    
    
    void CountBook()
    {	
    	cout<<"\n图书馆书籍情况";
    	BookMes();
    	cout<<"图书馆一共有:"<<all_stock<<" 本书\n\n\n";
    	cout<<"\n图书馆书籍外借情况";
    	BorrowMes();
    	cout<<"图书馆目前外借:"<<out_stock<<" 本书\n\n";
    	cout<<"\n\n图书馆当前在馆书籍还有:"<<all_stock - out_stock<<" 本书\n";
    }
    



    main.cpp的主函数

    #include "operating.h"
    
    
    int main()
    {
    	int order;
    	do
    	{
    		order = -1;
    		cout<<"\n";
    		cout<<"----------------------------------------------------------\n";
    		cout<<"| 1. 图书信息录入    2. 图书信息查询    3. 图书信息删除  |\n";
    		cout<<"| 4. 读者办理注册    5. 读者信息查询    6. 办理借书手续  |\n";
    		cout<<"| 7. 办理还书手续    8  已借出图书      9.统计图书库存  |\n";
    		cout<<"|                                    	按 \"0\"退出    |\n";
    		cout<<"----------------------------------------------------------\n";
    		cout<<"  请输入相应序号进行相应操作:";
    		cin>>order;
    		cin.clear();//清除缓冲区中后面的字符
    		cin.ignore(100,'\n');
    
    		switch(order)
    		{
    		case 1:
    			BookEntry();
    			break;
    		case 2:
    			BookMes();
    			break;
    		case 3:
    			DelBook();
    			break;
    		case 4:
    			ReaderEntry();
    			break;
    		case 5:
    			ReaderMes();
    			break;
    		case 6:
    			BorrowBook();
    			break;
    		case 7:
    			RtnBook();
    			break;
    		case 8:
    			BorrowMes();
    			break;
    		case 9:
    			CountBook();
    			break;
    		case 0:
    			break;
    		default:
    			cout<<"错误的命令行"<<endl;
    			break;
    		}
    		
    	}while(order != 0);
    
    	system("pause");
    	return 0;
    
    	
    }

    展开全文
  • 小型图书管理系统 可以很清楚地了解pb的使用以及sql语句的使用
  • 数据结构作业,做一个小型图书管理系统,本内容为课程实践报告 包含源码(c++版本)
  • Java小型图书管理系统项目(含完整源代码及工具)-附件资源
  • 图书管理系统 我自制的小型图书管理系统 有源代码 供初学者学习下载 期末作业
  • C++实现的小型图书管理系统

    万次阅读 多人点赞 2015-12-26 15:43:30
    C++实现的小型图书管理系统
    #include <string>
    #include <fstream>
    #include <iostream>
    using namespace std;
    const int BMAX = 50;   //书最多个数



    //图书管理模块

    //图书类
    class book
    {
    public:
     int no;                                      //图书编号
     char name[20];                               //图书名称
     char author[10];                             //作者
     int price;                                   //价格
     int b_flag;                                  //1为在架,2为借出
     int b_del;                                   //1为存在, 2为删除
    public:
     book(){}                               //构造函数
     void setno(int n)
     {
      no = n;                             //图书编号取值
     }
     int getno()
     {
      return no;           //返回图书编号值
     }
     void setprice(int p)
     {
      price = p;                             //图书价格取值
     }
     int getprice()
     {
      return price;           //返回图书价格值
     }
     void setname(char na[])
     {
      strcpy(name, na);   //字符串复制
     }
     char* getname()
     {
      return name;  //返回图书名称
     }
     void setauthor(char a[])
     {
      strcpy(author, a);   //字符串复制
     }
     char* getauthor()
     {
      return author;  //返回图书作者
     }
     void borbook()
     {
      b_flag = 2;     //借书标志
     }
     void delbook()
     {
      b_del = 2;   //删除标志
     }
     void addbook(int no, char na[], char author[], int price)    //增加图书功能
     {
      setno(no);
      setname(na);
      setauthor(author);
      setprice(price);
      b_flag = 1;
      b_del = 1;
     }
    }
    ;
    //图书数据库类

    class bdatabase
    {
    public:
     book btarray[BMAX];                                         //图书集合
     int top;
    public:
     bdatabase()
     {

      book b;
      top = -1;
      fstream file("book.txt", ios::in);    //打开文件
      while (1)
      {
       file.read((char *)&b, sizeof(b));
       if (!file) break;
       top++;
       btarray[top] = b;
      }
      file.close();     //关闭文件
     }

     ~bdatabase()                      //析构函数,    将btarray[]写到book.txt文件中
     {
      fstream file("book.txt", ios::out);
      for (int i = 0; i <= top; i++)
      {
       if (btarray[i].b_del == 1)
        file.write((char *)&btarray[i], sizeof(btarray[i]));
      }
      file.close();
     }

     void addbooks()                                     //往图书数据库中加图书
     {
      book bk;
      int no;
      char bname[20];
      char bau[10];
      int pr;

      cout << endl << "请输入书号: ";
      cin >> no;
      cout << endl << "请输入书名: ";
      cin >> bname;
      cout << endl << "请输入作者: ";
      cin >> bau;
      cout << endl << "请输入价格: ";
      cin >> pr;
      cout << endl;
      bk.b_flag = 1;
      bk.addbook(no, bname, bau, pr);
      top++;
      btarray[top] = bk;
      return;
     }

     int findbooks(int suffix)        //查找图书,这个函数用于借书这书操作,suffix是数组下标
     {
      int no;
      cout << "请输入书号: ";
      cin >> no;
      for (int i = 0; i <= top; i++)
      {
       if (btarray[i].no == no && btarray[i].b_del == 1)
       {
        return i;
       }
      }
      return -1;
     }

     int findbooks()                                //查找图书,这个函数用于图书维护 
     {
      int no;
      char value[6];
      cout << "请输入书号: ";
      cin >> no;
      for (int i = 0; i <= top; i++)
      {
       if (btarray[i].no == no && btarray[i].b_del == 1)
       {
        if (btarray[i].b_flag == 1) strcpy(value, "在架");
        if (btarray[i].b_flag == 2) strcpy(value, "借出");
        cout << "书号: " << btarray[i].no << " 书名: " << btarray[i].name << " 作者: " << btarray[i].author << " 价格: " << btarray[i].price << " 图书状态 :" << value << endl;
        return i;
       }
      }
      return -1;
     }

     void editbooks()                                          //编辑图书
     {
      int cur;
      cur = findbooks();
      if (cur == -1)
      {
       cout << "没有这本书" << endl;
       return;
      }
      cout << "书号: " << btarray[cur].no << " 书名: " << btarray[cur].name << " 作者: " << btarray[cur].author << " 价格: " << btarray[cur].price << endl;
      cout << "请修改数据:" << endl;
      cout << endl << "书的名称: ";
      cin >> btarray[cur].name;
      return;
     }

     void delbooks()                                             //删除图书
     {
      int cur;
      cur = findbooks();
      if (cur == -1)
      {
       return;
      }
      if (btarray[cur].b_flag == 2)                              //删除时判断图书是否借出
      {
       cout << "该图书已经借出,请在归还后再删除。" << endl;
       return;
      }
      btarray[cur].b_del = 2;
      return;
     }

     void listbooks()                                             //显示全部图书
     {
      char value[6];
      for (int i = 0; i <= top; i++)
      {

       if (btarray[i].b_del == 1)
       {
        if (btarray[i].b_flag == 1) strcpy(value, "在架");
        if (btarray[i].b_flag == 2) strcpy(value, "借出");
        cout << "书号: " << btarray[i].no << " 书的名称: " << btarray[i].name << " 图书状态 :" << value << endl;
       }
      }
      return;
     }
    }
    ;
    //读者管理模块
    //读者类
    class reader
    {
    public:
     int no;
     int sex;     //读者性别,1表示男,0表示女
     char name[20];
     int r_del;  //1存在,2删除
     int r_bor;  //1借过书,2没有借书
     book brbook;
    public:
     void addreader(int id, char na[], int s)//增加读者
     {
      no = id;
      sex = s;
      strcpy(name, na);
      r_del = 1;
     }
     void setbrbook(book bt)  //设置借书标记
     {
      brbook = bt;
     }

     book getbrbook()
     {
      return brbook;   //返回借书信息
     }
    };
    //读者数据库类
    class rdatabase
    {
    public:
     reader rdarray[BMAX];
     int top;

    public:
     rdatabase()
     {
      reader rd;
      top = -1;
      fstream file("reader.txt", ios::in); //打开文件
      while (1)
      {
       file.read((char *)&rd, sizeof(rd));
       if (!file) break;
       top++;
       rdarray[top] = rd;
      }
      file.close();  //关闭文件  
     }

     ~rdatabase()//析构函数
     {
      fstream file("reader.txt", ios::out);
      for (int i = 0; i <= top; i++)
      {
       if (rdarray[i].r_del == 1)
        file.write((char *)&rdarray[i], sizeof(rdarray[i]));
      }
      file.close();
     }



     void addreaders()                                            //添加读者
     {
      reader rd;
      int no;
      int rs;
      char rname[20];
      cout << "请输入学号: ";
      cin >> no;
      cout << endl << "请输入姓名: ";
      cin >> rname;
      cout << endl << "请输入性别(1为男,0为女):";
      cin >> rs;
      cout << endl;
      rd.addreader(no, rname, rs);
      rd.r_bor = 2;
      top++;
      rdarray[top] = rd;
      return;
     }
     int findreaders(int suffix)     //查找读者,这个函数用于借书还书操作。 参数suffix是数组下标
     {
      int no;
      cout << "请输入学号: ";
      cin >> no;
      for (int i = 0; i <= top; i++)
      {
       if (rdarray[i].no == no && rdarray[i].r_del == 1)
       {
        return i;
       }
      }
      return -1;

     }


     int findreaders()                              //查找读者,这个函数用于读者维护操作
     {
      int no;
      char value[3];
      cout << "请输入学号: ";
      cin >> no;
      for (int i = 0; i <= top; i++)
      {
       if (rdarray[i].no == no && rdarray[i].r_del == 1)
       {
        if (rdarray[i].r_bor == 1) strcpy(value, "借");
        if (rdarray[i].r_bor == 2) strcpy(value, "无");
        cout << "学号: " << rdarray[i].no << " 姓名: " << rdarray[i].name << " 是否借书: " << value << endl;
        return i;
       }
      }
      return -1;
     }
     void editreaders()                                            //编辑读者信息
     {

      int cur;
      cur = findreaders();
      if (cur == -1)
      {
       cout << "没有该学生" << endl;
       return;
      }
      cout << "请修改数据:" << endl;
      cout << endl << " 姓名: ";
      cin >> rdarray[cur].name;
      return;
     }
     void delreaders()                            //删除读者,读者如果借书要还书后才能删除
     {
      int cur;
      cur = findreaders();
      if (cur == -1)
      {
       return;
      }
      if (rdarray[cur].r_bor == 1)
      {
       cout << "该用户借了图书,请还书后再删除" << endl;
       return;
      }
      rdarray[cur].r_del = 2;
      return;
     }
     void listreaders()                                                 //显示所有读者
     {
      char value[3];
      for (int i = 0; i <= top; i++)
      {

       if (rdarray[i].r_del == 1)
       {
        if (rdarray[i].r_bor == 1) strcpy(value, "借");
        if (rdarray[i].r_bor == 2) strcpy(value, "无");
        cout << "学号: " << rdarray[i].no << " 姓名: " << rdarray[i].name << " 是否借书: " << value << endl;
       }
      }
      return;
     }


    }
    ;

    void bookjiemain()                                                     //图书维护子菜单
    {
     cout << "****************************" << endl;
     cout << "*         图书维护         *" << endl;
     cout << "*        (1)增 加          *" << endl;
     cout << "*        (2)更 改          *" << endl;
     cout << "*        (3)删 除          *" << endl;
     cout << "*        (4)查 找          *" << endl;
     cout << "*        (5)显 示          *" << endl;
     cout << "*        (6)返回上一层     *" << endl;
     cout << "****************************" << endl;
    }

    void readerjiemian()                                                       //读者维护子菜单
    {
     cout << "****************************" << endl;
     cout << "*         读者维护         *" << endl;
     cout << "*        (1)增 加          *" << endl;
     cout << "*        (2)更 改          *" << endl;
     cout << "*        (3)删 除          *" << endl;
     cout << "*        (4)查 找          *" << endl;
     cout << "*        (5)显 示          *" << endl;
     cout << "*        (6)返回上一层     *" << endl;
     cout << "****************************" << endl;

    }

    void mainjiemian()                                                               //主界面
    {
     cout << "***********************************************" << endl;
     cout << "*               图 书 管 理 系 统             *" << endl;
     cout << "*                                             *" << endl;
     cout << "*               (1) 借 书                     *" << endl;
     cout << "*                                             *" << endl;
     cout << "*               (2) 还 书                     *" << endl;
     cout << "*                                             *" << endl;
     cout << "*               (3) 图 书 管 理               *" << endl;
     cout << "*                                             *" << endl;
     cout << "*               (4) 用 户 管 理               *" << endl;
     cout << "*                                             *" << endl;
     cout << "*               (0) 退 出                     *" << endl;
     cout << "***********************************************" << endl;
    }

    void borrowtoreturn(char br)
    //借书还书函数.参数br用来判断是“借书”还是“还书”.1为“借书”,2为“还书”
    {
     int rdid = 0;
     int bkid = 0;
     int rsuffix, bsuffix;
     bdatabase t_bd;
     rdatabase t_rd;
     if (br == '1')           //借书
     {
      rsuffix = t_rd.findreaders(rdid);
      bsuffix = t_bd.findbooks(bkid);
      if (rsuffix == -1 || bsuffix == -1)
       return;
      if (t_bd.btarray[bsuffix].b_flag == 2)
      {
       cout << "图书已经借出,请选择其它图书" << endl;
       return;
      }
      if (t_rd.rdarray[rsuffix].r_bor == 1)
      {
       cout << "你已经借过图书,请先归还再借其它图书" << endl;
       return;
      }
      t_bd.btarray[bsuffix].b_flag = 2;
      t_rd.rdarray[rsuffix].r_bor = 1;
      t_rd.rdarray[rsuffix].brbook = t_bd.btarray[bsuffix];
      return;

     }
     if (br == '2')
     {
      rsuffix = t_rd.findreaders(rdid);
      bsuffix = t_bd.findbooks(bkid);
      if (rsuffix == -1 || bsuffix == -1)
       return;

      if (t_rd.rdarray[rsuffix].brbook.no == t_bd.btarray[bsuffix].no)
      {
       t_bd.btarray[bsuffix].b_flag = 1;
       t_rd.rdarray[rsuffix].r_bor = 2;
       t_rd.rdarray[rsuffix].brbook = t_bd.btarray[bsuffix];
      }
      else
      {
       cout << "请重新输入,读者借的图书号不正确" << endl;
       return;
      }
      return;
     }
    }

    void booksmange()
    {
     char in;
     bdatabase  bd;
     do{
      bookjiemain();
      cin >> in;
      switch (in)
      {
      case '1':
       bd.addbooks();
       break;
      case '2':
       bd.editbooks();
       break;
      case '3':
       bd.delbooks();
       break;
      case '4':
       bd.findbooks();
       break;
      case '5':
       bd.listbooks();
       break;
      case '6':
       break;
      default:cout << "输入错误,请从新输入。" << endl;;
      }
     } while (in != '6');
     return;
    }

    void readersmange()
    {
     char in;
     rdatabase  bd;
     do{
      readerjiemian();
      cin >> in;
      switch (in)
      {
      case '1':
       bd.addreaders();
       break;
      case '2':
       bd.editreaders();
       break;
      case '3':
       bd.delreaders();
       break;
      case '4':
       bd.findreaders();
       break;
      case '5':
       bd.listreaders();
       break;
      case '6':
       break;
      default:cout << "输入错误,请从新输入。" << endl;
      }
     } while (in != '6');
     return;

    }


    int main(int argc, char* argv[])
    {
     char in;
     do{
      mainjiemian();
      cin >> in;
      switch (in)
      {
      case '1':
       borrowtoreturn(in);
       break;
      case '2':
       borrowtoreturn(in);
       break;
      case '3':
       booksmange();
       break;
      case '4':
       readersmange();
       break;
      case '0':
       break;
      default:cout << "输入错误,请从新输入。" << endl;
      }
     } while (in != '0');
     return 0;
    }
    展开全文
  • C++ 小型图书管理系统

    2008-12-04 22:20:18
    C++做的小型图书管理系统,给大家参考 有问题可以联系我xiaojun_ray@hotmail.com
  • 小型图书管理系统UML图,包括用例图,状态图,活动图,协作图,类图,顺序图,包图。
  • 是桃花朵朵开自己做的小型图书管理系统!希望能够帮助你!

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,108
精华内容 3,643
关键字:

小型图书管理系统