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