两个项目 通讯录(数据库版)和停车场

停车场:
代码:

/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd. 
File name:
Author:Jerey_Jobs    Version:0.1    Date: 
Description:
Funcion List: 
*****************************************************/

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

#define Max 1024

void welcome()
{
    printf("********************************************************************\n");
    printf("********************************************************************\n");
    printf("******************欢 迎 使 用 停 场 管 理 系 统 !*******************\n");
    printf("**********1.添加车主信息                  2.收取费用    ************\n");
    printf("**********3.查找车主信息                  4.删除车主信息************\n");
    printf("**********5.刷新列表信息                  6.退出程序    ************\n");
    printf("********请 根 据 功 能 列 表 选 择 您 所 需 要 的 功 能 ! **********\n");
    printf("********************************************************************\n");
    printf("********************************************************************\n");
}

void creat_table(sqlite3 * db)
{
    char *sql;
    int rec;
    char *errmsg;

    sql = "create table if not exists tcc (序号 integer primary key,车牌号 text,姓名                text,停车时间 txt,离开时间 text);";
    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("create error! %s\n",errmsg);
        exit(-1);
    }
}

void count_cw(sqlite3 * db,int n)
{

    int i;
    char sql[100];
    int rec;
    char *errmsg;
    
    for(i = 0; i < n; i++)
    {
        sprintf(sql,"insert into tcc (序号) values(%d);",i + 1);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("insert error! %s\n",errmsg);
            exit(-1);
        }
    }
}

void insert_table(sqlite3 *db)
{
    char sql[Max];
    char cp[15],name[10],tcs[15];
    int rec,i;
    char *errmsg;
    char ch = 'y';

    printf("请输入车牌号 姓名 停车时间和您所想要的车位:\n");
    scanf("%s%s%s%d",cp,name,tcs,&i);

    sprintf(sql,"update tcc set 车牌号 = '%s',姓名 = '%s',停车时间 = '%s'where 序号                 = %d;",cp,name,tcs,i);
    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("insert error! %s\n",errmsg);
        exit(-1);
    }
}

void display_table(sqlite3 *db)
{
    char *sql;
    char *errmsg;
    char **result;
    int n_row;
    int n_col;
    int rec;
    int i;

    sql = "select * from tcc;";

    rec = sqlite3_get_table(db,sql,&result,&n_row,&n_col,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("select error! %s\n",errmsg);
        exit(-1);
    }

    for(i = 0; i < (n_row + 1) * n_col; i++)
    {
        printf("%3s         ",result[i]);

        if((i + 1) % n_col == 0)
        {
            printf("\n");
        }
    }

    sqlite3_free_table(result);
}

void function1(sqlite3 *db)
{
    char ch = 'y';

    while(ch != 'n' && ch != 'N')
    {
        insert_table(db);

        printf("是否要继续增加?(y/n or Y/N):");
        scanf(" %c",&ch);
    }
}

void function2(sqlite3 *db)
{
    char sql[100];
    char *errmsg;
    int rec;
    char cph[100],lk[15],tc[15];
    char ch;
    int i = 0,t = 0,n = 0;
    int thnum = 0,tfnum = 0;
    int lhnum = 0,lfnum = 0;

    printf("是否要继续?(y/n or Y/N)");
    scanf(" %c",&ch);

    while(ch != 'n' && ch != 'N')
    {
        printf("请输入车牌号和离开时间:\n");
        scanf("%s%s",cph,lk);

        sprintf(sql,"update tcc set 离开时间 = '%s' where 车牌号 = '%s';",lk,cph);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("update error! %s\n",errmsg);
            exit(-1);
        }

        printf("请根据表格输入停车时间:");
        scanf(" %s",tc);
        while(tc[i] != ':')
        {
            thnum = thnum * 10 + (tc[i] - '0');
            i++;
        }

        while(tc[i] != '\0')
        {
            i++;
            tfnum = tfnum * 10 + (tc[i] - '0');
        }

        i = 0;
        while(lk[i] != ':')
        {
            lhnum = lhnum * 10 + (lk[i] - '0');
            i++;
        }

        while(lk[i] != '\0')
        {
            i++;
            lfnum = lfnum * 10 + (lk[i] - '0');
        }
        t = lhnum - thnum;
        n = lfnum - tfnum;

        if(t > 0)
        {

            if(n < 0)
            {
                t = t - 1;
            }
            else if(n > 0)
            {
                t = t + 1;
            }
            else
            {
                t = t;
            }
        }
        else
        {
            if(n < 0)
            {
                t = t - 1;
            }
            else if(n > 0)
            {
                t = t + 1;
            }
            else
            {
                t = t;
            }
        }

        
        printf("应收费用为:%d元\n",t * 10);
        
        t = 0;
        n = 0;
        lhnum = 0;
        lfnum = 0;
        thnum = 0;
        tfnum = 0;
        i = 0;

        printf("是否要继续?(y/n or Y/N)");
        scanf(" %c",&ch);

    }
}

void function3(sqlite3 *db)
{
   char sql[100];
   char *errmsg;
   char ch = 'y';
   int rec;
   char cp[20];
   char **result;
   int n_row;
   int n_col;
   int i;

   printf("请输入所要查找的车主的车牌号:");
   
   while(ch != 'n' && ch != 'N')
   {
       scanf("%s",cp);

       sprintf(sql,"select * from tcc where 车牌号 = '%s';",cp);

       rec = sqlite3_get_table(db,sql,&result,&n_row,&n_col,&errmsg);
       if(rec != SQLITE_OK)
       {
           printf("select error! %s\n",errmsg);
           exit(-1);
       }

       for(i = 0; i < (n_row + 1) * n_col; i++)
       {
           printf("%5s      ",result[i]);

           if((i + 1) % n_col == 0)
           {
               printf("\n");
           }
       }

       printf("是否要继续查询?(y/n or Y/N):");
       scanf(" %c",&ch);
   }

   sqlite3_free_table(result);
}

void function4(sqlite3 *db)
{
    char *sql;
    char *errmsg;
    int rec;

    sql = "update  tcc set 车牌号 = NULL,姓名 = NULL,停车时间 = NULL,离开时间 = NULL                where 离开时间 is not NULL;";

    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("delete error! %s\n",errmsg);
        exit(-1);
    }
}

void function5(sqlite3 *db)
{
    system("reset");
    welcome();
    display_table(db);
}

void function6(sqlite3 *db)
{
    sqlite3_close(db);

    exit(-1);
}

int main()
{
    sqlite3 *db;
    int rec;
    int n;

    rec = sqlite3_open("tingchechang.db",&db);
    if(rec != SQLITE_OK)
    {
        printf("open error! %s\n",sqlite3_errmsg(db));
        exit(-1);
    }
    creat_table(db);
    printf("请输入停车场有多少停车位:");
    scanf("%d",&n);
    count_cw(db,n);

    system("reset");
    welcome();
    int num;

    while(1)
    {
        system("reset");
        welcome();

        display_table(db);

        printf("请输入您要选择的功能:");
        scanf("%d",&num);

        switch(num)
        {
            case 1:
                function1(db);
                break;

            case 2:
                function2(db);
                break;

            case 3:
                function3(db);
                break;

            case 4:
                function4(db);
                break;

            case 5:
                function5(db);
                break;

            case 6:
                function6(db);
                break;

            default:
                break;
        }

    }

    return 0;
}

功能实现:
界面:在这里插入图片描述
功能1:在这里插入图片描述
功能2:在这里插入图片描述
功能3:在这里插入图片描述
功能4:在这里插入图片描述
功能6:在这里插入图片描述
通讯录(数据库版):

/*****************************************************
copyright (C), 2014-2015, Lighting Studio. Co.,     Ltd. 
File name:
Author:Jerey_Jobs    Version:0.1    Date: 
Description:
Funcion List: 
*****************************************************/

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

#define Max 1024

void welcome()
{
    printf("********************************************************************\n");
    printf("********************************************************************\n");
    printf("*********************          Welcome          ********************\n");
    printf("*********1.存入信息                             2.修改信息**********\n");
    printf("*********3.删除信息                             4.查询信息**********\n");
    printf("*********5.输出信息                             5.退出程序**********\n");
    printf("********************************************************************\n");
    printf("********************************************************************\n");
}

void creat_table(sqlite3 *db)
{
    char * sql;
    char * errmsg;
    int rec;

    sql = "create table if not exists txl (id integer primary key,name text,year                 integer,sex txt,telephone text,address text);";

    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("create error! %s\n",errmsg);
        exit(-1);
    }

}

int check_tele(char *telephone)
{
    int i = 0;
    int flag;

    while(telephone[i] != '\0')
    {
        i++;
    }

    if(i <= 11)
    {
        flag = 1;
    }
    else
    {
        flag = 0;
    }

    return flag;
}

void insert_table(sqlite3 *db)
{
    char sql[Max];
    int id,year;
    char name[20],telephone[13],address[100],sex[4];
    char ch;
    int flag,rec;
    char *errmsg;

    printf("请问您是否继续这项操作?(y/n或Y/N):");
    scanf(" %c",&ch);

    while(ch != 'n' && ch != 'N')
    {
        printf("请输入序号,姓名,年纪,性别,电话号码,家庭地址:\n");
        scanf("%d%s%d%s%s%s",&id,name,&year,sex,telephone,address);

      flag = check_tele(telephone); 

        if(flag == 1)
        {
            sprintf(sql,"insert into txl (id,name,year,sex,telephone,address) values                (%d,'%s',%d,'%s','%s','%s');",id,name,year,sex,telephone,address);

            rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);

            if(rec != SQLITE_OK)
            {
                printf("insert error! %s\n",errmsg);
                exit(-1);
            }
        }
        else
        {
            printf("电话号码长度有问题!请重新输入电话号码;");
            scanf("%s",telephone);

            sprintf(sql,"insert into txl (id,name,year,sex,telephone,address) values                (%d,'%s',%d,'%s','%s','%s');",id,name,year,sex,telephone,address);

            rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);

            if(rec != SQLITE_OK)
            {
                printf("insert error! %s\n",errmsg);
                exit(-1);
            }
        }

        printf("请问是否还要继续该操作(y/n或Y/N);");
        scanf(" %c",&ch);
    }
}

void update_table(char *rname,sqlite3 *db)
{
    char sql[Max];
    int rec;
    char *errmsg;
    char ch;
    char name[20],sex[3],telephone[13],address[100];
    int year;

    printf("请问需要修改姓名吗?(y/n or Y/N):");
    scanf(" %c",&ch);
    if(ch == 'y' || ch == 'Y')
    {
        printf("请输入所需要修改的姓名:");
        scanf(" %s",name);
        
        sprintf(sql,"update txl set name = '%s' where name = '%s';",name,rname);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("update error! %s\n",errmsg);
            exit(-1);
        }
    }

    printf("请问需要修改年纪吗?(y/n or Y/N):");
    scanf(" %c",&ch);
    if(ch == 'y' || ch == 'Y')
    {
        printf("请输入所需要修改的年纪:");
        scanf("%d",&year);
        sprintf(sql,"update txl set year = %d where name = '%s';",year,rname);
        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("update error! %s\n",errmsg);
            exit(-1);
        }
    }

    printf("请问需要修改性别吗?(y/n or Y/N):");
    scanf(" %c",&ch);
    if(ch == 'y' || ch == 'Y')
    {
        printf("请输入所需要修改的性别:");
        scanf("%s",sex);
        
        sprintf(sql,"update txl set sex = '%s' where name = '%s';",sex,rname);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("update error! %s\n",errmsg);
            exit(-1);
        }
    }

    printf("请问需要修改电话吗?(y/n or Y/N):");
    scanf(" %c",&ch);
    if(ch == 'y' || ch == 'Y')
    {
        printf("请输入所需要修改的电话:");
        scanf("%s",telephone);
        
        sprintf(sql,"update txl set telephone = '%s' where name = '%s';",telephone,             rname);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("update error! %s\n",errmsg);
            exit(-1);
        }
    }

    printf("请问需要修改地址吗?(y/n or Y/N):");
    scanf(" %c",&ch);
    if(ch == 'y' || ch == 'Y')
    {
        printf("请输入所需要修改的地址:");
        scanf("%s",address);
        
        sprintf(sql,"update txl set address = '%s' where name = '%s';",address,                     rname);

        rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
        if(rec != SQLITE_OK)
        {
            printf("update error! %s\n",errmsg);
            exit(-1);
        }
    }
}

void delet_table(sqlite3 *db,char * dname)
{
    char sql[Max];
    char *errmsg;
    int rec;

    sprintf(sql,"delete from txl where name = '%s';",dname);

    rec = sqlite3_exec(db,sql,NULL,NULL,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("delete error! %s\n",errmsg);
        exit(-1);
    }
}

void search_table(sqlite3 *db,char *cname)
{
    char sql[Max];
    char *errmsg;
    int rec;
    char **result;
    int n_row;
    int n_col;
    int i;

    sprintf(sql,"select * from txl where name = '%s';",cname);

    rec = sqlite3_get_table(db,sql,&result,&n_row,&n_col,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("select error! %s\n",errmsg);
        exit(-1);
    }

    for(i = 0; i < (n_row + 1) * n_col; i++)
    {
        printf("%5s       ",result[i]);
        if((i + 1) % n_col == 0)
        {
            printf("\n");
        }
    }

    sqlite3_free_table(result);
}

void function1(sqlite3 *db)
{
    insert_table(db);
}

void function2(sqlite3 *db)
{
    char rname[20];
    printf("请输入所要修改的联系人的姓名:");
    scanf("%s",rname);

    update_table(rname,db);
}

void function3(sqlite3 *db)
{
    char dname[20];

    printf("请输入所要删除的联系人的姓名:");
    scanf("%s",dname);

    delet_table(db,dname);

}

void function4(sqlite3 *db)
{    
    char cname[20];

    printf("请输入所要查询的联系人的姓名:");
    scanf("%s",cname);

    search_table(db,cname);

}

void function5(sqlite3 *db)
{
    char *sql;
    char *errmsg;
    int rec;
    char **result;
    int n_row;
    int n_col;
    int i;

    sql = "select * from txl ;";

    rec = sqlite3_get_table(db,sql,&result,&n_row,&n_col,&errmsg);
    if(rec != SQLITE_OK)
    {
        printf("select error! %s\n",errmsg);
        exit(-1);
    }

    for(i = 0; i < (n_row + 1) * n_col; i++)
    {
        printf("%5s       ",result[i]);
        if((i + 1) % n_col == 0)
        {
            printf("\n");
        }
    }

    sqlite3_free_table(result);
}

void function6(sqlite3 * db)
{
    sqlite3_close(db);

    exit(-1);
}

int main()
{
    int num;
    char y;
    char filename[100];
    int rec;
    sqlite3 *db;

    printf("请输入文件名:");
    scanf("%s",filename);

    rec = sqlite3_open(filename,&db);
    if(rec != SQLITE_OK)
    {
        printf("open error! %s\n",sqlite3_errmsg(db));

        exit(-1);
    }

    creat_table(db);

    system("reset");
    welcome();

    while(1)
    {
        printf("请选择您所需要的功能:");
        scanf("%d",&num);

        switch(num)
        {
            case 1:
                function1(db);
                break;
                
            case 2:
                function2(db);
                break;

            case 3:
                function3(db);
                break;

            case 4:
                function4(db);
                break;

            case 5:
                function5(db);
                break;

            case 6:
                function6(db);
                break;

            default:
                break;
        }

    }

    return 0;
}

功能展示:
界面:
在这里插入图片描述

功能1:
在这里插入图片描述
功能5:
在这里插入图片描述
功能2:
在这里插入图片描述
在这里插入图片描述
功能3:
在这里插入图片描述
功能4:
在这里插入图片描述
功能6:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值