当前位置: 首页 > news >正文

8.20网络编程——sqlite3数据库

文章目录

  • 一、思维导图
  • 二、学生管理系统
    • 1、myhead.h
    • 2、代码
  • 三、牛客网刷题

一、思维导图

在这里插入图片描述

二、学生管理系统

1、myhead.h

#ifndef __MYHEAD_H__
#define __MYHEAD_H__#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>#define ERR_MSG(msg) do{perror(msg);printf("%d\n",__LINE__);return -1;}while(0)
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>
#include <pwd.h>
#include <grp.h>
#include <sys/wait.h>
#include <pthread.h>
#include <semaphore.h>
#include <signal.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <sys/msg.h>
#include <sqlite3.h>
#endif

2、代码

#include <myhead.h>
int do_add(sqlite3 *ppDb)
{int add_numb;char add_name[20];char add_sex[10];double add_scare;printf("输入学号:");scanf("%d",&add_numb);printf("输入姓名:");scanf("%s",add_name);printf("输入性别:");scanf("%s",add_sex);printf("输入成绩:");scanf("%lf",&add_scare);char sql[128]={};sprintf(sql,"insert into STUINFO values(%d,\"%s\",\"%s\",%lf);",add_numb,add_name,add_sex,add_scare);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%d\t%s\n",__LINE__,errmsg);sqlite3_free(errmsg);return -1;}printf("添加学生信息成功\n");return 0;
}
int do_delete(sqlite3 *ppDb)
{int delate_numb;printf("输入要删除的学号:");scanf("%d",&delate_numb);char sql[128]={};sprintf(sql,"delete from STUINFO where numb==%d",delate_numb);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%d\t%s\n",__LINE__,errmsg);sqlite3_free(errmsg);return -1;}printf("删除学生信息成功\n");return 0;}
int do_update(sqlite3 *ppDb)//修改学生信息
{int update_numb;char update_name[20];char update_sex[10];double update_scare;printf("输入要修改学号:");scanf("%d",&update_numb);printf("输入修改后的姓名:");scanf("%s",update_name);printf("输入修改后的性别:");scanf("%s",update_sex);printf("输入修改后的成绩:");scanf("%lf",&update_scare);char sql[128]={};sprintf(sql,"update STUINFO set name=\"%s\",sex=\"%s\",scare=%lf where numb=%d;",update_name,update_sex,update_scare,update_numb);char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%d\t%s\n",__LINE__,errmsg);sqlite3_free(errmsg);return -1;}printf("修改学生信息成功\n");return 0;
}
int call_back(void *arg,int clos,char **msgtxt,char **msgheader)
{if(*((int *)arg)==0){*((int *)arg)=1;for(int i=0;i<clos;i++){printf("%s\t",*(msgheader+i));}printf("\n");}for(int i=0;i<clos;i++){printf("%s\t",*(msgtxt+i));}printf("\n");return 0;
}
int do_search(sqlite3 *ppDb)
{char sql[128]="select * from STUINFO;";char *errmsg=NULL;int flag=0;if(sqlite3_exec(ppDb,sql,call_back,&flag,&errmsg)!=SQLITE_OK){printf("%d\t%s\n",__LINE__,errmsg);sqlite3_free(errmsg);return -1;}return 0;}
int main(int argc, const char *argv[])
{//创建库sqlite3 *ppDb=NULL;if(sqlite3_open("./db.db",&ppDb)!=SQLITE_OK){printf("sqlist3_open error\n");return -1;}//创建表格char *sql="create table if not exists STUINFO(numb int,name char,sex char,scare double);";char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("%d\t%s\n",__LINE__,errmsg);sqlite3_free(errmsg);return -1;}int nume=-1;while(1){system("clear");printf("*************学生管理系统***************\n");printf("***********1、添加学生信息**************\n");printf("***********2、删除学生信息**************\n");printf("***********3、修改学生信息**************\n");printf("***********4、查找学生信息**************\n");printf("***********0、退出管理系统**************\n");printf("输入选项:");scanf("%d",&nume);getchar();switch(nume){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:exit(EXIT_SUCCESS);}while(getchar()!='\n');}sqlite3_close(ppDb);return 0;
}

三、牛客网刷题

在这里插入图片描述

http://www.lryc.cn/news/627138.html

相关文章:

  • lua入门以及在Redis中的应用
  • 技术干货|使用Prometheus+Grafana监控redis实例详解
  • 自学嵌入式第二十三天:数据结构(3)-双链表
  • Java 性能优化实战(二):JVM 调优的 5 个核心维度
  • c#入门笔记(3)
  • Netty HashedWheelTimer设计原理:从时间轮算法到源码实现
  • 基于SpringBoot的蜗牛兼职网平台
  • RabbitMQ 基础
  • 使用安卓平板,通过USB数据线(而不是Wi-Fi)来控制电脑(版本1)
  • 豆秒数科集团:汽车消费金融市场的领跑者
  • 《P1967 [NOIP 2013 提高组] 货车运输》
  • 层在init中只为创建线性层,forward的对线性层中间加非线性运算。且分层定义是为了把原本一长个代码的初始化和运算放到一个组合中。
  • 常见开源协议详解:哪些行为被允许?哪些被限制?
  • [GraphRAG]完全自动化处理任何文档为向量知识图谱:AbutionGraph如何让知识自动“活”起来?
  • 我从零开始学习C语言(12)- 循环语句 PART1
  • word——如何给封面、目录、摘要、正文设置不同的页码
  • 非同步BUCK和同步BUCK
  • 8.20 打卡 DAY 47 注意力热图可视化
  • 创建Vue项目的不同方式及项目规范化配置
  • Preprocessing Model in MPC 2 - 背景、基础原语和Beaver三元组
  • Web网站的运行原理2
  • prometheus监控kubernetes集群并使用 grafana展示数据
  • Web 安全之延迟攻击(Delay Attack)详解
  • Windows 命令行:dir 命令
  • VG技术下,美术在资源制作时的规范
  • 读者写者问题
  • 深入理解C++ std::shared_ptr:现代C++内存管理的艺术与实践
  • Python文件操作与异常处理详解 :基础方法、注意事项及os模块常用功能
  • MySQL数据库安全配置核心指南
  • [激光原理与应用-316]:光学设计 - SolidWorks 、AutoCAD、Zemax三者的比较与协同