三个文件: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);
}