C++怎么实现车票管理系统
发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,这篇文章主要介绍"C++怎么实现车票管理系统",在日常操作中,相信很多人在C++怎么实现车票管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++怎么实现车票管理
千家信息网最后更新 2024年09月22日C++怎么实现车票管理系统
这篇文章主要介绍"C++怎么实现车票管理系统",在日常操作中,相信很多人在C++怎么实现车票管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++怎么实现车票管理系统"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
一车站每天有n个发车班次,每个班次都有一班次号(1、2、3…n),固定的发车时间,
固定的路线(起始站、终点站),大致的行车时间,固定的额定载客量。如
班次 发车时间 起点站 终点站 行车时间 额定载量 已定票人数
1 8:00 郫县 广汉 2 45 30
2 6:30 郫县 成都 0.5 40 40
3 7:00 郫县 成都 0.5 40 20
4 10:00 郫县 成都 0.5 40 2
…
功能要求:
(1)录入班次信息(信息用文件保存),可不定时地增加班次数据
(2)浏览班次信息,可显示出所有班次当前状总(如果当前系统时间超过了某班次的发车时间,则显示"此班已发出"的提示信息)。
(3)查询路线:可按班次号查询 ,可按终点站查询
(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
下面是 代码。
工具是VS2019、MySQL8.0
注意:请提前设置好VS 的环境,否则运行不出来。本人是个菜鸟,代码可能比较复杂比较low,轻喷。
#define _CRT_SECURE_NO_WARNINGS#include#include #include #include #include #include #include using namespace std;//包含附加依赖项,也可以在工程--属性里面设置//#pragma comment(lib,"wsock32.lib")//#pragma comment(lib,"libmysql.lib")MYSQL mysql; //mysql连接MYSQL_FIELD* fd; //字段列数组char field[32][32]; //存字段名二维数组MYSQL_RES* res; //这个结构代表返回行的一个查询结果集MYSQL_ROW column,row; //一个行数据的类型安全(type-safe)的表示,表示数据行的列char query[150]; //查询语句bool ConnectDatabase(); //函数声明void FreeConnect();bool read(); //查询1bool search(); //查询2bool input();bool piao();void mainmenu();bool readtest();int main(int argc, char** argv){ int m; int k = 1; ConnectDatabase(); mainmenu(); while(k==1) { printf("\n"); printf(" 请选择功能:"); cin >> m; switch (m) { case 1 :input(); break;//录入车票信息 case 2 :read(); break;//浏览车票信息 case 3 :search(); break;// 查询车票信息 case 4 :piao(); break;//售票和退票 case 5 : k = 0; break;//退出系统 } } FreeConnect(); system("pause"); return 0;}//连接数据库bool ConnectDatabase(){ //初始化mysql mysql_init(&mysql); //连接mysql,数据库 //返回false则连接失败,返回true则连接成功 if (!(mysql_real_connect(&mysql, "localhost", "root", "123456", "chepiao", 3306, NULL, 0))) //中间分别是主机,用户名,密码,数据库名,端口号,可以先写成参数再传进去 { printf("Error connecting to database:%s\n", mysql_error(&mysql)); return false; } else { printf("Connected success\n"); return true; }}void mainmenu(){ cout << "\n\n--------欢迎使用车票管理系统----------" << endl << endl; cout << "===========================================" << endl; cout << "||========================================||" << endl; cout << "|| 1.录入车票信息 ||" << endl; cout << "|| 2.浏览车票信息 ||" << endl; cout << "|| 3.查询车票信息 ||" << endl; cout << "|| 4.售票和退票 ||" << endl; cout << "|| 5.退出系统 ||" << endl; cout << "||========================================||" << endl; cout << "============================================" << endl;}//释放资源void FreeConnect(){ //释放资源 mysql_free_result(res); mysql_close(&mysql);}//数据库操作//其实所有的数据库操作都是先写个sql语句,然后用mysql_query(&mysql,query)来完成,包括创建数据库或表,增删改查bool readtest(){ struct tm* local; time_t t; t = time(NULL); sprintf(query, "select * from testTable"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 //返回0 查询成功,返回1查询失败 mysql_query(&mysql, query); //执行SQL语句 //获取结果集 if (!(res = mysql_store_result(&mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(&mysql)); return false; } local = localtime(&t);//获取当前系统时间 int num = local->tm_hour; int num1 = local->tm_min; char str1[25], str2[25]; sprintf(str1, "%d", num); sprintf(str2, "%d", num1); char a[5] = ":"; char s[1000]; int n; strcpy(s, str1); strcat(s, a); strcat(s, str2); cout << endl; //printf(" 当前系统时间为:s\t\n", s); //cout << endl; char* str_field[32]; //定义一个字符串数组存储字段信息 for (int i = 0; i < 8; i++) //在已知字段数量的情况下获取字段名 { str_field[i] = mysql_fetch_field(res)->name; } /*for (int i = 0; i < 8; i++) //打印字段 printf("s\t", str_field[i]); printf("\n");*/ while (column = mysql_fetch_row(res)) //在已知字段数量情况下,获取并打印下一行 { char test[1000]; char co[1000]; char abc[5] = "'"; int j = 0; strcpy(co, column[1]); while (co[j] != ':') { if ((co[j] > 47) && (co[j] < 58)) { test[j] = co[j]; j++; } } if (j == 2) n = (test[0] - '0') * 10 + (test[1] - '0'); else if (j == 1) n = (test[0] - '0'); if ((local->tm_hour) < n) { sprintf(query, "update testtable set 当前状况='此车未发出' where 发车时间='"); strcat(query, column[1]); strcat(query, abc); mysql_query(&mysql, query); } else { sprintf(query, "update testtable set 当前状况='此车已发出'where 发车时间='"); strcat(query, column[1]); strcat(query, abc); mysql_query(&mysql, query); } //打印获取的数据 printf("s\ts\ts\ts\ts\ts\ts\ts\n", column[0], column[1], column[2], column[3], column[4], column[5], column[6], column[7]); //column是列数组 } return true;}//浏览数据bool read(){ struct tm* local; time_t t; t = time(NULL); sprintf(query, "select * from testTable"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 //返回0 查询成功,返回1查询失败 mysql_query(&mysql, query); //执行SQL语句 //获取结果集 if (!(res = mysql_store_result(&mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(&mysql)); return false; } local = localtime(&t);//获取当前系统时间 int num = local->tm_hour; int num1 = local->tm_min; char str1[25], str2[25]; sprintf(str1, "%d", num); sprintf(str2, "%d", num1); char a[5] = ":"; char s[1000]; int n; strcpy(s, str1); strcat(s, a); strcat(s, str2); cout << endl; printf(" 当前系统时间为:s\t\n", s); cout << endl; char* str_field[32]; //定义一个字符串数组存储字段信息 for (int i = 0; i < 8; i++) //在已知字段数量的情况下获取字段名 { str_field[i] = mysql_fetch_field(res)->name; } for (int i = 0; i < 8; i++) //打印字段 printf("s\t", str_field[i]); printf("\n"); while (column = mysql_fetch_row(res)) //在已知字段数量情况下,获取并打印下一行 { char test[1000]; char co[1000]; char abc[5]="'"; int j = 0; strcpy(co, column[1]); while (co[j] != ':') { if ((co[j] > 47) && (co[j] < 58)) { test[j] = co[j]; j++; } } if (j == 2) n = (test[0] - '0') * 10 + (test[1] - '0'); else if (j == 1) n = (test[0] - '0'); if ((local->tm_hour ) > m; if (m == 1) { printf(" 请输入您要查询的班次号: "); cin >> n; sprintf(query, "select * from testtable where 班次='"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 strcat(query, n); strcat(query, abc); mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 mysql_query(&mysql, query); //执行SQL语句 //获取结果集 if (!(res = mysql_store_result(&mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(&mysql)); return false; } for (int i = 0; fd = mysql_fetch_field(res); i++) //获取字段名 strcpy(field[i], fd->name); int j = mysql_num_fields(res); // 获取列数 printf("\n"); for (int i = 0; i < j; i++) //打印字段 printf("s\t", field[i]); printf("\n"); while (column = mysql_fetch_row(res)) { printf("s\ts\ts\ts\ts\ts\ts\ts\n", column[0], column[1], column[2], column[3], column[4], column[5], column[6], column[7]); //column是列数组 } } else if (m == 2) { printf(" 请输入您要查询的终点站: "); cin >> s; sprintf(query, "select * from testTable where 终点站='"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 strcat(query, s); strcat(query, abc); mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 mysql_query(&mysql, query); //执行SQL语句 //获取结果集 if (!(res = mysql_store_result(&mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(&mysql)); return false; } for (int i = 0; fd = mysql_fetch_field(res); i++) //获取字段名 strcpy(field[i], fd->name); int j = mysql_num_fields(res); // 获取列数 printf("\n"); for (int i = 0; i < j; i++) //打印字段 printf("s\t", field[i]); printf("\n"); while (column = mysql_fetch_row(res)) { printf("s\ts\ts\ts\ts\ts\ts\ts\n", column[0], column[1], column[2], column[3], column[4], column[5], column[6], column[7]); //column是列数组 } } printf("\n"); printf(" 1 继续查询;2 返回主界面\n"); printf(" 请输入您的操作: "); cin >> y; if (y == 1) { search(); } else if (y == 2) { mainmenu(); } return true;}//录入数据bool input(){ sprintf(query, "insert into testtable values (6, '18:00', '青岛','济南',3,20,10,'NULL')"); //可以想办法实现手动在控制台手动输入指令 mysql_query(&mysql, query); //执行SQL语句 printf(" Insert success\n"); read(); return true; }//售票和退票bool piao(){ int y; int m,a,b; char n[5]; char k[5]; char abc[5] = "'"; char cc[100] = " where 班次='"; printf(" 请选择操作:1 售票;2 退票"); cout << endl; printf(" 请输入: "); cin >> m; if (m == 1)//售票 { printf(" 请输入您要购买的车票班次: "); cin >> k; sprintf(query, "select * from testtable where 班次='"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 strcat(query, k); strcat(query, abc); mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 mysql_query(&mysql, query); //执行SQL语句 //获取结果集 if (!(res = mysql_store_result(&mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(&mysql)); return false; } for (int i = 0; fd = mysql_fetch_field(res); i++) //获取字段名 strcpy(field[i], fd->name); int j = mysql_num_fields(res); // 获取列数 column = mysql_fetch_row(res); a = atoi(column[6]); b = atoi(column[5]); if ((a < b) && (!strcmp(column[7],"此车未发出"))) { printf("\n"); printf("售票成功\n"); printf("\n"); for (int i = 0; i < j; i++) //打印字段 printf("s\t", field[i]); printf("\n"); a = a + 1; itoa(a,column[6],10); sprintf(query, "update testtable set 已订票人数='"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 strcat(query, column[6]); strcat(query, abc); strcat(query, cc); strcat(query, k); strcat(query, abc); mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 mysql_query(&mysql, query); //执行SQL语句 printf("s\ts\ts\ts\ts\ts\ts\ts\n", column[0], column[1], column[2], column[3], column[4], column[5], column[6], column[7]); //column是列数组 } } else if (m == 2)//退票 { printf(" 请输入您要退订的车票班次: "); cin >> n; sprintf(query, "select * from testtable where 班次='"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 strcat(query, n); strcat(query, abc); mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 mysql_query(&mysql, query); //执行SQL语句 //获取结果集 if (!(res = mysql_store_result(&mysql))) //获得sql语句结束后返回的结果集 { printf("Couldn't get result from %s\n", mysql_error(&mysql)); return false; } for (int i = 0; fd = mysql_fetch_field(res); i++) //获取字段名 strcpy(field[i], fd->name); int j = mysql_num_fields(res); // 获取列数 column = mysql_fetch_row(res); a = atoi(column[6]); if (!strcmp(column[7], "此车未发出")) { printf("\n"); printf("退票成功\n"); printf("\n"); for (int i = 0; i < j; i++) //打印字段 printf("s\t", field[i]); printf("\n"); a = a - 1; itoa(a, column[6], 10); sprintf(query, "update testtable set 已订票人数='"); //执行查询语句,这里是查询所有,user是表名,不用加引号,用strcpy也可以 strcat(query, column[6]); strcat(query, abc); strcat(query, cc); strcat(query, n); strcat(query, abc); mysql_query(&mysql, "set names gbk"); //设置编码格式(SET NAMES GBK也行),否则cmd下中文乱码 mysql_query(&mysql, query); //执行SQL语句 printf("s\ts\ts\ts\ts\ts\ts\ts\n", column[0], column[1], column[2], column[3], column[4], column[5], column[6], column[7]); //column是列数组 } } printf("\n"); printf(" 1 继续售票/退票;2 返回主界面\n"); printf(" 请输入您的操作: "); cin >> y; if (y == 1) { piao(); } else if (y == 2) { mainmenu(); }}
到此,关于"C++怎么实现车票管理系统"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
查询
班次
语句
车票
信息
系统
时间
售票
结果
字段
数据
管理系统
管理
C++
不用
乱码
人数
引号
数组
格式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
日本主机服务器
ota服务器如何搭建
黄浦区咨询软件开发质量
西普莱固定架子服务器
下面关于数据 数据库
昆明软件开发零售价格
网络安全游戏课堂设计
php要下载什么数据库
宁波海曙区h3c应用优化服务器
数据库常用的sql命令
怎样屏蔽同一ip服务器
网络安全日宣传口号银行
互联网元气科技
diy 无线打印服务器
华三服务器远程登录配置
北京人人车网络技术有限公司
软件开发模型有多少
江苏机电软件开发价格优惠
第1车贷软件开发
数据库cpu利用率多少正常
网络安全的认识100字
千方百剂数据库地址
北京常规软件开发诚信合作
服务器设置来电自起
广州聚焦网络技术有限公司骗局
数据库中伪列
18年网络安全知识竞赛
奉化计算机软件开发外包
用友软件 数据库服务器
网络安全办公室设计在哪里