1.首先我们需要找到手机中的应用程序“铁路12306”,然后登录自己的铁路12306账号。
2.进入铁路12306的页面后,找到页面下方的“订单”,并点击它。
3.进入“订单”页面后,可以看见有关自己的各种订单信息,有“未完成”、“已支付”等选择。
4.如果已经购买了火车票,可以点击“已支付”,查看自己的已经购买的火车票订单的信息。
5.在“未出行订单”中,可以看见自己已经购买的火车票。
6.点击其中自己最近的未出行订单,然后就可以进入订单详情界面,能够看见乘车的车站以及取票号等信息。
7.也可以带着自己的身份z到火车站的售票窗口去查看自己的火车票信息。
8.当然也可以打电话给12306的客服,告诉客服自己的身份z号码,然后让客服为你查看火车票信息。
#include<stdio.h> ///宏定义函数#include<string.h> //串 *** 作及内存 *** 作函数
#include<stdlib.h>/////调用系统函数
#include<time.h> ///时间库函数
#include<conio.h>///输入输出函数
#define N 1000//宏定义多条记录
typedef struct TICKET////定义新结构体TICKET
{
char num[10] //车次编号
char hour[3] //时间,,小时
char min[3] //分钟
char from[10] //起始站
char to[10]//终点站
float hours //车程实际时间
int max //最大车载容量
int now //已售票数
}CLASS
int class_num=0 ///初始班次总数为0
CLASS records[N] // 多条记录
int system_time() //系统时间
void NewMessage()//新纪录*录入函数******
void ShowTable1()//线框调用1,,,不用没次输
void ShowTable2(int i)//线框调用2,,,不用没次输
void Display() //显示所有函数
void add()//增加记录
void save() // 保存函数
void load() // 按班次查询函数
void search() //查询函数
void change()//修改函数**
void quit() ////////// //退出函数******
void Ticketorder() ////*售票函数***
void Ticketdelete()//删除函数*
int menu_select()//菜单函数*
int whether(int) ////判断时间是否超出函数***
void find(char s1[],char s2[])//查询函数★//s1为班次//s2为终点站
void deletemessage() //删除函数
int findnum(char s1[]) //班次查询函数
void get(int,int)//修改及增加班次*
char *menu[]={"*****************欢迎使用车票查询系统*****************",
"\n*******************MENU功能菜单***********************",
"\n◤ ★1. 录入班次◥",
"\n◆ ★2. 显示所有班次◆",
"\n◆ ★3. 查询班次◆",
"\n◆ ★4. 增加班次◆",
"\n◆ ★5. 售票◆",
"\n◆ ★6. 退票◆",
"\n◆ ★7. 修改班次◆",
"\n◆ ★8. 删除班次◆",
"\n◣ ★9. 退出◢"}
/**************************主函数***************************/
void main()
{
system("cls") //刷屏
while(1)//菜单函数循环
{
switch(menu_select()) //菜单函数*
{
case 1: NewMessage()break////新纪录*录入函数******
case 2: Display()break // //显示
case 3: search()break //查找函数**
case 4: add()break // //增加记录
case 5: Ticketorder()break ////*售票函数***
case 6: Ticketdelete()break //删除函数*
case 7: change()break //修改函数**
case 8: deletemessage()break//////选择调用删除函数
case 9: quit()break //////退出函数******
}
}
}
/***********************菜单函数**************************/
int menu_select() /////////菜单函数*
{
char s[5] ///定义要输入的数字功能
int c,i
system("cls") //刷屏
system("color 09")//改变颜色
for(i=0i<11i++)
{
printf("%s",menu[i]) //输出菜单各项)
}
i=0
while(c<0||c>9) //判断是否是1到9的命令
{
printf("\n") ///输出换行
printf("******************************************************")
printf("\n请选择(1-9):▁▂▃▄▆▇")
scanf("%s",s)
c=atoi(s) //atoi将字符串转换成一个整数值
}///输出菜单面
return c ////返回请求
}
/*******************************录入函数************************************/
void NewMessage()//*录入函数******
{
int i=0,j=5,h ////
char s[5]
FILE *fp ////定义文件型指针变量
system("cls") //刷屏
if((fp=fopen("d:车票管理系统0.dat","rb"))!=NULL)//fopen打开文件
{
printf("车票信息已经存在请选择增加功能!\n")
printf("任意输入则返回菜单\n")
scanf("%s",s)
i=1 //通过是1
}
if(i==0)
{
system("cls") //刷屏
printf("请输入要录入班次总数:\n")
scanf("%d",&class_num) //指向班次指针
system("cls") //刷屏
for(i=0i<class_numi++)
{
system("cls") //刷屏
printf("请输入第%d个班次信息:\n",i+1)
h=-1
for(h!=i) ///循环输出
{
printf("请输入班次:\n")
scanf("%s",records[i].num)
for(h=0h<ih++)
if(strcmp(records[h].num,records[i].num)==0)
//判断字符串比较是否相等,, 待比较的字符串
{
printf("输入错误!该班次已存在!\n")
break ///返回
}
}
get(i,j) ////修改及增加班次*
j=5
}
save() //调用保存函数
}
}
/*******************************显示所有函数********************************/
void Display() //显示所有函数
{
int i,j
system("cls")//刷屏
load() // 调用按班次查询函数
ShowTable1() //线框调用1,,,不用没次输
for(i=0,j=0i<class_numi++,j+=2)/////按班次顺序输出
{
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")
if(whether(i)) //判断时间是否超出函数***
printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,
records[i].min, records[i].from,records[i].to,records[i].hours,
records[i].max,records[i].now)
else
printf("|%10s| 已发车 |%10s|%10s|%8.1f|%8d|%8d|",records[i].num,
records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now)
}
ShowTable2(j) //线框调用2
printf("\n按任意键继续....\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
}
/**********************************打印表头***********************************************/
void ShowTable1() //线框调用1,,,不用没次输
{
int i=2
system("cls")//刷屏
printf("**************************MESSAGE车程信息**********************************\n")
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")
printf("\n| 班次 | 发车时间 | 起点站 | 终点站 |行车时间|额定载量| 已售票 |\n")
}
/***************************************打印表尾************************************************/
void ShowTable2(int i) //线框调用2。不用没次输。
{
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")
}
/**************************查找函数11**************************/
void search() ////查询调用
{
int i
char s1[10]={'\0'},s2[10]={'\0'}
system("cls")//刷屏
printf("1. 按班次查询\n")
printf("2. 按终点站查询\n")
printf("3. 退出\n")
printf("请选择(1-3):\n")
scanf("%d",&i)
load() // 调用按班次查询函数
switch(i)//多分枝选择语句
{
case 1: printf("请输入要查询的班次:\n") //////s1为班次
scanf("%s",s1)
find(s1,s2) /////调用查找函数222 2
break
case 2: printf("请输入要查询终点站:\n") /////s2为终点站
scanf("%s",s2)
find(s1,s2)/////调用查找函数222 2
break
case 3: break
default : printf("输入错误!\n")
break
}
printf("按任意键继续....\n")
getch() ///从控制台读取一个字符,但不显示在屏幕上
}
/********************************查询函数22*********************************/
void find(char s1[],char s2[])
{
int i,h=0,m
ShowTable1()////调用线框1
if(s2[0]=='\0')
m=1 ///1为无条件执行
else m=0
for(i=0i<class_numi++)
if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==0)
////判断字符串比较是否相等,, 待比较的字符串
{
printf("\n|----------|----------|----------|----------|--------|--------|--------|\n")
printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,records[i].min,
records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now)
h+=2
if(m==1)
break
}
ShowTable2(h) ////调用线框2
if(h==0)
printf("要查找的班次不存在!\n")
}
/***********************增加函数****************************/
void add() // //增加记录
{
int i,j=5
load() // 调用按班次查询函数
system("cls")//刷屏
printf("1. 增加班次\n")
printf("2. 返回\n")
printf("请选择(1-2)\n")
scanf("%d",&i)
if(i==1)
{
system("cls")//刷屏
printf("1. 请输入要增加的班次:\n")
scanf("%s",records[class_num].num)
for(i=0i<class_numi++)
if(strcmp(records[class_num].num,records[i].num)==0)
//判断字符串比较是否相等,, 待比较的字符串 判断车次没重复
{
printf("输入错误!\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
break
}
if(i==class_num)
{
get(i,j) ////修改及增加班次*
class_num++ ///使班次数加1
save() //调用保存函数
}
}
}
/********************************售票函数*****************************/
void Ticketorder()//*售票函数***
{
int i
char num[10]
system("cls")//刷屏
printf("1. 售票\n")
printf("2. 返回\n")
printf("请选择(1-2):\n")
scanf("%d",&i)
if(i==1)
{
load() // 调用按班次查询函数
search() //查找函数**
printf("请输入要订票的班次(若无请输入0):\n")
scanf("%s",num)
for(i=0i<class_numi++)
if(strcmp(num,records[i].num)==0)//判断字符串比较是否相等,, 待比较的字符串
if(records[i].max>records[i].now&&whether(i)==1)
//判断时间是否超出函数***并且***没超出最大客量
{
records[i].now++ ///使已售的暑假1
printf("通向%s班次为%s的票订票成功!\n",records[i].to,records[i].num)
save()//调用保存函数
getch() /////从控制台读取一个字符,但不显示在屏幕上
break
}
else
{
printf("该班次已满或已发出!\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
}
}
}
/****************************退票删除函数***************************************/
void Ticketdelete() //删除函数*
{
int i
char num[10]
system("cls")//刷屏
printf("1. 退票\n")
printf("2. 返回\n")
printf("请选择(1-2)\n:")
scanf("%d",&i)
if(i==1)
{
system("cls")//刷屏
load() // 调用按班次查询函数
printf("请输入要退票的班次:\n")
scanf("%s",num)
i=findnum(num) //调用班次查询函数
if(strcmp(num,records[i].num)==0) //判断字符串比较是否相等 待比较的字符串
if(whether(i)) //判断时间是否超出函数***
{
printf("确定(Y/N)?")
scanf("%s",num)
if(num[0]=='y'||num[0]=='Y')
{
records[i].now-- //使已售票加1
printf("退票成功!\n")
save()//调用保存函数
getch() //从控制台读取一个字符,但不显示在屏幕上
}
}
else
{
printf("该班车已发出,无法退票!\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
}
if(i==class_num)
{ printf("输入错误!\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
}
}
}
/********************************修改函数*********************************/
void change() //修改函数**
{
char num[10],s[10]
int h=0,j=13,i
load() // 调用按班次查询函数
system("cls")//刷屏
printf("请输入要修改的班次:\n")
scanf("%s",num)
i=findnum(num) //调用班次查询函数
if(i==class_num)
{
printf("输入错误,无此班次!\n")
getch() ///从控制台读取一个字符,但不显示在屏幕上
}
else
{
printf("确定修改(Y/N)?\n")
scanf("%s",s)
if(s[0]=='y'||s[0]=='Y')
{
get(i,j) ////修改及增加班次*
save() //调用保存函数
}
}
}
/*******************************删除函数**********************************/
void deletemessage() //删除班次信息
{
int i,h=0
char num[10]
system("cls") //刷屏
printf("1. 删除班次\n")
printf("2. 返回\n")
printf("请选择(1-2):\n")
scanf("%d",&i)
if(i==1)
{
system("cls") //刷屏
printf("请输入要删除的班次:\n")
scanf("%s",num)
i=findnum(num) //调用班次查询函数
if(i==class_num)
{
printf("输入错误,无此班次!\n")
getch() ///从控制台读取一个字符,但不显示在屏幕上
}
else
{
printf("确定?(y/n)\n")
scanf("%s",num)
if(num[0]=='y'||num[0]=='Y')
{
for(i<class_num-1i++)
records[i]=records[i+1]
class_num-- ////班次总数减1
save() //调用保存函数
printf("删除成功!\n")
getch()
}
}
}
}
/****************************按班次查询函数****************************/
int findnum(char s1[]) //查找班次
{
int i,h=0
ShowTable1()//线框调用1,,,不用没次输
for(i=0i<class_numi++)
{
if(strcmp(s1,records[i].num)==0) //判断字符串比较是否相等,如果符合则输出车次等信息
{
printf("|----------|----------|----------|----------|--------|--------|--------|\n")
printf("|%10s|%5s:%-4s|%10s|%10s|%8.1f|%8d|%8d|",records[i].num,records[i].hour,
records[i].min,records[i].from,records[i].to,records[i].hours,records[i].max,records[i].now)
h+=2 ///加2使输出的框架合适
break
}
}
ShowTable2(h) ///调用框架2
return i
}
/**************************************保存函数*******************************/
void save() //////保存函数
{
FILE *fp1,*fp2 //文件行指针
if((fp1=fopen("d:车票管理系统.dat","wb"))==NULL) //打开文件、为输出打开一个二进制文件
{
printf("文件打开错误!\n")
exit(0)
}
if((fp2=fopen("d:车票管理系统0.dat","wb"))==NULL) //打开文件、为输出打开一个二进制文件
{
printf("文件打开错误!\n")
exit(0)
}
fwrite(&class_num,sizeof(int),1,fp2) //写入文件信息
fwrite(records,sizeof(CLASS),class_num,fp1)
fclose(fp1)fclose(fp2) ///关闭文件
}
/*******************************按班次查询函数*******************************/
void load()//按班次查询函数
{
FILE *fp1,*fp2
if((fp1=fopen("d:车票管理系统.dat","rb"))==NULL)
{
system("cls") //刷屏
printf("文件打开错误!\n")
getch() ///从控制台读取一个字符,但不显示在屏幕上
exit(0)
}
if((fp2=fopen("d:车票管理系统0.dat","rb"))==NULL)
{
system("cls") //刷屏
printf("文件打开错误!\n")
getch() ///从控制台读取一个字符,但不显示在屏幕上
exit(0)//退出
}
fread(&class_num,sizeof(int),1,fp2) ///读入信息
fread(records,sizeof(CLASS),class_num,fp1)/////读入信息
fclose(fp1)fclose(fp2) ///文件关闭
}
/******************************退出函数***************************/
void quit()//退出函数******
{
char s[5]
printf("确认退出?(Y/N)\n")
scanf("%s",s)
if(s[0]=='y'||s[0]=='Y')
exit(0)//程序中止执行,返回调用过程..state 0-正常中止非0-非正常
}
/*************************修改及增加班次*******************************/
void get(int i,int j) // 修改及增加班次*
{
for()
{
printf("请输入发车时间(xx xx)")scanf("%s%s",records[i].hour,records[i].min)
if((atoi(records[i].hour)<24&&atoi(records[i].hour)>=0)&&(atoi(records[i].min)<60&&atoi(records[i].min)>=0))
break
else
{
printf("输入错误!\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
}
}
printf("请输入起点站:\n")
scanf("%s",records[i].from)
printf("请输入终点站:\n")
scanf("%s",records[i].to)
printf("请输入行车时间:\n")
scanf("%f",&records[i].hours)
printf("请输入额定载量:\n")
scanf("%d",&records[i].max)
for()
{
printf("请输入已售票数:\n")
scanf("%d",&records[i].now)
if(records[i].now<=records[i].max)
break
else
{
printf("输入错误!\n")
getch() /////从控制台读取一个字符,但不显示在屏幕上
}
}
}
/********************************判断时间是否超出函数**********************************/
int whether(int i) //判断时间是否超出函数***
{
struct tm *local //时间结构体
time_t t //把当前时间给t
t=time(NULL)//NULL在stdio.h中定义为0
local=localtime(&t) /////获取当前系统时间
if(local->tm_hour<atoi(records[i].hour)||local->tm_hour==atoi(records[i].hour)&&local->tm_min<atoi(records[i].min))
//atoi将字符串转换成一个整数值
return 1
else
return 0
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)