网络编程day7

学生管理系统系统

#include <myhead.h>
int do_add(sqlite3 *ppDb)
{int add_numb=0;char add_name[20]="";double add_score=0;printf("请输入学号:");scanf("%d", &add_numb);printf("请输入姓名:");scanf("%s", add_name);printf("请输入成绩:");scanf("%lf", &add_score);getchar();char sql[128]="";sprintf(sql,"insert into stu values(%d,\"%s\",%lf);",add_numb,add_name,add_score);char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("插入成功\n");return 0;
}
int do_delete(sqlite3 *ppDb)
{char add_name[20]="";printf("请输入想删除的学生的名字:");scanf("%s",add_name);getchar();char sql[128]="";sprintf(sql,"delete from stu where name=\"%s\";",add_name);char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("删除成功\n");return 0;
}
int  do_update(sqlite3 *ppDb)
{char add_name[20]="";printf("请输入想修改学生的名字:");scanf("%s",add_name);printf("*****选择要修改的信息*****\n");printf("**********1.numb**********\n");printf("**********2.score*********\n");printf("**********3.name**********\n");int inf;printf("请选择要修改的信息:");scanf("%d",&inf);char num[20]="";printf("请输入想修改的数值:");scanf("%s",num);getchar();char sql[128]="";switch(inf){case 1:{sprintf(sql,"update stu set numb=\"%s\" where name=\"%s\";",num,add_name);char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("修改成功\n");}break;case 2:{sprintf(sql,"update stu set score=\"%s\" where name=\"%s\";",num,add_name);char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("修改成功\n");}break;case 3:{sprintf(sql,"update stu set name=\"%s\" where name=\"%s\";",num,add_name);char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("修改成功\n");}break;default:{printf("输入错误,请重试\n");}break;}return 0;
}
int do_search(sqlite3 *ppDb)
{char sql[128] = "select * from stu;";char *errmsg = NULL;char **retPtr = NULL;          int rows = 0;                  int cols = 0;              if(sqlite3_get_table(ppDb, sql, &retPtr, &rows, &cols, &errmsg) != SQLITE_OK){printf("get table error:%s\n", errmsg);sqlite3_free(errmsg);return -1;}for(int i=0; i<rows+1; i++)            {for(int j=0; j<cols; j++)           {printf("%s\t", *(retPtr + (i*cols)+j));     }printf("\n");}sqlite3_free_table(retPtr);return 0;
}
int main(int argc, const char *argv[])
{sqlite3 *ppDb=NULL;if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK){fprintf(stderr,"sqlite3_open error:errmsg=%s,errcode=%d\n",sqlite3_errmsg(ppDb),sqlite3_errcode(ppDb));return -1;}printf("sqlite3_open success\n");char sql[128]="create table if not exists stu(numb int,name char,score double);";char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("exec error:%s\n",errmsg);sqlite3_free(errmsg);return -1;}printf("create table stu success\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============4、查找学生信息=============\n");printf("\t\t============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("请输入任意键,按回车清屏\n");while(getchar() != '\n');}
END:sqlite3_close(ppDb);	return 0;
}   

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

你要的个性化生信分析服务今天正式开启啦!定制你的专属解决方案!全程1v1答疑!

之前在 干货满满 | 给生信小白的入门小建议 | 掏心掏肺版 中有提到&#xff0c;如果小伙伴们真的想学好生信&#xff0c;那编程能力是必须要有的&#xff01;但是可能有些小伙伴们并没有那么多的时间从头开始学习编程&#xff0c;又或是希望有人指导或者协助完成生信分析工作&a…

牛客周赛22-C-小红的数组构造

好啊,很好啊. 关键点: 1.注意上下界的判断,x要 > 1开头的等差d 1的序列 < k - n 1开头的等差d 1的序列 这里有个细节 原来应该是 x < n * (2 * k - n 1) / 2 但k,x的范围是1e14,这样就爆long long,所以得是x * 2 / n < 2 * k - n 1 2.直接看代码的实现…

如何将来自不同物联网设备的数据集成到一个中央数据存储中

将来自不同物联网设备的数据集成到一个中央数据存储中&#xff0c;通常涉及以下几个步骤&#xff1a; 1. 数据采集 首先&#xff0c;需要从各个物联网设备中采集数据。这通常通过设备提供的API&#xff08;应用程序编程接口&#xff09;来完成。API允许你访问和检索设备生成的…

PyTorch学习笔记目录

PyTorch学习笔记 01.基础函数篇 PyTorch学习笔记之基础函数篇&#xff08;一&#xff09;TensorPyTorch学习笔记之基础函数篇&#xff08;二&#xff09;算子01PyTorch学习笔记之基础函数篇&#xff08;三&#xff09;算子02PyTorch学习笔记之基础函数篇&#xff08;四&#…

【华为OD机试】用连续自然数之和来表达整数【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述: 一个整数可以由连续的自然数之和来表示。 给定一个整数,计算该整数有几种连续自然数之和的表达式,且打印出每种表达式 输入描述 一个目标整数T (1 <=T<= 1000) 输出描述 该整数的…

vue-admin-template极简的 vue admin 管理后台的动态路由实现方法

项目源码地址&#xff1a;GitHub - PanJiaChen/vue-admin-template: a vue2.0 minimal admin template 注意&#xff1a;项目中的路由均写在 src\router\index.js 中&#xff0c;其中默认包含 constantRoutes 数组&#xff0c;这是固定路由&#xff0c;无论用户是什么角色&…

【ML】机器学习任务攻略 4

【ML】机器学习任务攻略 4 1. 机器学习任务攻略1.1 数据预处理1.2 模型选择与调整1.3. 交叉验证与评估1.4. 正则化与避免过拟合1.5. 优化算法与学习率调整1.6. 特征选择与降维1.7. 处理类别不平衡1.8. 软件和硬件优化1.9. 持续迭代与反馈2.模型训练质量的判断标准2.1 性能指标2…

读懂2023微博财报,“大V”们选择留下

2024年2月27日&#xff0c;董宇辉清空了自己158万粉丝的微博账号&#xff0c;无独有偶&#xff0c;此前微博粉丝数超300万的知名刑法教授罗翔老师&#xff0c;也在清空了账号后退出微博&#xff0c;引发全网舆论。如今前者名下的“与辉同行”和“董宇辉”抖音账号分别坐拥1711.…

spring boot3登录开发-2(2短信验证码接口实现)

⛰️个人主页: 蒾酒 &#x1f525;系列专栏&#xff1a;《spring boot实战》 &#x1f30a;山高路远&#xff0c;行路漫漫&#xff0c;终有归途 目录 写在前面 上文衔接 内容简介 短信验证码接口实现 1.依赖导入 2.接口分析 3.实现思路 3.功能实现 创建发送短信…

23.合并两个有序链表

将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1&#xff1a; 输入&#xff1a;l1 [1,2,4], l2 [1,3,4] 输出&#xff1a;[1,1,2,3,4,4]示例 2&#xff1a; 输入&#xff1a;l1 [], l2 [] 输出&#xff1a;[]示…

十四届蓝桥杯 BC A.日期统计

思路&#xff1a; 循环2023的每一天&#xff0c;一共八位数&#xff1b;年份是确定的&#xff0c;只需要循环月份和天数&#xff0c;注意这里已知2023的2月份天数为28天。用b数组 int b[8]{2,0,2,3,month/10,month%10,d/10,d%10};//枚举2023的每一天来和已知数据的八位数字比较…

Django日志(二)

一、Handler Handler决定如何处理logger中的每条消息。它表示一个特定的日志行为,例如 将消息写入屏幕、文件或网络Socket handler对应的是个字典,每一个键都是一个handler的名字,每个值又一个字典,描述了如何配置对应的handler实例 2.1、内置Handler class(必需):处理…

计算机408网课评测+资料分享

408当然有比较好的网课推荐&#xff0c;比如王道的视频课 现在大部分人备战408基本都用王道的讲义&#xff0c;然后再搭配王道408的课程来听&#xff0c;可以学的很好。 其中408视频课中&#xff0c;我认为讲的比较好的是数据结构&#xff0c;和操作系统&#xff0c;计算机组…

聚焦两会:数字化再加速,VR全景助力制造业转型

近年来&#xff0c;随着信息技术、人工智能、VR虚拟现实等新兴技术的不断涌现&#xff0c;数字化正日益成为推动当今经济发展的新驱动力。在不久前的两会上&#xff0c;数字化经济和创新技术再度成为热门话题&#xff1a; 国务院总理李强作政府工作报告&#xff1a; 要深入推…

CSS3DObject 分子公式demo 实现

CSS3DRenderer, CSS3DObject, CSS3DSprite API 使用方式详解 <!DOCTYPE html> <html><head><title>three.js css3d - molecules</title><meta charset"utf-8"><meta name"viewport" content"widthdevice-widt…

React 应该如何学习?

学习 React 是现代 Web 前端开发中的重要一步&#xff0c;因为它是一个流行且强大的 JavaScript 库&#xff0c;用于构建用户界面。React 的学习过程需要掌握一系列的概念、技术和最佳实践。 1. 基础知识 1.1 HTML、CSS 和 JavaScript React 本质上是一个 JavaScript 库&…

extract变量覆盖

一、靶场解题过程 题目描述&#xff1a;try your best to find the flag. 进入靶场后看到的是一张图片 查看网页源代码&#xff0c;发现一个source.txt的注释信息&#xff0c;可能路径上有这个文件&#xff0c;尝试访问一下 访问后出现一个新的页面 该页面有一些php的代…

电子科技大学链时代工作室招新题C语言部分---题号H

1. 题目 最有操作的一道题&#xff0c;有利于对贪心算法有个初步了解。 这道题的开篇向我们介绍了一个叫汉明距离的概念。 汉明距离指的就是两个相同长度的字符串的不同字符的个数。 例如&#xff0c;abc和acd&#xff0c;b与c不同&#xff0c;c与d不同&#xff0c;所以这两个…

多线程(JUC, ReentrantLock, 原子类, 线程池, 信号量 Semaphore, CountDownLatch)

JUC Java.util.concurrent 包, 存放了并发编程相关的组件, 目的是更好的支持高并发任务 (多线程只是实现并发编程的一种具体方式 …) ReentrantLock 可重入互斥锁, 和 synchronized 定位类似, 用来实现互斥效果, 保证线程安全. synchronized 对对象加锁, 保护临界资源Reentreat…

Head First Design Patterns -适配器模式与外观模式

适配器模式 什么是适配器模式 适配器模式&#xff0c;将一个类的接口转换成客户期望的另一个接口。适配器让原本接口不兼容的类可以合作。 类图 代码 利用Enumeration来适配Iterator&#xff0c;外部只需要调用这个适配器&#xff0c;即可以像调用Iterator那样&#xff0c;…