概述
*/
fclose(fp);
}
else
{
fclose(fp);
}
return;
}
//保存班次信息
void writecardbasefile()
{
int i;
FILE *fp;
if ((fp=fopen("./number.dat","w"))==NULL)
{
printf("系统错误");
}
char buff[10]={0};
strcpy(buff," ");
for (i=0;i
{
if (fwrite(&cBList[i],sizeof(CardBase),1,fp)!=1)
{
printf("系统错误");
}
if (fwrite(buff,2,1,fp)!=1)
{
printf("系统错误");
}
}
fclose(fp);
}
//保存排序信息
void writesortfile()
{
int i;
FILE *fp;
if ((fp=fopen("./sort.dat","w"))==NULL)
{
printf("系统错误");
}
char buff[10]={0};
strcpy(buff," ");
for (i=0;i
{
if (fwrite(&cBList[i],sizeof(CardBase),1,fp)!=1)
{
printf("系统错误");
}
if (fwrite(buff,2,1,fp)!=1)
{
printf("系统错误");
}
}
fclose(fp);
}
//打印并输入后返回
void printReturn(char *info)
{
printf(" %s",info);
fflush(stdin);//清空输入缓冲区,通常是为了确保不影响后面的数据读取.
getchar();
}
//输入信息
void setInfo(char pinfo[1024],char desinfo[])
{
printf(" %s:",pinfo);
fflush(stdin);
scanf("%s",desinfo);
}
//系统初始化
void initsystem()
{
readcardbasefile();
};
//录入班次
void infoinput()
{
setInfo("班次",cBList[cbNum].C_ID);
setInfo("发车时间(24小时制)",cBList[cbNum].C_TIME);
setInfo("起点站",cBList[cbNum].C_ANAME);
setInfo("终点站",cBList[cbNum].C_BNAME);
setInfo("行车时间",cBList[cbNum].C_USETIME);
setInfo("额定载量",cBList[cbNum].C_MAXNUM);
setInfo("余票数量",cBList[cbNum].C_REMAINNUM);
cbNum++;
writecardbasefile();
printReturn(" 录入成功,回车键返回");
};
//时间比较
int timecmp(char A[10])
{
//将火车时间转成整数
char tempa[10]={0};
int ta=0;
int i;
for(i=0;i
if(A[i]!=':'&&A[i]!=':')//冒号的中文输入和英文输入
{
tempa[ta]=A[i];
ta++;
}
int atime=atoi(tempa);//把字符串变成整型
//获取系统时间
char tempb[10]={0};
time_t t =time(0);
strftime( tempb, 10,"%H%M",localtime(&t) );
int btime=atoi(tempb);
//比较
if(atime<=btime)//已经发车
return 1;
if(((atime-btime<=30)&&(atime-btime>5)&&(atime/100==btime/100))||(((atime0+(60-btime0))<=30)&&(atime0+(60-btime0))>5&&(atime/100-btime/100==1)))//距发车半小时以内,停止退票,%表示取余
return 2;
if(((atime-btime<=5)&&(atime/100==btime/100))||((atime0+(60-btime0)&&(atime/100-btime/100==1))<=5))//距发车前五分钟内停止检票
return 3;
return 0;//可以办理购退票
}
//浏览所有班次
void queryallinfo()
{
printf("班次信息 ");
printf("班次 发车时间 起点站 终点站 行车时间 额定载量 余票数量 状态 ");
int i;
for(i=0;i
{
char temp[20]={0};
strcpy(temp,"未发车");
if(1==timecmp(cBList[i].C_TIME))
strcpy(temp,"已发车");
if(2==timecmp(cBList[i].C_TIME))
strcpy(temp,"停止退票");
if(3==timecmp(cBList[i].C_TIME))
strcpy(temp,"停止检票");
printf("%-010s%-010s%-010s%-010s%-010s%-010s%-010s%s ",
cBList[i].C_ID,cBList[i].C_TIME,
cBList[i].C_ANAME,cBList[i].C_BNAME,cBList[i].C_USETIME,
cBList[i].C_MAXNUM,cBList[i].C_REMAINNUM,temp );
}
printReturn(" 回车键返回");
};
//通过班次号查路线
void queryinfobyID()
{
char ID[20]={0};
setInfo("输入班次号",ID);
int i;
for( i=0;i
{
if(strcmp(cBList[i].C_ID,ID)==0)
{
printf("班次信息 ");
printf("班次 发车时间 起点站 终点站 行车时间 额定载量 余票数量 ");
printf("%-010s%-010s%-010s%-010s%-010s%-010s%-010s ",
cBList[i].C_ID,cBList[i].C_TIME,
cBList[i].C_ANAME,cBList[i].C_BNAME,cBList[i].C_USETIME,
cBList[i].C_MAXNUM,cBList[i].C_REMAINNUM );
printReturn(" 回车键返回");
return;
}
}
printReturn(" 指定信息不存在,回车键返回");
};
//通过终点站查路线
void queryinfobyBNAME()
{
char Name[20]={0};
setInfo("输入终点站",Name);
int i;
for(i=0;i
{
if(strcmp(cBList[i].C_BNAME,Name)==0)
{
printf("班次信息 ");
printf("班次 发车时间 起点站 终点站 行车时间 额定载量 余票数量 ");
printf("%-010s%-010s%-010s%-010s%-010s%-010s%-010s ",
cBList[i].C_ID,cBList[i].C_TIME,
cBList[i].C_ANAME,cBList[i].C_BNAME,cBList[i].C_USETIME,
cBList[i].C_MAXNUM,cBList[i].C_REMAINNUM );
printReturn(" 回车键返回");
return;
}
}
printReturn(" 指定信息不存在,回车键返回");
};
//排序按余票数量排序保存
void sortSave()
{
//冒泡排序
int i,j;
for(i=0;i
for(j=0;j
{
if(atoi(cBList[j].C_REMAINNUM)
{
CardBase temp=cBList[j];
cBList[j]=cBList[j+1];
cBList[j+1]=temp;
}
}
//打印排序结果
queryallinfo();
//保存排序结果
writesortfile();
};
//售票
void sale()
{
char ID[20]={0};
setInfo("输入班次号",ID);
int i;
for(i=0;i
{
if(strcmp(cBList[i].C_ID,ID)==0)
{
if(cBList[i].C_REMAINNUM==0)
{
printReturn(" 余票不足,回车返回");
return;
}
//余票减少
int temp=atoi(cBList[i].C_REMAINNUM)-1;
if(temp<0) temp=0;//确保余票不为负数
_itoa(temp,cBList[i].C_REMAINNUM,10);
//保存到文件
writecardbasefile();
printf("班次信息 ");
printf("班次 发车时间 起点站 终点站 行车时间 额定载量 余票数量 ");
printf("%-010s%-010s%-010s%-010s%-010s%-010s%-010s ",
cBList[i].C_ID,cBList[i].C_TIME,
cBList[i].C_ANAME,cBList[i].C_BNAME,cBList[i].C_USETIME,
cBList[i].C_MAXNUM,cBList[i].C_REMAINNUM );
printReturn(" 售票成功,回车返回");
return;
}
}
printReturn(" 指定班次不存在,回车键返回");
};
//退票
void back()
{
char ID[20]={0};
setInfo("输入班次号",ID);
int i;
for(i=0;i
{
if(strcmp(cBList[i].C_ID,ID)==0)
{
//余票增加
int temp=atoi(cBList[i].C_REMAINNUM)+1;
_itoa(temp,cBList[i].C_REMAINNUM,10);
//保存到文件
writecardbasefile();
printf("班次信息 ");
printf("班次 发车时间 起点站 终点站 行车时间 额定载量 余票数量 ");
printf("%-010s%-010s%-010s%-010s%-010s%-010s%-010s ",
cBList[i].C_ID,cBList[i].C_TIME,
cBList[i].C_ANAME,cBList[i].C_BNAME,cBList[i].C_USETIME,
cBList[i].C_MAXNUM,cBList[i].C_REMAINNUM );
printReturn(" 退票成功,回车返回");
return;
}
}
printReturn(" 指定班次不存在,回车键返回");
};
//更新车次信息
void update()
{
int flag;
char ID[20]={0};
setInfo("请输入要删除或修改的车次(请确认车次输入正确)",ID);
do
{
printf(" 按下列提示更新车次信息(退出修改请按0):");
printf(" 1:删除车次;2:修改发车时间;3:修改起点站;4:修改终点站;");
printf(" 5:修改行车时间;6:修改额定载量;7:修改余票数量;0:退出修改;");
printf(" 请选择:");
scanf("%d",&flag);
int i;
CardBase temp;
for(i=0;i
{
if(strcmp(cBList[i].C_ID,ID)==0)
{
if(flag==1)//删除车次信息
{
int j;
for(j=i;j
cBList[j]=cBList[j+1];//后面的数据覆盖前面的数据
cbNum--;//车次数减一
//保存到文件
writecardbasefile();
}
if(flag==2)//修改发车时间
{
setInfo("请输入新的发车时间",cBList[i].C_TIME);
temp=cBList[i];
//保存到文件
writecardbasefile();
}
if(flag==3)//修改起点站
{
setInfo("请输入新的起点站",cBList[i].C_ANAME);
temp=cBList[i];
//保存到文件
writecardbasefile();
}
if(flag==4)//修改终点站
{
setInfo("请输入新的终点站",cBList[i].C_BNAME);
temp=cBList[i];
//保存到文件
writecardbasefile();
}
if(flag==5)//修改行车时间
{
setInfo("请输入新的行车时间",cBList[i].C_USETIME);
temp=cBList[i];
//保存到文件
writecardbasefile();
}
if(flag==6)//修改额定载量
{
setInfo("请输入新的额定载量",cBList[i].C_MAXNUM);
temp=cBList[i];
//保存到文件
writecardbasefile();
}
if(flag==7)//修改余票数量
{
setInfo("请输入新的余票数量",cBList[i].C_REMAINNUM);
temp=cBList[i];
//保存到文件
writecardbasefile();
}
}
}
//更改完成后显示更新后的班次信息,如果是删除车次则不显示,即flag不等于0的时候显示更新信息
if(flag!=1&&flag!=0)
{printf("更新后的班次信息 ");
printf("班次 发车时间 起点站 终点站 行车时间 额定载量 余票数量 ");
printf("%-010s%-010s%-010s%-010s%-010s%-010s%-010s ",
temp.C_ID,temp.C_TIME,
temp.C_ANAME,temp.C_BNAME,temp.C_USETIME,
temp.C_MAXNUM,temp.C_REMAINNUM );
}
}while(flag);
printReturn(" 完成车次信息更新,回车键返回");
};
void mainmenu()
{
while(1)
{
char select;
do{
system("cls");//清屏
printf(" ╭═════════■□■□═══╮");
printf(" │ 火车班次系统 │");
printf(" ╰═══■□■□══════════╯");
printf(" ┌────────────────┐");
printf(" │1.录入班次 │");
printf(" │2.浏览所有班次 │");
printf(" │3.通过班次号查路线 │");
printf(" │4.通过终点站查路线 │");
printf(" │5.排序保存 │");
printf(" │6.售票 │");
printf(" │7.退票 │");
printf(" │8.更新车次信息 │");
printf(" │0.退出登录 │");
printf(" └────────────────┘");
printf(" 请选择:");
fflush(stdin);//清空输入缓冲区,通常是为了确保不影响后面的数据读取.
select=getchar();//等待用户输入数据
}while (select'8');
switch(select)
{
case '0':exit(0);break;
case '1':infoinput();break;
case '2':queryallinfo();break;
case '3':queryinfobyID();break;
case '4':queryinfobyBNAME();break;
case '5':sortSave();break;
case '6':sale();break;
case '7':back();break;
case '8':update();break;
}
}
}
//主函数
int main()
{
initsystem();//系统初始化
while(1)
{
mainmenu();
}
}
最后
以上就是懦弱月饼为你收集整理的c语言付款功能代码_C语言 实现简单功能的12306火车售票系统【附源码】的全部内容,希望文章能够帮你解决c语言付款功能代码_C语言 实现简单功能的12306火车售票系统【附源码】所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复