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

    2012-12-15 18:04:44
    此脚本是基于Linux管理系统,涉及了图书的查询,修改,增加,删除等功能
  • Linux图书管理系统

    2011-12-16 20:06:07
    这是一个Windows和Linux通信的程序,本人用了7天时间完成,本程序实现了三个进程之间通信,客户端为Windows下的MFC界面,服务器和业务处理分别在Linux下。本程序很适合热爱Linux同学分享,学习!
  • 基于UNIX Socket和MySQL数据库,设计一个交易型中间件系统。服务器数据库使用Linux提供的免费的MySQL。开发时主要用到C访问MySql的接口程序MySql C API。Linux下使用C语言的图书管理系统,可跨系统和平台.
  • 图书管理系统 linux c++

    2011-09-20 23:45:19
    图书管理系统 linux c++ mysql 中间件
  • Linux c图书管理系统

    2018-04-03 14:05:29
    使用 C 语言编写基于 MySQL 的图书管理系统 部署 按照 src/db_config_sample.h 配置 src/db_config.h 在src目录中编译 $ make 导入schema.sql 运行 $ ./app API 创建借书证 1 id 新建一个ID为id的借书证。 ...
  • 好久以前做的了,这里只有...程序用C语言写的,在windows下程序文本显示的都是乱码,在Linux系统下显示就正常了。当时让老师检查,虽然缺了个用户的修改功能,但老师说总体很不错,给了个优评,希望这些代码对你有用。
  • Linux下的图书管理系统(c语言)
  • 关于linux下的图书管理系统,包括一些基本功能 界面简单,
  • Linux+C+MySql实现的简单图书管理系统。内含mysql的建表语句及测试数据,以及linux下mysql服务器、mysql客服端、mysql库文件rmp安装包,及详细安装配置说明。
  • 设计一个图书管理系统,在没有Web支持的情况下能实现图书馆中图书的管理和读者之间所发生的所有交易活动,读者能在客户机上向主机发送自己所需要的一切服务,借书、还书、续借、查询并能显示图书的所有信息,
  • 图书管理系统 我实习时候的一个设计 使用了c和c++ 如有任何问题可以联系xiangpengmeng@gmail.com
  • Linux初学者理解shell编程,入门小项目
  • C 图书管理系统(完整代码,Linux版)
  • linux系统)图书管理系统

    千次阅读 2017-07-28 15:44:07
    闲来无事,用C++做了一个图书管理系统,主要有借书、还书、图书管理、用户管理等功能,主要用到的技术有容器和文件,以及类的封装 #include #include #include #include #include #include using namespace ...

    闲来无事,用C++做了一个图书管理系统,主要有借书、还书、图书管理、用户管理等功能,主要用到的技术有容器和文件,以及类的封装

    #include <iostream>
    #include <list>
    #include <algorithm>
    #include <string.h>
    #include <fstream>
    #include <stdlib.h>
    
    using namespace std;
    class Mybook;
    class Book;
    
    class Book{
    public:
    		int id;                           //书号
    		char book_name[20];               //书名
    		int state;                        //图书状态
    		char place[20];                   //图书所在位置
    		char stu_number[20];              //学号
    		char stu_name[20];                //学生姓名
    public:
    		Book();
    		friend class Mybook;
    };
    
    class User{
    public:
    		char stu_number[20];                //学号
    		char stu_name[20];                  //学生姓名
    public:
    		User()
    		{
    			strcpy(stu_number,"000");
    			strcpy(stu_name,"0");
    		}
    		friend class Mybook;
    };
    
    class Mybook{
    private:
    		list<Book> link_book;              //保存书本信息
    		list<User> link_user;              //保存用户信息
    public:
    		int main_menu();                   //主菜单
    		void getmenu();                    //获取菜单 
    		int menu();                        //图书管理菜单
    		void getchoice();                  //输入选择
    		void add_book();                   //添加图书
    		void display_book();               //显示图书信息
    		void del_book();                   //删除图书信息
    		void search_book();                //搜索图书信息
    		void update_book();                //修改图书信息
    		void borrow_book();                //借书
    		void return_book();                //还书
    		int  menu_user();                  //管理用户菜单
    		void add_user();                   //添加用户
    		void del_user();                   //删除用户
    		void display_user();               //查看用户
    		void update_user();                //修改用户
    		void look_borrow();                //查看借阅图书情况  
    		void get_user();                   //用户管理
    		void recv_file();                  //将数据保存到文件中
    		void read_file();                  //将数据从文件中读取
    		void recv_user();                  //将用户信息保存到文件
    		void read_user();                  //将用户信息从文件读取
    };
    
    Book::Book()
    {
    	state = 0;
    	strcpy(stu_number,"000");
    	strcpy(stu_name,"0");
    }
    //保存图书信息到文件
    void Mybook::recv_file()
    {
    	ofstream outfile("library.txt",ios::out);
    	if(!outfile)
    	{
    		cout<<"文件打开失败"<<endl;
    		return ;
    	}
    	sleep(1);
    	list<Book>::iterator p = link_book.begin();
    	while(p != link_book.end())
    	{
    		outfile<<p->id<<endl;
    		outfile<<p->book_name<<endl;
    		outfile<<p->state<<endl;
    		outfile<<p->place<<endl;
    		outfile<<p->stu_number<<endl;
    		outfile<<p->stu_name<<endl;
    		p++;
    	}
    	cout<<"保存完成!"<<endl;
    	outfile.close();
    }
    
    void Mybook::read_file()
    {
    	ifstream infile("library.txt",ios::in);
    	Book new_book;
    	if(!infile)
    	{
    		cout<<"read fail"<<endl;
    		return ;
    	}
    	char temp[20];
    	while(!infile.eof())
    	{
    		infile.getline(temp,'\n');
    		new_book.id = atoi(temp);
    		memset(temp,0,20);
    		infile.getline(new_book.book_name,'\n');
    		infile.getline(temp,'\n');
    		new_book.state = atoi(temp);
    		memset(temp,0,20);
    		infile.getline(new_book.place,'\n');
    		infile.getline(new_book.stu_number,'\n');
    		infile.getline(new_book.stu_name,'\n');
    		if(infile.eof())
    		{
    			break;
    		}
    		link_book.push_back(new_book);	
    	}
    	infile.close();
    }
    //保存用户信息
    void Mybook::recv_user()
    {
    	ofstream outfile("user.txt",ios::out);
    	if(!outfile)
    	{
    		cout<<"文件打开失败"<<endl;
    		return ;
    	}
    	sleep(1);
    	list<User>::iterator p = link_user.begin();
    	while(p != link_user.end())
    	{
    		outfile<<p->stu_number<<endl;
    		outfile<<p->stu_name<<endl;
    		p++;
    	}
    	cout<<"保存完成!"<<endl;
    	outfile.close();
    }
    //读取数据至用户
    void Mybook::read_user()
    {
    	ifstream infile("user.txt",ios::in);
    	if(!infile)
    	{
    		cout<<"文件打开失败!"<<endl;
    		return ;
    	}
    	User new_user;
    	while(!infile.eof())
    	{
    		infile.getline(new_user.stu_number,'\n');
    		infile.getline(new_user.stu_name,'\n');
    		if(infile.eof())
    		{
    			break;
    		}
    		link_user.push_back(new_user);	
    	}
    	infile.close();	
    }
    //主菜单
    int Mybook::main_menu()
    {
    	int choice = 0;
    	cout<<"\t\t\t\t===================================================="<<endl;
    	cout<<"\t\t\t\t*              欢迎来到图书管理系统                *"<<endl;
    	cout<<"\t\t\t\t*--------------------------------------------------*"<<endl;
    	cout<<"\t\t\t\t*                  1、借书                         *"<<endl;
    	cout<<"\t\t\t\t*                  2、还书                         *"<<endl;
    	cout<<"\t\t\t\t*                  3、图书管理                     *"<<endl;
    	cout<<"\t\t\t\t*                  4、用户管理                     *"<<endl;
    	cout<<"\t\t\t\t*                  0、保存并退出                   *"<<endl;
    	cout<<"\t\t\t\t*__________________________________________________*"<<endl;
    	cout<<"\t\t\t\t\t请输入选择:";
    	cin>>choice;
    	while(!(choice >= 0 && choice <= 4))
    	{
    		cout<<"输入错误,请重新输入:";
    		cin>>choice;
    	}
    	return choice;
    }
    //执行主菜单
    void Mybook::getmenu()
    {
    	int choice = 0;
    	read_user();
    	read_file();
    	while(1)
    	{
    		system("clear");
    		choice = main_menu();
    		switch(choice)
    		{
    			case 1:
    			{
    				borrow_book();
    				break;
    			}
    			case 2:
    			{
    				return_book();
    				break;
    			}
    			case 3:
    			{
    				getchoice();
    				break;
    			}
    			case 4:
    			{
    				get_user();
    				break;
    			}
    			case 0:
    			{
    				cout<<"正在保存,请稍后....."<<endl;
    				recv_file();
    				exit(0);
    			}
    		}
    		cout<<endl<<endl<<endl;
    		cout<<"按任意键返回...";
    		getchar();
    		getchar();
    	}
    }
    //借书
    void Mybook::borrow_book()
    {
    	int flag = 0;
    	int flag1 = 0;
    	int flag2 = 0;
    	char id[20];
    	char name[20];
    	char book_name[20];
    	cout<<"请输入学号:";
    	cin>>id;
    	list<User>::iterator it = link_user.begin();
    	while(it != link_user.end())
    	{
    		if(strcmp(it->stu_number,id) == 0)
    		{
    			strcpy(name,it->stu_name);
    			flag2 = 1;
    			break;
    		}
    		it++;
    	}
    	if(flag2 == 0)
    	{
    		cout<<"你没有借书权限!借书失败"<<endl;
    		return ;
    	}
    	cout<<"请输入书名:";
    	cin>>book_name;
    	list<Book>::iterator p = link_book.begin();
    	while(p != link_book.end())
    	{
    		if(strcmp(p->book_name,book_name) == 0)
    		{
    			cout<<"======================================="<<endl;
    			cout<<"书号:"<<p->id<<endl;
    			cout<<"书名:"<<p->book_name<<endl;
    			if(p->state == 0)
    			{
    				cout<<"图书状态:未借阅!"<<endl;
    			}
    			else
    			{
    				cout<<"图书状态:已借阅!"<<endl;
    			}
    			cout<<"所在书架"<<p->place<<endl;
    			flag1 = 1;
    		}
    		p++;
    	}
    	if(flag1 == 0)
    	{
    		cout<<"你所借阅的书不存在,借书失败!";
    		return ;
    	}
    	p = link_book.begin();
    	cout<<"已查找该图书,请输入书号进行借阅:";
    	int book_id;
    	cin>>book_id;
    	while(p != link_book.end())
    	{
    		if(strcmp(p->book_name,book_name) == 0 && p->id == book_id && p->state == 0)
    		{
    			strcpy(p->stu_number,id);
    			strcpy(p->stu_name,name);
    			p->state = 1;
    			cout<<"借书成功!"<<endl;
    			flag = 1;
    			break;
    		}
    		p++;
    	}
    	if(flag == 0)
    	{
    		cout<<"该书已被借阅,借书失败!";
    	}
    
    }
    //还书
    void Mybook::return_book()
    {
    	char stu_id[20];
    	cout<<"请输入学号";
    	cin>>stu_id;
    	int flag = 0;
    	int flag1 = 0;
    	list<Book>::iterator p = link_book.begin();
    	while(p != link_book.end())
    	{
    		if(strcmp(p->stu_number,stu_id) == 0)
    		{
    			cout<<"==========================================="<<endl;
    			cout<<"书号:"<<p->id<<endl;
    			cout<<"书名:"<<p->book_name<<endl;
    			flag = 1;
    		}
    		p++;
    	}
    	if(flag == 0)
    	{
    		cout<<"当前没有您没有借书"<<endl;
    		return ;
    	}
    	else if(flag == 1)
    	{
    		cout<<"已经查询到你借阅的图书,请输入书号进行归还:"<<endl;
    	}
    	int id;
    	cin>>id;
    	p = link_book.begin();
    	while(p != link_book.end())
    	{
    		if(strcmp(p->stu_number,stu_id) == 0&&p->id == id)
    		{
    			strcpy(p->stu_name ,"000");
    			strcpy(p->stu_number , "0");
    			p->state = 0;
    			cout<<"还书成功!"<<endl;
    			flag1 = 1;
    			break;
    		}
    		p++;
    	}
    	if(flag1 == 0)
    	{
    		cout<<"输入书号错误,还书失败!"<<endl;
    	}
    }
    //用户管理菜单
    int Mybook::menu_user()
    {
    	int choice = 0;
    	cout<<"\t\t\t\t=========================================="<<endl;
    	cout<<"\t\t\t\t*             用户管理                   *"<<endl;
    	cout<<"\t\t\t\t*----------------------------------------*"<<endl;
    	cout<<"\t\t\t\t*          1、添加用户                   *"<<endl;
    	cout<<"\t\t\t\t*          2、显示用户                   *"<<endl;
    	cout<<"\t\t\t\t*          3、删除用户                   *"<<endl;
    	cout<<"\t\t\t\t*          4、修改用户                   *"<<endl;
    	cout<<"\t\t\t\t*          5、显示图书借用信息           *"<<endl;
    	cout<<"\t\t\t\t*          6、保存并返回上一层           *"<<endl;
    	cout<<"\t\t\t\t*----------------------------------------*"<<endl;
    	cout<<"\t\t\t\t\t请输入选择:";
    	cin>>choice;
    	while(!(choice >= 1 && choice <= 6))
    	{
    		cout<<"输入错误,请重新输入:";
    		cin>>choice;
    	}
    	return choice;
    	
    }
    //执行用户管理
    void Mybook::get_user()
    {
    	int choice = 0;
    	while(1)
    	{
    		system("clear");
    		choice = menu_user();
    		system("clear");
    		switch(choice)
    		{
    			case 1:
    			{
    				add_user();
    				break;
    			}
    			case 2:
    			{
    				display_user();
    				break;
    			}
    			case 3:
    			{
    				del_user();
    				break;
    			}
    			case 4:
    			{
    				update_user();
    				break;
    			}
    			case 5:
    			{
    				look_borrow();
    				break;
    			}
    			case 6:
    			{
    				recv_user();
    				return ;
    			}
    		}
    		cout<<endl<<endl<<endl;
    		cout<<"按任意键返回...";
    		getchar();
    		getchar();
    	}
    }
    //添加用户
    void Mybook::add_user()
    {
    	User new_user;
    	cout<<"请输入学号:";
    	cin>>new_user.stu_number;
    	cout<<"请输入姓名:";
    	cin>>new_user.stu_name;
    
    	link_user.push_back(new_user);
    	cout<<"添加成功!";
    	cout<<"是否继续添加(y/n)";
    	char ch;
    	cin>>ch;
    	while(!(ch == 'Y'||ch == 'y'||ch == 'N'||ch == 'n'))
    	{
    		cout<<"输入有误,请重新输入:";
    		cin>>ch;
    	}
    	if(ch == 'Y'||ch == 'y')
    	{
    		system("clear");
    		add_user();	
    	}
    }
    //显示用户
    void Mybook::display_user()
    {
    	list<User>::iterator it = link_user.begin();
    	while(it != link_user.end())
    	{
    		cout<<"====================================="<<endl;
    		cout<<"学号:"<<it->stu_number<<endl;
    		cout<<"姓名:"<<it->stu_name<<endl<<endl;
    		it++;
    	}
    }
    //删除用户
    void Mybook::del_user()
    {
    	char id[20];
    	cout<<"请输入你要删除的学生学号:";
    	cin>>id;
    	int flag = 0;
    	list<User>::iterator it = link_user.begin();
    	while(it != link_user.end())
    	{
    		if(strcmp(it->stu_number,id) == 0)
    		{
    			link_user.erase(it);
    			flag = 1;
    			break;
    		}
    		it++;
    	}
    	if(flag == 1)
    	{
    		cout<<"删除成功!"<<endl;
    	}
    	else
    	{
    		cout<<"你删除的用户不存在,删除失败!"<<endl;
    	}
    }
    //修改用户信息
    void Mybook::update_user()
    {
    	cout<<"请输入你要修改的学号:"<<endl;
    	char number[20];
    	cin>>number;
    	int flag = 0;
    	list<User>::iterator it = link_user.begin();
    	while(it != link_user.end())
    	{
    		if(strcmp(it->stu_number,number) == 0)
    		{
    			cout<<"请更新学号:";
    			cin>>it->stu_number;
    			cout<<"请更新姓名:";
    			cin>>it->stu_name;
    			flag = 1;
    			break;
    		}
    		it++;
    	}
    	if(flag == 1)
    	{
    		cout<<"修改成功!"<<endl;
    	}
    	else
    	{
    		cout<<"修改失败!"<<endl;
    	}
    }
    //查看已借阅图书情况
    void Mybook::look_borrow()
    {
    	int flag = 0;
    	list<Book>::iterator p = link_book.begin();
    	while(p != link_book.end())
    	{
    		if(p->state == 1)
    		{
    			cout<<"==================================================="<<endl;
    			cout<<"姓名:"<<p->stu_name<<endl;
    			cout<<"学号:"<<p->stu_number<<endl;
    			cout<<"书名:"<<p->book_name<<endl;
    			cout<<"书架号:"<<p->place<<endl;
    			flag = 1;
    		}
    		p++;
    	}
    	if(flag == 1)
    	{
    		cout<<"已查询图书相关借阅信息"<<endl;
    	}
    	else
    	{
    		cout<<"目前暂时没有相关图书借阅!"<<endl;
    	}
    }
    //图书管理菜单
    int Mybook::menu()
    {
    	int choice = 0;
    	cout<<"\t\t\t\t\t============================================"<<endl;
    	cout<<"\t\t\t\t\t*              图书管理			        *"<<endl;
    	cout<<"\t\t\t\t\t*------------------------------------------*"<<endl;
    	cout<<"\t\t\t\t\t* 1、添加图书信息      2、显示图书信息     *"<<endl;
    	cout<<"\t\t\t\t\t*------------------------------------------*"<<endl;
    	cout<<"\t\t\t\t\t* 3、删除图书信息      4、搜索图书信息     *"<<endl;
    	cout<<"\t\t\t\t\t*------------------------------------------*"<<endl;
    	cout<<"\t\t\t\t\t* 5、更新图书信息      6、返回上一层       *"<<endl;
    	cout<<"\t\t\t\t\t*------------------------------------------*"<<endl;
    	cout<<"\t\t\t\t\t请输入选择:";
    	cin>>choice;
    	while(!(choice >= 1 && choice <= 6))
    	{
    		cout<<"输入错误,请重新输入:";
    		cin>>choice;
    	}
    	return choice;
    
    }
    //实行图书管理
    void Mybook::getchoice()
    {
    	int choice = 0;
    	while(1)
    	{
    		system("clear");
    		choice = menu();
    		system("clear");
    		switch(choice)
    		{
    			case 1:
    			{
    				add_book();
    				break;
    			}
    			case 2:
    			{
    				display_book();
    				break;
    			}
    			case 3:
    			{
    				del_book();
    				break;
    			}
    			case 4:
    			{
    				search_book();
    				break;
    			}
    			case 5:
    			{
    				update_book();
    				break;
    			}
    			case 6:
    			{
    				return ;
    			}
    		}
    		cout<<endl<<endl<<endl;
    		cout<<"按任意键返回....."<<endl;
    		getchar();
    		getchar();
    	}
    }
    //增加书本
    void Mybook::add_book()
    {
    	Book new_book;
    	cout<<"请输入书号:";
    	cin>>new_book.id;
    	cout<<"请输入书名:";
    	cin>>new_book.book_name;
    	cout<<"请输入图书书架:";
    	cin>>new_book.place;
    
    	link_book.push_back(new_book);
    	cout<<"添加成功!";
    	cout<<"是否继续添加(y/n)";
    	char ch;
    	cin>>ch;
    	while(!(ch == 'Y'||ch == 'y'||ch == 'N'||ch == 'n'))
    	{
    		cout<<"输入有误,请重新输入:";
    		cin>>ch;
    	}
    	if(ch == 'Y'||ch == 'y')
    	{
    		system("clear");
    		add_book();	
    	}
    }
    //显示书本信息
    void Mybook::display_book()
    {
    	list<Book>::iterator p = link_book.begin();
    	while(p != link_book.end())
    	{
    		cout<<"======================================="<<endl;
    		cout<<"书号:"<<p->id<<endl;
    		cout<<"书名:"<<p->book_name<<endl;
    		if(p->state == 0)
    		{
    			cout<<"图书状态:未借阅!"<<endl;
    		}
    		else
    		{
    			cout<<"图书状态:已借阅!"<<endl;
    		}
    		cout<<"所在书架"<<p->place<<endl<<endl;
    		p++;
    	}
    }
    //删除书本信息
    void Mybook::del_book()
    {
    	list<Book>::iterator p = link_book.begin();
    	int num = 0;
    	int flag = 0;
    	cout<<"请输入你要删除的书号:";
    	cin>>num;
    	while(p != link_book.end())
    	{
    		if(p->id == num)
    		{
    			link_book.erase(p);
    			flag = 1;
    			break;
    		}
    		p++;
    	}
    	if(flag == 1)
    	{
    		cout<<"\n\n删除完成!";
    	}
    	else
    	{
    		cout<<"\n\n该书不存在,删除失败!"<<endl;
    	}
    }
    //搜索书本信息
    void Mybook::search_book()
    {
    	list<Book>::iterator p = link_book.begin();
    	char book_name[20];
    	int flag = 0;
    	cout<<"请输入你要查找的书名:";
    	cin>>book_name;
    	while(p != link_book.end())
    	{
    		if(strcmp(p->book_name,book_name) == 0)
    		{
    			cout<<"======================================="<<endl;
    			cout<<"书号:"<<p->id<<endl;
    			cout<<"书名:"<<p->book_name<<endl;
    			if(p->state == 0)
    			{
    				cout<<"图书状态:未借阅!"<<endl;
    			}
    			else
    			{
    				cout<<"图书状态:已借阅!"<<endl;
    			}
    			cout<<"所在书架"<<p->place<<endl;
    			flag = 1;
    		}
    		p++;
    	}
    	if(flag == 1)
    	{
    		cout<<"\n\n查找完成!";
    	}
    	else
    	{
    		cout<<"\n\n目前图书馆暂无此书!"<<endl;
    	}
    }
    //修改书本信息
    void Mybook::update_book()
    {
    	 list<Book>::iterator p = link_book.begin();
    	int num = 0;
    	int flag = 0;
    	cout<<"请输入你要更新的书号:";
    	cin>>num;
    	while(p != link_book.end())
    	{
    		if(p->id == num)
    		{
    			cout<<"请输入书名";
    			cin>>p->book_name;
    			cout<<"请输入图书书架号:";
    			cin>>p->place;
    			flag = 1;
    		}
    		p++;
    	}
    	if(flag == 1)
    	{
    		cout<<"\n\n更新完成!";
    	}
    	else
    	{
    		cout<<"\n\n该书不存在,更新失败!"<<endl;
    	}
    }
    int main()
    {
        Mybook b;
    	b.getmenu();
    
    	return 0;
    }
    


    展开全文
  • 包括对数据库的增上改查,以及不同身份的用户具有不同的登录权限。是mysql数据库 apache服务器 php 语言 linux(widows也许)上运行
  • Linux+Apache+PHP+MySQL构建基于Web的图书管理系统
  • 自己做的一个linux下的图书馆里系统,如果有兴趣的人可以进行加工,我想应该还不错吧
  • 纯C语言编写,基于linux环境,makefile编译器.采用sqlite数据库.代码简单易懂 近3000行,给十分也不为过吧.
  • 图书管理系统

    2013-04-04 13:33:34
    linux下的用C++语言编写的图书管理系统
  • 首先,参考 “搭建完善的Linux编程学习环境” 章节,下载搭建好的linux ubuntu 开发环境系统。   在ubuntu系统的/home/openwrt/Desktop/... 其中book_manager_json项目是一个“图书管理系统”的项目,使用“链...

    首先,参考 “搭建完善的Linux编程学习环境” 章节,下载搭建好的linux ubuntu 开发环境系统。 

          在ubuntu系统的/home/openwrt/Desktop/IS目录下,提供了笔者的一些项目,用户可以直接测试,了解linux系统下C程序项目的开发。提供了如下的项目:

           其中book_manager_json项目是一个“图书管理系统”的项目,使用“链表”来管理数据。该项目的文件分布如下:

           其中,make.sh是用于编译项目,start.sh用于启动运行项目,测试如下:

           在终端,执行 ./make.sh 脚本,就编译了 src 目录下的源文件。最终,在src目录下产生bm_json可执行程序。如下图:

           可以看到,在src目录下产生了bm_json程序,它就是一个可执行的程序。那么,运行 start.sh 脚本的时候,就是运行该程序。所以,在终端执行 ./start.sh 脚本,就启动运行了bm_json程序,出现如下界面:

           这是一个图书管理系统。提供如下的操作:

    1 管理员登陆,默认用户名是 admin, 密码是 123,这些数据都可以在src目录下的代码中修改;

    2 图书的增加、删除、修改;借书、还书功能;

    3 学生的增加、删除、修改功能;

           在src目录下提供了源码,读者可以随意修改代码,然后,执行 ./make.sh 脚本来编译程序,再执行 ./start.sh 脚本来运行程序。

           该项目提供了完整的源码和编译、执行脚本。有任何不明确的地方,可以连续作者。

    “点击联系笔者”

    展开全文
  • shell 图书管理系统

    2011-04-22 19:56:59
    图书管理系统,linux环境下shell编程,shell命令
  •  在 /home/openwrt/Desktop/IS/book_manager_sqlite 目录下提供了“图书管理系统”项目,是使用sqlite3数据库进行数据管理。  在该目录下,提供了bm_sqlite可执行程序,直接运行如下: ./bm_sqli...

    首先,参考 “搭建完善的Linux编程学习环境”  章节,下载搭建好的linux ubuntu 开发环境系统。 

           在 /home/openwrt/Desktop/IS/book_manager_sqlite 目录下提供了“图书管理系统”项目,是使用sqlite3数据库进行数据管理。

           在该目录下,提供了bm_sqlite可执行程序,直接运行如下:

    ./bm_sqlite

           就可以启动程序,运行如下:

           可以看到,启动之后,初始化数据库,创建数据库表、插入测试数据等信息。得到的操作界面如下:

           这个操作界面与“链表版”的图书管理系统一样。因为,业务逻辑都是一样。但是,内部的数据处理完全不同。当前项目使用sqlite3数据库进行管理。登陆之后,退出程序,在当前目录下就产生了数据库文件,如下图:

           其中,产生的 book_manage.db 文件,就是一个sqlite3数据库文件。此时,可以使用sqlite3命令查看数据库中的数据库,如下:

           可以看到,执行 sqlite3 book_manage.db 命令,就是使用sqlite3命令打开book_manage.db数据库文件。然后,查询books表的信息如下:

    select * from books;

           查询读者表信息如下:

    select * from readers;

           该项目完整地介绍了linux下对sqlite3数据库的使用。这里只是给出测试例子,具体代码可以连续作者。

    “点击联系笔者”

    展开全文
  • 在压缩包下存放的是图书管理系统课设报告以及在 centos 7 操作系统下开发的基于 C 语言开发的图书管理系统,开发环境为 centos 7 下的 gcc 编译器,本代码复制粘贴到该编译器下后,配置好必要的环境之后,便可以正常...
  • printf("/***************欢迎进入图书管理系统****************/\n"); printf("* 1.添加图书信息\ \n 2.删除图书信息\ \n 3.查找图书信息\ \n 4.修改图书信息\ \n 5.输出图书管理系统所有图书信息\ \n 6....
    </pre><pre name="code" class="html">
    
    总结:重点是利用sprintf()函数实现数据动态输入输出
    错误总结:刚开始输入数据时只能输入一个字符,多于一个字符就出现段错误,检查后发现是<pre name="code" class="html">sprintf(sql,"insert into book_info(ISBN,name,writer,publisher,time,price) values(%d,'%s','%s','%s','%s',%d);",ISBN,name,writer,publisher,time,price);
        printf("---------------------\n");这一句中,<span style="font-family: Arial, Helvetica, sans-serif;">values()里面有字符串,应该用单引号括起来,才表示将一个字符串插入相应的地方,否则就只能输入一个字符。</span>
    <span style="font-family:Arial, Helvetica, sans-serif;">在Linux下编写程序时,遇到最多的错误就是段错误, 通常段错误是指访问的内存超出了系统所给这个程序的内存空间,遇到段错误,首先检查scanf(),看输入的参数有没有加取地址符,很多时候我都是这个地方出问题了;</span>
    <span style="font-family:Arial, Helvetica, sans-serif;">再检查指针。。。。</span>
    <span style="font-family:Arial, Helvetica, sans-serif;">个人心得:本来觉得应该很难写,自己写不出来的,后来因为某个赌注,逼着自己一晚上写了出来,这个程序也算是我写程序的又一个新的起点吧,以后会更加自信!!</span>
     
    
    /*****************************************************
    copyright (C), Nanjing University of Tecnology
    File name:db.c
    Author: Xiecan  Version:0.1    Date: 2016-05-10 14:48
    Description:
    Funcion List: 
    *****************************************************/
    #include <stdlib.h>
    #include <stdio.h>
    #include <sqlite3.h>
    
    #define N 10
    #define M 15
    
    int displaycb(void *para,int n_column,char ** column_value,char ** column_name);
    int inquire_usecb(sqlite3 *db);
    void Menus(sqlite3 *db);
    
    int creat_table(sqlite3 *db);
    int insert_data(sqlite3 *db);
    int delete_data(sqlite3 *db);
    int update_data(sqlite3 *db);
    int find_data(sqlite3 *db);
    int show_data(sqlite3 *db);
    int qiut(sqlite3 *db);
    
    
    int main(int argc, char **argv)
    {
        sqlite3 *db = NULL;
        int rc;
    
        rc = sqlite3_open("database.db",&db);
    
        if(rc != SQLITE_OK)
        {
            printf("open database error!\n");
            exit(-1);
        }
        else 
        {
            printf("create database success!\n");
        }
    
        rc = creat_table(db);
        
        while(1)
        {
            Menus(db);
        }
    
        //rc = creat_table(db);
    
        return 0;
    }
    
    int inquire_usecb(sqlite3 *db)
    {
        char *sql;
        char *errmsg;
    
        sql = "select * from book_info;";
    
        if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
        {
            printf("exec_select error!error on:%s\n",errmsg);
            exit(-1);
        }
        /*sql = "./header on";
    
        if(SQLITE_OK != sqlite3_exec(db,sql,displaycb,NULL,&errmsg))
        {
            printf("exec_header error!error on:%s\n",errmsg);
            exit(-1);
        }*/
    
        return 0;
    }
    
    int displaycb(void *para,int n_column,char **column_value,char ** column_name)
    {
        int i;
    
        printf("**************************************************\n");
        printf("total column is %d\n",n_column);
        for(i = 0; i < n_column; i++)
        {
            printf("columnname:%s---->columnvalue:%s\n",column_name[i],column_value[i]);
        }
    
        printf("**************************************************\n");
        return 0;
    }
    /****************************************************
    函数功能:选择菜单
    ****************************************************/
    void Menus(sqlite3 *db)
    {
        int ch;
        printf("/***************欢迎进入图书管理系统****************/\n");
        printf("*               1.添加图书信息\
              \n                2.删除图书信息\
              \n                3.查找图书信息\
              \n                4.修改图书信息\
              \n                5.输出图书管理系统所有图书信息\
              \n                6.退出系统\
              \n/***************************************************/\n");
        printf("请输入你想进行的操作:\n");
        scanf("%d",&ch);
        switch(ch)
        {
            case 1:
                insert_data(db);
                inquire_usecb(db);
               break;
            case 2:
                delete_data(db);
                inquire_usecb(db);
               break;
            case 3:
                find_data(db);
                inquire_usecb(db);
               break;
            case 4:
                update_data(db);
                inquire_usecb(db);
               break;
            case 5:
                inquire_usecb(db);
               break;
            case 6:
                qiut(db);
               break;
            default:
                printf("输入错误,请重新输入!\n");
        }
    }
    
    int creat_table(sqlite3 *db)
    {
        char *sql;
        char *errmsg;
    
        sql = "create table if not exists book_info(\
               ISBN integer primary key,\
               name text,\
               writer text,\
               publisher text,\
               time text,\
               price real);";
    
        if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
        {
            printf("exec_create table error! error on:%s\n",errmsg);
            exit(-1);
        }
    
        return 0;
    }
    
    int insert_data(sqlite3 *db)
    {
        char sql[100];
        char *errmsg;
        int i;
        int num;
    
        int ISBN;
        char name[N];
        char writer[N];
        char publisher[N];
        char time[N];
        int price;
        
        printf("你想录入几本书?\n");
        scanf("%d",&num);
    
        for(i = 1; i <= num; i++)
        {
            printf("请输入第%d本书的信息:\n",i);
    
            printf("ISBN:");
            scanf("%d",&ISBN);
    
            printf("书名:");
            //gets(name);
            scanf("%s",name);
    
            printf("作者:");
            scanf("%s",writer);
    
            printf("出版社:");
            scanf("%s",publisher);
        
            printf("出版时间:");
            scanf("%s",time);
    
            printf("价格:");
            scanf("%d",&price);
            
            printf("********************\n");
            sprintf(sql,"insert into book_info(ISBN,name,writer,publisher,time,price) values(%d,'%s','%s','%s','%s',%d);",ISBN,name,writer,publisher,time,price);
        printf("---------------------\n");
            if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
            {
                printf("exec_insert data error! error on:%s\n",errmsg);
                exit(-1);
            }
    
        }
    
            return 0;
    }
    
    /*****************************************************
    函数功能:删除图书
    *****************************************************/
    int delete_data(sqlite3 *db)
    {
        char sql[100];
        char *errmsg;
        int ch;
        int ISBN;
        char name[N];
        char writer[N];
        char publisher[N];
        char time[N];
    
    
            printf("--------删除图书信息--------\n");
        printf("请选择你想进行的删除操作:\n");
        printf("        1.删除与指定ISBN相同的书\
              \n        2.删除与指定书名相同的书\
              \n        3.删除指定作者的书\
              \n        4.删除指定出版社的书\n");
        printf("------------------------\n");
        scanf("%d",&ch);
    
        switch(ch)
        {
            case 1:
                printf("请输入你要删除的图书的ISBN:\n");//根据ISBN找到指定图书
                scanf("%d",&ISBN);
                sprintf(sql,"delete from book_info where ISBN = %d;",ISBN);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_delete data according to ISBN error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            case 2:
                printf("请输入你想删除图书的名字:\n");
                scanf("%s",name);
               sprintf(sql,"delete from book_info where name = %s;",name);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_delete data according to name error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            case 3:
                printf("请输入你想删除图书的作者名:\n");
                scanf("%s",writer);
               sprintf(sql,"delete from book_info where writer = %s;",writer);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_delete data according to writer error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            case 4:
                printf("请输入你想删除图书的出版社名字:\n");
                scanf("%s",publisher);
               sprintf(sql,"delete from book_info where publisher = %s;",publisher);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_delete data according to publisher error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            default:
                printf("输入错误!\n");
        }
    }
    
    /******************************************************
    函数功能:根据需要选择要进行修改的操作
    ******************************************************/
    int update_data(sqlite3 *db)
    {
        char *errmsg;
        char sql[100];
        int ch;
        int c = 1;
    
        int NU;
        int ISBN;
        char name[N];
        char writer[N];
        char publisher[N];
        char time[N];
        int price;
    
         while(c)
        {
            c = 0;
            printf("--------修改图书信息--------\n");
            printf("请输入你想修改图书的ISBN:\n");
            scanf("%d",&NU);
    
            printf("请选择你想进行的修改操作:\n");
            printf("            1.修改ISBN\
                  \n            2.修改书名\
                  \n            3.修改作者\
                  \n            4.修改出版社名\
                  \n            5.修改书的价格\
                  \n            6.修改出版日期\n");
            printf("----------------------\n");
            scanf("%d",&ch);
    
            switch(ch)
            {
             case 1:
                printf("请输入新的ISBN:\n");
                scanf("%d",&ISBN);
    
                sprintf(sql,"update book_info set ISBN = %d where ISBN = %d;",ISBN,NU);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_update ISBN error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            case 2:
                printf("请输入新的书名:\n");
                scanf("%s",name);
               sprintf(sql,"update book_info set name = %s where ISBN = %d;",name,NU);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_update name error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            case 3:
                printf("请输入新的作者名字:\n");
                scanf("%s",writer);
               sprintf(sql,"update book_info set writer = %s where ISBN = %d;",writer,NU);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_update writer error! error on:%s\n",errmsg);
                    exit(-1);
                }
               break;
            case 4:
                printf("请输入新的出版社名字:\n");
                scanf("%s",publisher);
               sprintf(sql,"update book_info set publisher = %s where ISBN = %d;",publisher,NU);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_update publisher error! error on:%s\n",errmsg);
                    exit(-1);
                }
                break;
            case 5:
                printf("请输入新的time:\n");
                scanf("%s",time);
               sprintf(sql,"update book_info set time = %s where ISBN = %d;",time,NU);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_update time error! error on:%s\n",errmsg);
                    exit(-1);
                }
                break;
            case 6:
                printf("请输入新的price:\n");
                scanf("%d",&price);
               sprintf(sql,"update book_info set price = %d where ISBN = %d;",price,NU);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_update price error! error on:%s\n",errmsg);
                    exit(-1);
                }
                break;
            default:
                printf("输入错误\n");
            }
    
    C:      printf("还要继续修改吗?\
                 \n1.继续\
                 \n0.退出\n");
            scanf("%d",&c);
            if(c > 1)
            {
                printf("输入错误,请重新输入!\n");
                goto C;
            }
    
        }
        printf("修改后:\n");
    
    }
       
    int find_data(sqlite3 *db)
    {
        char sql[100];
        char *errmsg;
        int ch;
        int a,b;
        char stime[N];
        char etime[N];
        int ISBN;
        char name[N];
        char writer[N];
        char publisher[N];
    
            printf("--------查找图书信息--------\n");
        printf("请选择你想进行的查找操作:\n");
        printf("        1.按ISBN查找\
              \n        2.按书名查找\
              \n        3.查找指定作者的所有书\
              \n        4.查找指定出版社出版的所有书\
              \n        5.查找书的价格范围在指定区间的书\
              \n        6.查找出版时间在指定区间内的书\n");
            printf("----------------------\n");
        scanf("%d",&ch);
    
        switch(ch)
        {
            case 1:
                printf("请输入你想查找图书的ISBN:\n");
                scanf("%d",&ISBN);
    
                sprintf(sql,"select * from book_info where ISBN = %d;",ISBN);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_find data according to ISBN error! error on:%s\n",errmsg);
                    exit(-1);
                }
             break;
            case 2:
                printf("请输入你想查找图书的书名:\n");
                scanf("%s",name);
                sprintf(sql,"select * from book_info where = %s;",name);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_find data according to name error! error on:%s\n",errmsg);
                    exit(-1);
                }
              break;
            case 3:
                printf("请输入你想查找图书的作者:\n");
                scanf("%s",writer);
                sprintf(sql,"select * from book_info where writer = %s;",writer);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_find data according to writer error! error on:%s\n",errmsg);
                    exit(-1);
                }
            break;
            case 4:
                printf("请输入你想查找图书的出版社名字:\n");
                scanf("%s",publisher);
                sprintf(sql,"select * from book_info where publisher = %s;",publisher);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_find data according to publisher error! error on:%s\n",errmsg);
                    exit(-1);
                }
           break;
            case 5:
                printf("请输入你想查找图书价格的下限:\n");
                scanf("%s",&a);
                printf("请输入你想查找图书的上限:\n");
                scanf("%s",&b);
                sprintf(sql,"select * from book_info where price in (%d,%d);",a,b);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_find data according to price error! error on:%s\n",errmsg);
                    exit(-1);
                }
              break;
            case 6:
                printf("请输入你想查找图书出版日期的区间[a,b]:(以逗号隔开)\n");
                scanf("%s,%s",stime,etime);
                sprintf(sql,"select * from book_info where strcmp(time,%s) >= 0 and strcmp(time,%s) <= 0;",stime,etime);
                if(SQLITE_OK != sqlite3_exec(db,sql,NULL,NULL,&errmsg))
                {
                    printf("exec_find data according to time error! error on:%s\n",errmsg);
                    exit(-1);
                }
             break;
            default:
                printf("输入错误\n");
        }
       
        return 0;
    }
    int show_data(sqlite3 *db)
    {
        return 0;
    }
    int qiut(sqlite3 *db)
    {
        printf("欢迎使用图书管理系统,再见!\n");
        sqlite3_close(db);
        exit(0);
        return 0;
    }
    

    展开全文
  • Linux系统管理

    千人学习 2019-12-05 14:35:37
    Linux零基础学习,包含Linux用户管理,ACL权限设置,LVM磁盘管理,文件系统管理,进程和服务的管理及基于Linux系统各种编程环境的搭建。 本课程内容以基础性、操作性为主,属于云计算与大数据相关专业的专业基础课程...
  • c语言图书管理系统
  • Unix课程设计图书管理系统Unix课程设计图书管理系统Unix课程设计图书管理系统
  • 图书管理系统 本来是在公司内部用的,很简单,但是因为有一个更好的,所以这个就没用了。 目的:开发一个简单易用的图书管理系统 开发环境:php + linux + mysql 功能: 图书(id,书名,原书名,作者,译者,丛书名...
  • 一个java图书管理系统的源码,数据库采用mysql,由于mysql也有Linux版本,所以在windows和Linux下都适用。代码已优化,精简高效,适合初、中级学员学习参考,其功能图如下: 菜单栏 ——文件 ————退出 ——管理 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 19,126
精华内容 7,650
关键字:

linux图书管理系统

linux 订阅