【无标题】

发布于:2025-09-16 ⋅ 阅读:(17) ⋅ 点赞:(0)

#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;
    }