我是靠谱客的博主 懦弱月饼,最近开发中收集的这篇文章主要介绍c语言付款功能代码_C语言 实现简单功能的12306火车售票系统【附源码】,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

*/

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火车售票系统【附源码】所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(57)

评论列表共有 0 条评论

立即
投稿
返回
顶部