commit f5090aaae79bc560d90eccb738bef188201d3dea Author: tzlqq5201314 <2274732355@qq.com> Date: Tue Jan 8 15:33:25 2019 +0800 first commit diff --git a/CAR_num.txt b/CAR_num.txt new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/CAR_num.txt @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/function.h b/function.h new file mode 100644 index 0000000..f3ae831 --- /dev/null +++ b/function.h @@ -0,0 +1,432 @@ +/*菜单枚举 指针数组*/ +char *menu[10]={"********************************************欢迎使用车票查询系统********************************************\n", +"\n\t _____________________________________功能选项_____________________________________", +"\n\n\t\t\t\t 1. 录入班次信息 ","\t\t 2. 增加班次 ", +"\n\n\t\t\t\t 3. 查询路线 ","\t\t\t 4. 浏览班次信息 ", +"\n\n\t\t\t\t 5. 售票 ","\t\t\t 6. 退票 ", +"\n\n\t\t\t\t\t 0. 退出 ", +"\n\t __________________________________________________________________________________"}; + +/*菜单函数*/ +int menu_select(){ +char s[5]; //定义要输入的数字功能 +int c,i,f=0; +system("cls"); //清屏 +system("color F0"); //改变颜色(F为背景颜色为白色,0字体颜色为黑色) +for(i=0;i<10;i++){ +printf("%s",menu[i]); //输出菜单各项 +} +printf("\n\n\n请选择(0-6):"); +scanf("%d",&c); +return c; +} + + +/*函数声明*/ +void entry_bata(); //录入 +void add_bata(); //添加 +void search_bata(); //查询 +void search_num(); //按班次查询 +void search_endstation(); //按终点站查询 +void menu_a(); //搜索函数菜单 +void exit(); //退出函数 +void Look_through(); //浏览函数 +void sell_ticket(); //售票 +void return_ticket(); //退票 +int hour_judge(int ); //时间比较 +void Look_through_main(); //浏览函数的主函数 +void save(); //保存函数 +void out_or_buy_ticket(); //退售票函数 +int add_or_entry(int , int); //录入与增加函数 +int password(); //密码判断函数 + +/*录入函数*/ +void entry_bata(){ + int i=0,j; //i控制退出,n控制班次个数,j控制循环次数 + system("cls"); +if((password())==0){ //调用密码判断函数,并判断密码是否正确 + printf("验证成功,正在载入..."); + Sleep(1000); //为了效果更好,睡眠1s + system("cls"); + FILE *fp,*fp1; + printf("请输入要录入的班次个数:"); + scanf("%d",&CAR_num); + system("cls"); + printf("*************************************************班次录入系统********************************************\n\n\n"); + add_or_entry(1,CAR_num); //调用录入与增加函数 + fp1=fopen("CAR_num.txt","w"); + fprintf(fp1,"%d",CAR_num); //写入车次数量文件信息 + printf("文件写入完成按任意键退出..."); + getch(); + fclose(fp1); //关闭文件 + } +else{ + printf("密码错误...\n"); + getch(); +} +} + +/*增加班次*/ +void add_bata(){ + int i=0,j,t; //i控制退出,n控制班次个数,j控制循环次数 + system("cls"); +if((password())==0){ //调用密码函数,并判断密码是否正确 + printf("验证成功,正在载入..."); + Sleep(1000); + system("cls"); + FILE *fp,*fp1; + fp=fopen("input_data.txt","a+"); //打开input_data.txt文件 + if(fp==NULL) printf("文件打开失败"); + printf("请输入要增加的班次个数:"); + scanf("%d",&t); + system("cls"); + printf("*************************************************班次增加系统********************************************\n\n\n"); + add_or_entry(0,t); //调用录入与增加函数 + fp1=fopen("CAR_num.txt","r"); //读入文件中保存的CAR_num的数据 + fscanf(fp1,"%d",&CAR_num); + t=CAR_num+t; + fclose(fp1); + fp1=fopen("CAR_num.txt","w"); //改写CAR_num的数据 + fprintf(fp1,"%d",t); //写入车次文件信息 + printf("文件写入完成按任意键退出..."); + getch(); + fclose(fp1); //关闭文件 +} +else{ + printf("密码错误...\n"); + getch(); +} +} + +/*搜索函数*/ +void search_bata(){ + int t; //选择变量 + system("cls"); + printf("\n\t ________________________________________查询选项_________________________________________"); + printf("\n\n\t\t\t\t1.按班次号查询"); + printf("\t\t\t\t2.按终点站查询"); + printf("\n\t\t\t\t\t\t 0.退出"); + printf("\n\n请选择:"); + scanf("%d",&t); + switch(t){ + case 1:search_num();break; //按班次查询 + case 2:search_endstation();break; //按终点站查询 + case 0:break; + } +} + +/*按班次号查询*/ +void search_num(){ + FILE *fp,*fp1; + int num,t,i,ti; + system("cls"); + + fp1=fopen("CAR_num.txt","r"); //读入车次数量文件 + if(fp1==NULL) printf("文件打开失败"); + rewind(fp1); + fscanf(fp1,"%d",&CAR_num); + CAR_num=CAR_num; + + if((fp=fopen("input_data.txt","r"))==NULL){ + printf("文件打开失败,按任意键返回..."); + getch(); + exit(0); //退出 + } + rewind(fp); + printf("请输入要查询的班次号:\n"); + scanf("%d",&num); //输入查询班次号 + system("cls"); + menu_a(); //加载搜索菜单 + for(i=0;isum[j].man)){ + printf("|%10d|%s%s |%s |%s |%2.f |%10d|%10d|",sum[j].num,sum[j].time,sum[j].time_min,sum[j].start, + sum[j].end,sum[j].hour,sum[j].Bearer,sum[j].man); //输出班次 + printf(" 能购票 |\n"); + printf("\n\n\n\t\t\t是否购票(1/0)? "); + int check; + scanf("%d",&check); //判断是否购票 + getchar(); + if(check==1){ + sum[j].man=sum[j].man+1; + save(); //比较妥协的保存方式 + printf("购买完成\n"); + } + printf("按任意键返回..."); + getch(); + } + else{ + printf("\n\n\n未找到能够购票的车次..."); + getch(); + } + } + } +} + +/*退票*/ +void return_ticket(){ + int j,t,u; + out_or_buy_ticket(); + printf("\n\n请选择你要退票的车次编号:"); + scanf("%d",&t); + for(j=0;jtm_hourtm_hour==atoi(sum[i].time)&&local->tm_min='0'&&sum[j].time[0]<='9'&&sum[j].time[1]>='0'&&sum[j].time[1]<='9'&&sum[j].time[2]==':'&&sum[j].time_min[0]>='0'&&sum[j].time_min[0]<='9'&&sum[j].time_min[1]<='9'&&sum[j].time_min[1]>='0'){ + printf("请输入起点站:"); + scanf("%s",sum[j].start); + printf("请输入终点站:"); + scanf("%s",sum[j].end); + printf("请输入行车时间:"); + scanf("%f",&sum[j].hour); + printf("请输入额定载量:"); + scanf("%d",&sum[j].Bearer); + printf("请输入已订票人数:"); + scanf("%d",&sum[j].man); //为了增强txt文件的可读性,运用了fprintf + fprintf(fp,"%d %s%s %s %s %.2f %d %d\n",sum[j].num,sum[j].time,sum[j].time_min,sum[j].start,sum[j].end,sum[j].hour,sum[j].Bearer,sum[j].man); + } + else{ + printf("输入格式错误"); + } + } + fclose(fp); +} + +/*密码判断*/ +int password(){ + char password[10]={NULL}; + int i,f; + printf("\n\n\n\n\t\t\t\t请输入管理员密码:\n"); + for(i=0;i<6;i++) + { + password[i]=getch(); + printf("*"); + } + password[i]='\0'; + printf("\n"); + f=strcmp(password,"123456"); + Sleep(100); + return f; +} diff --git a/input_data.txt b/input_data.txt new file mode 100644 index 0000000..07ce806 --- /dev/null +++ b/input_data.txt @@ -0,0 +1,3 @@ +1 12:00 株洲 茶陵 1.00 100 98 +2 13:00 株洲 长沙 1.00 100 96 +3 14:00 株洲 衡阳 1.00 100 96 diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..f3d7033 --- /dev/null +++ b/main.cpp @@ -0,0 +1,33 @@ +/* +建议使用dev c++打开 +最佳字体:点阵字体(6*12) +密码:123456 +*/ +#include +#include +#include +#include +#include +#include +#include"struct.h" //结构体 +#include"function.h" //功能函数 + +/*主函数*/ +int main(){ + system("cls"); //清屏 + while(1){ + switch(menu_select()) //菜单函数 + { + case 1:entry_bata();break; //录入 + case 2:add_bata();break; //增加 + case 3:search_bata();break; //查询 + case 4:Look_through();break; //浏览 + case 5:sell_ticket();break; //售票 + case 6:return_ticket();break; //退票 + case 0:exit();return 0; //退出 + default: //其他 + printf("输入错误..."); + getch(); + } + } +} diff --git a/struct.h b/struct.h new file mode 100644 index 0000000..ff99b97 --- /dev/null +++ b/struct.h @@ -0,0 +1,13 @@ +/*结构体*/ +struct ticket{ + int num; //班次编号 + int man; //已订票人数 + float hour; //行车时间 + int Bearer; //额定载量 + char time[10]; //发车时间小时 + char time_min[10]; //发车时间分钟 + char start[10]; //起始站 + char end[10]; //终点站 +}; +int CAR_num=0; //初始班次总数为0 +struct ticket sum[100]; //定义数组