#include <myhead.h>
//定义添加的员工信息函数
int do_add(sqlite3 *ppDb)
{
//定义要添加的员工信息变量
int add_numb;
char add_name[20];
double add_salary;
//提示并输入相关信息
printf("请输入要添加的员工编号:");
scanf("%d",&add_numb);
printf("请输入要添加的员工姓名:");
scanf("%s",add_name);
printf("请输入要添加的员工工资:");
scanf("%lf",&add_salary);
getchar();
//准备sql语句
//容器
char sql[128]="";
snprintf(sql,sizeof(sql),"insert into stu values(%d,\"%s\",%lf);",add_numb,add_name,add_salary);
//执行sql语句
//用于接收错误信息
char *errmsg=NULL;
//执行
if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("stu create error:%s\n",errmsg);
//释放里面空间
sqlite3_free(errmsg);
return -1;
}
printf("插入成功");
return 0;
}
//定义删除函数
int do_delete(sqlite3 *ppDb)
{
//定义一个变量存放要删除的名字
char ming[20]="";
printf("请输入要删除的员工姓名:");
scanf("%s",ming);
getchar();
//存放删除指令的容器
char sql[128]="";
snprintf(sql,sizeof(sql),"delete from stu where name=%s;",ming);
//执行sql语句
char *errmsg=NULL;
if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("删除失败:%s\n",errmsg);
sqlite3_free(errmsg);
return -1;
}
}
//定义修改函数
int do_update(sqlite3 *ppDb)
{
char newname[20];
double newsala;
printf("请输入您要修改的员工姓名:");
scanf("%s",newname);
printf("请输入您要修改的工资:");
scanf("%lf",&newsala);
getchar();
//准备sql语句
char sql[128]="";
snprintf(sql,sizeof(sql),"update stu salary=%lf where name=%s;",newsala,newname);
//执行sql语句
char *errmsg=NULL;
if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("删除失败:%s\n",errmsg);
sqlite3_free(errmsg);
return -1;}
}
//定义回调函数
int callback(void *arg,int cols,char **col_text,char **col_name)
{
if(*(int *)arg==0)
{
for(int i=0;i<cols;i++)
{
printf("%s\t",col_name[i]);
}
printf("\n");
*(int *)arg=1;
}
//输出当前记录
for(int i=0;i<cols;i++)
{
printf("%s",col_text[i]);
}
printf("\n");
return 0;
}
//定义查找函数
int do_search(sqlite3 *ppDb)
{
int fiag=0;
//准备sql语句
char sql[128]="select *from stu;";
//执行sql语句
char *errmsg=NULL;//接收错误信息
if(sqlite3_exec(ppDb,sql,callback,&fiag,&errmsg)!=SQLITE_OK)
{
printf("stu create error:%s\n",errmsg);
sqlite3_free(errmsg);
return -1;
}
//查找结束
printf("查找结束\n");
}
int main(int argc, const char *argv[])
{
//打开数据库并返回一个操作数据库的句柄
sqlite3 *ppDb=NULL;
if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK)
{
printf("my.db open error");
return -1;
}//对数据库的相关操作
//创建数据表
//准备sql语句
char sql[128]="create table if not exists stu(numb int,name text,salary double);";
//定义一个数组用来存放员工号,员工名字,和员工薪资
char *errmsg=NULL;//用于接收错误信息
//执行sql语句
if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK)
{
printf("create error:%s\n",errmsg);
//释放里面空间
sqlite3_free(errmsg);
return -1;
}
//表创建成功
printf("创建成功");
//制作菜单完成管理系统
int menu=0;
while(1)
{
system("clear");
printf("==========雪路员工管理系统=========\n");
printf("==========1.增加员工信息=========\n");
printf("==========2.删除员工信息=========\n");
printf("==========3.修改员工信息=========\n");
printf("==========4.查找员工信息=========\n");
printf("===========0.退出该系统==========\n");
printf("请输入功能选项:");
scanf("%d",&menu);
getchar();//回收垃圾字符
//对菜单进行分支选择
switch(menu)
{
case 1:
{
//执行添加员工信息函数
do_add(ppDb);
}
break;
case 2:
{
//执行删除员工信息函数
do_delete(ppDb);
}
break;
case 3:
{
//执行修改员工信息函数
do_update(ppDb);
}
break;
case 4:
{
//执行查找员工信息函数
do_search(ppDb);
}
break;
case 0:goto END;
default:printf("您输入的功能有误,请重新输入\n");
}
printf("请按任意键回车清屏");
while(getchar()!='\n');
}
END:
//关闭数据库
sqlite3_close(ppDb);
return 0;
}