搭车系统 use端
来源:互联网 发布:simulink数据库 编辑:程序博客网 时间:2024/06/10 11:59
usemain.cpp
#include<iostream>#include<sys/un.h>#include<sys/types.h>#include<sys/socket.h>#include<stdlib.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<iomanip>#include<string.h>#include<stdio.h>#include<pthread.h>#include"message_type.h"#include"struct_info.h"#include"use.h"using namespace std;int main(void){ int i ; while(1){ start_interface(); cout << "输入你要选择的项目的数字"; cin >> i ; getchar(); switch(i){ case 1 : { registration_main(); } break ; case 2 : { login_main(); } break ; case 0 : { signd = true ; } break ; default : break; } if(signd){ break ; } } return 0; }
use.h
static char useraccount[1024]={0};static bool signd ;static char driveraccount[1024]={0};static int sockfd;void registration_srcreen();void start_interface();int registration_main();void login_main();void login_srcreen();void info_srcreen();void call_cab();void driver_info();void chat_main();void* read_pthread(void *);static AP loginap;static sockaddr_in driveraddr;struct PERINFO{ char name[256]={0}; char sex[10]={0}; char IDcard[20]={0}; char homeadd[1024]={0}; char phonenum[20]={0}; char carnum[256]="0000"; }; struct NETINFO{ struct sockaddr_in sockaddr; int tcp=0 ; int udp=0 ; };struct ADDRESSINFO{ int startjd=0; int startwd=0; int goaljd=0 ; int goalwd =0; };void add_show(ADDRESSINFO &); struct USERINFO{ char account[1024]={0}; struct sockaddr_in useraddr; struct ADDRESSINFO addressinfo; struct PERINFO perinfo; };static struct USERINFO driverinfo;static void user_show(USERINFO &rh){ std::cout <<"========================================="<< std::endl; std::cout << "account :" << rh.account<<std::endl; std::cout << std::endl; std::cout << "name :"<< rh.perinfo.name<< std::endl; std::cout << std::endl; std::cout << "======================================="<<std::endl; }struct CHATINFO{ char recvaccount[1024]={0}; char sendtoaccount[1024]={0}; char buff[1024]={0}; };#endif
use.cpp
#include<iostream>#include<sys/un.h>#include<sys/types.h>#include<sys/socket.h>#include<stdlib.h>#include<netinet/in.h>#include<arpa/inet.h>#include<unistd.h>#include<iomanip>#include<string.h>#include<stdio.h>#include<pthread.h>#include"message_type.h"#include"struct_info.h"#include"use.h"using namespace std;void registration_srcreen(){ system("clear"); cout <<"======================================"<<endl; cout << endl; cout <<"欢迎使用SF搭车"<< endl; cout <<"请输入您的新帐号"<< endl; cout <<"和您的新密码 "<< endl; cout << endl; cout <<"======================================"<<endl; }void start_interface(){ system("clear"); cout <<"======================================"<<endl; cout << endl; cout <<"欢迎使用SF搭车"<< endl; cout <<"1 注册"<< endl; cout <<"2 登录"<< endl; cout <<"0 退出"<< endl; cout << endl; cout << "======================================"<<endl; }void info_srcreen(){ system("clear"); cout << "注册成功"<< endl; cout << "=========================================="<<endl; cout << "请填写您的个人信息"<< endl; cout << endl ; cout << "1 姓名"<< endl; cout << endl; cout << "2 性别"<< endl; cout << endl; cout << "3 身份证号码"<< endl; cout << endl; cout << "4 家庭住址"<< endl; cout << endl; cout << "5 手机号码"<< endl; cout << "============================================"<< endl; }int registration_main(){ registration_srcreen(); struct AP ap; while(1){ cout<<"您的帐号:"; cin>> ap.account ; cout <<"你输入的帐号为:"<<ap.account<<endl; cout <<"确认请按1 返回修改请按0 退出请按2"<<endl; int i; cin>>i; if(i == 1) break ; else if(i == 0) continue ; } getchar(); while(1){ cout<<"您的密码:"; cin>> ap.password ; cout <<"你输入的密码为:"<<ap.password<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); int ret ; int sockfd ; struct message message; message.type = 2000; message.type_len = sizeof(struct AP); sockfd = socket(AF_INET , SOCK_STREAM , 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_port = htons(8000); ret = connect(sockfd , (const struct sockaddr*)&serveraddr , sizeof(struct sockaddr_in) ); if(ret != 0){ cout << "connect fail "<< endl; exit(1); } write(sockfd , &message, sizeof(message)); ap_show(ap); write(sockfd , &ap , sizeof(struct AP)); struct message messagesignd ; read(sockfd , &messagesignd ,sizeof(message) ); if(messagesignd.type == 1111){ PERINFO perinfo; info_srcreen(); while(1){ cout<<"您的姓名:"; cin>> perinfo.name; cout <<"你的姓名为:"<<perinfo.name<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); while(1){ cout<<"您的性别:"; cin>> perinfo.sex; cout <<"性别为:"<<perinfo.sex<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); while(1){ cout<<"您的身份证号码:"; cin>> perinfo.IDcard; cout <<"身份证号码为"<<perinfo.IDcard<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); while(1){ cout<<"您的住址:"; cin>> perinfo.homeadd; cout <<"住址为:"<<perinfo.homeadd<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); while(1){ cout<<"您的手机号码:"; cin>> perinfo.phonenum; cout <<"您的手机号码:"<<perinfo.phonenum<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); write(sockfd , &perinfo , sizeof (perinfo)); } else{ cout << "注册失败 请重新选取帐号"<< endl; } getchar(); return 0; } void login_srcreen(){ system("clear"); cout <<"======================================"<<endl; cout << endl; cout <<"欢迎使用SF搭车"<< endl; cout <<"请输入您的帐号"<< endl; cout <<"和您的 密码 "<< endl; cout << endl; cout <<"======================================"<<endl; }void user_srcreen(){ system("clear"); cout <<"======================================"<<endl; cout << endl; cout <<"欢迎您--"<<useraccount<<"--使用SF搭车"<< endl; cout <<"1 叫车"<< endl; cout << endl; cout <<"2 下载司机信息"<< endl; cout << endl; cout <<"3 聊天 "<< endl; cout <<endl; cout <<"0 退出"<< endl; cout << endl; cout << "======================================"<<endl; }//登录void login_main(){ login_srcreen(); while(1){ cout<<"您的帐号:"; cin>> loginap.account ; cout <<"你输入的帐号为:"<<loginap.account<<endl; cout <<"确认请按1 返回修改请按0 退出请按2"<<endl; int i; cin>>i; if(i == 1) break ; else if(i == 0) continue ; } getchar(); while(1){ cout<<"您的密码:"; cin>> loginap.password ; cout <<"你输入的密码为:"<<loginap.password<<endl; cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); int ret ; int sockfd ; struct message message; message.type = 2001; message.type_len = sizeof(struct AP); sockfd = socket(AF_INET , SOCK_STREAM , 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_port = htons(8000); struct sockaddr_in useraddr; useraddr.sin_family = AF_INET; useraddr.sin_addr.s_addr = inet_addr("192.168.1.161"); cout << inet_addr("10.0.0.48")<< endl; useraddr.sin_port = htons(8000); ret = connect(sockfd , (const struct sockaddr*)&serveraddr , sizeof(struct sockaddr_in) ); if(ret != 0){ cout << "connect fail "<< endl; exit(1); } write(sockfd , &message, sizeof(message)); ap_show(loginap); write(sockfd , &loginap , sizeof(struct AP)); struct message messagesignd ; read(sockfd , &messagesignd ,sizeof(message) ); if(messagesignd.type == 1111){ cout << "登录成功"<< endl; //保存帐号 strcpy(useraccount , loginap.account); write(sockfd ,&useraddr , sizeof(useraddr)); //聊天许可标志 bool permitchat = false ; while(1){ user_srcreen(); signd = false ; int i ; cin >>i ; switch(i){ case 1 : { //叫车 call_cab(); getchar(); } break; case 2 : { //下载司机信息 driver_info(); } getchar(); getchar(); break ; case 3 : { //聊天 chat_main(); } break ; case 0 : cout << " 退出" << endl; signd = true ; break ; } if(signd == true ) break ; } }else { cout << "登录失败 " << endl; } getchar();}void call_cab(){ int ret ;// int sockfd ; sockfd = socket(AF_INET , SOCK_STREAM , 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_port = htons(8000); ret = connect(sockfd , (const struct sockaddr*)&serveraddr , sizeof(struct sockaddr_in) ); if(ret != 0){ cout << "connect fail "<< endl; exit(1); } //int ret ; struct message message ; struct ADDRESSINFO addressinfo; message.type = 2003; message.type_len = strlen(useraccount); while(1){ cout <<"====================================="<<endl; cout << endl; cout << "请输入您出发的位置"<< endl; cout << "开始经度"; cin>> addressinfo.startjd ; getchar(); cout << "开始纬度"; cin>>addressinfo.startwd; getchar(); cout << "目的经度"; cin>>addressinfo.goaljd ; getchar(); cout << "目的纬度" ; cin>>addressinfo.goalwd; getchar(); cout << "======================================"<<endl; add_show(addressinfo); cout <<"确认请按1 返回修改请按0"<<endl; int i; cin>>i; if(i) break ; else continue ; } getchar(); getchar(); write(sockfd, &message, sizeof(message)); write(sockfd, &useraccount , message.type_len ); write(sockfd ,&addressinfo ,sizeof(ADDRESSINFO)); read(sockfd , &message, sizeof(message)); if(message.type == 1111){ cout <<" 叫车成功,正在为您准备司机...... "<<endl; read(sockfd , driveraccount, sizeof(driveraccount)); system("clear"); cout <<"========================================="<<endl; cout <<endl; cout << "您的专用司机:"<<driveraccount<<endl; cout <<endl; cout << "========================================="<<endl; }else{ cout <<" 叫车未成功 ,请耐心等待" << endl ; }} void add_show(ADDRESSINFO &rh){ system("clear"); std::cout <<"=========您输入的行程============"<< std::endl; std::cout << std::endl; std::cout << "出发地经纬度 :" << rh.startjd<<":"<< rh.startwd<<std::endl; std::cout << "目的地经纬度 :" << rh.goaljd<< ":"<<rh.goalwd << std::endl; std::cout << std::endl; std::cout << "======================================="<<std::endl; } void driver_info(){ if(strlen(driveraccount)){ int ret ; int sockfd ; struct message message ; struct ADDRESSINFO addressinfo; message.type = 2005; message.type_len = strlen(driveraccount); sockfd = socket(AF_INET , SOCK_STREAM , 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_port = htons(8000); ret = connect(sockfd , (const struct sockaddr*)&serveraddr , sizeof(struct sockaddr_in) ); if(ret != 0){ cout << "connect fail "<< endl; exit(1); } write(sockfd , &message ,sizeof(message)) ; write(sockfd ,driveraccount, message.type_len ); read(sockfd , &driverinfo, sizeof( struct USERINFO)); driveraddr = driverinfo.useraddr; system("clear"); cout <<"===================================="<< endl; cout << endl; cout <<"司机帐号:"<< driveraccount<< endl; cout << endl; cout <<"司机位置:"<<endl; cout << "当前经纬度 :" <<driverinfo.addressinfo.startjd<<":" <<driverinfo.addressinfo.startwd << endl; cout << endl; cout << "======================================"<<endl; cout <<"司机个人信息为:"<<endl; cout <<"姓名:"<<driverinfo.perinfo.name<< endl; cout <<"性别:"<<driverinfo.perinfo.sex<< endl; cout <<"证件:"<<driverinfo.perinfo.IDcard<<endl; cout <<"住址:"<<driverinfo.perinfo.homeadd<<endl; cout <<"联系:"<<driverinfo.perinfo.phonenum<<endl; cout <<"车牌:"<<driverinfo.perinfo.carnum<< endl; cout <<"=========================================="<<endl; }else{ cout << "没有联系的司机"<< endl; } }void* read_pthread(void *arg){ int ret ; int sockfd ; struct CHATINFO chatinfo; sockfd = socket(AF_INET , SOCK_DGRAM , 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_port = htons(8000); while(1){ recv(sockfd , (void*)&chatinfo , sizeof(CHATINFO), 0); while(!strcmp(chatinfo.recvaccount, useraccount)){ cout << "========================="<<endl; cout << endl; cout <<"收到"<<chatinfo.sendtoaccount <<"发来消息:"<< endl; cout << endl; cout <<"-->"<<chatinfo.buff<<endl; cout << "========================="<<endl; } } return (void*) 0; }void chat_main(){ pthread_t thread_t; pthread_create(&thread_t , NULL , read_pthread , (void*)0); int ret ; int sockfd ; CHATINFO chat_info; strcpy(chat_info.sendtoaccount ,useraccount) ; sockfd = socket(AF_INET , SOCK_DGRAM , 0); struct sockaddr_in serveraddr; serveraddr.sin_family = AF_INET; serveraddr.sin_addr.s_addr = inet_addr("127.0.0.1"); serveraddr.sin_port = htons(8000); while(1){ int i=0; bool chang=false; system("clear"); cout << "_________-----------____________"<<endl; cout << "1 写入消息 0 退出"<< endl; cout <<"----------___________------------"<<endl; cin>>i; switch(i){ case 1 : { cout << "你需要发送的给谁消息:"; cin>>chat_info.recvaccount; cout << "消息内容:"; cin>>chat_info.buff; getchar(); getchar(); sendto( sockfd , (void*)&chat_info ,(size_t)sizeof(CHATINFO), NULL, (struct sockaddr*)& serveraddr , (socklen_t)sizeof(serveraddr)); cout <<"发送完成"<<endl; } getchar(); break ; case 0 : chang = true ; break ; default : break ; } if(chang){ break ; } } }
struct_info.h
#ifndef _STRUCT_INFO_#define _STRUCT_INFO_struct INFO { int ID ; unsigned long int clientIP ; // 客户IP unsigned long int driverIP ; //司机IP long int longitude ; //维度 long int datitude ; //经度 int client_tcp_sockfd ; //客户与服务器TCP接口 int driver_tcp_sockfd ; //司机与服务器TCP接口};void driver_info_show(struct INFO & );void client_info_show(struct INFO & );static int INFO_LEN = sizeof(struct INFO);#endif
struct_info.h
#include<iostream>#include"struct_info.h" using namespace std;void client_info_show(INFO & rh){ cout << "clientIP :" << rh.clientIP<<endl; cout << "longitude :" << rh.longitude<<endl; cout << "datitude :" << rh.datitude<<endl; cout << "ID :" << rh.ID<< endl;}void driver_info_show(INFO & rh){ cout << "driverIP :" << rh.clientIP<<endl; cout << "longitude :" << rh.longitude<<endl; cout << "datitude :" << rh.datitude<<endl; cout << "ID :" << rh.ID << endl;}
message_type.h
#ifndef _MESSAGE_TYPE_#define _MESSAGE_TYPE_#define MAXBUFF 1024struct message{ int type ; size_t type_len ; };static int message_len = sizeof(struct message);struct AP{ char account[1024]={0}; char password[1024]={0}; };static void ap_show(AP &rh){ std::cout <<"========================================="<< std::endl; std::cout << "account :" << rh.account<<std::endl; std::cout << std::endl; std::cout << "password :"<< rh.password<< std::endl; std::cout << std::endl; std::cout << "======================================="<<std::endl; }#endif
0 0
- 搭车系统 use端
- 搭车系统 driver端
- 搭车系统 Server端
- 答答搭车系统学习笔记
- 嘀嘀搭车初体验
- 京东苏宁战正酣 搭车营销莫等闲
- 搭车软件大战后疲软
- 使用系统表的注意use 库
- net use 系统错误1219的解决办法
- 系统错误5 拒绝访问 net use
- USE
- use
- use
- use
- USE
- 各国在日留学生搭车离开仙台防核辐射(组图)
- 吐槽实践学习中的抄袭与搭车
- 视频自媒体时代,健身内容来搭车
- zencart export批量导出数据,生成csv操作
- 11.层级导航
- <div+css页面布局课堂笔记>10---页面布局网站首页设计实例__2
- 快速排序测试(QuickSort)
- Android新手入门2016(16)--画图
- 搭车系统 use端
- 设计模式C C++
- MyBatis中关于一对多情况
- 学习java的一些感言!
- IDEA -- IntelliJ IDEA14 创建JavaWeb工程 配置Tomcat 部署 运行
- QImage Mat QPixmap转换
- android PullToRrefresh自定义下拉刷新动画
- 欢迎使用CSDN-markdown编辑器
- 没有一本书是先宏观介绍JAVA的