c语言车票管理系统实验报告.docx
- 文档编号:29329871
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:21
- 大小:268KB
c语言车票管理系统实验报告.docx
《c语言车票管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《c语言车票管理系统实验报告.docx(21页珍藏版)》请在冰豆网上搜索。
c语言车票管理系统实验报告
《车票管理系统》
程序设计实验报告
物理与电子工程学院
专业:
电子信息科学与技术
班级:
电子132
学号:
1319200055
姓名:
黎杰华
一、题目
题目:
车票管理系统
二、系统功能模块结构图
三、各模块功能
1.录入班次信息
2.显示班次信息
3.查询班次:
①按班次查询;②按终点查询;
4.售票
(1)售票成功(当车票有剩余,且车未发出时)
(2)班次不存在
(3)票已售完(当座位数小于等于已定票人数)
(4)车已发出
5.退票
退票成功(输入的班次号存在且当前时间比发车时间早)
退票失败(班次不存在或当前时间比发车时间晚)
6.保存班次信息
7.系统退出
四、数据结构设计及用法说明
使用数组
五、画出各函数流程图
完成
六、实验结果
主菜单
车次信息录入
显示班次信息
查询班次信息
售票
退票
文件保存
七、体会
这次实验让我们收获良多,这让我们得到了很多经验,又认识了很多的不足,在c语言这方面我们还需要很多的历练!
我想通过这次的练习,我们都有所进展,我们现在需要的就是实践。
完成了任务我们还是很有成就感的,也增添了我们对c语言的热情!
经过这几周,我们也比较满意自己的表现。
在此过程中我们翻阅很多的书籍,学到了很多课堂上没有的东西。
有好多知识是之前不知道的,现在了解了差不多了。
但是对于时间函数和文件保存,我还是不太清楚。
在文件读取上有不足。
这几周编程的过程实在是繁琐,但是在编出程序之后,是相当有成就感的,
在今后我们知道,凡事都要有自己的见解,我们可以借鉴别人,但别人是不可复制的,我们要明白只有理解才是自己的,只有通过自己实践我们才能深刻的认识到这一点!
八、参考文献
[1]谭浩强.C程序设计(第四版)清华大学出版社
[2]严蔚敏数据结构人民邮电出版社
九、附录
#include
#include
#include
#include
#include
#include
#defineMax100//最大贮赌量
#definenull0
staticintH=0;
structTimes
{//定义时钟
inthour;
intmin;
intsec;
};
structBuses{//定义汽车
intnumber;
structTimestime;
charstart[30];
charend[30];
floattime_cost;
intcarry_number;
intprices;
intbooK_number;
};
structBusesbus[Max];
time_tnow=time(0);
tm*tnow=localtime(&now);
voidload();//载入车次信息
voidlu(void);//声明录入函数
voidchaxun(structBusesbus[]);//声明查询路线函数
voidsave(structBusesbus[]);//声明保存函数
intcaidan();//声明菜单录数
voidliulan(structBusesbus[]);//声明浏览函数
voidtuipiao(structBusesbus[]);//退票
voidshoupiao(structBusesbus[]);//声明售票函数
voidxitongtuichu();//声明退出函数
//工具函数
structBusescopy(structBusesb1,structBusesb2);//赋值
intcompare_time(structTimest1,structTimest2);//时间比较函数
intcompare_systime(structBusesbus,tm*T);//比较发车时间与当前系统时间的函数
voidprint(structBusesbus);//声明输入出函数
intnumber_search(structBusesbus[],intnum);//声明按班次查询函数
intend_search(structBusesbus,charends[]);//声明按终点查询函数
intcompare_systime(structBusesbus,tm*T){//与系统时间的比较函数
if(bus.time.hour>=T->tm_hour){
return1;
if(bus.time.min>=T->tm_min){
return1;
if(bus.time.sec>T->tm_sec)
return1;
elsereturn0;
}
return0;
}
return0;
}
structBusescopy(structBusesb1,structBusesb2){
b1.booK_number=b2.booK_number;
b1.carry_number=b2.carry_number;
strcpy(b1.end,b2.end);
b1.number=b2.number;
strcpy(b1.start,b2.start);
b1.time.hour=b2.time.hour;
b1.time.min=b2.time.min;
b1.time.sec=b2.time.sec;
b1.time_cost=b2.time_cost;
returnb1;
}
//浏览车次函数//
voidliulan(structBusesbus[]){
getchar();
inti;
printf("\n\t\t\t\t车辆时刻表\n");
printf("\t\t\t===========================\n");
printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数");
printf("\n\t--------------------------------------------------------------\n");
for(i=0;i print(bus[i]); } printf("\t--------------------------------------------------------------\n"); printf("\t\t\t\t%d条记录! \n",H); printf("\t按任意键返回主菜单..."); getchar(); } //比较时间大小函数// intcompare_time(structTimest1,structTimest2){ if(t1.hour>t2.hour){ return1; if(t1.min>=t2.min){ return1; if(t1.sec>=t2.sec) return1; elsereturn0; } return0; } return0; } //按班次查询// intnumber_search(structBusesbus[],intn){ inti; for(i=0;i if(bus[i].number==n) returni; } return-1; } //按终点站查询// intend_search(structBusesbus,charends[]){ if(strcmp(bus.end,ends)==0) return1; else return-1; } //输出函数// voidprint(structBusesbus){ if(! compare_systime(bus,tnow)) printf("\t%-6d%-2d: %-2d: %-2d%6s%8s%8.1f%4d%10d%10d(已发出)\n",bus.number,bus.time.hour, bus.time.min,bus.time.sec,bus.start,bus.end,bus.time_cost,bus.carry_number,bus.prices,bus.booK_number); else printf("\t%-6d%-2d: %-2d: %-2d%6s%8s%8.1f%4d%10d%10d\n",bus.number,bus.time.hour, bus.time.min,bus.time.sec,bus.start,bus.end,bus.time_cost,bus.carry_number,bus.prices,bus.booK_number); } intcaidan(){ inta; //以下是输出的菜单图案// printf("\n\n"); printf("\t\t车票管理系统\n"); printf("\t\t*****************(%d年%d月%d日)\n", 1900+tnow->tm_year,tnow->tm_mon+1,tnow->tm_mday); printf("\t\t||==================================||\n"); printf("\t\t||菜单||\n"); printf("\t\t|| (1)录入班次信息||\n"); printf("\t\t|| (2)显示班次信息||\n"); printf("\t\t||(3)查询班次信息||\n"); printf("\t\t||(4)售票||\n"); printf("\t\t||(5)退票||\n"); printf("\t\t||(6)保存车次信息||\n"); printf("\t\t||(0)退出系统||\n"); printf("\n\t\t请选择(0-6): "); scanf("%d",&a); return(a); } //保存函数// voidsave(structBusesbus[]){ getchar(); FILE*fp; inti; if((fp=fopen("Bus_system","wb"))==null){ printf("不能打开文件\n"); return; } for(i=0;i if(fwrite(&bus[i],sizeof(structBuses),1,fp)! =1) printf("文件保存出错! \n"); fclose(fp); printf("文件保存成功! "); getchar(); } //录入函数// voidlu(){ inti=H,f=1; charflag='Y'; while(toupper(flag)=='Y'){ printf("\n\t\t车次信息录入\n请输入车的班次: "); scanf("%d",&bus[i].number); getchar(); while(number_search(bus,bus[i].number)>=0){ printf("你输入的班次已存在请重新输入! : "); scanf("%d",&bus[i].number); getchar(); } printf("请输入时间如: (20: 30: 00): "); scanf("%d: %d: %d",&bus[i].time.hour,&bus[i].time.min,&bus[i].time.sec); getchar(); printf("请输入车的起点站: "); scanf("%s",bus[i].start); getchar(); printf("请输入车的终点站: "); scanf("%s",bus[i].end); getchar(); printf("请输入行车时间: "); scanf("%f",&bus[i].time_cost); getchar(); printf("请输入车的额定载量: "); scanf("%d",&bus[i].carry_number); printf("请输入票价: "); scanf("%d",&bus[i].prices); getchar(); bus[i].booK_number=0; H++; i++; printf("信息录入成功! \n"); printf("继续录入请按(Y),返回主菜单按任意键..."); flag=getchar(); } } //查询路线函数// voidchaxun(structBusesbus[]){ inta,i=0; intm=0; charflag='Y'; while(toupper(flag)=='Y'){ charend[30]; printf("\n按班次查询请按1\n终点站查询请按2\n请选择(1-2): "); scanf("%d",&a); while(a! =1&&a! =2){ printf("注意只能选择1或2! \n请重新输入: "); scanf("%d",&a); getchar(); } switch(a) { case1: { printf("请输入车次号: "); scanf("%d",&m); getchar(); i=number_search(bus,m); if(i>=0){ printf("\n\t\t\t\t车辆时刻表\n"); printf("\t\t\t**************************\n"); printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数"); printf("\n\t--------------------------------------------------------------\n"); print(bus[i]); printf("\t--------------------------------------------------------------\n"); } else printf("\n\t\t\t没有你要查找的记录! \n"); }break; case2: { printf("请输入车的终点站: "); scanf("%s",end); getchar(); while(i if((m=end_search(bus[i],end))==1){ printf("\n\t\t\t\t车辆时刻表\n"); printf("\t\t\t**************************\n"); printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数"); printf("\n\t--------------------------------------------------------------\n"); print(bus[i]); i++;} break; } for(i;i if(end_search(bus[i],end)==1) print(bus[i]); } if(m==1)printf("\t--------------------------------------------------------------\n"); } for(i=0;i if(end_search(bus[i],end)! =1) printf("\n\t\t\t没有到该站的车! \n");break; } } printf("\t\t继续查找请按(Y),返回主菜单按任意键..."); flag=getchar(); } } //售票函数// voidshoupiao(structBusesbus[]){ inti,n; charflag='Y'; while(toupper(flag)=='Y'){ printf("\n\t\t\t\t车辆时刻表\n"); printf("\t\t\t**************************当前时间(%d: %d: %d)\n", tnow->tm_hour,tnow->tm_min,tnow->tm_sec); printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数"); printf("\n\t--------------------------------------------------------------\n"); for(intj=0;j print(bus[j]); } printf("\t--------------------------------------------------------------\n"); printf("\t请输入车的班次: "); scanf("%d",&i); n=number_search(bus,i); getchar(); if(n>=0&&bus[n].carry_number>bus[n].booK_number&&compare_systime(bus[n],tnow)){ printf("\n\t\t\t售票成功! \n"); bus[n].booK_number++; printf("\t班次发车时间起点站终点站行车时间额定载量票价已定票人数"); printf("\n\t--------------------------------------------------------------\n"); print(bus[n]); printf("\n\t--------------------------------------------------------------\n"); } if(bus[n].carry_number<=bus[n].booK_number) printf("\n\t\t\t该次车的票已售完! \n"); elseif(n<0) printf("\n\t\t\t该次车不存在! \n"); elseif(! compare_systime(bus[n],tnow)) printf("\n\t\t\t该次已发出! \n"); printf("\t\t继续售票请按(Y),返回主菜单按任意键..."); flag=getchar(); } } //退票函数// voidtuipiao(structBusesbus[]){ intn,i; charflag='Y'; while(toupper(flag)=='Y'){ printf("\n\n请输入车次: "); scanf("%d",&n); getchar(); i=number_search(bus,n); if(i>=0&&compare_systime(bus[i],tnow)){ bus[i].booK_number--; printf("\n\t\t\t退票成功! \n"); } elseif(i<0) printf("\n\t\t\t该车次不存在! \n"); elseif(! compare_systime(bus[n],tnow)) printf("\n\t\t\t车已发出不能退票! \n"); printf("\t继续退票请按(Y),返回主菜单按任意键..."); flag=getchar(); } } //载入车次信息函数// voidload() {FILE*fp; inti=0; while((fp=fopen("Bus_system","rb"))==NULL)//以rb形式打开文件 return; for(i;! feof(fp);i++,H++) { if(fread(&bus[H],sizeof(structBuses),1,fp)! =1){} if(feof(fp)) { fclose(fp); return; } } fclose(fp); } //退出函数// voidxitongtuichu(){ getchar(); charflag=null; printf("\n\n\t\t你确定要退出并保存信息吗? (Y/N)"); flag=getchar(); if(toupper(flag)=='Y') { save(bus); exit(0); } elseif(toupper(flag)=='N') exit(0); else return; } //主函数// voidmain(){ while (1){ switch(caidan()){ case1: lu();break; case2: liulan(bus);break; case3: chaxun(bus);break; case4: shoupiao(bus);break; case5: tuipiao(bus);break; case6: save(bus);break; case0: xitongtuichu();break; } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 车票 管理 系统 实验 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)