C语言如何实现车票管理系统

发布时间:2022-05-30 13:45:31 作者:iii
来源:亿速云 阅读:212

今天小编给大家分享一下C语言如何实现车票管理系统的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、项目简介

设计一个车票管理系统实现录入、查看班次信息,售票,退票等基本功能。设计中要求综合运用所学知识,上机解决一些与实际应用结合紧密的、规模较大的问题,通过分析、设计、编码、调试等各环节

二、任务概述

(1)录入班次信息(信息用文件保存),可不定时地增加班次数据
(2)浏览班次信息,可显示出所有班次当前状总。
(3)查询路线:可按班次号查询 ,可按终点站查询
(4)售票和退票功能
A:当查询出已定票人数小于额定载量且当前系统时间小于发车时间时才能售票,自动更新已售票人数
B:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
【数据结构】
本程序用到2个结构体,方便信息的录入,浏览,查询,订票与退票,等功能的实现。

三、功能展示

C语言如何实现车票管理系统

C语言如何实现车票管理系统

C语言如何实现车票管理系统

C语言如何实现车票管理系统

四、思维导图

C语言如何实现车票管理系统

五、程序源码

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <dos.h>
#include <conio.h>
#include <time.h>
#define FALSE 0 
#define TRUE 1
void mainmenu(void); //主菜单函数
void InputMessage(void);//输入信息函数
void ShowMessage(void);//显示信息函数
void SearchMessage(void);//查询信息函数
void searchbynumber();//根据班次号查询函数
void searchbyaddress();//根据终点站查询的函数
void TicketManagement(void);//选择订票/退票的函数
void TicketOrder();//订票实现函数
void TicketDelete();//退票实现函数
int FLAG;//标志
struct time//时间结构体
{
int hour;
int minutes;
};
struct ticket//车票的结构体
{
int carnumber;//车次
struct time setout;
char beginpoint[20];//起点站
char endpoint[20];//终点站
float lasttime;//行车时间
int fixnumber;//额定载量
int fixednumber;//已定票的人数
}car[4];
int main()
{int FLAG=FALSE;
do{mainmenu(); }while(FLAG=FALSE);
}
void mainmenu()
{char functioNnumber;
printf(" 车票管理系统\n\n");
printf("=============================================================\n"); printf(" 1.录入班次信息\t\n");
printf(" 2.浏览班次信息\t\n");
printf(" 3.查询行车路线\t\n");
printf(" 4.售票与退票系统\t\n");
printf(" 5.退出该系统\t\n");
printf("=============================================================\n"); printf("请选择你所需要的功能:");
scanf("%s",&functioNnumber);switch(functioNnumber)
{
case '1':
{system("cls");InputMessage();
printf("\n按任意键返回主菜单\n");
getchar();
getchar();
mainmenu();
};break;
case '2':{ system("cls");ShowMessage();
printf("\n按任意键返回主菜单\n");
getchar();
getchar();
mainmenu();
};break;
case '3':
{ system("cls");SearchMessage();
printf("\n按任意键返回主菜单\n");
getchar();
getchar();
mainmenu();
};break;
case '4':
{system("cls");TicketManagement();
printf("\n按任意键返回主菜单\n");
getchar();
getchar();
mainmenu();
};break;
case '5':FLAG=TRUE;
printf("*****************************感谢使用本系统***********************************************"); exit(0);
break;
default:
{
printf("对不起你的输入有误,请确保你的输入为1-5.\n"); printf("按任意键返回主菜单\n");
getchar();
getchar(); 
mainmenu();
};
};
FLAG=FALSE;
}
void InputMessage()
{int i;
for(i=0;i<4;i++)//一次录入四班车
{printf("请输入班次号:\n");
scanf("%d",&car[i].carnumber);
printf("请输入发车时间:\n");
scanf("%d %d",&car[i].setout.hour,&car[i].setout.minutes);
printf("请输入起点站:\n");
scanf("%s",car[i].beginpoint);
printf("请输入终点站:\n");
scanf("%s",car[i].endpoint);
printf("请输入行车时间:\n");
scanf("%f",&car[i].lasttime);
printf("请输入额定载量:\n");
scanf("%d",&car[i].fixnumber);
printf("请输入已定票人数:\n");
scanf("%d",&car[i].fixednumber);
}
for(i=0;i<4;i++)
{printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已订票人数\n"); printf("%d\t%d:%d\t",car[i].carnumber,car[i].setout.hour,car[i].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t\n",car[i].beginpoint,car[i].endpoint,car[i].lasttime,car[i].fixnumber,car[i].fixednumber);
}}
void ShowMessage()
{int i;
time_t tval;
struct tm*now;
tval=time(NULL);
now=localtime(&tval);for(i=0;i<4;i++)
{if((now->tm_hour==car[i].setout.hour&&now->tm_min<car[i].setout.minutes)||(now->tm_hour<car[i].setout.hour))
{printf("%d\t%d:%d\t",car[i].carnumber,car[i].setout.hour,car[i].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t\n",car[i].beginpoint,car[i].endpoint,car[i].lasttime,car[i].fixnumber,car[i].fixednumber);}
else {printf("此车已出发。\n");
printf("%d\t%d:%d\t",car[i].carnumber,car[i].setout.hour,car[i].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t\n",car[i].beginpoint,car[i].endpoint,car[i].lasttime,car[i].fixnumber,car[i].fixednumber);}
}}
void SearchMessage()
{char functionnumber;
printf("查询子菜单:\n");
printf("=========================================================================\n");
printf(" 1.按班次号查询\n");
printf(" 2.按终点站查询\n");
printf(" 3.返回主菜单\n");
printf("=========================================================================\n");
printf("请选择你需要的功能:");
scanf("%s",&functionnumber);
switch(functionnumber)
{
case '1':system("cls");searchbynumber();break;
case '2':system("cls");searchbyaddress();break;
case '3':system("cls");mainmenu();break;
default:printf("输入错误,请确保你的输入为1-3.\n");
printf("请按任意键返回查询子菜单\n");
getchar();
getchar();
SearchMessage();
}
}
void searchbynumber()
{int searchnumber;
int s;
printf("请输入你要查询的班次号:");
scanf("%d",&searchnumber);
if(searchnumber>=1&&searchnumber<=4)
{s=searchnumber-1;
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已订票人数\n");printf("%d\t%d:%d\t",car[s].carnumber,car[s].setout.hour,car[s].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t\n",car[s].beginpoint,car[s].endpoint,car[s].lasttime,car[s].fixnumber,car[s].fixednumber);}
else printf("对不起,没有这趟车.");
}
void searchbyaddress()
{int i;
char address[20];
printf("请输入终点站名:");
scanf("%s",address);
for(i=0;i<=4;i++)
if(strcmp(address,car[i].endpoint)==0)
{printf("%d\t%d:%d\t",car[i].carnumber,car[i].setout.hour,car[i].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t\n",car[i].beginpoint,car[i].endpoint,car[i].lasttime,car[i].fixnumber,car[i].fixednumber);
}
}
void TicketManagement()
{
char functionnumber;
printf("==========================================================================\n");
printf(" 1.订票.\n");
printf(" 2.退票.\n");
printf(" 3.返回主菜单.\n");
printf("==========================================================================\n");
printf("请选择你需要的功能:\n");
scanf("%s",&functionnumber);
switch(functionnumber)
{case '1':system("cls");
TicketOrder();break;
case '2':system("cls");
TicketDelete();
break;
case '3':system("cls");
{mainmenu();}break;
default:
{printf("输入错误,请确保你的输入为1--3.\n");
printf("按任意键返回子菜单.\n");
getchar();getchar();
TicketManagement();
}
}
}
void TicketOrder()
{int i;
int s;
printf("请输入要订购的车票的班次:\n");
scanf("%d",&i);
s=i-1;
if(s<0||s>3)
{printf("对不起,没有这趟车,请查询后再订票.\n");
printf("按任意键返回车票管理菜单。");
getchar();
getchar();
TicketManagement();
}
else
{
time_t tval;
struct tm*now;
tval=time(NULL);
now=localtime(&tval);
if((now->tm_hour==car[s].setout.hour&&now->tm_min<car[s].setout.minutes)||(now->tm_hour<car[s].setout.hour))
{if(car[s].fixednumber<car[s].fixnumber)
{car[s].fixednumber++;
printf("你的订票成功,请按时上车,谢谢使用!\n");
}else printf("对不起,今天的这趟车的票已卖完,请明天再来,谢谢合作!\n");
}else printf("对不起,今天的这趟车已出发,请明天再来,谢谢合作!\n");
}
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已订票人数\n");
printf("%d\t%d:%d\t",car[s].carnumber,car[s].setout.hour,car[s].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t",car[s].beginpoint,car[s].endpoint,car[s].lasttime,car[s].fixnumber,car[s].fixednumber);
printf("按任意键返回主菜单。\n");getchar();
getchar();
}
void TicketDelete()
{int i;
int s;
printf("请输入要退购的车票的班次:\n");
scanf("%d",&i);
s=i-1;
if(s<0||s>3)
{printf("对不起,没有这趟车,请查询后再退票.\n");
printf("按任意键返回车票管理菜单。");
getchar();
getchar();
TicketManagement();
}
else
{
time_t tval;
struct tm*now;
tval=time(NULL);
now=localtime(&tval);
if((now->tm_hour==car[s].setout.hour&&now->tm_min<car[s].setout.minutes)||(now->tm_hour<car[s].setout.hour))
{if(car[s].fixednumber<car[s].fixnumber)
{car[s].fixednumber--;
printf("退票成功,谢谢使用!\n");
}else printf("对不起,今天的这趟车的票尚未卖出,无法完成退票!\n");
}else printf("对不起,今天的这趟车已出发,无法完成退票!\n");
}
printf("班次\t发车时间\t起点\t终点\t行车时间(小时)\t额定载量\t已订票人数\n");
printf("%d\t%d:%d\t",car[s].carnumber,car[s].setout.hour,car[s].setout.minutes);
printf("%s\t%s\t%f\t%d\t%d\t",car[s].beginpoint,car[s].endpoint,car[s].lasttime,car[s].fixnumber,car[s].fixednumber);`在这里插入代码片`
printf("按任意键返回主菜单。\n");
getchar();
getchar();
}

以上就是“C语言如何实现车票管理系统”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注亿速云行业资讯频道。

推荐阅读:
  1. Python如何实现自动抢火车票
  2. C语言实现航班管理系统

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

c语言

上一篇:C++图的拓扑排序是什么

下一篇:Pandas对数值进行分箱操作的方法有哪些

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》