飞机票系统.docx
- 文档编号:27679921
- 上传时间:2023-07-03
- 格式:DOCX
- 页数:159
- 大小:578.65KB
飞机票系统.docx
《飞机票系统.docx》由会员分享,可在线阅读,更多相关《飞机票系统.docx(159页珍藏版)》请在冰豆网上搜索。
飞机票系统
存档资料成绩:
华东交通大学理工学院
课程设计报告书
所属课程名称C语言程序设计
题目 飞机票综合系统
分院 电信分院
专业班级
学 号
学生姓名
指导教师
2014年6月23日
目 录
第1章课程设计任务书....................................................3
第2章程序设计目的........................................................4
第3章程序实现思路........................................................5
第4章程序清单(或正文)...........................................7
第5章程序调试.................................................................33
第6章课程设计心得........................................................39
附录(原代码)....................................................40
第1章.课程设计任务书
(1).航班系统
1.建立航班信息
2.显示航班信息
3.删除航班信息
4.查询航班信息
5.修改航班信息
6..数据保存
7..数据导出
(2).订票系统
1.查询购票
2.查询状态
3.改签机票
4.办理退票
5修改密码
6.数据保存
7.数据导出
(3).登陆系统
1.用户登陆
2.用户创建
3.航班系统
第2章.程序设计目的
(1).对链表加深印象
1.对链表操作,实际是对指针的熟悉,与内存打交道,更接近于底层,熟悉计算机原理
2.对链表的熟悉,对以后的数据结构打下基础
(2).保存数据,对文件的读取方式原理的理解
1.输入流,只写不能读,实际是向流中写数据,即为把数据写在流中,再把数据存到文件中,
2..输出流,只读不能写,实际是向流中读数据,即为吧数据从文件中读到数据流当中,再读到相应的设备中。
3.缓冲流,为了提高对数据的传送速率,即为分配一个缓冲区,专门用于传输数据的内存块。
当想数据流中流数据时,系统不直接发送到外部设备上,而是发送到缓冲区中,当缓冲区满时,系统把数据全部发送到相应的设备上
第3章.程序实现思路
(1).程序流程图
(2).程序思路
1.航班系统
(1).定义头文件,定义结构体,定义结构体新类型,宏定义结构体长度,定义头指针。
(2)voidCreate();,调用函数实现建立链表。
(3).voidPrint();,调用函数实现显示航班。
(4).intQuery(),调用函数实现查询航班。
(5)voidModify(),调用函数实现修改航班。
(7)voidDelete(),调用函数实现删除航班。
2.航班系统
(1).定义结构体,定义新类型,宏定义结构体长度。
(2).voidTicket(),调用函数实现查询购票。
(3).voidState(),调用函数实现查询状态。
(4).voidEndorse(),调用函数实现改签机票。
(5)voidRefund(),调用函数实现办理退票。
(6)voidChange(),调用函数实现修改密码。
3.登陆系统
(1).intLog();
intLanding();用户订票登陆
(2).voidcreate_1()用户创建
(3).intPassword()航班登陆
第4章.程序清单(或正文)
(1).头文件,与自定义函数,结构体
/*个人系统函数*/
voidcreate_1();//建立信息
voidSave_1();//信息保存
voidExport_1();//导出信息
voidState();//查询状态
voidTicket();//查询购票
voidRefund();//办理退票
voidwindows();//个人界面
voidFunction();//个人功能
voidEndorse();//改签机票
voidChange();//修改密码
intLog();//登陆界面
intLanding();//登陆验证
intValidation_1(charID_1[]);//检查登陆账号是否唯一
voidjiema();//界面
voidgotoxy(intx,inty);//定位光标
voidShishi();//加载窗口
voidPrint_1();//加载界面
typedefstructFlight//航班信息
{
charFlight_num[10];//航班号
charOrigin[10];//出发地
charDestination[10];//目的地
charSetout_time[10];//出发时间
charDrrival_tiem[10];//到达时间
intFare;//票价
intVotes;//票数
structFlight*Next;//连接节点
structFlight*Next_1;
}PHI;//PHI**表示tructTrain这种类型
typedefstructInformation//个人系统
{
charID[10];//账号
charPassword[10];//密码
charName[10];//姓名
charFlight_num_1[10];//订票的航班号
charOrigin_1[10];//订票的出发地
charDestination_1[10];//订票的目的地
charSetout_time_1[10];//订票的出发时间
charDrrival_tiem_1[10];//订票的到达时间
intFare;//订票的票价
intn;//订票的的票数
structInformation*Next;//连接节点
}PHI_1;
(2).自定义函数航班系统函数介绍
1.添加航班信息
/*建立航班*/
voidCreate()
{
charhangban[10];
inti;
intn;//存储的航班个数
intm;
PHI*p1;
PHI*p2=NULL;
PHI*p3=NULL;//用于寻找尾节点
p1=(PHI*)malloc(LEN);//新建立节点
if(NULL==Phead)
{
Phead=p1;
p1->Next=NULL;
}
else//寻找尾节点
{
p2=Phead;
p3=p2->Next;
while(p3!
=NULL)
{
p2=p3;
p3=p3->Next;
}
p2->Next=p1;//最后一个节点指针成员指向新建立的节点
p1->Next=NULL;
}
printf("请管理员输入要存储的航班信息个数:
");
scanf("%d",&n);
while(Check(n))//检查n是否大于0
{
printf("\n输入有误!
请重新输入:
");
fflush(stdin);
scanf("%d",&n);
}
/*if(0==n)
{
p1=Phead;
if(NULL==p1->Next)
{
Phead=NULL;
free(p1);
printf("\t\t\t\t放弃添加航班!
");
system("pause");
return;
}
else
{
while(p1->Next!
=NULL)
{
p2=p1;
p1=p1->Next;
}
p2->Next=NULL;
free(p2);
printf("\t\t\t\t放弃添加航班!
");
system("pause");
return;
}
}*/
for(i=0;i { printf("这是第%d个航班\n",i+1); printf("请输入航班号: "); scanf("%s",hangban,10); while(m=Validation(hangban)) { fflush(stdin); printf("航班已存在! 请重新输入: "); scanf("%s",hangban,10); } strcpy(p1->Flight_num,hangban); printf("请输入出发地: "); scanf("%s",p1->Origin,10);//vs2013输入标准输入字符串方式 printf("请输入目的地: "); scanf("%s",p1->Destination,10); printf("请输入出发时间: "); scanf("%s",p1->Setout_time,10); printf("请输入到达时间: "); scanf("%s",p1->Drrival_tiem,10); printf("请输入票价: "); scanf("%d",&p1->Fare); while(Check(p1->Fare)) { printf("\n输入有误! 请重新输入: "); fflush(stdin); scanf("%d",&p1->Fare); } printf("请输入票数: "); scanf("%d",&p1->Votes); while(Check(p1->Votes)) { printf("\n输入有误! 请重新输入: "); fflush(stdin); scanf("%d",&p1->Origin); } p2=p1; p1=(PHI*)malloc(LEN); p2->Next=p1; p1->Next=NULL; system("cls"); } p2->Next=NULL; free(p1); printf("\t\t\t\t\t存储成功\n"); system("pause"); return; } 解析: 先定义全局的头指针指向空,在第一次进入该程序的时候,先判断头指针是否指向空,指向空说明是第一次调用该函数,那么头指针指向的是头节点,如果第二次进入该函数,说明头指针有指向了,而这个时候不能把头指针指向新建立的节点即头节点(如果指向了头节点,那么上次建立的链表里面节点会不翼而飞)所以现在需要寻找尾节点。 把尾节点的指针域指向新建立的节点。 2.检测是否为数字 intCheck(intn) { if(n>0) return0; else return1; } 解析: 有点像C99新增的BOOL型,性质是差不多的。 3.检查航班号的唯一性 /*验证航班号是否唯一*/ intValidation(charhangban[]) { PHI*p1; p1=Phead; if(NULL==p1) { return0; } else { while(p1! =NULL) { if(! strcmp(p1->Flight_num,hangban)) { return1; } p1=p1->Next; } } return0; } 解析: 自定义函数intValidation(charhangban[]),形参hangban是要检测当前在添加航班信息的航班号与链表中的航班号是否相同,相同返回1重新输入,不同返回0。 但前提是链表不为空,为空就没必要验证了。 4.显示航班 /*显示航班*/ voidPrint() { PHI*p1; p1=Phead; if(NULL==Phead) { printf("没有航班信息! \n"); system("pause"); return; } printf("╔═════════════════════════════════════╗\n"); printf("║航班号\t出发地\t目的地\t出发时间\t到达时间\t票价\t余票║\n"); while(p1! =NULL) { printf("╠═════════════════════════════════════╣\n"); printf("║%s\t\t%s\t%s\t%s\t\t%s\t\t%d\t%d║\n", p1->Flight_num,p1->Origin,p1->Destination,p1->Setout_time,p1->Drrival_tiem,p1->Fare,p1->Votes); p1=p1->Next; } printf("╚═════════════════════════════════════╝\n"); system("pause"); return; } 解析: 琉璃链表,输入每个节点的相应数据 5.删除航班 /*删除航班*/ voidDelete() { PHI*p1; PHI*p2; charFNUM[10];//删除航班号 p1=Phead; if(NULL==p1) { printf("没有航班信息! \n"); system("pause"); return; } printf("请输入要删除的航班号: "); scanf("%s",FNUM,10); if(! strcmp(p1->Flight_num,FNUM))//检查是否是第一个航班号 { Phead=p1->Next; printf("\t\t\t\t\t删除成功! \t"); system("pause"); return; } while(p1! =NULL) { if(! strcmp(p1->Flight_num,FNUM)) { p2->Next=p1->Next; free(p1); printf("\t\t\t\t\t删除成功! \t"); system("pause"); return; } else { p2=p1; p1=p1->Next; } } printf("\t\t\t\t找不到要删除的航班! "); system("pause"); return; } 解析: 用字符串的比较,先查找到要删除的航班,如果没有找到,结束该函数快。 如果找到了,用p1和p2来琉璃链表,p1在下一个节点p2在上一个节点,他们相差一个节点。 而当琉璃的时候如果找到了把p1的指针域指向赋值给p2的指针域,free掉p1。 这里值得注意的地方是,先要判断是否删除的是头节点,删除的是头结点,直接把头指针指向的是头节点的指针域。 这一删除方式只能用航班号来删除这是因为航班号的唯一性。 6.修改航班 /*修改航班*/ voidModify() { inti=0;//查找到的航班 intn;//选择修改的选项 charFLIGHT_1[10];//修改航班号 charORIGIN[10];//修改出发地 charDEST[10];//修改目的地 charTIME_1[10];//修改出发时间 charTIME_2[10];//修改到达时间 intFARE;//修改票价 intVOTES;//修改票数 PHI*p1; PHI*p2; charFLIGHT_NUM[10];//要修改的航班号 p1=Phead; if(NULL==p1) { printf("没有航班信息! \n"); system("pause"); return; } Print();//显示所有航班 printf("请输入你要修改的航班号: "); scanf("%s",FLIGHT_NUM,10); while(p1! =NULL) { if(! strcmp(p1->Flight_num,FLIGHT_NUM)) { i=1; break;//break语句只能当前循环体有效,不管有多少成if直接跳出的是while循环 } else { p2=p1; p1=p1->Next; } } if(0==i) { printf("没有找到航班! \n"); system("pause"); return; } else//修改航班内容 { Interface(); scanf("%d",&n); while(Check(n))//检查n是否大于0 { printf("\n输入有误! 请重新输入: "); fflush(stdin); scanf("%d",&n); } printf("请输入修改内容: "); switch(n) { case1: //修改航班号 { scanf("%s",FLIGHT_1,10); strcpy(p1->Flight_num,FLIGHT_1); printf("\t\t\t\t修改成功\n"); }break; case2: //修改出发地 { scanf("%s",ORIGIN,10); strcpy(p1->Origin,ORIGIN); printf("\t\t\t\t修改成功\n"); }break; case3: //修改目的自 { scanf("%s",DEST,10); strcpy(p1->Destination,DEST); printf("\t\t\t\t修改成功\n"); }break; case4: //修改出发时间 { scanf("%s",TIME_1,10); strcpy(p1->Setout_time,TIME_1); printf("\t\t\t\t修改成功\n"); }break; case5: //修改到达时间 { scanf("%s",TIME_2,10); strcpy(p1->Drrival_tiem,TIME_2); printf("\t\t\t\t修改成功\n"); }break; case6: //修改票价 { scanf("%d",&FARE); while(Check(FARE))//检查n是否大于0 { printf("\n输入有误! 请重新输入: "); fflush(stdin); scanf("%d",&FARE); } p1->Fare=FARE; printf("\t\t\t\t修改成功\n"); }break; case7: //修改票数 { scanf("%d",&VOTES); while(Check(VOTES))//检查n是否大于0 { printf("\n输入有误! 请重新输入: "); fflush(stdin); scanf("%d",&VOTES); } p1->Votes=VOTES; printf("\t\t\t\t修改成功\n"); }break; default: { printf("\t\t\t\t不在修改范围! \n"); system("pause"); return; }break; } }//修改航班内容 system("pause"); return; } 解析: 也是用航班号的唯一性查找到要修改的航航号的,修改选项,这里注意的是最好是用中间变量来赋值或者用复制来修改相应的信息。 7.查询航班号 /*查询航班*/ intQuery() { PHI*p1; inti=0;//查询到航班 intn;//选择查询模式 charFli_num[10];//查询航班号 charOrig[10];//查询出发地 charDest[10];//查询目的地 p1=Phead; if(NULL==p1) { printf("没有航班信息! \n"); return1; } QueInt();//查询界面 scanf("%d",&n); while(Check(n))//检查n是否大于0 { printf("\n输入有误! 请重新输入: "); fflush(stdin); scanf("%d",&n); } switch(n) { case1: //查询航班号 { printf("请输入航班号: "); scanf("%s",Fli_num,10); printf("╔═════════════════════════════════════╗\n"); printf("║航班号\t出发地\t目的地\t出发时间\t到达时间\t票价\t余票║\n"); while(p1! =NULL)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 飞机票 系统