在现代软件开发中,数据库是一个非常重要的组成部分。为了更好地利用数据库的功能,程序员需要使用各种编程语言将其与数据库进行结合开发。其中,C语言是比较经典的编程语言之一,因此在本文中,我们将介绍C语言与MySQL结合开发的项目案例研究。
1. 简介
本项目是一款简单的图书管理系统,采用C语言和MySQL数据库开发。这个系统主要用于记录图书馆的图书信息和借阅信息。用户可以通过该系统查询图书信息和借阅情况,管理员可以管理图书和借阅信息。
2. 开发环境和工具
该系统的开发环境是Windows操作系统。开发工具包括代码编辑器Visual Studio Code和MySQL数据库管理工具Navicat for MySQL。
3. 数据库设计
该系统的数据库包括两个关系表:Book和Borrow。Book表包括图书编号、图书名、作者、出版社、价格等字段,Borrow表包括借阅编号、读者编号、图书编号、借阅日期、归还日期等字段。
4. 程序设计
该系统的程序主要包括以下几个模块:连接数据库、添加图书、查询图书、删除图书、添加借阅、查询借阅、归还图书等。
(1)连接数据库
在程序中连接数据库需要使用MySQL的C语言库。在本项目中,我们使用了mysql.h和mysqlclient.lib这两个库。连接数据库的代码如下:
“`c
#include
MYSQL mysql;
char *host = “localhost”;
char *user = “root”;
char *pwd = “123456”;
char *db = “Library”;
mysql_init(&mysql);
if(!mysql_real_connect(&mysql, host, user, pwd, db, 0, NULL, 0))
{
printf(“Connect to database fled!\n”);
return -1;
}
(2)添加图书
添加图书的代码如下:
```c
void addBook()
{
MYSQL_RES* res;
char sql[256] = {0};
int num;
char name[32];
char author[32];
char press[32];
float price;
printf("请输入图书编号:");
scanf("%d", &num);
printf("请输入图书名称:");
scanf("%s", name);
printf("请输入作者:");
scanf("%s", author);
printf("请输入出版社:");
scanf("%s", press);
printf("请输入价格:");
scanf("%f", &price);
sprintf(sql, "INSERT INTO Book VALUES(%d, '%s', '%s', '%s', %.2f)", num, name, author, press, price);
mysql_query(&mysql, sql);
printf("添加成功!\n");
}
(3)查询图书
查询图书的代码如下:
“`c
void queryBook()
{
MYSQL_RES* res;
MYSQL_ROW row;
char sql[256] = {0};
int num;
printf(“请输入图书编号:”);
scanf(“%d”, &num);
sprintf(sql, “SELECT * FROM Book WHERE Num = %d”, num);
mysql_query(&mysql, sql);
res = mysql_use_result(&mysql);
if(mysql_fetch_row(res))
{
printf(“编号\t名称\t作者\t出版社\t价格\n”);
printf(“%d\t%s\t%s\t%s\t%.2f\n”, atoi(row[0]), row[1], row[2], row[3], atof(row[4]));
}
else
{
printf(“该图书不存在!\n”);
}
mysql_free_result(res);
}
(4)删除图书
删除图书的代码如下:
```c
void delBook()
{
MYSQL_RES* res;
char sql[256] = {0};
int num;
printf("请输入要删除的图书编号:");
scanf("%d", &num);
sprintf(sql, "DELETE FROM Book WHERE Num = %d", num);
mysql_query(&mysql, sql);
if(mysql_affected_rows(&mysql) > 0)
{
printf("删除成功!\n");
}
else
{
printf("该图书不存在!\n");
}
}
(5)添加借阅
添加借阅的代码如下:
“`c
void addBorrow()
{
MYSQL_RES* res;
char sql[256] = {0};
int bnum, rnum, lnum;
char date[20];
printf(“请输入借阅编号:”);
scanf(“%d”, &bnum);
printf(“请输入读者编号:”);
scanf(“%d”, &rnum);
printf(“请输入图书编号:”);
scanf(“%d”, &lnum);
printf(“请输入借阅日期:”);
scanf(“%s”, date);
sprintf(sql, “INSERT INTO Borrow VALUES(%d, %d, %d, ‘%s’, NULL)”, bnum, rnum, lnum, date);
mysql_query(&mysql, sql);
printf(“添加成功!\n”);
}
(6)查询借阅
查询借阅的代码如下:
```c
void queryBorrow()
{
MYSQL_RES* res;
MYSQL_ROW row;
char sql[256] = {0};
int num;
printf("请输入借阅编号:");
scanf("%d", &num);
sprintf(sql, "SELECT * FROM Borrow WHERE BNum = %d", num);
mysql_query(&mysql, sql);
res = mysql_use_result(&mysql);
if(mysql_fetch_row(res))
{
printf("编号\t读者编号\t图书编号\t借阅日期\t归还日期\n");
printf("%d\t%d\t%d\t%s\t%s\n", atoi(row[0]), atoi(row[1]), atoi(row[2]), row[3], row[4]);
}
else
{
printf("该借阅不存在!\n");
}
mysql_free_result(res);
}
(7)归还图书
归还图书的代码如下:
“`c
void returnBook()
{
MYSQL_RES* res;
char sql[256] = {0};
int num;
char date[20];
printf(“请输入归还编号:”);
scanf(“%d”, &num);
printf(“请输入归还日期:”);
scanf(“%s”, date);
sprintf(sql, “UPDATE Borrow SET RDate = ‘%s’ WHERE BNum = %d”, date, num);
mysql_query(&mysql, sql);
if(mysql_affected_rows(&mysql) > 0)
{
printf(“归还成功!\n”);
}
else
{
printf(“该借阅不存在!\n”);
}
}
5. 总结
本文介绍了一个简单的图书管理系统,采用C语言和MySQL数据库开发。该系统的设计和代码实现都比较简单,并且方便学习者进行模仿和学习。在实际开发中,我们需要注意代码的可维护性和可扩展性,这样才能更好地适应软件的发展需求。