C语言课设车票管理系统(大作业)

这是一个用C语言编写的车票管理系统,具备录入班次信息、浏览班次、按班次号和终点站查询、售票与退票等功能。系统使用结构体存储车次数据,并检查时间、载量等条件来执行售票和退票操作。用户友好的交互界面提供了清晰的操作流程。
摘要由CSDN通过智能技术生成
			  C语言课程设计(大作业)(车票管理系统)

一、项目简介

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

二、任务概述

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

三、功能展示

在这里插入图片描述

在这里插入图片描述在这里插入图片描述在这里插入图片描述

四、思维导图

在这里插入图片描述

五、程序源码

#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();
}

如若不可用评论区回复(山无陵天地合都要点个赞。)

  • 108
    点赞
  • 352
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 31
    评论
资源包含任务书以及说明书还有项目源码 设计要求: (1) 只能使用C语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 写出课程设计报告,具体要求见相关说明文档 功能要求: 一车站每天有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)查询路线:可按班次号查询,,可按终点站查询 设计要求: (1) 只能使用C语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 写出课程设计报告,具体要求见相关说明文档 功能要求: 一车站每天有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:退票时,输入退票的班次,当本班车未发出时才能退票,自动更新已售票人数
MFC(Microsoft Foundation Classes)是微软公司提供的一个用于构建Windows应用程序的C++库。MFC提供了一系列类,这些类封装了Windows API的许多功能,使得开发者可以更加容易地创建Windows风格的图形用户界面(GUI)。 一个MFC车票管理系统通常是一个基于Windows平台的应用程序,使用MFC框架来实现。这样的系统可以包含多种功能,比如车票查询、预订、购买、打印、退票和管理等。以下是一些该系统可能包含的典型特点和功能: 1. 用户界面:通过MFC创建的窗口,菜单栏,按钮,列表视图,编辑框等控件,提供直观的用户交互界面。 2. 数据管理:系统需要连接到数据库,比如SQLite或者SQL Server,来存储车次信息、车票信息、用户信息等数据。 3. 车票查询:用户可以输入车次、出发地、目的地和日期等条件,系统根据这些条件查询数据库并显示符合条件的车票信息。 4. 车票预订和购买:用户可以选择需要的车票,系统处理支付流程,并在购买成功后提供电子车票。 5. 打印功能:用户可以打印自己的车票信息,以便于乘车时使用。 6. 用户管理:对于不同级别的用户(如管理员和普通用户),系统会提供相应的权限管理。 7. 日志记录:系统会记录用户的操作日志,便于后续的查询和审计。 8. 安全性:系统会采取措施保护数据安全,防止未授权访问和数据泄露。
评论 31
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kui954

感谢各位的支持o(* ̄3 ̄)o

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值