数据库:2024/3/6

作业1:使用C语言完成数据库的增删改

代码:

#include <myhead.h>


//定义添加员工信息函数
int Add_worker(sqlite3 *ppDb)
{
	//准备sql语句
	
	printf("请输入要添加的员工信息:\n");
	//从终端获取员工信息
	char rbuf[128]="";
	fgets(rbuf,sizeof(rbuf),stdin);
	rbuf[strlen(rbuf)-1]=0;

	char sql[128]="insert into worker values";
	strcat(sql,rbuf);
	//存放执行sql语句后的错误信息
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		printf("exec error:%s\n",errmsg);
		sqlite3_free(errmsg);      //防止内存泄露
		errmsg=NULL;
		return -1;
	}
	
	return 0;
}


//定义删除员工信息函数
int del_worker(sqlite3 *ppDb)
{
	//准备sql语句
	int numb;
	printf("请输入要删除的员工工号:");
	scanf("%d",&numb);
	
	char sql[128]="";
	sprintf(sql,"delete from worker where numb=%d;",numb);
	//存放执行sql语句后的错误信息
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		printf("exec error:%s\n",errmsg);
		sqlite3_free(errmsg);      //防止内存泄露
		errmsg=NULL;
		return -1;
	}
	
	return 0;
}


//定义修改员工信息函数
int modify_worker(sqlite3 *ppDb)
{
	//准备sql语句
	int numb;
	double salary;
	printf("请输入要修改的员工工号:");
	scanf("%d",&numb);
	getchar();

	printf("请输入要修改的工资:");
	scanf("%lf",&salary);
	getchar();
	
	char sql[128]="";
	sprintf(sql,"update worker set salary=%lf where numb=%d;",salary,numb);
	//存放执行sql语句后的错误信息
	char *errmsg=NULL;
	if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg) != SQLITE_OK)
	{
		printf("exec error:%s\n",errmsg);
		sqlite3_free(errmsg);      //防止内存泄露
		errmsg=NULL;
		return -1;
	}
	
	return 0;
}

/**********************************主程序***************************************/
int main(int argc, const char *argv[])
{
	//定义数据库句柄
	sqlite3 *ppDb=NULL;
	//打开数据库,不存在则创建
	if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK){
		printf("sqlite3_open error,errcode=%d,errmsg=%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));
		return -1;
	}
	printf("sqlite3_open success\n");

	//创建数据表
	//准备sql语句
	char sql[128]="create table if not exists worker(numb int,name char,salary double)";

	//存放执行sql语句后的错误信息
	char *errmsg=NULL;
	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;     //菜单选项

	while(1)
	{
		system("clear");     //清屏

		printf("\t\t*********员工管理系统*********\n");
		printf("\t\t*********1.添加员工信息*********\n");
		printf("\t\t*********2.删除员工信息*********\n");
		printf("\t\t*********3.修改员工信息*********\n");
		printf("\t\t*********0.退出管理系统*********\n");
		printf("请输入选项>>>");
		scanf("%d",&menu);
		getchar();

		switch(menu)
		{
			case 1:
				{
					//添加员工信息
					Add_worker(ppDb);
				}
				break;
			case 2:
				{
					//删除员工信息
					del_worker(ppDb);
				}
				break;
			case 3:
				{
					//修改员工信息
					modify_worker(ppDb);
				}
				break;
			case 0:
				//退出管理系统
				goto END;
				break;
			default:printf("输入的选项有误,请重新输入\n");break;
		}
		printf("按任意键清屏\n");
		while(getchar()!='\n');
	}
END:

	//关闭数据库
	sqlite3_close(ppDb);

	return 0;
}

效果图:

作业2:思维导图

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/436446.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

阿里云2核2G服务器多少钱?99元一年,轻量云是61元一年

阿里云2核2G服务器多少钱&#xff1f;99元一年&#xff0c;轻量云服务器是61元一年。2核2G服务器性能如何&#xff1f;性能很不错&#xff0c;不限制CPU性能&#xff0c;99元2核2G服务器是ECS经济型e实例&#xff0c;61元2核2G服务器是轻量应用服务器&#xff0c;都是3M公网带宽…

Facial Micro-Expressions:An Overview 阅读笔记

Proceedings of the IEEE上一篇微表情相关的综述&#xff0c;写的很详细。从心理学与计算机两个领域阐述了微表情生成的原因与相关算法&#xff0c;值得仔细研读。 摘要&#xff1a; Four main tasks in ME analysis arespecifically discussed,including ME spotting,ME recog…

【MySQL】数据库设计

目录 数据库设计基本任务 软件项目开发周期中数据库设计数据库设计的基本步骤解释需求分析需求分析的三个步骤&#xff1a;1.需求调查:2.分析数据字典内容定义数据的方法案例 3. 评审 概念结构设计概念模型概念结构设计E-R图概念模型组成元素&#xff1a;关系解释案例分析 逻辑…

获得店铺的所有商品API接口

使用淘宝淘口令接口的步骤通常包括&#xff1a; 注册成为淘宝开放平台的开发者&#xff1a;在淘宝开放平台网站上注册账号并完成认证。 创建应用以获取API密钥&#xff1a;在您的开发者控制台中创建一个应用&#xff0c;并获取用于API调用的密钥&#xff0c;如Client ID和Clie…

【QT】鼠标事件<QMouseEvent>

事件&#xff08;鼠标事件&#xff09; 功能单一的事件&#xff0c;鼠标进来是一个事件&#xff0c;鼠标出去是另外一个事件。 QT提供了很多的事件函数&#xff0c;我们通过重写这些事件函数就可以实现我们想要的效果。 事件函数都是虚函数 写一个子类&#xff0c;继承QLab…

Python 文件基础科普与文件打开技术详解【第117篇—文件打开技术】

Python 文件基础科普与文件打开技术详解 在Python编程中&#xff0c;文件操作是一项基础而重要的任务。无论是读取数据、写入文件还是进行其他文件处理操作&#xff0c;都需要对文件基础知识有一定的了解。在本文中&#xff0c;我们将首先介绍Python文件的基础概念&#xff0c…

Unity性能优化篇(九) 模型优化之LOD技术概述以及操作方法

LOD模型优化技术概述: 1.LOD技术可以根据摄像头远近来显示不同精度的模型(例如吃鸡游戏 随着跳伞高度 来显示下面树木以及建筑的模型精度) LOD模型优化技术操作方法: 可使用Unity自带的LOD Group组件&#xff0c;并根据项目的情况来调整该组件的属性。Untiy资源商店也有一些其…

机器学习——线性回归

机器学习——线性回归 文章目录 机器学习——线性回归一、什么是线性回归二、一元线性回归方程三、损失函数四、代码实现五、运用说明 一、什么是线性回归 线性回归是一种用来建立自变量和因变量之间线性关系的统计分析方法&#xff0c;也是机器学习中最常见、最容易理解的一个…

Flyway 9.22.3 + springboot3 + MySQL8.0+,简单使用

文章目录 flyway的依赖配置ieda 启动&#xff01;&#xff01;&#xff01; 关于这篇文章主要是自己在使用flyway时遇到的一些问题以及最终的解决方法 当然包括所有的配置&#xff0c;主要目的是记录一下防止下次使用的时候忘记 flyway的依赖 这里 springboot 3 具体版本不再描…

力扣经典 4. 寻找两个正序数组的中位数(多种语言解)

给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&#xff09;数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。算法的时间复杂度应该为 O(log (mn)) 。 目录 题目描述 知识点 解题思路 完整代码 Python Java C 题目描述 给定两个大小分别为 m 和…

Kakarot:当今以太坊的未来

1. 引言 前序博客&#xff1a; Kakarot&#xff1a;部署在Starknet上的ZK-EVM type 3 随着 Kakarot zkEVM 即将发布测试网&#xff0c;想重申下 Kakarot zkEVM 的愿景为&#xff1a; 为什么在rollup空间中还需要另一个 zkEVM&#xff1f; 开源代码见&#xff1a; https:/…

Python与FPGA——局部二值化

文章目录 前言一、局部二值化二、Python局部二值化三、FPGA局部二值化总结 前言 局部二值化较全局二值化难&#xff0c;我们将在此实现Python与FPGA的局部二值化处理。 一、局部二值化 局部二值化就是使用一个窗口&#xff0c;在图像上进行扫描&#xff0c;每扫出9个像素求平均…

Android耗电分析之Battery Historian工具使用

Battery-Historian是谷歌推出的一款专门分析Bugreport的工具&#xff0c;是谷歌在2015年I/O大会上推出的一款检测运行在android5.0(Lollipop)及以后版本的设备上电池的相关信息和事件的工具&#xff0c;是一款对于分析手机状态&#xff0c;历史运行情况很好的可视化分析工具。 …

基于单片机的电子秤设计

目 录 摘 要 I Abstract II 引 言 1 1 系统总体设计方案 4 1.1 设计目标与要求 5 1.2 方案论证与选择 6 2 硬件电路设计 7 2.1 单片机型号选择 7 2.2 显示模块电路设计 8 2.3 传感器模块电路设计 9 2.4 按键模块电路设计 11 2.5 报警模块电路设计 12 2.6 模数转换电路设计 12 …

Java | 一维数组的声明与使用

一维数组的声明 Java中声明数组的方法&#xff1a; <变量类型>[] <变量名>;示例&#xff1a; int[] a;上述代码中a是一个数组&#xff0c;可以保存int类型的值。 注意方括号在变量类型与名称之间。 声明数组后&#xff0c;必须为数组分配内存。内存将定义数组可…

C switch 语句

一个 switch 语句允许测试一个变量等于多个值时的情况。每个值称为一个 case&#xff0c;且被测试的变量会对每个 switch case 进行检查。 语法 C 语言中 switch 语句的语法&#xff1a; switch(expression){case constant-expression :statement(s);break; /* 可选的 */ca…

【CSP试题回顾】201703-1-分蛋糕

CSP-201703-1-分蛋糕 解题代码 #include <iostream> using namespace std;int n, k, sumCake, cake, friendNum;int main() {cin >> n >> k;for (int i 0; i < n; i){cin >> cake;sumCake cake;if (sumCake > k || i n - 1) {friendNum;sum…

【C++庖丁解牛】模版初阶

&#x1f4d9; 作者简介 &#xff1a;RO-BERRY &#x1f4d7; 学习方向&#xff1a;致力于C、C、数据结构、TCP/IP、数据库等等一系列知识 &#x1f4d2; 日后方向 : 偏向于CPP开发以及大数据方向&#xff0c;欢迎各位关注&#xff0c;谢谢各位的支持 目录 1. 泛型编程2. 函数模…

BurpSuite2024.2.1

1.更新介绍 此版本引入了特定的API 扫描功能&#xff0c;并将 Bambdas 合并到 Logger 捕获过滤器中。我们还改进了 DOM Invader 和 Burp Suite 导航记录器的功能&#xff0c;并进行了许多其他改进和错误修复。 API扫描 我们引入了特定的 API 扫描功能。您现在可以上传 OpenAP…

DR模式下LVS负载均衡聚集部署实验

1、实验准备 DR 服务器&#xff1a;192.168.80.9Web 服务器1&#xff1a;192.168.80.11 Web 服务器2&#xff1a;192.168.80.12 nfs 服务器&#xff1a; 192.168.80.10 客户端&#xff1a;192.168.80.100 vip&#xff1a;192.168.80.188 2、配置负载调度器&#xff08;ens33&am…