简介
可以算个伪原创吧,这是之前为朋友做的一个课程设计,当初从网上找了几个最后修改出这么一个简单系统,当个作业交给老师还是没什么问题的。附件里有所有文件的打包下载。
附件内容
①AircraftBookingSystem(源文件).rar——这是源文件(即.c和.h)的打包 ②AircraftBookingSystem.rar——这是源程序的打包 ③C语言课程设计——飞机订票系统.doc C语言课程设计——飞机订票系统.docx 这两个是最开始时写的课程报告文档。 ④C语言课程设计——飞机订票系统a.doc 这是朋友说页数太多了,之后精简到我感觉实在没法精简的地步的课程报告文档。 ③和④喜欢哪个用哪个吧,里面的封面是朋友给的。
程序的模块
1、 机票管理模块:含有机票信息的管理,对机票信息输入,查询,修改,删除。 2、订票模块:当有机票信息后可以订票,订票时输入航班号(进入时有可以查询 所有机票信息)出现航班信息,确定订票后输入个人信息:姓名,证 件号, 联系电话,密码(退票时用)。回车订票结束,返回个人订票信息。 3、显示模块:含全部;航班号;出发地;目的地等方式查询所有机票信息。 4、退票模块:当输入姓名或证件号后会显示您定的航班信息,再要求输入密码, 当密码正确时会显示您的个人信息,回车再是否确定退票。 5 查询模块:(输入管理密码)输入航班号,显示航班信息 和所有乘客个人信息 [caption id="" align=“aligncenter” width=“535”]
程序主界面[/caption]
源代码
头文件
#include<stdio.h> //标准输入、输出头文件#include<string.h> //包含字符串函数处理头文件#include<stdlib.h> //包含动态存储与释放函数头文件#define N 10000
struct air //定义结构体数组{ char num[10];//定义航班号 char start[20];//航班起始站 char over[20];//航班终点站 char time[10];//飞行时间 int count;//机票剩余数量 int znum;//机票总数 int fnum[12];//座次号 char ft[12][5];//订出状态}s[N];struct airman{ char name[10];//姓名 char id[20];//证件号 char telenum[12];//联系电话 char pass[10]; //密码 char airno[10]; //航班号 int fnum;// 航班座次
}am[N];void input(); //输入航班信息void print(); //输出航班信息void save(); //保存航班信息void read(); //读取航班信息void search(); //查找航班信息void shanchu(); //删除航班信息void dingpiao(); //订票信息void tuipiao(); //退票信息void xiugai(); //修改信息主函数
/**功能:飞机订票系统作者:日期:2014-06-16*/#include<stdio.h> //标准输入、输出头文件#include<stdlib.h> //包含动态存储与释放函数头文件#include "AircraftBook.h"
//主函数int main(void){ mainMenu(); system("pause"); return 0;
}//主函数结束
实现函数
#include "AircraftBook.h"int i;int aj=0;int m=0;int jjs=0;#define PRINT "%6s%12s%12s%10s%12d%12dn",s[i].num,s[i].start,s[i].over,s[i].time,s[i].znum,s[i].count //定义输出格式/************************************************************************函数名: mainMenu功能: 文件主菜单参数:返回值:空************************************************************************/
void mainMenu(){ int j; printf("nn ★---您好,欢迎进入中国民航管理系统!---★n"); printf("================================================================================n"); do { printf(" -------- ☆ 1.航班信息管理 ☆-------- nn" " -------- ☆ 2.浏览航班信息 ☆-------- nn" " -------- ☆ 3.查找航班信息 ☆-------- nn" " -------- ☆ 4.订票信息 ☆-------- nn" " -------- ☆ 5.退票信息 ☆-------- nn" " -------- ☆ 0.退出 ☆-------- nn"); printf("================================================================================n"); printf("请在0-5中选择以回车键结束:nn"); scanf("%d",&j); switch(j) { case 1:hhMenu();////调用航班信息管理模块 break; case 2:print();//调用打印模块 break; case 3:search();//调用查找模块 break; case 4:dingpiao();//调用订票模块 break; case 5:tuipiao();//调用退票模块 break; case 0:; break; } system("cls"); }while(j!=0); //判断结束 printf("nn -----------------★ 您好,感谢您使用中国民航管理系统!★--------- ★nn"); printf("nnn 谢谢使用中国民航管理系统,再见!nnn"); printf("nn ---------------- ★--------------★--------------★---------------- ★n");} /************************************************************************ 函数名:hhMenu() 功能:航班信息主菜单 参数: 返回值:0 ************************************************************************/int hhMenu(){
int a; char f[]="123"; //设置密码 printf("nn ★---您好,欢迎进入中国民航管理系统!---★n"); printf("================================================================================n"); printf("nn请输入密码(123)并以回车键结束:nn"); scanf("%s",f); //读取密码 if(strcmp(f,"123")==0) { do { printf(" -------- ☆ 1.输入航班信息 ☆-------- nn" " -------- ☆ 2.修改航班信息 ☆-------- nn" " -------- ☆ 3.删除航班信息 ☆-------- nn" " -------- ☆ 0.退出 ☆-------- nn"); printf("================================================================================n"); printf("请在0-3中选择以回车键结束:nn"); scanf("%d",&a); switch(a) { case 1: input();//调用输入模块 break; case 2:xiugai();//调用修改模块 break; case 3:shanchu(); //调用删除模块 break; case 0: break; } system("cls"); }while(a!=0); //判断结束 } else printf("输入密码错误!请检查您的密码是否正确!谢谢!再见!nn"); return 0; }
/************************************************************************ 函数名: input 功能: 打印模块程序 参数: 返回值:空 ************************************************************************/
void input(){
int y; int ss; int ssa;
printf("请依次输入航班信息(机票数位0结束输入):nn" "完成输入信息请键入w以回车键结束nn"); //打印提示信息 printf("--------------------------------------------------------------------------n"); for(i=0;i<N;i++) {
printf("请输入航班号:n"); scanf("%s",&s[i].num); //读取航班号 printf("请输入起始站:n"); scanf("%s",s[i].start);//读取起始站 printf("请输入终点站:n"); scanf("%s",s[i].over);//读取终点站 printf("请输入时间:n"); scanf("%s",s[i].time);//读取时间 printf("请输入机票数(机票数为0结束输入):n",m); scanf("%d",&s[i].count);//读取机票数 s[i].znum = s[i].count;//记录机票总数 for (ss=0;ss<12;ss++) { s[i].fnum[ss]=ss+1; strcpy(s[i].ft[ss],"未订"); }
m++;
printf("第%d个信息已经输完是否继续?按任意数字键继续,按 0结束",m); scanf("%d",&y); if(y==0) { save();//将结构体信息存盘 print();//输出输入的航班信息 break; }
}} /************************************************************************ 函数名: save 功能: 保存模块程序 参数: 返回值:空 ************************************************************************/void save(){ FILE *fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","wb"))==NULL)//打开文件并判断是否出错 { printf("创建航班信息文件失败!nn");//打印出错提示 getchar(); return; } if((fp1=fopen("hao.dat","wb"))==NULL)//打开文件并判断是否出错 { printf("创建航班信息文件失败!nn");//打印出错提示 getchar(); return; }
for(i=0;i<m;i++) if(fwrite(&s[i],sizeof(struct air),1,fp)==0)//向文件写入数据,并判断是否出错 printf("向航班信息文件输入数据失败!nn"); fprintf(fp1,"%d",m);
fclose(fp);//关闭文件 fclose(fp1);//关闭文件
}//void saveman()//{// FILE *fp2,*fp3;//定义用户文件指针// if((fp2=fopen("manchen.dat","wb"))==NULL)//打开文件并判断是否出错// {// printf("创建用户文件失败!nn");//打印出错提示// getchar();// return;// }// if((fp3=fopen("manhao.dat","wb"))==NULL)//打开文件并判断是否出错// {// printf("创建用户文件失败!nn");//打印出错提示// getchar();// return;// }//// for(i=0;i<m;i++)// if(fwrite(&am[i],sizeof(struct airman),1,fp2)==0)//向文件写入数据,并判断是否出错// printf("向用户文件输入数据失败!nn");// fprintf(fp3,"%d",m);// fclose(fp2);//关闭文件// fclose(fp3);//关闭文件//} /************************************************************************ 函数名: read 功能: 从文件读取信息模块 参数: 返回值:空 ************************************************************************/void read(){ FILE *fp,*fp1;//定义文件指针
if((fp=fopen("chen.dat","rb"))==NULL)//打开文件,并判断是否出错 { printf("出错,请检查航班文件是否存在,按任意键返回住菜单");//打印出错提示 getchar(); } if((fp1=fopen("hao.dat","rb"))==NULL)//打开文件并判断是否出错 { printf("创建航班文件失败!nn");//打印出错提示 getchar(); return; } fscanf(fp1,"%d",&m); fclose(fp1);//关闭文件 for(i=0;i<m;i++) { fread(&s[i],sizeof(struct air),1,fp);//从文件中读取信息 } fclose(fp);//关闭文件
}//void readman()//{// FILE *fp2,*fp3;// if((fp2=fopen("manchen.dat","rb"))==NULL)//打开文件,并判断是否出错// {// printf("出错,请检查用户文件是否存在,按任意键返回住菜单");//打印出错提示// getchar();// }// if((fp3=fopen("manhao.dat","rb"))==NULL)//打开文件并判断是否出错// {// printf("创建用户文件失败!nn");//打印出错提示// getchar();// return;// }// fscanf(fp3,"%d",&m);// fclose(fp3);//关闭文件// for(i=0;i<m;i++)// {// fread(&am[i],sizeof(struct airman),1,fp2);//从文件中读取信息// }// fclose(fp2);//关闭文件//} /************************************************************************ 函数名: print 功能: 打印模块 参数: 返回值:空 ************************************************************************/void print(){ char w[10]; read();//调用读取文件函数
printf("航班号 起始站 终点站 时间 机票总数|剩余机票数n"); for(i=0;i<m;i++) { printf(PRINT);//打印信息 } printf("请按任意键回车键结束以返回上层菜单:n"); scanf("%s",w);} /************************************************************************ 函数名:search 功能: 查询模块 参数: 返回值:空 ************************************************************************/void search(){ char name1[20]; char name2[20]; char ii[10]; int n; char no[10]; int ss; int js; do { printf("请选择查找方式:nn");//打印查询方式菜单 printf("1.按航班号查找nn" "2.按终点站查找nn" "3.按航线查找nn" "0.返回nn"); printf("请在0-3中选择:nn" "按其他键以回车键结束返回主菜单:nn"); scanf("%d",&n);//读取查找方式 if(n==0) break; switch(n) { case 1: printf("请输入航班号:n"); scanf("%s",&no);//航班号 break; case 2: printf("请输入终点站名称:n"); scanf("%s",name2);//读取终点站 break; case 3: printf("请输入起始站名称:n"); scanf("%s",name1);//读取起始站 printf("请输入终点站名称:n"); scanf("%s",name2);//终点站 break; } read();//调用读取函数 //readman(); for(i=0;i<m;i++) { if(strcmp(s[i].over,name1)==0||strcmp(s[i].over,name2)==0)//按终点站起始站判断输出条件 { printf("n查找航班信息成功!n"); printf("航班号%s 机票总数:%d剩余机票数:%dn",s[i].num,s[i].znum,s[i].count); printf("------------------------------------------------------------------------"); printf("起始站 终点站 时间 座次号 座次订出状态n"); for (ss=0;ss<s[i].znum;ss++) { printf("%-s%12s%12s%12d%12sn",s[i].start,s[i].over,s[i].time,s[i].fnum[ss],s[i].ft[ss]);//打印信息 }//打印信息
if (strcmp(am[i].airno,s[i].num)==0) { printf("n订票用户信息:n"); printf("*-----------------------------------*n"); printf("航班号 座次号 姓名 证件号 联系方式n"); printf("%-s%12d%12s%12s%12sn",am[i].airno,am[i].fnum,am[i].name,am[i].id,am[i].telenum); } printf("n该航班订票用户信息:n"); printf("*-----------------------------------*n"); printf("航班号 座次号 姓名 证件号 联系方式n"); for(js=0;js<aj;js++) { if (strcmp(am[js].airno,s[i].num)==0) {
printf("%-s%12d%12s%12s%12sn",am[js].airno,am[js].fnum,am[js].name,am[js].id,am[js].telenum); }
} printf("*-----------------------------------*n"); jjs=1; break; } if(strcmp(s[i].num,no)==0)//按航班号判断输出条件 { printf("n查找航班信息成功!n"); printf("航班号%s 机票总数:%d剩余机票数:%dn",s[i].num,s[i].znum,s[i].count); printf("------------------------------------------------------------------------n"); printf("起始站 终点站 时间 座次号 座次订出状态n"); for (ss=0;ss<s[i].znum;ss++) { printf("%-s%12s%12s%12d%12sn",s[i].start,s[i].over,s[i].time,s[i].fnum[ss],s[i].ft[ss]);//打印信息 } printf("n该航班订票用户信息:n"); printf("*-----------------------------------*n"); printf("航班号 座次号 姓名 证件号 联系方式n"); for(js=0;js<aj;js++) { if (strcmp(am[js].airno,s[i].num)==0) {
printf("%-s%12d%12s%15s%15sn",am[js].airno,am[js].fnum,am[js].name,am[js].id,am[js].telenum); }
} printf("*-----------------------------------*n"); jjs=1; break; } } strcpy(no,"0");//将航班号赋值为0 printf("没有您需要的信息或查找完毕:nn" "是否继续查找?请键入yes或no以回车键结束n"); scanf("%s",ii); }while(strcmp(ii,"yes")==0);//判断结束} /************************************************************************ 函数名:shanchu 功能: 删除模块 参数: 返回值:空 ************************************************************************/void shanchu(){ char name1[20]; char name2[20]; char ii[10]; int n; char no[10]; do { printf("请选择删除以方式回车键结束:nn");//打印删除方式菜单 printf("*1.按航班号删除nn" "*2.按航线删除nn" "*0.返回nn"); printf("请在0-2中选择以回车键结束:n"); scanf("%d",&n);//读取删除方式 if(n==0) break; //跳出循环 switch(n) { case 1: printf("请输入航班号:n"); scanf("%s",&no);//读取航班号 read();//调用读取函数 break;//跳出循环 case 2: printf("请输入起始站 名称:n"); scanf("%s",name1);//读取起始站 printf("请输入终点站名称:n"); scanf("%s",name2);//读取终点站 read();//调用读取函数 break;//跳出循环 } for(i=0;i<m;i++) { if(strcmp(s[i].num,no)==0||strcmp(s[i].start,name1)==0&&strcmp(s[i].over,name2)==0)//判断输入信息是否存在 { s[i]=s[m-1]; m--; }
} printf("查找完毕或没有这个信息nn"); printf("是否继续删除n"); printf("请键入yes或no以回车键结束n"); scanf("%s",ii); //读取是否继续信息 save(); //调用读取函数 if(!strcmp(ii,"yes")) //判断是否继续删除 printf("请按任意键以回车键结束返回上层菜单:n"); break; }while(n!=1&&n!=2&&n!=3&&n!=4&&n!=0); //判断结束 print();} /************************************************************************ 函数名:dingpiao 功能: 订票模块 参数: 返回值:空 ************************************************************************/void dingpiao(){ int n,jj; char name[10];//姓名 char id[20];//证件号 char telenum[12];//联系电话 char pass[10]; //密码 char a[10]="yes";
while(!strcmp(a,"yes")) { search();//调用查询模块 if (jjs!=1) { printf("不存在该航班信息!n"); break; } printf("用户名:"); scanf("%s",&name); strcpy(am[aj].name,name); printf("证件号:"); scanf("%s",&id); strcpy(am[aj].id,id); printf("联系电话:"); scanf("%s",&telenum); strcpy(am[aj].telenum,telenum); printf("密码:"); scanf("%s",&pass); strcpy(am[aj].pass,pass); strcpy(am[aj].airno,s[i].num);
for (jj=0;jj<N;jj++) { if (strcmp(s[i].ft[jj],"未订")==0) { am[aj].fnum =jj+1; strcpy(s[i].ft[jj],"已订"); break; } } n=1; if(s[i].count!=0&&s[i].count>=n)//判断是否出错 { s[i].count=s[i].count-n; //saveman(); save();//调用保存函数 printf("订票成功!nn"); printf("*-----------------------------------*n"); printf("航班号 座次号 姓名 证件号 联系方式n"); printf("%-s%12d%12s%15s%15sn",am[aj].airno,am[aj].fnum,am[aj].name,am[aj].id,am[aj].telenum); aj++;
} printf("是否继续? 请输入yes或no以回车键结束:n");//判断是否继续订票 scanf("%s",a); };//判断结束
} /************************************************************************ 函数名:tuipiao 功能: 退票模块 参数: 返回值:空 ************************************************************************/void tuipiao(){ int n; char a[10]; char name[10];//姓名 char id[20];//证件号 char telenum[12];//联系电话 char pass[10]; //密码 int sj; int sa; int qs; do { // readman(); read();//调用读取函数 printf("用户名:"); scanf("%s",&name); printf("证件号:"); scanf("%s",&id); for (sj=0;sj<N;sj++) { if ((strcmp(am[sj].name,name)==0)&&(strcmp(am[sj].id,id)==0)) { printf("请输入密码:"); scanf("%s",&pass); do {
if(strcmp(am[sj].pass,pass)==0) {
sa = am[sj].fnum-1; am[sj].fnum = 0; for (qs=0;qs<N;qs++) { if (strcmp(am[sj].airno,s[qs].num)==0) { s[qs].count=s[qs].count+1; strcpy(s[qs].ft[sa],"未订"); break;
} } strcpy(am[sj].airno,"无");
save(); //调用保存模块 // saveman(); printf("退票成功!nn"); printf("用户机票信息!nn"); printf("航班号 座次号 姓名 证件号 联系方式n"); printf("%-s%12d%12s%12s%12sn",am[sj].airno,am[sj].fnum,am[sj].name,am[sj].id,am[sj].telenum); break;
} else{ printf("密码错误!"); printf("请重新输入密码:"); scanf("%s",&pass); } } while (strcmp(am[sj].pass,pass)!=0);
break; } else if ((strcmp(am[sj].name,name)==0&&strcmp(am[sj].id,id))||strcmp(am[sj].name,name)&&strcmp(am[sj].id,id)==0) { printf("用户名或证件号错误!"); break; } } if (sj>=N) { printf("未找到该用户!");
}
printf("是否继续? 请键入yes或no以回车键结束:nn");//判断是否继续退票 scanf("%s",a); }while(!strcmp(a,"yes"));//判断并跳出循环 getchar();} /************************************************************************ 函数名:xiugai 功能: 修改模块 参数: 返回值:空 ************************************************************************/void xiugai(){ struct xiu //定义结构体 { char no[10]; char name1[20]; char name2[20]; char time[20]; int count; }x[1]; char j[10]; int n; read();//调用读取模块 do { printf( "请选择修改方式:nn" "*1,按航班号修改:nn" "*2,按航线修改: nn"); printf("请在1---2中修改以回车键结束:nn"); scanf("%d",&n);//读取修改方式 switch(n) { case 1:printf("请输入航班号:n"); scanf("%s",&x[0].no);//读取航班号 for(i=0;i<m;i++) {
if(strcmp(s[i].num,x[0].no)==0)//判断输出条件 { printf("航班号 起始站 终点站 时间 机票数n"); printf(PRINT); break; } } break; case 2:printf("请输入起始站:n"); scanf("%s",x[0].name1);//读取起始站 printf("请输入终点站:n"); scanf("%s",x[0].name2);//读取终点站 for(i=0;i<m;i++) { if(strcmp(s[i].over,x[0].name1)==0&&strcmp(s[i].over,x[0].name2)==0)//判断输出条件 { printf("航班号 起始站 终点站 时间 机票数n"); printf(PRINT); break; } } break; }
strcpy(x[0].no,"0"); //将结构体中的号为零 printf("请输入新航班号、起始站、终点站、时间(星期几)、机票数:n"); scanf("%s%s%s%s%d",&x[0].no,x[0].name1,x[0].name2,x[0].time,&x[0].count);//定义输入格式
strcpy(s[i].num,x[0].no);//替换航班号 strcpy(s[i].start,x[0].name1);//替换其始站 strcpy(s[i].over,x[0].name2);//替换终点站 strcpy(s[i].time,x[0].time);//替换时间 s[i].count=x[0].count;//替换机票数 save();//调用保存模块 printf("是否继续?请键入yes或no以回车键结束:nn"); scanf("%s",j); }while(strcmp(j,"yes")==0); //判断结束 print();}
附件(打包下载)
[Downlink href=“http://pan.baidu.com/s/1qWx5ZeW”\]飞机订票系统—C语言版.rar\[/Downlink\]
评论