1、#include#include#include#include#include#include#include #include#include#include/改变字体颜色 #define NONE 033m#define RED 0330;32;31m#define GREEN 0330;32;32m#define BLUE 0330;32;34m#define YELLOW 0331;33m#define LIGHT_RED 0331;31m#define LIGHT_GREEN 0331;32m#define LIGHT_BLUE 0331;34m/*在编译程序之前,请先开启mysq
2、l服务器(命令为 sudo mysqld_safe &),然后再登录mysql客户端(命令为 mysql -u root -p)建立数据库 stu;建立数据表reader,book;具体操作语句如下:create database stu;create table reader(stu_name varchar(20),stu_phone varchar(15),stu_password varchar(10),stu_num int,debt float,lend_time double,back_time double,count int);create table book(book_n
3、ame varchar(40),book_aut varchar(40),book_pre varchar(40),book_num int,book_mux int,book_con int);编译时用如下命令:g+ $(mysql_config -cflags) 110.cpp -o t $(mysql_config -libs)*/定义mysql数据库变量MYSQL mysql;MYSQL_RES * results; MYSQL_FIELD *fileds; MYSQL_ROW rows; char strHost = localhost; char strUser = root; c
4、har strPasswd = 3335599; char strDb = stu;char strSQL200;unsigned int num_fields;/*程序导读:1.程序中对书的操作,可通过书名,编号来进行,flag=0按书名来操作,flag=1按书编号来操作2.程序中对用户的操作,也可通过姓名,用户ID号或编号两种方式来进行,flag=0按姓名来操作, flag=1按用户ID号或编号来操作3.本程序分5个部分,具体已标识如(1)图书管理.4.本程序即可实现将数据保存至本地即stu.txt,book.txt,又可将数据保存至mysql数据库,只 需稍加修改,具体如何修改,在此就不
5、做说明*/using namespace std;class Bookpublic:string book_name;string book_num;/编号string book_pre;/出版社string book_aut;/作者int book_con;/这样的书还有几本int book_mux;/这样的书总共有几本public:Book()book_con=0;book_mux=0;void show_book();/*(1)图书管理*/void Book:show_book()cout书名:book_nameendl;cout出版社:book_preendl;cout此书的作者:bo
6、ok_autendl;coutISBN编号:book_numendl;cout此书共有book_mux本endl;cout还有book_con本书未借出!endl;class BookNodepublic:Book book;BookNode *next;BookNode *headbook=NULL;void savebook(BookNode *p);/保存图书信息到数据库void del_sql_book(BookNode *p);/将图书信息从数据库中删除class BookManagepublic:int totolbook;public:BookManage()totolbook=
7、0;void addbook();void delbook(string s,int num,int flag);void findbook(string s,int flag);/查询图书;void BookManage:addbook()string h;cout添加输入0,退出输入-1h;if(h=-1)return;else if(h=0)while(1)if(h=-1)break;else if(h=0)string na,nu,p1,aut;int con;BookNode *p=new BookNode;cout请输入书名:na;p-book.book_name=na;cout请
8、输入ISBN编号:nu;p-book.book_num=nu;cout请输入出版社:p1;p-book.book_pre=p1;cout请输入此书的作者:aut;p-book.book_aut=aut;cout请输入此书共有几本:con;p-book.book_con=con;p-book.book_mux=con;p-next=headbook;headbook=p;savebook(p);/添加至数据库BookManage:totolbook+=con;cout继续添加输入0,取消添加输入-1h;elsecoutYELLOW输入字符无效!NONEendl;elsecoutYELLOW输入字
9、符无效!NONEbook.book_name=s)if(headbook-book.book_con1)headbook-book.book_con-=num;headbook-book.book_mux-=num;elseheadbook=p-next;totolbook-=num;del_sql_book(p);/从数据库中删除/delete p;else if(p-next)for(p=headbook;p-next!=NULL&p!=NULL;p=p-next)if(p-next-book.book_name=s)if(p-next-book.book_con1)p-next-book
10、.book_con-=num;headbook-book.book_mux-=num;break;elsep-next=p-next-next;totolbook-=num;del_sql_book(p-next);/从数据库中删除/delete p-next;break;if(p-next=NULL)coutYELLOW此书不存在!NONEbook.book_num=s)if(headbook-book.book_con1)headbook-book.book_con-=num;headbook-book.book_mux-=num;elseheadbook=p-next;totolbook
11、-=num;del_sql_book(p);/从数据库中删除/delete p;else if(p-next)for(p=headbook;p-next!=NULL&p!=NULL;p=p-next)if(p-next-book.book_num=s)if(p-next-book.book_con1)p-next-book.book_con-=num;headbook-book.book_mux-=num;break;elsep-next=p-next-next;totolbook-=num;del_sql_book(p-next);/从数据库中删除/delete p-next;break;i
12、f(p-next=NULL)coutYELLOW此书不存在!NONEendl;break;default:coutYELLOW输入数字无效!NONEnext)/先查看是否有此书if(p-book.book_name=s)break;if(NULL=p)coutYELLOW此书不存在!NONEnext)/查看名为s的图书共有几本if(p-book.book_name=s)h+;if(h0)coutGREEN这种名字的书共有h本NONEnext)/查看图书,把所有名为s的图书的信息都打印出来if(p-book.book_name=s)p-book.show_book();/显示出图书的基本信息if
13、(p-book.book_con=0)coutYELLOW该书已全被借出!NONEendl;coutnext)if(p-book.book_num=s)p-book.show_book();if(p-book.book_con=0)coutYELLOW该书已全被借出!NONEendl;break;if(NULL=p)coutYELLOW此书不存在!NONEendl;break;default:coutYELLOW输入数字无效!NONEendl;break;/*(2)用户管理*/class Admin/管理员public:string adm_name;/帐号string adm_passw;/
14、密码public:Admin()adm_name=adm;adm_passw=123;class LendBookpublic:string bookname3;int count;/借多少本数time_t lend_time;time_t back_time;LendBook()count=0;class Stupublic:string stu_name;string stu_phone;/联系方式string stu_num;/学号(登录帐号)string password;/密码float debt;/欠费额LendBook lendbook;/用户借书信息public:void sh
15、ow_stu();/把此人所有信息(包括借书)显示出来;void Stu:show_stu()cout姓名:stu_nameendl;cout联系电话:stu_phoneendl;coutID:stu_numendl;cout欠费额:debtendl;cout已借书lendbook.count本endl;class StuNodepublic:Stu stu;StuNode *next;StuNode *headstu=NULL;void savestu(StuNode *p);/保存读者信息到数据库void del_sql_stu(StuNode *p);/将读者信息从数据库中删除class
16、 StuManage:public BookManageprivate:int totolstu;/用户总数public:StuManage()totolstu=0;void addstu();/增加用户void delstu(string s,int flag);/删除用户void findstu(string s,int flag);/查找用户void lendbook(string ss,string s,int flag);/借书void backbook(string ss,string s,int flag);/还书void paydebt(string s);/还款void mu
17、x_stu_book();/查询图书管总的图书量与总的用户量;void StuManage:addstu()string h;cout添加输入0,退出输入-1h;if(h=-1)return;else if(h=0)while(1)if(h=-1)break;else if(h=0)string na,num,p1,pa,pa1,pa2;StuNode *p=new StuNode;cout请输入姓名:na;p-stu.stu_name=na;cout请输入联系电话:p1;p-stu.stu_phone=p1;cout请输入ID:num;p-stu.stu_num=num;p-stu.lend
18、book.lend_time=0;p-stu.lendbook.back_time=0;while(1)cout请输入六位密码:pa1;cout请确认六位密码:pa2;if(pa1=pa2)pa=pa2;p-stu.password=pa;break;elsecoutYELLOW两次密码不一样,请重行输入!NONEstu.debt=0;p-next=headstu;headstu=p;savestu(p);/保存至数据库(StuManage:totolstu)+;/用户总数加一cout继续添加输入0,取消添加输入-1h;elsecoutYELLOW输入字符无效!NONEendl;elsecou
19、tYELLOW输入字符无效!NONEstu.stu_name=s)/当要删除的用户位于链表的头结点位置headstu=p-next;StuManage:totolstu-;del_sql_stu(p);/从数据库中删除delete p;else if(p-next)/非头结点位置for(p=headstu;p-next!=NULL&p!=NULL;p=p-next)if(p-next-stu.stu_name=s)p-next=p-next-next;totolstu-;del_sql_stu(p-next);/从数据库中删除/delete p-next;break;if(p-next=NUL
20、L)coutYELLOW此用户不存在!NONEstu.stu_name=s)headstu=p-next;totolstu-;del_sql_stu(p);/从数据库中删除delete p;else if(p-next)for(p=headstu;p-next!=NULL&p!=NULL;p=p-next)if(p-next-stu.stu_name=s)p-next=p-next-next;totolstu-;del_sql_stu(p-next);/从数据库中删除/delete p-next;break;if(p-next=NULL)coutYELLOW此用户不存在!NONEendl;br
21、eak;default:coutYELLOW输入数字无效!NONEnext)if(p-stu.stu_name=s)break;if(p=NULL)coutYELLOW此用户不存在!NONEnext)if(p-stu.stu_name=s)h+;if(h0)coutGREEN这种名字的用户共有h个NONEnext)if(p-stu.stu_name=s)p-stu.show_stu();if(p-stu.lendbook.count=3)coutYELLOWsorry,您已借满3本书,不能再借了!NONEstu.lendbook.count;if(i0)cout所借书的名字为:endl;/输出
22、用户所借书的名字while(i)coutt(m+):stu.lendbook.booknamei-1endl;i-;coutstu.lendbook.count;if(i0)cout所借书的名字为:endl;/输出用户所借书的名字while(i)coutt(m+):stu.lendbook.booknamei-1endl;i-;cout您已借了stu.lendbook.count本书!endl;cout您还可以借stu.lendbook.count本书!endl;coutnext)if(p-stu.stu_num=s)p-stu.show_stu();if(p-stu.lendbook.cou
23、nt=3)coutYELLOWsorry,您已借满3本书,不能再借了!NONEstu.lendbook.count;cout所借书的名字为:endl;/输出用户所借书的名字while(i)/输出用户所借书的名字coutt(m+):stu.lendbook.booknamei-1endl;i-;coutstu.lendbook.count;cout所借书的名字为:endl;/输出用户所借书的名字while(i)/输出用户所借书的名字coutt(m+):stu.lendbook.booknamei-1endl;i-;cout您已借了stu.lendbook.count本书!endl;cout您还可
24、以借stu.lendbook.count本书!NONEendl;coutendl;break;if(p=NULL)coutYELLOW此用户不存在!NONEendl;break;default:coutYELLOW输入数字无效!NONEnext)i+;cout当前图书馆注册用户数为:inext)h+=q-book.book_mux;j+=q-book.book_con;cout当前图书馆库存的总书数为:jendl;cout已借出图书总数为:h-jnext)if(q-stu.stu_num=ss)del_sql_stu(q);break;/丛数据库中删除if(q=NULL)coutYELLOW此
25、用户不存在!NONEnext)if(p-book.book_name=s)del_sql_book(p);/从数据库中删除int i=q-stu.lendbook.count;if(i=3|q-stu.debt0)if(i=3)&(q-stu.debt=0)coutYELLOW对不起,您借书已超过3本,不能再借!NONEendl;if(istu.debt0)coutYELLOW对不起,您因为所借图书超期已欠费,请速交清欠费再借!NONE=3)&(q-stu.debt0)coutYELLOW对不起,您借书已超过3本且有欠费,不能再借!NONEstu.lendbook.booknamei=p-bo
26、ok.book_name;time_t now;time(&now);q-stu.lendbook.lend_time=time(&now);/保存借书时间q-stu.lendbook.count+;/所借书数目加一p-book.book_con-;/同样的书的个数减一break;if(p=NULL)coutYELLOW此书不存在!NONEnext)if(p-book.book_num=s)del_sql_book(p);/从数据库中删除int i=q-stu.lendbook.count;if(i=3|q-stu.debt0)if(i=3)&(q-stu.debt=0)coutYELLOW对
27、不起,您借书已超过3本,不能再借!NONEendl;if(istu.debt0)coutYELLOW对不起,您因为所借图书超期已欠费,请速交清欠费再借!NONE=3)&(q-stu.debt0)coutYELLOW对不起,您借书已超过3本且有欠费,不能再借!NONEstu.lendbook.booknamei=p-book.book_name;time_t now;time(&now);q-stu.lendbook.lend_time=time(&now);q-stu.lendbook.count+;p-book.book_con-;/同样的书的个数减一break;if(p=NULL)coutYELLOW此书不存在!NONEendl;break;default:coutYELLOW输入数字无效!NONEnext)if(q-stu.stu_num=ss)del_sql_stu(q);break;/丛数据库中删除if(q=NULL)coutYELLOW此用户不存在!NONEnext)if(p-book.book_name=s)del_sql_book(p);/从数据库中删除time_t now;time(
©2010-2024 宁波自信网络信息技术有限公司 版权所有
客服电话:4008-655-100 投诉/维权电话:4009-655-100