#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<string.h>
#include<assert.h>
#include<event.h>
#include<signal.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<arpa/inet.h>
#include<mysql/mysql.h>
#define MAXFD 100
struct event* fd_event[MAXFD];//存描述副和指针的对应关系
MYSQL mysql;
typedef struct Data
{
char *value;//存放字符串
}Data;
typedef struct Seqlist
{
Data *str;
int cutsize;//当前长度,以及存放逗号个数
int maxsize;//最大容量
}*PSeqlist,Seqlist;
PSeqlist Init_list()
{
PSeqlist L;
L = (PSeqlist )(malloc (sizeof(PSeqlist)));
L->str = (Data*)(malloc(sizeof(Data)*10));
L->str->value = (char*)(malloc(sizeof(char)*20));
L->cutsize = 1;
L->maxsize = 10;
return L;
}
int IsFull(PSeqlist L)
{
return L->cutsize > L->maxsize;
}
void Extend(PSeqlist L) //扩容
{
L->str = (Data*)realloc(L->str,sizeof(Data)*L->cutsize);
L->maxsize = L->cutsize;
}
PSeqlist function(char *buff)//字符串切割
{
PSeqlist L;
L=Init_list();
int i =0;
for( ;i<strlen(buff);i++)
{
if(buff[i]==',')
L->cutsize++;
}
if(IsFull(L))
{
Extend(L);
}
char *ptr;
ptr = strtok(buff,",");
i = 0;
while(ptr != NULL)
{
L->str[i].value = ptr;
i++;
ptr = strtok(NULL,",");
}
return L;
}
int create_socket();
void User_register(int sockfd,PSeqlist L);//注册
void User_Login(int sockfd,PSeqlist L);//用户登录
void Car_Add(int sockfd,PSeqlist L);//车牌增加
void Car_Delete(int sockfd,PSeqlist L);//车牌删除
void Car_Change(int sockfd,PSeqlist L);//车牌修改
void Car_Search_num(int sockfd,PSeqlist L);//车牌号查询
void User_Delete(int sockfd,PSeqlist L);//用户删除
void User_Search_id(int sockfd,PSeqlist L);//用户id查询
void User_Search_num(int sockfd,PSeqlist L);//用户电话查询
void User_Change_num(int sockfd,PSeqlist L);//用户电话修改
void User_Mail_change(int sockfd,PSeqlist L);//用户邮箱修改
void User_Password_change(int sockfd,PSeqlist L);//用户密码
void recv_cb(int fd,short event,void *arg);
void listen_cb(int fd,short event,void *arg);
void Admistrator_Register(int sockfd,PSeqlist L);//管理员注册
void Admistrator_Delete(int sockfd,PSeqlist L);//管理员注销
void Admistrator_Login(int sockfd,PSeqlist L);//管理员登录
void Adminstrator_Password_Update(int sockfd,PSeqlist);//修改管理员密码
void Parking_Add(int sockfd,PSeqlist L);//增加停车场
void Parking_Delete(int sockfd,PSeqlist L);//删除停车场
void Parking_Update(int sockfd,PSeqlist L);//更新停车场信息
void Parking_Select_Id(int sockfd,PSeqlist L);//根据id查询停车场信息
void Resolve(int sockfd,PSeqlist L);//解析函数
void User_Parking_in(int sockfd,PSeqlist L);//用户端查询停车场所有信息
void User_Parking_m(int sockfd,PSeqlist L);//用户端根据车牌号查询自己的停车金额
void User_Parking_t(int sockfd,PSeqlist L);//用户端根据车牌号查询自己的停车时间
void User_Parking_Tinit(int sockfd,PSeqlist L);//用户停车时的初始化时间
void U_Capacity_add(int sockfd,PSeqlist L);//出车
void Parking_Capacity_Update(int sockfd,PSeqlist L);//修改停车场容量
void Select_User_Carid(int sockfd,PSeqlist L);
void Resolve(int sockfd,PSeqlist L)
{
// PSeqlist L;
// L=Init_list(); //初始化顺序表
// L = function(buff);//切割字符串存在顺序表中 其中L->str[0].value为函数符号
if(!strcmp(L->str[0].value,"UL"))
User_Login(sockfd,L);//用户登录
if(!strcmp(L->str[0].value,"UR"))
User_register(sockfd,L);//用户注册
if(!strcmp(L->str[0].value,"CA"))
Car_Add(sockfd,L);//车辆增加
if(!strcmp(L->str[0].value,"CD"))
Car_Delete(sockfd,L);//车辆注销
if(!strcmp(L->str[0].value,"CS"))
Car_Search_num(sockfd,L);//车辆车牌号查询
if(!strcmp(L->str[0].value,"CU"))
Car_Change(sockfd,L);//车辆修改
if(!strcmp(L->str[0].value,"UD"))
User_Delete(sockfd,L);//用户删除
if(!strcmp(L->str[0].value,"USi"))
User_Search_id(sockfd,L);//用户id查询
if(!strcmp(L->str[0].value,"USn"))
User_Search_num(sockfd,L);//用户电话查询
if(!strcmp(L->str[0].value,"UCn"))
User_Change_num(sockfd,L);//用户电话修改
if(!strcmp(L->str[0].value,"MN"))
User_Mail_change(sockfd,L);//用户邮箱修改
if(!strcmp(L->str[0].value,"UPc"))
User_Password_change(sockfd,L);//用户密码修改
if(!strcmp(L->str[0].value,"AL"))
Admistrator_Login(sockfd,L);//管理员登录
if(!strcmp(L->str[0].value,"AR"))
Admistrator_Register(sockfd,L);//管理员注册
if(!strcmp(L->str[0].value,"APC"))
Adminstrator_Password_Update(sockfd,L);//管理员密码修改
if(!strcmp(L->str[0].value,"CID"))
Select_User_Carid(sockfd,L);
if(!strcmp(L->str[0].value,"PI"))
Parking_Add(sockfd,L); //增加停车场
if(!strcmp(L->str[0].value,"PD"))
Parking_Delete(sockfd,L); // 删除停车场
if(!strcmp(L->str[0].value,"PU"))
Parking_Update(sockfd,L); // 更新停车场
if(!strcmp(L->str[0].value,"PS"))
Parking_Select_Id(sockfd,L); //根据Id查询停车场的信息*/
if(!strcmp(L->str[0].value,"UPi"))
User_Parking_in(sockfd,L);//用户端查询停车场所有信息,格式为P_name(第一行),P_capacity(第一行),P_site(第一行),P_charge(第一行),P_tel(第一行),P_name(第二行),P_capacity(第二行).....
if(!strcmp(L->str[0].value,"UPm"))
User_Parking_m(sockfd,L);//用户端根据车牌号查询自己的停车金额
if(!strcmp(L->str[0].value,"UPt"))
User_Parking_t(sockfd,L);//用户端根据车牌号查询自己的停车时间
if(!strcmp(L->str[0].value,"UPT"))
User_Parking_Tinit(sockfd,L);//用户停车时的初始化时间 需要客户端传递1.usrname 2.P_name 以及停车
if(!strcmp(L->str[0].value,"UCa"))
U_Capacity_add(sockfd,L);//出车并且删除P_parking表中的记录 需要客户端传递1.usrname
if(L->str[0].value==NULL)
exit(0);
}
int create_socket()
{
int sockfd = socket(AF_INET,SOCK_STREAM,0);
if ( sockfd == -1 )
{
return -1;
}
struct sockaddr_in saddr;
memset(&saddr,0,sizeof(saddr));
saddr.sin_family = AF_INET;
saddr.sin_port = htons(6500);
saddr.sin_addr.s_addr = inet_addr("127.0.0.1");
int res = bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));
if ( res == -1 )
{
return -1;
}
listen(sockfd,5);
return sockfd;
}
void fd_event_init()
{
int i = 0;
for( ;i < MAXFD; i++ )
{
fd_event[i] = NULL;
}
}
void fd_event_add(int fd, struct event* ev)
{
if ( fd >= 100 )
{
return;
}
fd_event[fd] = ev;
}
struct event* fd_event_find( int fd)
{
if ( fd >= 100 )
{
return NULL;
}
return fd_event[fd];
}
void recv_cb(int fd,short event,void *arg)
{
PSeqlist L;
L=Init_list();
if (event & EV_READ)
{
char buff[200] = {0};
int num = recv(fd,buff,127,0);
printf("%s\n",buff);
L = function(buff);
if(num == 0)
{
struct event *s = fd_event_find(fd);
event_del(s);
close(fd);
return;
}
}
Resolve(fd,L);
}
void listen_cb(int fd,short event,void *arg)
{
struct event_base *base = (struct event_base*)arg;
struct sockaddr_in caddr;
int len = sizeof(caddr);//
int c = accept(fd,(struct sockaddr*)&caddr,&len);
if(c<0)
{
perror("accept error");
return ;
}
printf("客户端描述符为 %d 的用户已连接服务器\n",c);
struct event *c_ev = event_new(base,c,EV_READ|EV_PERSIST,recv_cb,NULL);
assert(c_ev != NULL);
event_add(c_ev,NULL);
fd_event_add(c,c_ev);
}
void User_register(int sockfd,PSeqlist L)//注册 +
{
//printf("IM User_register\n");
char sql_insert[200]={0};//保存插入语句
sprintf(sql_insert,"insert into person values('%s','%s','%s','%s','%s');",L->str[1].value,L->str[
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
资源推荐
资源详情
资源评论
收起资源包目录
毕业设计&课设-智能停车场管理系统.zip (3个子文件)
AICar_sys
Parking-Management-system
libser总.c 27KB
cli总.c 17KB
main.c 147B
共 3 条
- 1
资源评论
毕业小助手
- 粉丝: 2747
- 资源: 5583
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 水仙花数的四种实现方式(C/Java/Python/JavaScript)
- (源码)基于TensorflowLite的AI狗识别系统.zip
- (源码)基于Qt框架的3D点云与模型可视化系统.zip
- JAVA的SpringBoot企业级进销存ERP管理系统源码 java进销存源码数据库 MySQL源码类型 WebForm
- (源码)基于Python的学生管理系统.zip
- 图片oraclemysal
- 深入讲解贪心算法及其Python实现与实例应用
- java人力资源HR管理系统源码数据库 MySQL源码类型 WebForm
- BT_esp32_370_DRV8833_BALANCE_verticalPID_turnPID.ino
- buildroot package使用示例
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功