数据库编程简单使用sqlite3——学生信息管理系统(乞丐版)

这个小程序之所以称之为乞丐版,主要是没有制作图形界面,只能通过终端进行交互,但是功能应该没问题(但愿吧),第一行注释的是Linux终端需要输入的编译指令,将sqlite3.h      sqlite3.c文件放入工程文件夹中,编译时需要链接相应库

main.c

// gcc main.c sqlite3.c -lpthread -ldl
#include <stdio.h>
#include "sqlite3.h"
#include <string.h>
#include <stdlib.h>

int ret;
sqlite3 *db;
char *errmsg;
// 输出
int callback(void *para, int n_column, char **column_value, char **column_name)
{

    int i;
    for (i = 0; i < n_column; i++)
    {

        printf("%s  ", column_value[i]);
    }
    printf("\n");
    return 0;
}

// 主界面
void main_window()
{
    printf("\t_____________________________________________\n");
    printf("\t|                 信息管理系统               |\n");
    printf("\t|                                            |\n");
    printf("\t|                  教师端按1                 |\n");
    printf("\t|                                            |\n");
    printf("\t|                  学生端按2                 |\n");
    printf("\t|                                            |\n");
    printf("\t|                   退出按0                  |\n");
    printf("\t|__________________________________ _________|\n");
}

// 教师界面
void printf_teacher()
{
    printf("\t_____________________________________________\n");
    printf("\t|               信息管理系统                 |\n");
    printf("\t|              查看所有信息按1               |\n");
    printf("\t|              查看个人信息按2               |\n");
    printf("\t|              修改个人信息按3               |\n");
    printf("\t|              删除个人信息按4               |\n");
    printf("\t|              添加个人信息按5               |\n");
    printf("\t|               返回上一级按6                |\n");
    printf("\t|                退出系统按0                 |\n");
    printf("\t|____________________________________________|\n");
}

// 学生界面
void printf_student()
{
    printf("\t_____________________________________________\n");
    printf("\t|               信息管理系统                 |\n");
    printf("\t|              查看所有信息按1               |\n");
    printf("\t|              查看个人信息按2               |\n");
    printf("\t|               返回上一级按3                |\n");
    printf("\t|                退出系统按0                 |\n");
    printf("\t|____________________________________________|\n");
}

// 创建数据库并打开,创建数据表
void create_sqlite3()
{
    int ret = sqlite3_open("stu.db", &db);
    if (ret != SQLITE_OK)
    {
        printf("成功打开库!\n");
        // perror("open");
    }
    sqlite3_exec(db, "create table stu(id int primary key,name text,age int,sex text,score int)", NULL, NULL, &errmsg);
    if (errmsg != NULL)
    {
        printf("成功打开数据表\n");
        // printf("%s\n", errmsg);
    }
}

// 显示所有表
void show_all_table()
{

    sqlite3_exec(db, "select * from stu;", callback, NULL, &errmsg);

    if (errmsg != NULL)
        printf("%s\n", errmsg);

    printf("******************************************************************\n");
    printf("\n");
    printf("\n");
}

// 查看个人数据表
void show_stu_table()
{
    printf("\t请输入想要查看的学生学号:\n");
    int id;
    scanf("%d", &id);

    char sql[256];
    sprintf(sql, "select * from stu where id=%d", id);

    ret = sqlite3_exec(db, sql, callback, NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("查询失败:%s\n", errmsg);
    printf("******************************************************************\n");
    printf("\n");
    printf("\n");
}

// 修改个人数据表
void update_stu_table()
{
    printf("\t请输入想要修改的学生学号:\n");
    int id;
    scanf("%d", &id);
    printf("\t请输入想要修改的学生姓名:\n");
    char name[20];
    scanf("%s", name);
    printf("\t请输入想要修改的学生年龄:\n");
    int age;
    scanf("%d", &age);
    printf("\t请输入想要修改的学生性别:\n");
    char sex[20];
    scanf("%s", sex);
    printf("\t请输入想要修改的学生成绩:\n");
    float score;
    scanf("%f", &score);
    char sql[256];
    sprintf(sql, "UPDATE stu SET name='%s', age=%d, sex='%s', score=%f WHERE id=%d", name, age, sex, score, id);

    ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("修改失败:%s\n", errmsg);
    else
        printf("修改成功!\n");
    printf("******************************************************************\n");
    printf("\n");
    printf("\n");
}

// 删除个人数据表
void delete_stu_table()
{
    printf("\t请输入想要删除的学生学号:\n");
    int id;
    scanf("%d", &id);
    char sql[256];
    sprintf(sql, "delete from stu where id=%d", id);

    ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("删除失败: %s\n", errmsg);
    else
        printf("删除成功!\n");
    printf("******************************************************************\n");
    printf("\n");
    printf("\n");
}

// 添加数据表
void add_stu_table()
{
    printf("\t请输入想要添加的学生学号:\n");
    int id;
    scanf("%d", &id);
    printf("\t请输入想要添加的学生姓名:\n");
    char name[20];
    scanf("%s", name);
    printf("\t请输入想要添加的学生年龄:\n");
    int age;
    scanf("%d", &age);
    printf("\t请输入想要添加的学生性别:\n");
    char sex[20];
    scanf("%s", sex);
    printf("\t请输入想要添加的学生成绩:\n");
    float score;
    scanf("%f", &score);
    char sql[256];
    sprintf(sql, "insert into stu values (%d, '%s', %d, '%s', %f)", id, name, age, sex, score);

    ret = sqlite3_exec(db, sql, NULL, NULL, &errmsg);
    if (ret != SQLITE_OK)
        printf("添加失败: %s\n", errmsg);
    else
        printf("添加成功!\n");
    printf("******************************************************************\n");
    printf("\n");
    printf("\n");
}

// 教师switch--case
void teacher_switch()
{
    int input;
    scanf("%d", &input);
    switch (input)
    {
    case 1:
        // 查看所有数据表
        show_all_table();
        break;
    case 2:
        // 查看个人数据表
        show_stu_table();
        break;
    case 3:
        // 修改个人数据表
        update_stu_table();
        break;
    case 4:
        // 删除个人数据表
        delete_stu_table();
        break;
    case 5:
        // 添加数据表
        add_stu_table();
        break;
    case 6:
        // 返回界面
        main_window();
        break;
    case 0:
        // 退出程序
        printf("\t**********  感谢您的使用  **********\n");
        sqlite3_close(db);
        exit(0);
        break;
    }
}

// 学生switch--case
void student_switch()
{
    int input;
    scanf("%d", &input);
    switch (input)
    {
    case 1:
        // 查看所有数据表
        show_all_table();
        break;
    case 2:
        // 查看个人数据表
        show_stu_table();
        break;
    case 3:
        // 返回界面
        main_window();
        break;
    case 0:
        // 退出程序
        printf("\t**********  感谢您的使用  **********\n");
        sqlite3_close(db);
        exit(0);
        break;
    }
}
int main()
{
    int input;
    create_sqlite3();
    // 主界面

    while (1)
    {
        main_window();
        // 输入选项
        printf("\t**********  请输入您的选项  **********\n");
        scanf("%d", &input);
        switch (input)
        {
        case 1:
            // 教师界面
            printf_teacher();
            // 教师switch--case
            teacher_switch();
            break;
        case 2:
            // 学生界面
            printf_student();
            // 学生switch--case
            student_switch();
            break;
        case 0:
            // 退出程序
            printf("\t**********  感谢您的使用  **********\n");
            sqlite3_close(db);
            exit(0);
            break;
        }
    }
    sqlite3_close(db);
    return 0;
}

相关推荐

  1. 简单学生信息管理系统

    2023-12-20 11:50:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-20 11:50:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-20 11:50:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-20 11:50:02       82 阅读
  4. Python语言-面向对象

    2023-12-20 11:50:02       91 阅读

热门阅读

  1. KSQL是什么

    2023-12-20 11:50:02       53 阅读
  2. 【MySQL】MySQL执行计划的type类型

    2023-12-20 11:50:02       41 阅读
  3. ug871 Lab4

    2023-12-20 11:50:02       70 阅读
  4. QT6.3学习技巧,快速入门

    2023-12-20 11:50:02       62 阅读
  5. 测试TensorFlow/PyTorch的GPU版本是否启用

    2023-12-20 11:50:02       74 阅读
  6. Jenkins在window下配置Android打包配置

    2023-12-20 11:50:02       58 阅读
  7. 云安装nginx

    2023-12-20 11:50:02       54 阅读
  8. uniapp request.js封装例子

    2023-12-20 11:50:02       51 阅读
  9. UI Grounding 学习笔记

    2023-12-20 11:50:02       59 阅读
  10. 6.如何做项目技术选型

    2023-12-20 11:50:02       56 阅读
  11. CentOS 8.2 安装 nginx-1.18.0

    2023-12-20 11:50:02       64 阅读