#include "DBUtil.h"
DBUtil::DBUtil()
{
szUsername = "root";
szPswd = "HANXUEXUN095827";
szHost = "localhost";
szDatabase = "library";
nPort = 3306;
isOpen = false;
}
DBUtil::~DBUtil()
{
CloseDB();
}
//打开数据库
bool DBUtil::OpenDB()
{
mysql_init(&myCont);
if (mysql_real_connect(&myCont, szHost.c_str(), szUsername.c_str(), szPswd.c_str(), szDatabase.c_str(), nPort, NULL, 0))
{
isOpen = true;
return true;
}
return false;
}
//关闭数据库
bool DBUtil::CloseDB()
{
mysql_close(&myCont);//断开连接
return true;
}
bool DBUtil::SelectByName(string name, vector<User>& users)
{
int res;
string sql;
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "select * from user where name like '%" + name + "%'";
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
result = mysql_store_result(&myCont);//保存查询到的数据到result
if (result)
{
while (sql_row = mysql_fetch_row(result))//获取具体的数据
{
User user;
user.m_nID = atoi(sql_row[0]);
user.m_strName = sql_row[1];
user.m_nRole = atoi(sql_row[3]);
users.push_back(user);
}
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
{
mysql_free_result(result);//释放结果资源
}
return true;
}
bool DBUtil::DeleteByUserId(int id)
{
int res;
string sql;
char szBookId[5] = { 0 };
sprintf(szBookId, "%d", id);
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "delete from user where id=";
sql += szBookId;
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
cout << "删除成功!" << endl;
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
cout << "按任意键继续...." << endl;
getchar();
return true;
}
//根据用户名和密码获得用户信息
User DBUtil::ReadUser(string strUserName, string strUserPWD)
{
User user;
char column[32][32];
int res;
string sql;
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "select * from user where name='" + strUserName + "' and password='" + strUserPWD + "'";
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
result = mysql_store_result(&myCont);//保存查询到的数据到result
if (result->row_count > 0)
{
int i, j;
//cout << "number of result: " << (unsigned long)mysql_num_rows(result) << endl;
for (i = 0; fd = mysql_fetch_field(result); i++)//获取列名
{
strcpy_s(column[i], fd->name);
}
j = mysql_num_fields(result);
if (j > 0)
{
sql_row = mysql_fetch_row(result);
user.m_nID = atoi(sql_row[0]);
user.m_strName = sql_row[1];
user.m_nRole = atoi(sql_row[3]);
}
}
else
{
user.m_nID = -1;
return user;
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
{
mysql_free_result(result);//释放结果资源
}
return user;
}
//新增图书
bool DBUtil::AddBook(Book book)
{
string sql = "";
char szTotal[16];
char szLeftNum[16];
sprintf(szTotal, "%d", book.GetTotalNum());
sprintf(szLeftNum, "%d", book.GetTotalNum());
if (isOpen)
{
//获得时间
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "insert into book values(null,'" + book.GetBookName() + "','" + book.GetClassify() + "','" + book.GetAuthor() + "','" + book.GetISBN() + "','" + book.GetPub() + "','" + book.GetInDate() + "', " + szTotal + ", " + szLeftNum + ")";
mysql_query(&myCont, sql.c_str());
}
else
{
cout << "connect failed!" << endl;
}
cin.get();
cin.get();
return false;
}
bool DBUtil::BorrowTop(vector<Book>& books)
{
int res;
string sql;
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "call proc_1()";
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
result = mysql_store_result(&myCont);//保存查询到的数据到result
if (result)
{
while (sql_row = mysql_fetch_row(result))//获取具体的数据
{
Book book;;
book.SetBookName(sql_row[0]);
book.SetTotalNum(atoi(sql_row[1]));
books.push_back(book);
}
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
{
mysql_free_result(result);//释放结果资源
}
return true;
}
//搜索所有图书
bool DBUtil::SelectAllBook(vector<Book>& books)
{
int res;
string sql;
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "select * from book";
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
result = mysql_store_result(&myCont);//保存查询到的数据到result
if (result)
{
while (sql_row = mysql_fetch_row(result))//获取具体的数据
{
Book book;
book.SetBookID(atoi(sql_row[0]));
book.SetBookName(sql_row[1]);
book.SetClassify(sql_row[2]);
book.SetAuthor(sql_row[3]);
book.SetISBN(sql_row[4]);
book.SetPub(sql_row[5]);
book.SetInDate(sql_row[6]);
book.SetTotalNum(atoi(sql_row[7]));
book.SetLeftNum(atoi(sql_row[8]));
books.push_back(book);
}
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
{
mysql_free_result(result);//释放结果资源
}
return true;
}
//根据书名查询书籍
bool DBUtil::SelectBookByName(string strBookName, vector<Book>& books)
{
int res;
string sql;
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "select * from book where bookname like '%" + strBookName + "%'";
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
result = mysql_store_result(&myCont);//保存查询到的数据到result
if (result)
{
while (sql_row = mysql_fetch_row(result))//获取具体的数据
{
Book book;
book.SetBookID(atoi(sql_row[0]));
book.SetBookName(sql_row[1]);
book.SetClassify(sql_row[2]);
book.SetAuthor(sql_row[3]);
book.SetISBN(sql_row[4]);
book.SetPub(sql_row[5]);
book.SetInDate(sql_row[6]);
book.SetTotalNum(atoi(sql_row[7]));
book.SetLeftNum(atoi(sql_row[8]));
books.push_back(book);
}
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
{
mysql_free_result(result);//释放结果资源
}
return true;
}
//根据图书ID查询书籍
bool DBUtil::SelectBookById(int nBookId, Book& book)
{
int res;
string sql;
char szBookId[5] = { 0 };
sprintf(szBookId, "%d", nBookId);
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "select * from book where id=";
sql += szBookId;
res = mysql_query(&myCont, sql.c_str());//查询
if (!res)
{
result = mysql_store_result(&myCont);//保存查询到的数据到result
if (result)
{
while (sql_row = mysql_fetch_row(result))//获取具体的数据
{
book.SetBookID(atoi(sql_row[0]));
book.SetBookName(sql_row[1]);
book.SetClassify(sql_row[2]);
book.SetAuthor(sql_row[3]);
book.SetISBN(sql_row[4]);
book.SetPub(sql_row[5]);
book.SetInDate(sql_row[6]);
book.SetTotalNum(atoi(sql_row[7]));
book.SetLeftNum(atoi(sql_row[8]));
}
}
}
else
{
cout << "query sql failed!" << endl;
}
}
else
{
cout << "connect failed!" << endl;
}
if (result != NULL)
{
mysql_free_result(result);//释放结果资源
}
return true;
}
//根据ID删除图书
bool DBUtil::DeleteBookById(int nBookId)
{
int res;
string sql;
char szBookId[5] = { 0 };
sprintf(szBookId, "%d", nBookId);
if (isOpen)
{
mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文
sql += "delete from book where id=";
sql += szBookId;
res = mysql_query(&myCont, sql.c_str());/
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
基于C++实现图书信息管理系统源码+数据库(C语言课设).zip 【资源介绍】 该项目是个人C语言课设,答辩评审分达到95分,代码都经过调试测试,确保可以运行!欢迎下载使用,可用于小白学习、进阶。 该资源主要针对计算机、通信、人工智能、自动化等相关专业的学生、老师或从业者下载使用,亦可作为期末课程设计、课程大作业、毕业设计等。 项目整体具有较高的学习借鉴价值!基础能力强的可以在此基础上修改调整,以实现不同的功能。 图书信息管理系统 大二下做的大一C课设 语言C++,纯Console项目+mysql数据库 运行记得去导入mysql的库才能使用,网上有详细教程 包含图片演示和源代码以及sql文件
资源推荐
资源详情
资源评论
收起资源包目录
基于C++实现图书信息管理系统源码+数据库(C语言课设).zip (18个子文件)
picture.rar 1.84MB
数据库导出文件mysql.rar 4KB
Library
Book.cpp 1KB
Student.h 543B
TimeUtil.cpp 2KB
Manager.h 599B
DBUtil.cpp 15KB
TimeUtil.h 283B
Book.h 1014B
DBUtil.h 1KB
main.cpp 6KB
BorrowRecord.h 389B
Student.cpp 12KB
Manager.cpp 10KB
BorrowRecord.cpp 97B
User.cpp 93B
User.h 519B
项目介绍.md 213B
共 18 条
- 1
资源评论
z同学的编程之路
- 粉丝: 1813
- 资源: 2129
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功