C语言的火车票管理系统.docx
- 文档编号:12700572
- 上传时间:2023-04-21
- 格式:DOCX
- 页数:20
- 大小:18.42KB
C语言的火车票管理系统.docx
《C语言的火车票管理系统.docx》由会员分享,可在线阅读,更多相关《C语言的火车票管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
C语言的火车票管理系统
#include
#include
#include
#include
#include
#defineN1000
typedefstructTICKET//定义新结构体TICKET
{
charnum[10];//车次
charhour[3];
charmin[3];
charfrom[10];
charto[10];
floathours;
intmax;//车载容量
intnow;//已售票数
}CLASS;
intclass_num=0;
CLASSrecords[N];
intsystem_time();
voidmessage();
voidShowTable1();
voidShowTable2(inti);
voidDisplay();
voidadd();
voidsave();
voidload();//按班次查询
voidsearch();//查询
voidchange();//修改
voidquit();//退出
voidbuyticket();//售票
voiddeleteticket();//取消
intmenu_select();//菜单
intwhether(int);//判断购买时间
voidfind(chars1[],chars2[]);//按起点终点查询
voiddeletemessage();//删除
intfindnum(chars1[]);//班次查询
voidget(int,int);//修改及增加班次
char*menu[]={"欢迎使用车票查询系统",
"\n*******************菜单***********************",
"\n1.录入班次",
"\n2.浏览班次信息",
"\n3.查询路线",
"\n4.增加班次",
"\n5.售票",
"\n6.退票",
"\n7.修改班次",
"\n8.删除班次",
"\n9.退出"};
intmain()
{
system("cls");
while
(1)
{
switch(menu_select())//菜单
{
case1:
message();break;
case2:
Display();break;
case3:
search();break;
case4:
add();break;
case5:
buyticket();break;
case6:
deleteticket();break;
case7:
change();break;
case8:
deletemessage();break;
case9:
quit();break;
}
}
}
intmenu_select()//菜单
{
chars[5];
intc,i;
system("cls");
for(i=0;i<11;i++)
{
printf("%s",menu[i]);//输出菜单
}
i=0;
while(c<0||c>9)
{
printf("\n");
printf("\n请输入选项(1-9):
");
scanf("%s",s);
c=atoi(s);
}//输出菜单
returnc;
}
voidmessage()//录入
{
inti=0,j=5,h;
chars[5];
FILE*fp;//定义文件型指针变量
system("cls");//刷屏
if((fp=fopen("d:
车票管理系统0.dat","rb"))!
=NULL)//fopen打开文件
{
printf("增加信息\n");
printf("请输入任意键返回\n");
scanf("%s",s);
i=1;
}
if(i==0)
{
system("cls");//刷屏
printf("请输入班次总数:
\n");
scanf("%d",&class_num);//指向班次指针
system("cls");//刷屏
for(i=0;i { system("cls");//刷屏 printf("请输入%d班次信息: \n",i+1); h=-1; for(;h! =i;)///循环输出 { printf("请输入班次: \n"); scanf("%s",records[i].num); for(h=0;h if(strcmp(records[h].num,records[i].num)==0) { printf("该班次已存在\n"); break; } } get(i,j);//修改及增加班次 j=5; } save();//调用保存函数 } } /*******************************显示所有函数********************************/ voidDisplay()//显示所有函数 { inti,j; system("cls");//刷屏 load();//按班次查询 ShowTable1(); for(i=0,j=0;i { 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); printf("\n按任意键继续\n"); getch(); } voidShowTable1() { inti=2; system("cls");//刷屏 printf("班次信息\n"); printf("\n|----------|----------|----------|----------|--------|--------|--------|\n"); printf("\n|班次|发车时间|起点站|终点站|行车时间|额定载量|已售票|\n"); } voidShowTable2(inti) { printf("\n|----------|----------|----------|----------|--------|--------|--------|\n"); } voidsearch()//查询班次 { inti; chars1[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) { case1: printf("请输入要查询的班次: \n"); scanf("%s",s1); find(s1,s2); break; case2: printf("请输入要查询终点站: \n"); scanf("%s",s2); find(s1,s2); break; case3: break; default: printf("输入错误! \n"); break; } printf("按任意键继续\n"); getch(); } voidfind(chars1[],chars2[]) { inti,h=0,m; ShowTable1(); if(s2[0]=='\0') m=1; elsem=0; for(i=0;i if(strcmp(s1,records[i].num)==0||strcmp(s2,records[i].to)==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; if(m==1) break; } ShowTable2(h); if(h==0) printf("查找的班次不存在\n"); } voidadd() { inti,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=0;i if(strcmp(records[class_num].num,records[i].num)==0) { printf("输入错误\n"); getch(); break; } if(i==class_num) { get(i,j); class_num++; save(); } } } voidbuyticket() { inti; charnum[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=0;i if(strcmp(num,records[i].num)==0) if(records[i].max>records[i].now&&whether(i)==1) { records[i].now++; printf("通向%s班次为%s的票订票成功\n",records[i].to,records[i].num); save(); getch(); break; } else { printf("该班次已满或已发出! \n"); getch(); } } } voiddeleteticket() { inti; charnum[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("是否确认"); scanf("%s",num); if(num[0]=='y'||num[0]=='Y') { records[i].now--; printf("退票成功\n"); save(); getch(); } } else { printf("该班车已发出,无法退票\n"); getch(); } if(i==class_num) {printf("输入错误\n"); getch(); } } } voidchange() { charnum[10],s[10]; inth=0,j=13,i; load(); system("cls"); printf("请输入要修改的班次: \n"); scanf("%s",num); i=findnum(num); if(i==class_num) { printf("输入错误\n"); getch(); } else { printf("确认修改\n"); scanf("%s",s); if(s[0]=='y'||s[0]=='Y') { get(i,j); save(); } } } voiddeletemessage() { inti,h=0; charnum[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("是否确认\n"); scanf("%s",num); if(num[0]=='y'||num[0]=='Y') { for(;i records[i]=records[i+1]; class_num--; save(); printf("删除成功\n"); getch(); } } } } intfindnum(chars1[]) { inti,h=0; ShowTable1(); for(i=0;i { if(strcmp(s1,records[i].num)==0) { 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; break; } } ShowTable2(h); returni; } voidsave() { 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); } voidload() { 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); } voidquit() { chars[5]; printf("确认退出\n"); scanf("%s",s); if(s[0]=='y'||s[0]=='Y') exit(0); } voidget(inti,intj) { for(;;) { printf("请输入发车时间(xxxx)");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(); } } } intwhether(inti) { structtm*local; time_tt; t=time(NULL);//NULL在stdio.h中定义为0 local=localtime(&t);/////获取当前系统时间 if(local->tm_hour //atoi将字符串转换成一个整数值 return1; else return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 火车票 管理 系统