C++怎么实现车票管理系统
发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章主要介绍"C++怎么实现车票管理系统",在日常操作中,相信很多人在C++怎么实现车票管理系统问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"C++怎么实现车票管理
千家信息网最后更新 2025年01月18日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安全错误
数据库的锁怎样保障安全
美国服务器制裁
著名的网络安全时间
数据库定时任务启动
网络安全分析简答题
数据库打断设计
简幻欢服务器导出地图
掌阅科技数字化图书互联网
数据库管理系统两层映像功能
迪科数金的软件开发怎么样
服务器从哪找
美信网络安全绘画
女孩能学计算机网络技术吗
河北网络技术分类设计
Oracle数据库嵌套模型
厦门软件开发群
神无月服务器
50个全球免费电子数据库
数据库目录的学科是
乐陵软件开发生产商
电网网络安全系统
数据库与数据仓
无当地密码能连接服务器吗
珠海安卓软件开发价格
武汉大学网络安全学院院长赵波
软件开发成功的典型案例
局域网流媒体服务器解决方案
星外安装服务器安全吗
数字文旅数据库
迁移svn服务器
数据库线程安全问题