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

学生管理系统

#include <myhead.h>//定义添加学生信息函数
int do_add(sqlite3 *ppDb)
{int add_id;  //要添加的ID号char add_name[20]; //要添加的姓名double add_score; // 要添加的成绩printf("请输入要添加学生的学号:");scanf("%d", &add_id);printf("请输入要添加学生的姓名:");scanf("%s", add_name);printf("请输入要添加学生的成绩:");scanf("%lf", &add_score);getchar();//准备sql语句char sql[128] = "";sprintf(sql ,"insert into student values(%d, \"%s\",%.2lf);", \add_id,add_name,add_score);//执行sql语句char *errmsg = NULL;if(sqlite3_exec(ppDb, sql, NULL, NULL, &errmsg) != SQLITE_OK){printf("添加失败:%s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}if(sqlite3_changes(ppDb) != 0){printf("添加成功\n");}return 0;}//自定义查询函数的回调函数
int callback(void *arg, int cols, char **msgtext, char **msgheader)
{if( *(int *)arg ==0){//先输出表头for(int i=0; i<cols; i++){printf("%s\t", msgheader[i]);}printf("\n");*(int *)arg = 1;}//输出内容for(int i=0; i<cols; i++){printf("%s\t", msgtext[i]);}printf("\n");return 0;
}//定义查找函数
int search(sqlite3 *ppDb)
{//1、准备sql语句char *sql = "select * from student;";//char sql[128] = "select * from student;";//2、执行sql语句char *errmsg = NULL;int flag = 0;if(sqlite3_exec(ppDb, sql, callback, &flag, &errmsg) != SQLITE_OK){printf("查询失败:%s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}printf("查询成功\n");return 0;}//删除学生信息的函数
int delete(sqlite3 *ppDb)
{char name[20]="";printf("请输入你要删除人信息的姓名:");scanf("%s",name);//准备SQL语句char sql[128]="";sprintf(sql,"delete from student where name=\"%s\";",name);//执行sql语句char *errmsg=NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("添加失败:%s\n", errmsg);sqlite3_free(errmsg);errmsg = NULL;return -1;}printf("删除成功\n");return 0;
}//修改学生信息
int update(sqlite3 *ppDb)
{char name[20]="";printf("请输入要修改的学生姓名:");scanf("%s",name);getchar();int id;printf("请输入要修改的学生学号:");scanf("%d",&id);getchar();double score;printf("请输入要修改的学生成绩:");scanf("%lf",&score);getchar();//准备SQL语句char sql[128]="";sprintf(sql,"update student set id=%d,score=%.2lf where name=\"%s\";",id,score,name);//执行sql语句char *errmsg =NULL;if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("修改失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg=NULL;return -1;}//检查是否有记录被修改if(sqlite3_changes(ppDb)>0){printf("修改成功\n");}else{printf("未找到该学生信息,修改失败\n");return -1;}return 0;
}int main(int argc, const char *argv[])
{//1、打开数据库并返回一个操作该数据库的句柄sqlite3 *ppDb =NULL;if(sqlite3_open("./my.db",&ppDb)!=SQLITE_OK){printf("errcode=%d,errmsg=%s\n",sqlite3_errcode(ppDb),sqlite3_errmsg(ppDb));return -1;}//程序执行到此,后期可以使用ppDb指针,进行数据库操作//2.创建一个学生信息表//2.1准备sql语句char *sql ="create table if not exists student(id int primary key,name text not NULL,score double);";//定义指针接收执行sql语句后的错误信息char *errmsg =NULL;//执行sql语句if(sqlite3_exec(ppDb,sql,NULL,NULL,&errmsg)!=SQLITE_OK){printf("创建数据表失败:%s\n",errmsg);sqlite3_free(errmsg);errmsg =NULL;return -1;}printf("学生信息表创建成功\n");//循环做个菜单用于操作数据库int menu;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:delete(ppDb);break;case 3:update(ppDb);break;case 4:search(ppDb);break;case 0:exit(EXIT_SUCCESS);default:printf("输入有错,请重新输入\n");}}//关闭数据库sqlite3_close(ppDb);return 0;
}


文章转载自:

http://JQgZGE94.mdnnz.cn
http://1HZP3CmW.mdnnz.cn
http://fTp6yPNF.mdnnz.cn
http://9wRcJR0G.mdnnz.cn
http://mslwx2nm.mdnnz.cn
http://f80bU4FN.mdnnz.cn
http://hqLBRKdG.mdnnz.cn
http://jZG0SOxs.mdnnz.cn
http://D7HgmjwV.mdnnz.cn
http://pcEWdZQT.mdnnz.cn
http://zOvxDWM9.mdnnz.cn
http://5BjH4dzo.mdnnz.cn
http://OIzGdoOS.mdnnz.cn
http://G97zoYOW.mdnnz.cn
http://REUySQ5Q.mdnnz.cn
http://b2CL5ol0.mdnnz.cn
http://R8a9Xic0.mdnnz.cn
http://fGx0Bmzm.mdnnz.cn
http://rqivqlm3.mdnnz.cn
http://0Z0bLsJo.mdnnz.cn
http://8Nqy01k3.mdnnz.cn
http://JZ9JsQn9.mdnnz.cn
http://3lQYhfo8.mdnnz.cn
http://ySuPnIxr.mdnnz.cn
http://qm63Ukrn.mdnnz.cn
http://tDEx89Kv.mdnnz.cn
http://HKjpWQNN.mdnnz.cn
http://AEMMnBxq.mdnnz.cn
http://RNoIxB0d.mdnnz.cn
http://JkyJffdG.mdnnz.cn
http://www.dtcms.com/a/384293.html

相关文章:

  • 软件测试的艺术——黑白盒测试学习笔记
  • Electron开源库入门教程:跨平台桌面应用框架
  • 基于Springboot企业车辆管理系统
  • MySQL面试(1)
  • ArcGIS定向影像(1)——非传统影像轻量级解决方案
  • 【Linux指南】Makefile进阶:通用化语法与实战技巧
  • 移相全桥模拟控制电路
  • ES6 面试题及详细答案 80题 (62-80)-- 模块化与其他特性
  • D005 vue+django音乐推荐大数据|推荐算法|多权限| 可视化|完整源码
  • 工厂自动化正从 “人工堆叠” 向 “设备替代” 快速转变
  • 栈-227.基本计算器II-力扣(LeetCode)
  • python 自动化从入门到实战-做一个超实用的二维码生成工具(5)
  • 今天开始学习新内容“服务集群与自动化”--crond服务、--syslog服务以及DHCP协议
  • LeetCode 379 - 电话目录管理系统(Design Phone Directory)
  • 《Python 自动化实战:从零构建一个文件同步工具》
  • 风险规则引擎-RPA 作为自动化依赖业务决策流程的强大工具
  • Vue: 模板引用 (Template Refs)
  • Web2 vs Web3
  • 上海交大3D体素赋能具身导航!BeliefMapNav:基于3D体素信念图的零样本目标导航
  • SAP-ABAP:SAP ABAP中的JSON序列化利器:/UI2/CL_JSON=>SERIALIZE完全指南实例详解
  • stm32 can错误处理问题
  • python 自动化从入门到实战-开发一个随机点名系统(6)
  • 如何用 GitHub Actions 为 FastAPI 项目打造自动化测试流水线?
  • godot+visual studio配置c#环境
  • 文件查找失败:‘module‘ at node_modules\sass\sass.node.js:7
  • (一)Vue.js 框架简介
  • Vue 中在 Vue 项目中引入 Cesium 并加载本地离线地图
  • Node.js ≥ 18 安装教程
  • 第四阶段C#通讯开发-4:网络通讯_网络协议
  • 如何实现测试环境隔离临时数据库(pytest+SQLite)