c语言课程设计-汽车售票系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
case 2:ReTick();return;
case 3:Show();return;
case 4:SaveTxt();return;
case 5:History();return;
case 6:About();return;
case 0:exit(0);return;
}
void BuyTick()
{
//得到当前时间
t=time(0);
date=localtime(&t);
printf("当前时间 %02d:%02d\n\n",date->tm_hour,date->tm_min);
printf("您可以购买以下车次票:\n");
printf(" %2d\t %02d:%02d%10d%10d\n",i+1,bus[i].hour,bus[i].min,bus[i].max,bus[i].seat);
j++;
sign[i]=i;
}
printf("━━━━━━━━━━━━━━━━━━━\n");
itoa(a,filename,10);strcat(filename,"-");
itoa(b,temp,10);strcat(filename,temp);strcat(filename,"-");
itoa(c,temp,10);strcat(filename,temp);
//开始写入数据
fp=fopen(filename,"w");
for(int i=0;i<5;i++)
fwrite(&us[i],sizeof(struct BusTicket),1,fp);
fclose(fp);
return;
printf(" %2d\t %02d:%02d%10d%10d\n",i+1,bus[i].hour,bus[i].min,bus[i].max,bus[i].seat);
if(j==0) //如果剩票的情况
{
system("cls");
printf("\n\n今天已经没有车了,明天再买吧!\n\n");
system("pause");
return;
void Save()
{
//用日期作为文件名
t=time(0);
date=localtime(&t);
int a=date->tm_year+1900,b=date->tm_mon+1,c=date->tm_mday;
char filename[10],temp[3];
{
system("cls");
BuyTick();
return;
}
if(num==0) return;
num--;
if(num==5||num!=sign[0]&&num!=sign[1]&&num!=sign[2]&&num!=sign[3]&&num!=sign[4])
itoa(c,temp,10);strcat(filename,temp);
//读取数据;若文件不存在,新建数据文件
if((fp=fopen(filename,"r"))==NULL)
{
Init();
fp=fopen(filename,"w");
default:return;
}
}
void ShowTime()
{
t=time(0);
date=localtime(&t);
printf("当前时间 %02d:%02d",date->tm_hour,date->tm_min);
}
//防止系统异常退出造成数据丢失
system("pause");
return;
}
void ReTick()
{
//获取当前时间
t=time(0);
date=localtime(&t);
//用时间来判断哪些车可以退票
printf("当前时间 %02d:%02d\n\n",date->tm_hour,date->tm_min);
return 0;
}
void Init()
{
//初始化每辆车的数据
bus[0].hour=6,bus[0].min=40,bus[0].max=50;
bus[1].hour=9,bus[1].min=30,bus[1].max=40;
bus[2].hour=12,bus[2].min=0,bus[2].max=40;
void History(); //可以
void About(); //关于
void Init(); //在没有文件时初始化结构体数组
//结构体管理五辆车
struct BusTicket
{
int seat; //已售票数
int max; //最大座位数
}
printf("\n输入您需要的班次,按0则返回上级菜单");
printf("\n\n请选择:");
int num;
do{
scanf("%d",&num);
if(getchar()!='\n')
for(int i=0;i<5;i++)
{
//由时间和已售票数来确定余车票情况
if(bus[i].hour*60+bus[i].min<date->tm_hour*60+date->tm_min) continue;
if(bus[i].seat==bus[i].max) continue;
int ch;
scanf("%d",&ch);
if(getchar()!='\n')
return;
system("cls"); //清屏
//使用switch进入相应的功能模块
switch(ch)
{
case 1:BuyTick();return;
for(int n=0;n<5;sign[n]=5,n++);
for(int i=0;i<5;i++)
{
if(bus[i].hour*60+bus[i].min<date->tm_hour*60+date->tm_min) continue;
if(bus[i].seat==0) continue;
}
else
for(i=0;i<5;i++)
fread(&bus[i],sizeof(struct BusTicket),1,fp);
fclose(fp);
//进入用户界面 无限循环直到exit(0)结束程序
while(true) UI();
printf("您不能购买此班次票 \n请重新选择:");
else break;
}while(1);
printf("您已购买班次%d汽车票\n\n",num+1);
bus[num].seat++; //把该班次车已售票数加一
Save(); //把数据保存到文件
///汽车售票系统
///第3次修改
#include "windows.h"
#include "stdio.h"
#include "stdlib.h"
#include "time.h"
#include "string.h"
//关于所有函数的声明
void UI(); //用户主界面
printf("┃ 4.保存当前数据为txt日志\n");
printf("┃ 5.查询历史记录\n");
printf("┃ 6.关于\n");
printf("┃ 0.退出\n");
printf("┗━━━━━━━━━━━━━┛\n");
printf("请输入您的选择: ");
int a=date->tm_year+1900,b=date->tm_mon+1,c=date->tm_mday;
char filename[10];char temp[3];
itoa(a,filename,10);strcat(filename,"-");
itoa(b,temp,10);strcat(filename,temp);strcat(filename,"-");
ShowTime();
printf("\n您好,欢迎使用本系统\n");
printf("┏━━━━━━━━━━━━━┓\n");
printf("┃ 1.售票\n");
printf("┃ 2.退票\n");
printf("┃ 3.显示当前售票情况\n");
printf("正在进入系统,请稍等");
int i;
for(i=0;i<5;i++)
{
printf(".");
Sleep(200);
}
//确定filename名称,用日期作为标志方便History()函数
t=time(0);
date=localtime(&t);
bus[3].hour=16,bus[3].min=30,bus[3].max=40;
bus[4].hour=20,bus[4].min=0,bus[4].max=50;
return;
}
void UI()
{
system("cls");
printf(" 汽车售票系统(火车站--->植物园)\n\n");
printf("现在只有以下车次才能退票:\n");
printf("━━━━━━━━━━━━━━━━━━━\n");
printf("班次 发车时间 载客量 已售票数\n");
int j=0,sign[5]; //同样用a和j作为标志
int hour;
int min; //时间
}bus[5];
//全局变量
time_t t; //时间
FILE*fp; //文件指针
struct tm *date; //本地时间
int main()
{
system("title 汽车售票系统 V0.9Beta build0250"); //改变窗口标题
printf("━━━━━━━━━━━━━━━━━━━\n");
printf("班次 发车时间 载客量 已售票数\n");
int j=0,sign[5]; //数组sign是用来记录哪几辆车还有剩票 用j作为是否有剩票的标志
for(int n=0;n<5;sign[n]=5,n++);
void ShowTime(); //显示时间
void Show(); //显示当前售票情况
void BuyTick(); //买票函数
void ReTick(); //退票函数
void Save(); //保存数据到文件中,以防止信息丢失
void SaveTxt(); //保存成日志文件
相关文档
最新文档