3.6作业

作业要求:数据库操作的增、删、改

程序代码:

#include<myhead.h>
int main(int argc, const char *argv[])
{
	//定义数据库句柄指针
	sqlite3 * ppDb = NULL;
	//打开数据库,如果数据库不存在,则创建数据库
	//将数据库句柄由参数2返回
	if(sqlite3_open("./stu.db",&ppDb) != 0)
	{
		printf("sqlite3_open error,errcode=%d,errmsg=%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));
		return -1;
	}
	printf("sqlite3_open success\n");

	//创建数据表
	//1.准备sql语句
	char sql[128] ="create table if not exists worker(numb int ,name char,salary double)";
	char *errmsg = NULL;               //存放执行sql语句中的错误信息
	if(sqlite3_exec(ppDb , sql , NULL , NULL , &errmsg) != SQLITE_OK)
	{
		printf("exec error : %s\n",errmsg);
		sqlite3_free(errmsg);                  //防止内存泄漏
		errmsg = NULL;
		return -1;
	}
	printf("员工信息表创建成功\n");


	int menu = -1;               //菜单选项	


	for(;;)
	{
		system("clear");             //清空之前的终端信息
		printf("\t\t======公司员工管理系统======\n");
		printf("\t\t======1.添加员工信息======\n");
		printf("\t\t======2.删除员工信息======\n");
		printf("\t\t======3.修改员工信息======\n");
		printf("\t\t======4.查询员工信息======\n");
		printf("\t\t======5.退出======\n");

		printf("请输入操作码:");           //提示并输入信息
		scanf("%d",&menu);
		getchar();                            //吸收回车
		switch(menu)
		{
		case 1:
			{
				char ch[64];
				char *errmsg = NULL;
				printf("请按照格式输入:  (numb,'name',salary)\n");
				fgets(ch,sizeof(ch),stdin);
				char buf[128] = "insert into worker values";
				strcat(buf,ch);
				if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
				{
					printf("insert error : %s\n",errmsg);
					sqlite3_free(errmsg);                  //防止内存泄漏
					errmsg = NULL;
					return -1;
				}
				printf("员工信息添加成功\n");



			}break;
		case 2:
			{
				char ch[64];
				char *errmsg = NULL;
				printf("请按照格式输入:  'name'\n");
				fgets(ch,sizeof(ch),stdin);
				char buf[128] = "delete from worker where name=";
				strcat(buf,ch);
				if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
				{
					printf("delete error : %s\n",errmsg);
					sqlite3_free(errmsg);                  //防止内存泄漏
					errmsg = NULL;
					return -1;
				}
				printf("员工信息删除成功\n");


			}break;
		case 3:
			{
				for(;;)
				{
					system("clear");             //清空之前的终端信息
					printf("\t\t======修改员工信息======\n");
					printf("\t\t======1.修改员工numb信息======\n");
					printf("\t\t======2.修改员工salary信息======\n");
					printf("\t\t======3.退出======\n");

					printf("请输入操作码:");           //提示并输入信息
					scanf("%d",&menu);
					getchar();                            //吸收回车
					switch(menu)
					{
					case 1:
						{
							char ch[64];
							char *errmsg = NULL;
							printf("请按照格式输入:numb where name='name'\n");
							fgets(ch,sizeof(ch),stdin);
							char buf[128] = "update worker set numb=";
							strcat(buf,ch);
							if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
							{
								printf("update error : %s\n",errmsg);
								sqlite3_free(errmsg);                  //防止内存泄漏
								errmsg = NULL;
								return -1;
							}
							printf("员工numb信息修改成功\n");
						}break;
					case 2:
						{
							char ch[64];
							char *errmsg = NULL;
							printf("请按照格式输入:salary where name='name'\n");
							fgets(ch,sizeof(ch),stdin);
							char buf[128] = "update worker set salary=";
							strcat(buf,ch);
							if(sqlite3_exec(ppDb , buf , NULL , NULL , &errmsg) != SQLITE_OK)
							{
								printf("update error : %s\n",errmsg);
								sqlite3_free(errmsg);                  //防止内存泄漏
								errmsg = NULL;
								return -1;
							}
							printf("员工salary信息修改成功\n");
						}break;
					case 3:
						goto end;
					}
				}


			}break;
end:break;
		case 4:
	{

		//查找员工信息
	}break;
		case 5:
	goto END;

			default:printf("您输入的功能有误,请重新输入!!!\n");
		}
		printf("请输入任意键,按回车清屏\n");
		while(getchar() != '\n');
	}
END:
	//关闭数据库
	sqlite3_close(ppDb);
	return 0;
}

运行结果:

添加员工信息:

删除员工信息:

修改员工信息:

总运行结果:

课程总结:

  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值