首页 > 其他分享 >联系人管理系统(简易版)

联系人管理系统(简易版)

时间:2024-06-12 19:01:16浏览次数:11  
标签:zErrMsg 管理系统 db rc 联系人 简易版 printf sqlite3

1、项目介绍

        本项目以sqlite3为基本框架完成一个简易的手机联系人管理系统,用户可以根据自己需要进行添加联系人、删除联系人、更新联系人、查找联系人以及退出等。

2、本项目涉及到的sqlite3 API

①sqlite3_open() 函数用于打开一个 SQLite 数据库文件的函数,这个函数使用指定的数据库文件名打开一个新的数据库连接,并且把连接句柄返回给调用者如果连接成功,将会返回SQLITE_OK编码(0),否则将会返回其他错误代码

②sqlite3_close()函数用于关闭指定数据库连接的函数,成功关闭返回 SQLITE_OK 编码(0),否则返回其他错误代码

③sqlite3_exec()` 函数用于在 SQLite 数据库连接上执行一条或多条 SQL 语句,并调用一个回调函数处理执行结果。

3、运行代码

#include <stdio.h>
#include <sqlite3.h>

#define BASENAME "contacts.db"
#define STRLEN 1024

static int callback(void *NotUsed,int argc,char **argv,char **azColName){
    int i;
    printf("查询结果\n");
    for(i=0; i<argc; i++){
        printf("%s:%s\n",azColName[i],argv[i]?argv[i]:"NULL");
    }
    printf("\n");
    return 0;
}

int main(int argc,const char *argv[]){
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc,opt,id;
    char * sql_query,name[STRLEN],phone[STRLEN],email[STRLEN];
    //打开数据库
    rc = sqlite3_open(BASENAME,&db);
    if(rc != SQLITE_OK){
        fprintf(stderr,"Database can't open:%s\n",sqlite3_errmsg(db));
        sqlite3_close(db);
        return 1;
    }else{
        printf("This Database is successfull open\n");
    }

    //创建表的SQL语句
    char *sql = "CREATE TABLE IF NOT EXISTS contact("
        "id integer primary key autoincrement,"
        "name text not null,"
        "phone text,"
        "email text"
        ");";
    //执行SQL语句
    rc = sqlite3_exec(db,sql,0,0,&zErrMsg);
    if(rc != SQLITE_OK){
        fprintf(stderr,"SQL ERROR:%s\n",zErrMsg);
        sqlite3_free(zErrMsg);
    }else{
        printf("Table created sucessfull\n");
    }
    
    while(1){
        //提示语句
        printf("请输入你想做的操作序号\n");
        printf("1-->添加联系人\n");
        printf("2-->查找联系人\n");
        printf("3-->更新联系人\n");
        printf("4-->删除联系人\n");
        printf("5-->退出\n");
        //获取用户输入的操作序号
        while(!scanf("%d",&opt)) getchar();
        switch(opt){
            case 1:
                //添加联系人
                printf("请输入姓名:\n");
                scanf("%s",name);
                getchar();
                printf("请输入联系电话:\n");
                scanf("%s",phone);
                getchar();
                printf("请输入电子邮件:\n");
                scanf("%s",email);
                getchar();
                printf("您输入的姓名为:%s,联系电话为:%s,电子邮件为:%s\n",name,phone,email);
                printf("请输入Y确认\n");
                if(getchar() != 'Y'){
                    while(getchar() != '\n');
                    printf("添加联系人失败,已取消\n");
                    continue;
                }
                sql_query = sqlite3_mprintf("INSERT INTO contact"
                            "(name,phone,email) VALUES('%s','%s','%s')",
                            name,phone,email);
                rc = sqlite3_exec(db,sql_query,NULL,NULL,&zErrMsg);
                if(rc != SQLITE_OK){
                    printf("添加联系人失败[%s]\n",zErrMsg);
                    sqlite3_free(zErrMsg);
                }else{
                    printf("添加联系人成功!\n");
                }
                sqlite3_free(sql_query);
                break;
            case 2:
                printf("请输入您要查找的姓名:\n");
                scanf("%s",name);
                getchar();

                sql_query = sqlite3_mprintf("SELECT *FROM contact WHERE name LIKE '%s'",name);
                rc = sqlite3_exec(db,sql_query,callback,NULL,&zErrMsg);
                if(rc != SQLITE_OK){
                    printf("查询联系人失败:%s\n",zErrMsg);
                    sqlite3_free(zErrMsg);
                }
                break;
            case 3:
                printf("请输入要更新的联系人ID:\n");
                while(!scanf("%d",&id))  getchar();
                printf("请输入新的姓名:\n");
                scanf("%s",name);
                getchar();
                printf("请输新的入联系电话:\n");
                scanf("%s",phone);
                getchar();
                printf("请输入新的电子邮件:\n");
                scanf("%s",email);
                getchar();

                sql_query = sqlite3_mprintf("UPDATE contact SET name ='%s',phone ='%s',email = '%s'WHERE id = %d",name,phone,email,id);
                rc = sqlite3_exec(db,sql_query,NULL,NULL,&zErrMsg);
                if(rc != SQLITE_OK){
                    printf("更新联系人失败:%s\n",zErrMsg);
                    sqlite3_free(zErrMsg);
                }else{
                    printf("更新成功\n");
                }
                break;
            case 4:
                printf("请输入要删除人的ID:\n");
                while(!scanf("%d",&opt)) getchar();

                sql_query = sqlite3_mprintf("DELETE FROM contact WHERE id = %d",id);
                rc = sqlite3_exec(db,sql_query,NULL,NULL,&zErrMsg);
                if(rc != SQLITE_OK){
                    printf("删除联系人失败:%s\n",zErrMsg);
                    sqlite3_free(zErrMsg);
                }else{
                    printf("删除成功\n");
                }
                break;
            case 5:
                sqlite3_close(db);
                return 1;
                break;
            default:
                printf("您输入的是无效序号,请重新输入!\n");
                break;
        }
    }
    //关闭数据库
    sqlite3_close(db);
    return 0;
}
 

标签:zErrMsg,管理系统,db,rc,联系人,简易版,printf,sqlite3
From: https://blog.csdn.net/qq_54967229/article/details/139634248

相关文章

  • DevOpsWaterOS-水务物联网设备运维管理系统功能数据库数据库脚本
    目前运维系统数据库基础功能模块的搭建,个别字段想起来在添加,下面是完整的脚本,只有表没有表与表之间的关系,除通讯协议,工单,产品技改,方案优化,质量分析,工作信息获取,工作质量分析由本系统完成登记,其他客户信息,设备信息,设备运行状况通过API获取第三方数据.同时输出人......
  • jQuery生成微信二维码名片扫码添加联系人代码
    jQuery生成微信二维码名片扫码添加联系人代码,可以设置联系人姓名,公司,职务,地址,手机,邮箱,网址,备注信息生成二维码。 js代码 <scriptsrc="js/jquery.min.js"></script><scriptsrc="js/qrcode.js"></script><script>varname,company,title,address,mobile,e......
  • C#(asp.net) 非物质文化遗产建档管理系统设-计算机毕业设计源码91695
    摘 要信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。针对非物质文化遗产建档管理系统等问题,对非物质文化遗产建档管理系统进行研究分析,然后开发设计出......
  • 抄表管理系统是什么?
    1.前言抄表管理系统是当代公共事业管理方法不可或缺的一部分,它在很大程度上提高了数据收集到的效率和精确性。这种系统主要运用于电力工程、供水公司、天然气等公共服务行业,通过自动化的形式进行远程控制抄表,减少了人工成本,改善了服务规范。2.抄表管理系统的功能特点2.1即时......
  • SSM-小区物业管理系统-48954(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP、爬虫、
    基于SSM小区物业管理系统摘要随着计算机科学技术日渐成熟,人们已经深刻认识到了计算机功能的强大,计算机已经进入到了人类社会发展的各个领域,并且发挥着十分重要的作用。每个社区的物业管理是一项系统而复杂的工作,它需要一个团队互相配合、分工协作。在该领域,传统的手工存取......
  • 【S086】基于Springboot图书馆管理系统项目源码 java图书借阅管理 含文档
    运行截图:登录后台主页图书列表图书上架借阅图书归还图书用户列表添加用户公告列表发布公告个人信息详情个人信息编辑项目组成:项目源码:项目文档:源码获取⬇⬇⬇......
  • 50.基于SSM的停车场管理系统的设计与实现|基于SSM+ Mysql+Java设计与实现(可运行源码+
    内容概要:全套项目源码+详尽文档,一站式解决您的学习与项目需求。适用人群:计算机、通信、人工智能、自动化等专业的学生、老师及从业者。使用场景及目标:无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。项目代码经过调试测试,确保直接运行,节省您的时......
  • 基于tkinter的学生信息管理系统设计与实现
    一个基于python和tkinter的GUI学生信息管理系统,包括管理员登录以及对学生信息的增删改查,支持上传学生图片以及展示图片,数据库使用的是mysql项目结构背景图片在之前的大佬的代码上做了大幅修改,但是找不到链接了管理员登录代码fromtkinterimport*fromtkinterimpo......
  • 计算机毕业设计项目推荐,29042 基于Web的医院护理管理系统的设计(开题答辩+程序定制+全
    摘 要随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,医院当然也不例外。医院预约管理系统是以实际运用为开发背景,运用软件工程原理和开发方法,采用Java技术构建的一个管理系统。整个开发过程首先对软件系统进......
  • 高校教师信息管理系统(数据库课设)
     1.课设要求描述 ●实现部门、职称、职务的基本信息的管理;●实现教师信息的管理;●实现教师家庭关系和教育经历的管理;●实现教师的奖惩管理;●创建规则使得教师的E-Mail必须符合电子邮箱的格式;●创建触发器,实现修改教师所在部门时自动修改相应部门的教师人数:●......