久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1771|回復: 1
打印 上一主題 下一主題
收起左側

6818停車場數據庫

[復制鏈接]
跳轉到指定樓層
樓主
ID:394706 發表于 2018-9-6 19:41 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "common.h"

int  g_buz;
extern sem_t s, ss;

char *province[] = {"粵", "贛", "湘", "鄂", "貴",
                    "黑", "滬", "京", "蒙", "藏",
                    "甘", "豫", "魯", "晉", "桂",
                    "云", "滇", "遼", "川", "閔",
                    "徽", "蘇", "津", "吉", "冀",
                    "陜", "寧", "浙", "渝", "瓊",
                    "港", "澳", "臺"};

char alphanumeric[] = { 'A', 'B', 'C', 'D', 'E',
                        'F', 'G', 'H', 'I', 'J',
                        'K', 'L', 'M', 'N', 'O',
                        'P', 'Q', 'R', 'S', 'T',
                        'U', 'V', 'W', 'X', 'Y',
                        'Z', '0', '1', '2', '3',
                        '4', '5', '6', '7', '8',
                        '9', '0'};

char *CHIESE_NUM[] = {"零", "一", "二", "三", "四",
                         "五", "六", "七", "八", "九",
                         "十"};

char *random_alphanumeric(void)
{
        static char license_num[7];

        srand(time(NULL));
        license_num[0] = alphanumeric[rand() % 26];
        license_num[1] = alphanumeric[rand() % 37];

        srand(license_num[1]);
        license_num[2] = alphanumeric[rand() % 37];

        srand(license_num[2]);
        license_num[3] = alphanumeric[rand() % 37];

        srand(license_num[3]);
        license_num[4] = alphanumeric[rand() % 37];

        srand(license_num[4]);
        license_num[5] = alphanumeric[rand() % 37];

        return license_num;
}

char *get_license(void)
{
        // 返回車牌號作為照片的文件名存入數據庫
        char *license = calloc(1, 10);
        snprintf(license, 10, "%s%s", province[rand()%33], random_alphanumeric());

        return license; // license舉例:"粵B9MK48"
}

char *total_time(char *time_in, char *now)
{
        assert(time_in);
        assert(now);

        #define YEAR 0
        #define MON  1
        #define MDAY 2
        #define HOUR 3
        #define MIN  4
        #define SEC  5
        int val_time_in[6], val_now[6];

        char *delim = "-: \t";

        char *p = strtok(time_in, delim);
        int i;
        for(i=0; i<6; i++)
        {
                if(p != NULL)
                {
                        val_time_in[i] = atoi(p);
                        p = strtok(NULL, delim);
                }
        }

        p = strtok(now, delim);
        for(i=0; i<6; i++)
        {
                if(p != NULL)
                {
                        val_now[i] = atoi(p);
                        p = strtok(NULL, delim);
                }
        }

        int year = val_now[YEAR] - val_time_in[YEAR];
        int mon  = val_now[MON]  - val_time_in[MON];
        int mday = val_now[MDAY] - val_time_in[MDAY];
        int hour = val_now[HOUR] - val_time_in[HOUR];
        int min  = val_now[MIN]  - val_time_in[MIN];
        int sec  = val_now[SEC]  - val_time_in[SEC];

        static char dis[64];
        bzero(dis, 64);

        if(year != 0)
        {
                snprintf(dis+strlen(dis), 64-strlen(dis), "%d年", year);
        }
        if(mon  != 0)
        {
                snprintf(dis+strlen(dis), 64-strlen(dis), "%d月", mon);
        }
        if(mday != 0)
        {
                snprintf(dis+strlen(dis), 64-strlen(dis), "%d日", mday);
        }

        if(hour != 0)
        {
                snprintf(dis+strlen(dis), 64-strlen(dis), "%d時", hour);
        }
        if(min  != 0)
        {
                snprintf(dis+strlen(dis), 64-strlen(dis), "%d分", min);
        }
        if(sec  != 0)
        {
                switch(sec)
                {
                case 0 ... 9:
                        snprintf(dis+strlen(dis), 64-strlen(dis), "%s秒", CHIESE_NUM[sec]);
                        break;
                case 10 ... 19:
                        snprintf(dis+strlen(dis), 64-strlen(dis), "十%s秒", CHIESE_NUM[sec-10]);
                        break;
                case 20 ... 29:
                        snprintf(dis+strlen(dis), 64-strlen(dis), "二十%s秒", CHIESE_NUM[sec-20]);
                        break;
                case 30 ... 39:
                        snprintf(dis+strlen(dis), 64-strlen(dis), "三十%s秒", CHIESE_NUM[sec-30]);
                        break;
                }
        }

        return dis;
}

char *cal_fee(char *total)
{
        assert(total);

        // 停車費用政策:¥1/秒,四十元封頂
        int fee = atoi(strtok(total, "S"));

        static char val[20];
        bzero(val, 20);

        switch(fee)
        {
        case 0 ... 9:
                snprintf(val, 20, "%s元", CHIESE_NUM[fee]);
                break;
        case 10 ... 19:
                snprintf(val, 20, "十%s元", CHIESE_NUM[fee-10]);
                break;
        case 20 ... 29:
                snprintf(val, 20, "二十%s元", CHIESE_NUM[fee-20]);
                break;
        case 30 ... 39:
                snprintf(val, 20, "三十%s元", CHIESE_NUM[fee-30]);
                break;
        default:
                snprintf(val, 20, "四十元");
        }

        return val;
}

int main(int argc, char **argv)
{
        // 打開/創建數據庫parking.db,并創建表carinfo
        sqlite3 *db;
        sqlite3_open_v2("parking.db", &db,
                        SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
                        NULL);

        char *errmsg;
        char *create =  "CREATE TABLE IF NOT EXISTS "
                        "carinfo(cardid TEXT PRIMARY KEY, "
                        "license TEXT, "
                        "time_in TEXT NOT NULL, "
                        "photo   TEXT);";
        if(Sqlite3_exec(db, create, NULL, NULL, &errmsg) != SQLITE_OK)
        {
                exit(0);
        }

        while(1)
        {
                // 從管道讀取卡號
                char card_num[10] = {0};
                read(0, card_num, 10);

                printf("數據庫得到的卡號:%#x\n", atoi(card_num));

                unsigned int cardid = atoi(card_num);

                // 隨機生成車牌號
                char *license = get_license();

                if(cardid > 0)
                {
                        if(start_charging(db, license, cardid, "1.bmp"))
                        {
                                // 將歡迎辭和車牌號發送給主機合成語音并播放出來
                                char welcome_msg[200] = {0};
                                snprintf(welcome_msg, 200, "歡迎%s入場", license);
                        }
                        else
                        {
                                fprintf(stderr, "\n此卡【已進場】.\n");
                        }
                }
                else if(cardid < 0)
                {
                        cardid = -cardid;
                        char *license, *time_in;

                        if(stop_charging(db, cardid, &license, &time_in))
                        {
                                time_t t = time(NULL);
                                char *now = calloc(1, 64);
                                struct tm *p = localtime(&t);
                                snprintf(now, 64, "%d-%d-%d %02d:%02d:%02d",
                                                p->tm_year+1900, p->tm_mon+1, p->tm_mday,
                                                p->tm_hour, p->tm_min, p->tm_sec);

                                fprintf(stderr, "入場時間: %s\n", time_in);

                                char *total = total_time(time_in, now);
                                fprintf(stderr, "停車時長: %s\n", total);
                                fprintf(stderr, "車費: %s\n\n", cal_fee(total));
                        }
                        else
                        {
                                fprintf(stderr, "\n此卡【未進場】.\n");
                        }
                }

        }

        return 0 ;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:1 發表于 2018-9-8 04:31 | 只看該作者
補全源碼即可獲得100+黑幣
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩电影一区二区三区 | 亚洲综合国产精品 | 国产 欧美 日韩 一区 | 人人操日日干 | 在线日韩 | 日韩成人免费视频 | 久久久久久国产精品免费免费男同 | 国产精品99久久免费观看 | 91视频.| 1级黄色大片| 天天天天操 | 在线播放国产一区二区三区 | 国产亚洲www | 国产一区不卡 | 欧美精品一区二区三区在线四季 | 亚洲国产中文在线 | 黄片毛片免费观看 | 99热首页 | 久久精品网 | 亚洲九九精品 | 阿v视频在线观看 | 日韩色图视频 | 国产色婷婷精品综合在线播放 | 美女福利视频 | 精品亚洲一区二区三区 | 亚洲色图图片 | 九九热这里只有精品6 | 色综合一区二区三区 | 国产一区二区三区在线视频 | 国产精品成人一区 | 国产精品久久久久久久久久久久久 | 国产不卡一 | 一级欧美一级日韩片 | 国产精品久久国产精品久久 | 欧美在线一区二区三区四区 | 日本一区二区三区精品视频 | 国产91丝袜在线18 | 免费黄色片在线观看 | www.性色 | va在线| 日日夜夜操天天干 |