版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、./*头文件声明*/#include stdio.h#include stdlib.h#include string.h#include conio.h/*函数声明*/void init(); /初始化函数void add(); /信息录入函数void view(); /信息显示函数void mod(); /信息修改函数void modmeun(); /修改菜单void modnavimeun(); /路线修改菜单void del(); /信息删除函数void find(); /信息查询函数void findmeun(); /查询菜单void findnavi(); /路线导航查询函数void
2、 findnum(); /路线编号查询函数void findstameun(); /站台信息查询菜单void findsta(); /站台信息查询函数void save(); /信息保存函数 void mainmeun(); /主菜单char Test(char a,char b,char c); /菜单输入检测函数/*宏定义声明*/#define N 100 /公交车数量/*结构体定义*/struct station /途径站点信息char c20; /站点名称;struct bus /公交车信息char num20; /公交车路线编号char name20; /司机姓名int n; /站台
3、数目struct station b12; /站台名称char topen20; /起始时间char tclose20; /终止时间int money; /票价aN;/*函数定义*/int main()char a;init();printf(ntt目前所能录入的公交车数量上限为 %d 辆nn,N);printf(ntt输入回车键继续n);fflush(stdin); /清除键盘缓冲区while(1)system(cls);mainmeun();a=Test(getchar(),1,6); /菜单检测输入函数 switch(a)case 1:system(cls); add(); break;
4、case 2:system(cls); view(); break;case 3:system(cls); mod(); break;case 4:system(cls); del(); break;case 5: system(cls); find(); break;case 6: return 0;return 0;void init() /初始化函数 FILE *fp; /文件指针int i;if(fp=fopen(bus.txt,r+)=NULL) /初次尝试打开bus.txt文本文件printf(ntt文件打开失败nntt正在尝试创建新文件.n);fp=fopen(bus.txt,w
5、); /创建bus.txt文本文件if(fp=fopen(bus.txt,r+)=NULL) /再次判断是否打开成功printf(tt文件创建失败!n);return;fp=fopen(bus.txt,r+);for(i=0;iN;i+) /将磁盘中的信息输出到内存中if(fread(&ai,sizeof(struct bus),1,fp)!=1)break;fclose(fp);printf(ntt初始化完成!nn);return;void add() /信息录入函数 FILE *fp=NULL; /文件指针int i,j;char cc20;for(i=0;iN;i+)if(*ai.num
6、!=0)continue;elseprintf(n添加第%d辆公交车路线记录:n,i+1); printf(n请输入路线编码(3位编码,第一位为大写字母,后两位为数字):n); /路线编码scanf(%s,cc);for(j=0;j=2): ); /站台总数scanf(%d,&ai.n);printf(n);if(ai.n12)while(ai.n12)printf(n站台总数应满足(2=n=12),请重新输入: );scanf(%d,&ai.n);printf(n);for(j=0;jai.n;j+)printf(请输入第%d个站台名称: ,j+1); /站台名称scanf(%s,ai.bj
7、.c);printf(n自动生成公交路线:(1) %s,ai.b0.c);for(j=1;j (%d) %s,j+1,ai.bj.c);printf(nn请输入公交车的起始时间(格式为:时:分): ); /起始时间scanf(%s,ai.topen);printf(请输入公交车的终止时间(格式为:时:分): ); /终止时间scanf(%s,ai.tclose);printf(n请输入公交车的票价: ); /票价scanf(%d,&ai.money);printf(n第%d辆公交车路线记录创建成功!n,i+1);save();printf(nt按回车键返回!n);fflush(stdin);
8、/清除键盘缓冲区getchar();system(cls);return;if(i=N)printf(nnnt空间已满,不能录入!n);printf(nt按回车键返回!n);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return;void view() /信息显示函数 int i,j,min;struct bus t; for(i=0;*ai.num!=0&iN;i+) /按“路线编号”用选择法排序min=i;for(j=i+1;*aj.num!=0&j0)min=j;t=ai;ai=amin;amin=t;printf(nn 公交车信息库);p
9、rintf(n*n);for(i=0;*ai.num!=0&iN;i+)printf(t路线编号: %-6st单程票价: %d 元tt司机姓名: %sn,ai.num,ai.money,);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,ai.topen,ai.tclose,ai.n);printf(t公交路线:(1) %s,ai.b0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);printf(n*n);printf(ntt公交车信息显示完毕!n);printf(ntt输入回车键返回主菜单:);fflus
10、h(stdin); /清除键盘缓冲区getchar();system(cls);return;void mod() /信息修改函数int i,j,m=0;char t,cc20,mod20;printf(请输入要修改信息的公交车路线编号:n);scanf(%s,cc);for(i=0;*ai.num!=0&iN;i+) /查找所输入的公交车if(strcmp(ai.num,cc)=0) m=1;printf(nntt已找到!n);while(1)system(cls);printf(nn 正在修改的公交车信息n);printf(n- - - - - - - - - - - - - - - -
11、- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - n);printf(t路线编号: %-6st单程票价: %d 元tt司机姓名: %sn,ai.num,ai.money,);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,ai.topen,ai.tclose,ai.n);printf(t公交路线:(1) %s,ai.b0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);printf(n- - - - - - - - - - - - -
12、- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nn);modmeun();fflush(stdin); /清除键盘缓冲区t=Test(getchar(),1,5); /菜单检测输入函数 system(cls);switch(t)case 1: /修改路线编号int k;printf(n请输入新的公交车编号:);scanf(%s,mod);for(k=0;*ak.num!=0&k12) /判断是否满足条件printf(n站台总数达到12个,无法添加新站点nn按回车键返回n);fflush(stdin); /
13、清除键盘缓冲区getchar();system(cls);return;printf(n请输入需要添加第几个站点:);scanf(%d,&k);while(ai.n+1k-1;j-)ai.bj=ai.bj-1;printf(n请输入新添加的站点名称:);scanf(%s,ai.bk-1.c);save();break;case 2: /修改站点printf(n请输入需要修改第几个站点:);scanf(%d,&k);printf(n请输入新的站点名称:);scanf(%s,ai.bk-1.c);save();break;case 3: /删除站点printf(n请输入需要删除第几个站点:);sc
14、anf(%d,&k);for(j=k-1;jai.n;j+)ai.bj=ai.bj+1;ai.n=ai.n-1;save();break;case 4: /重置路线printf(n请输入新的途径站台总数(2=n=12): );scanf(%d,&ai.n);printf(n);while(ai.n12) /判断是否满足条件printf(n站台总数应满足(2=n=12),请重新输入: );scanf(%d,&ai.n);printf(n);for(j=0;jai.n;j+)printf(请输入新的第%d个站台名称: ,j+1);scanf(%s,ai.bj.c);printf(t公交路线:(1)
15、 %s,ai.b0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);save();break;case 5: /返回菜单printf(ntt按回车键返回菜单n);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return; /返回主菜单case 4: /修改行车时间printf(nn请输入公交车的起始时间(格式为:时:分): );scanf(%s,ai.topen);printf(请输入公交车的终止时间(格式为:时:分): ); scanf(%s,ai.tclose);save();break;case 5:p
16、rintf(ntt按回车键返回主菜单n);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return; /返回主菜单if(m=0)printf(nntt无此公交车信息!n);printf(ntt按回车键返回n);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return;void modmeun() /修改菜单printf(ntt 修改菜单 );printf(ntt*);printf(ntt* 1、修改路线编号 *);printf(ntt* 2、修改车辆信息 *);printf(ntt* 3、修改行车路线
17、*);printf(ntt* 4、修改行车时间 *);printf(ntt* 5、返回到主菜单 *);printf(ntt*);printf(nntt请输入您的选择:);void modnavimeun() /路线修改菜单printf(ntt 路线修改菜单 );printf(ntt*);printf(ntt* 1、 站 点 添 加 *);printf(ntt* 2、 站 点 修 改 *);printf(ntt* 3、 站 点 删 除 *);printf(ntt* 4、 路 线 重 置 *);printf(ntt* 5、 返 回 菜 单 *);printf(ntt*);printf(nntt请输
18、入您的选择:);void del() /信息删除函数int i,j,t,m=0;char cc20;printf(n请输入要删改信息的公交车路线编号:n);scanf(%s,cc);for(i=0;*ai.num!=0&iN;i+) /查找所输入的公交车if(strcmp(ai.num,cc)=0) m=1;printf(n已找到:n);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - n);printf(t路线编号: %-6st单程票价:
19、%d 元tt司机姓名: %sn,ai.num,ai.money,);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,ai.topen,ai.tclose,ai.n);printf(t公交路线:(1) %s,ai.b0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nn);printf(即将删除该公交车信息!
20、n确定请按1:);scanf(%d,&t);if(t=1)if(i+1=N)memset(&ai,0,sizeof(struct bus); /最后一辆直接进行清空elsefor(j=i;*aj.num!=0&j+1N;j+) /后面的公交车信息补上删去的公家车信息aj=aj+1;printf(编号为%s的公交车信息删除完毕!n,cc);save();break;if(m=0)printf(nntt无此公交车信息!n);printf(nnt输入回车键返回主菜单:);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return;void find() /
21、信息查询函数char t;while(1)findmeun();fflush(stdin); /清除键盘缓冲区t=Test(getchar(),1,4); /菜单检测输入函数 switch(t)case 1: system(cls); findnavi();break; /路线导航查询case 2: system(cls); findnum();break; /路线编号查询函数case 3: system(cls); findsta();break; /站台信息查询函数case 4: system(cls); return; /返回主菜单return;void findmeun() /查询菜单
22、printf(ntt 查询菜单 );printf(ntt*);printf(ntt* 1、路线导航查询 *);printf(ntt* 2、路线编号查询 *);printf(ntt* 3、站台信息查询 *);printf(ntt* 4、返回到主菜单 *);printf(ntt*);printf(nntt请输入您的选择:);void findnavi() /路线导航查询函数int i,j,k,m=0;char c120,c220;printf(请输入您目前所在的站点:ntt);scanf(%s,c1);printf(请输入您想要前往的站点:ntt);scanf(%s,c2);printf(nn您可
23、选择的公交车信息如下n);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - n);for(i=0;*ai.num!=0&iN;i+)for(j=0;jai.n;j+)for(k=j+1;kai.n;k+)if(strcmp(ai.bj.c,c1)=0&strcmp(ai.bk.c,c2)=0)m=1;printf(n);printf(t路线编号: %-6st单程票价: %d 元tt司机姓名: %sn,ai.num,ai.money,ai.na
24、me);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,ai.topen,ai.tclose,ai.n);printf(t公交路线:(1) %s,ai.b0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nn);printf(tttt显示完毕n);if(m=0)printf(nntttt抱歉,无途径此路线的公交车n);p
25、rintf(ntttt输入回车键返回查询菜单:);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return;void findnum() /路线编号查询函数int i,j,m=0;char cc20;printf(请输入您想要查找的公交路线编号:n);scanf(%s,cc);for(i=0;*ai.num!=0&iN;i+)if(strcmp(ai.num,cc)=0) m=1;printf(n已找到:n);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
26、- - - - - - - - - - - - - - - - n);printf(t路线编号: %-6st单程票价: %d 元tt司机姓名: %sn,ai.num,ai.money,);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,ai.topen,ai.tclose,ai.n);printf(t公交路线:(1) %s,ai.b0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - -
27、- - - - - - - - - - - - - - - - - - - nn);break;if(m=0)printf(ntt无此公交车信息n);printf(ntt输入回车键返回查询菜单:);fflush(stdin); /清除键盘缓冲区getchar();system(cls);return; void findstameun() /站台信息查询菜单printf(ntt 站台信息查询菜单);printf(ntt*);printf(ntt* 1、起始站台查询 *);printf(ntt* 2、终止站台查询 *);printf(ntt* 3、途径站台查询 *);printf(ntt* 4、
28、返回查询菜单 *);printf(ntt*);printf(nntt请输入您的选择:);void findsta() /站台信息查询函数int i,j,k;char t;char cc20;while(1)int m=0;findstameun();fflush(stdin); /清除键盘缓冲区t=Test(getchar(),1,4); /菜单检测输入函数 system(cls);switch(t)case 1:printf(请输入您所要查询的起始站台名称:n);scanf(%s,cc);printf(n以%s为起始站台的公交车如下:n,cc);printf(n- - - - - - - -
29、 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - n);for(i=0;*ai.num!=0&iN;i+)if(strcmp(ai.b0.c,cc)=0)m=1;printf(n);printf(t路线编号: %-6st单程票价: %d 元tt司机姓名: %sn,ai.num,ai.money,);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,ai.topen,ai.tclose,ai.n);printf(t公交路线:(1) %s,ai.b
30、0.c);for(j=1;j(%d) %s,j+1,ai.bj.c);printf(nn);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - nn);printf(t已全部显示完毕!n);if(m=0)printf(nt没有公交车以该站点为起始站台n);break;case 2:printf(请输入您所要查询的终止站台名称:n);scanf(%s,cc);printf(n以%s为终止站台的公交车如下:n,cc);printf(n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - n);for(i=0;*ai.num!=0&iN;i+)k=ai.n;if(strcmp(ai.bk-1.c,cc)=0)m=1;printf(n);printf(t路线编号: %-6st单程票价: %d 元tt司机姓名: %sn,ai.num,ai.money,);printf(t起始时间: %-6st终止时间: %-6st站台总数: %dn,a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论