停车场进出(数据库)

三个文件:park.h  park.c  function.c

注意:有关时间函数,time_t 是长整型, time() 函数取多少秒,通过形参返回;ctime()将time()函数返回的形参(秒数)转化为 字符串 时间输出。

#include <time.h>
#include <stdio.h>

int main()
{
    time_t timep1;
    //time_t timep2;


    time(&timep1); //获取从1970至今过了多少秒,存入time_t类型的timep
    printf("%ld\n%s\n",timep1, ctime(&timep1));
    //printf("");//用ctime将秒数转化成字符串格式,输出:Thu Feb 3 21:16:17 2022
    
    return 0;
}

park.h

#ifndef _PARK_H_
#define _PARK_H_

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

enum return_val{
    CREATE_OK = 100,
    CREATE_NO,
};


extern void welcome();  //欢迎界面

extern void interface();  //进入界面

extern int create_park(sqlite3 **park);  //创建停车场

extern void select_function(int *select); //选择功能

extern void check_park(sqlite3 *park);  //查看停车位

extern void insert_park(sqlite3 *park);  //车辆入库

extern void select_park(sqlite3 *park);  //查看停车记录

extern void empty_park(sqlite3 *park);  //车辆出库并计算停车费

extern void exit_park(sqlite3 *park);  //退出

#endif

park.c

#include "park.h"

int main(int argc, char *argv[])
{
    sqlite3 *park = NULL;
    int select;

    welcome();  //欢迎界面

    sleep(1);
    system("clear");

    interface();  //进入界面

    if(CREATE_NO == create_park(&park))  //创建停车场
    {
        return 0;
    }

    while (1)
    {
        select_function(&select); //选择功能

        switch (select)
        {
        case 1:
            check_park(park);  //查看停车位
            break;
        case 2:
            insert_park(park);  //车辆入库
            break;
        case 3:
            select_park(park);  //查看停车记录
            break;
        case 4:
            empty_park(park);  //车辆出库并计算停车费
            break;
        case 5:
            exit_park(park);  //退出
            break;
        default:
            printf("    请重新输入:\n");
            break;
        }

        if (select == 5)
        {
            break;
        }
        
    }

    return 0;
}

function.c

#include "park.h"

void welcome()  //欢迎界面
{
    printf("    ");
    printf("*******************************************************");
    printf("\n\n");
 
    printf("                       Welcome you!");
    printf("\n\n");
 
    printf("    ");
    printf("*******************************************************");
    printf("\n\n");
}

 
void interface()  //进入界面
{
    printf("    ");
    printf("*******************************************************");
    printf("\n\n");
    
    printf("    ");
    printf("************************目录**************************");
    printf("\n\n");
    
    printf("    ");
    printf("****************** 1、查看停车位 ***********************");
    printf("\n\n");
 
    printf("    ");
    printf("******************* 2、车辆入库 ************************");
    printf("\n\n");
 
    printf("    ");
    printf("****************** 3、查看停车记录 **********************");
    printf("\n\n");
 
    printf("    ");
    printf("****************** 4、车辆出库收费 **********************");
    printf("\n\n");
 
    printf("    ");
    printf("********************* 5、退出 *************************");
    printf("\n\n");
 
    printf("    ");
    printf("*******************************************************");
    printf("\n\n");

}

int create_park(sqlite3 **park)  //创建停车场
{
    char *sql1 = NULL;
    char *errmsg = NULL;
    char sql2[100];

    if (SQLITE_OK != sqlite3_open("database.db", park))
    {
        printf("    ");
        printf("database create error!%s\n", sqlite3_errmsg(*park));
        exit(EXIT_FAILURE);
    }

    sql1 = "create table if not exists mytable (id int primary key, cname text, times integer, cdata datetime);";
    if (SQLITE_OK != sqlite3_exec(*park, sql1, NULL, NULL, &errmsg))
    {
        printf("    ");
        printf("create table error!%s\n", sqlite3_errmsg(*park));
        exit(EXIT_FAILURE);     
    }

    for(int i = 0; i < 15; i++)
    {
        sprintf(sql2, "insert into mytable (id,cname,times,cdata) values (%d,NULL,NULL,NULL);", i+1);

        if (SQLITE_OK != sqlite3_exec(*park, sql2, NULL, NULL, &errmsg))
        {
            printf("    ");
            printf("create table error!%s\n", sqlite3_errmsg(*park));
            exit(EXIT_FAILURE);     
        }

    }

    
    return CREATE_OK;
}

void select_function(int *select) //选择功能
{
    printf("    ");
    printf("请选择以上功能:");
    scanf("%d", select);
}

int display(void *para, int col_num, char **col_val, char ** col_name)
{
    int *flag = NULL;
    flag = (int *)para;

    if (*flag == 0)
    {
        *flag = 1;

        for (int i = 0; i < col_num; i++)
        {
            printf("    ");
            printf("%10s", col_name[i]);
        }
        
        printf("\n");
    }

    for (int i = 0; i < col_num; i++)
    {
        printf("    ");
        printf("%10s", col_val[i]);
    }
        
    printf("\n");

    return SQLITE_OK;
    
}

void check_park(sqlite3 *park)  //查看停车位
{
    char *sql = NULL;
    char *errmsg = NULL;
    int flag = 0;

    system("clear");
    interface();  //进入界面

    sql = "select *from mytable;";

    if (SQLITE_OK != sqlite3_exec(park, sql, display, (void *)&flag, &errmsg))
    {
        printf("    ");
        printf("create table error!%s\n", sqlite3_errmsg(park));
        exit(EXIT_FAILURE);     
    }
}

void insert_park(sqlite3 *park)  //车辆入库
{
    char sql[200];
    char *errmsg = NULL;
    int id;
    char cname[50];
    time_t time1;

    system("clear");
    interface();  //进入界面

    printf("    ");
    printf("请选择入库编号和车牌号 id 和 cname:\n");
    printf("    ");
    scanf("%d%s", &id, cname);

    time(&time1);

    sprintf(sql, "update mytable set cname = '%s',times = '%ld',cdata = '%s' where id = %d;",cname,time1,ctime(&time1),id);

    if (SQLITE_OK != sqlite3_exec(park, sql, NULL, NULL, &errmsg))
    {
        printf("    ");
        printf("update table error!%s\n", sqlite3_errmsg(park));
        exit(EXIT_FAILURE);     
    }

}
 
void select_park(sqlite3 *park)  //查看停车记录
{
    char sql[100];
    char *errmsg = NULL;
    int flag = 0;
    char **result = NULL;
    int row_num;
    int col_num;
    char cname[50];
    int i;

    system("clear");
    interface();  //进入界面

    printf("    ");
    printf("请选择车牌号:");
    scanf("%s", cname);

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

    if (SQLITE_OK != sqlite3_get_table(park, sql, &result, &row_num, &col_num, &errmsg))
    {
        printf("    ");
        printf("get table error!%s\n", sqlite3_errmsg(park));
        exit(EXIT_FAILURE);
    }
    else
    {
        
        for (i = 0; i < (row_num + 1)*col_num; i++)
        {
            printf("    ");
            printf("%10s", result[i]);

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

}

void empty_park(sqlite3 *park)  //车辆出库并计算停车费
{
    char sql[100];
    char *errmsg = NULL;
    char **result = NULL;
    int row_num;
    int col_num;
    int id;
    time_t t2;
    long int t1;

    system("clear");
    interface();  //进入界面

    printf("    ");
    printf("请选择库号:");
    scanf("%d", &id);

    sprintf(sql,"select *from mytable where id = '%d';",id);

    if (SQLITE_OK != sqlite3_get_table(park, sql, &result, &row_num, &col_num, &errmsg))
    {
        printf("    ");
        printf("get table error!%s\n", sqlite3_errmsg(park));
        exit(EXIT_FAILURE);
    }

    time(&t2);
    t1 = atoi(result[6]);
    printf("    %ld",t2);
    printf("    %ld",t1);


    printf("    ");
    printf("该车出库需要收费:%ld 元\n", 2*(t2-t1));

    sprintf(sql, "update mytable set cname = NULL,times = NULL,cdata = NULL where id = %d;", id);

    if (SQLITE_OK != sqlite3_exec(park, sql, NULL, NULL, &errmsg))
    {
        printf("    ");
        printf("update table error!%s\n", sqlite3_errmsg(park));
        exit(EXIT_FAILURE);     
    }
    printf("    ");
    printf("该车出库成功!\n");


}

void exit_park(sqlite3 *park)  //退出
{
    char *sql = NULL;
    char *errmsg = NULL;
    int flag = 0;

    system("clear");
    interface();  //进入界面

    printf("    ");
    printf("退出成功!\n");

    sql = "delete from mytable;";

    if (SQLITE_OK != sqlite3_exec(park, sql, NULL, NULL, &errmsg))
    {
        printf("    ");
        printf("create table error!%s\n", sqlite3_errmsg(park));
        exit(EXIT_FAILURE);     
    }

    sqlite3_close(park);
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值