第一篇:C语言课程设计——飞机订票系统源代码
#include //包含access函数的头文件 #define N 9999 //定义最多的航班数 #define PRINT “%dtt%stt%stt星期%stt%dn ”,s[i].num,s[i].start,s[i].over,s[i].time,s[i].count //宏定义输出格式 struct air //定义结构体数组 { int num; //定义航班号 char start[20];//航班起始站 char over[20];//终点站 char time[10];//飞行时间 int count; //机票数量 }s[N]; int i,m=0; //定义全局变量 char ii[10]; void add();//函数声明增加航班信息函数 void print(); //显示航班信息 void search();//查找航班信息 void dingpiao();//订票业务 void tuipiao();//退票 void read();//读取文件 void save();//保存文件 void output();//输出格式 void paixu();//航班排序 void chushihua();//系统初始化 void build();//建立数据文件 void paixu1();//按航班号从小到大排序 void paixu2();//从大到小 void main()//主函数 { int j; chushihua();//系统初始化判断是否存在原始数据文件 printf(“ 欢迎使用飞机订票系统n”);//打印出系统主界面 do { printf(“================================== ”); printf(“1.增加航班信息n” “t2.浏览航班信息n” “tt3.查找航班信息(按航班号)tt╮(╯_╰)╭n” “ttt4.航班排序(按航班号)n” “tttt5.订票业务n” “to(︶︿︶)ottt6.退票业务n” “tttttt0.退出n”);printf(“================================== ”); printf(“请在0-6中选择以回车键结束: ”);scanf(“%d”,&j);switch(j){ case 1: add();//调用增加航班函数 break; case 2:print();//调用显示模块 break; case 3:search();//调用查找模块 break; case 4:paixu();//调用排序函数 break; case 5:dingpiao();//调用订票模块 break; case 6:tuipiao();//调用退票模块 break; case 0: //退出系统 save(); printf(“谢谢使用,再见!”); break;} }while(j!=0);//判断是否调用其他函数 } void chushihua()//定义系统初始化函数 { if(access(“hangban.dat”,0)){ build();} else read();} void build()//定义建立数据文件函数 { FILE *fp;//定义文件指针 if((fp=fopen(“hangban.dat”,“wb”))==NULL)//打开文件并判定是否出错 { printf(“创建文件失败!”);//打印出错提示 getchar(); return;} printf(“请依次输入航班信息(以回车键结束):n”); //打印提示信息 printf(“------------n”);for(i=0;i printf(“请输入航班号: ”); scanf(“%d”,&s[i].num);//输入航班号 printf(“请输入起始站: ”); scanf(“%s”,s[i].start);//输入起始站 printf(“请输入终点站: ”); scanf(“%s”,s[i].over);//输入终点站 printf(“请输入时间(星期几): ”); scanf(“%s”,s[i].time);//输入时间 printf(“请输入机票数: ”); scanf(“%d”,&s[i].count);//输入机票数 fwrite(&s[i],sizeof(struct air),1,fp); m++; printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”); scanf(“%s”,ii); if(strcmp(ii,“y”)!=0) //判断是否继续添加航班信息 { fclose(fp); //关闭文件 return; } } } void read() //定义读取文件函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“r”))==NULL){ printf(“创建文件失败!”); getchar(); return;} i=0;while(!feof(fp)){ fread(&s[i],sizeof(struct air),1,fp);//逐块读取数据 i++; m++;//计算存在航班数 } m--;fclose(fp);} void save()//定义保存函数 { FILE *fp;if((fp=fopen(“hangban.dat”,“wb”))==NULL) { printf(“创建文件失败!”); getchar(); return;} for(i=0;i //逐块保存数据 fwrite(&s[i],sizeof(struct air),1,fp);fclose(fp);} void add()//定义增加航班信息函数 { do{ printf(“请依次输入您要增加的航班信息(以回车键结束): n”); //打印提示信息 printf(“------------n”); printf(“请输入航班号: ”); scanf(“%d”,&s[m].num);//读取航班号 printf(“请输入起始站: ”); scanf(“%s”,s[m].start);//读取起始站 printf(“请输入终点站: ”); scanf(“%s”,s[m].over);//读取终点站 printf(“请输入时间: ”); scanf(“%s”,s[m].time);//读取时间 printf(“请输入机票数: ”); scanf(“%d”,&s[m].count);//读取机票数 m++; printf(“添加完毕,是否继续添加?请键入y或n以回车键结束:”); scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判断是否继续添加 } void output()//定义输出格式函数 { printf(“航班号tt起始站tt终点站tt时间tt机票数n”);//信息标题 for(i=0;i printf(PRINT);//打印出信息 } void print()//定义显示航班信息函数 { printf(“n目前我们有如下航班:n”);output(); //调用输出格式函数 printf(“n请按回车键返回上层菜单 ”);getchar();getchar();} void search()//定义查询函数 { int n; do { printf(“n请输入航班号: ”); scanf(“%d”,&n);//输入查询的航班号 for(i=0;i { if(s[i].num==n)//按航班号判定输出条件 { printf(“n您所查找的航班信息为:n ”); printf(“航班号tt起始站tt终点站tt时间tt机票数 nn”); printf(PRINT);//显示信息 printf(“n查询完毕,按回车键继续”); getchar(); getchar(); return; } } printf(“n对不起,没有您需要的信息!n ”);printf(“是否重新查找?请键入y或n以回车键结束 ”);scanf(“%s”,ii);}while(!strcmp(ii,“y”));//判定是否重新查找 } void dingpiao()//定义订票业务函数 { int n;char a[10]=“y”;do { search();//调用查询模块 if(!strcmp(ii,“n”)) { printf(“对不起!没有找到您所需要的航班,所以不能订票。n”);//未查找到所需航班 printf(“n请按回车键返回上层菜单 ”); getchar(); getchar(); strcpy(ii,“n”); break; } do { printf(“请输入您要订的机票数(以回车键结束): ”); scanf(“%d”,&n);//输入所订机票数 if(n<=0) //判定机票数是否出错 { printf(“输入错误!至少需订1张机票。n”); } else if(s[i].count==0)//判定机票是否售完 { printf(“对不起,你所选择的航班的机票已售完!n”); break; } else if(s[i].count!=0&&s[i].count>=n)//判定机票数是否大于等于订票数 { s[i].count=s[i].count-n; printf(“订票成功!”); break; } else if(s[i].count { printf(“对不起,你所选择的航班只剩 %d张机票n”, s[i].count); printf(“是否需要重新输入机票数?请输入y或n以回车键结束: ”);//判定是否重新输入订票数 scanf(“%s”,a); } }while(!strcmp(a,“y”)); printf(“是否需要订其他航班的机票?请输入y或n以回车键结束: ”); scanf(“%s”,a);}while(!strcmp(a,“y”));//判定是否继续订票 } void tuipiao()//定义退票函数 { int n;char a[10];do { search();//调用查询函数 if(!strcmp(ii,“n”)) { printf(“对不起!没有找到您所需要的航班,所以不能退票。n”); printf(“n请按回车键返回上层菜单 ”); getchar(); getchar(); strcpy(ii,“n”); break; } printf(“请输入您要退的机票数目: ”); scanf(“%d”,&n);//输入所退票数 if(n<=0) //判定票数是否有效 printf(“输入错误!至少需退1张机票。”); else { s[i].count=s[i].count+n; printf(“退票成功!”); } printf(“是否继续? 请键入y或n以回车键结束: ”);//判定是否继续退票 scanf(“%s”,a);}while(!strcmp(a,“y”));//判定并跳出循环 } void paixu()//定义排序函数 { int n; printf(“n******************************************************************************** ”); printf(“1.按航班号从小到大排序n” “t2.按航班号从大到小排序n”);printf(“******************************************************************************** ”); printf(“请在1-2中选择以回车键结束: ”);scanf(“%d”,&n);//输入排序方式 switch(n){ case 1:paixu1();//调用从小到大排序函数 break; case 2:paixu2();//调用从大到小排序函数 break;} printf(“排序后的航班信息为:n”);output(); //显示排序后航班信息 printf(“n请按回车键返回上层菜单 ”); getchar(); getchar();} void paixu1()//定义从小到大排序函数 { int k,j;struct air t;for(i=0;i { k=i; for(j=i+1;j if(s[k].num>s[j].num) k=j; if(i!=k) { t=s[k]; s[k]=s[i]; s[i]=t; } } } void paixu2()//定义从大到小排序函数 { } int k,j;struct air t;for(i=0;i if(s[k].num k=j;if(i!=k){ t=s[k]; s[k]=s[i]; s[i]=t;} } 飞机订票系统 1.需求分析 描述要求编程解决的问题。以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?明确规定: (a)输入的形式和输入值的范围; (b)输出的形式; (c)程序所能达到的功能; (d)测试数据:包括正确的输入及其输出结果和含有错误的输入及其输出结果。 2.概要设计 给出程序要达到的具体的要求。描述解决相应问题算法的设计思想。描述所设计程序的各个模块(即函数)功能。说明本程序中用到的所有抽象数据类型的定义、主程序的流程以及各程序模块之间的层次(调用)关系。 3.详细设计 实现概要设计中定义的所有数据类型,对每个操作只需要写出流程或伪码算法;对主程序和其他模块也都需要写出流程或伪码算法(伪码算法达到的详细程度建议为:按照伪码算法可以在计算机键盘直接输入高级程序设计语言程序);画出函数的调用关系图。给出所使用的基本抽象数据类型,所定义的具体问题的数据类型,以及新定义的抽象数据类型。设计出良好的输入输出界面(清晰易懂)。 4.调试分析 内容包括: (a)调试过程中遇到的问题是如何解决的以及对设计与实现的回顾讨论和分析; (b)算法的时空分析(包括基本操作和其他算法的时间复杂度和空间复杂度的分析)和改进设想; (c)经验和体会等。 5.用户使用说明 说明如何使用你编写的程序,详细列出每一步的操作步骤。 6.测试结果 设计测试数据,或具体给出测试数据。要求测试数据能全面地测试所设计程序的功能。列出你的测试结果,包括输入和输出。这里的测试数据应该完整和严格,最好多于需求分析中所列。 7.测试情况:给出程序的测试情况,并分析运行结果 附录(非必须,按照需要添加) 带注释的源程序。可以只列出程序文件名的清单。 需求分析 任务:通过此系统可以实现如下功能: 录入: 可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 查询: 可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓); 可以输入起飞抵达城市,查询飞机航班情况; 订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班; 退票: 可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 概要设计 详细设计 详列函数 void list(){ struct airline *info; int i=0; info=start; printf(“起点城市t终点城市t航班号t起飞时间t降落时间t总票数t余票数n”); while(i { display(info); info++; i++; } printf(“nn”);} 查询函数 void search(){ struct airline *info,*find(); char qiname[10]; char jiangname[10]; int i=0; info=start; printf(“请输入要起飞城市的名称:”); scanf(“%s”,qiname); printf(“请输入要抵达城市的名称:”); scanf(“%s”,jiangname); while(i { if(!strcmp(jiangname,info->jiang_name)) { break; } info++; i++; } if(i>=MAXSIZE) { printf(“没有这条航线!n”); } else { printf(“起飞城市t降落城市t航班号t起飞时间t降落时间t总票数t余票数n”); display(info); } } struct airline *find(){ struct airline *info; char number[10]; int i=0; info=start; printf(“请输入航班号:”); scanf(“%s”,number); while(i { if(!strcmp(number,info->air_num)) { return info; } info++; i++; } printf(“没有这条航线!n”); return NULL;} 订票函数 void order(){ struct airline *info; char qiname[10]; char jiangname[10]; int amount; char name[10]; char id[30]; info=start; printf(“请输入您的起飞城市:”); scanf(“%s”,qiname); printf(“请输入您的降落城市:”); scanf(“%s”,jiangname); printf(“请输入您需要的票数:”); scanf(“%d”,&amount); int i=1; while(i<5) { if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname)) { if(amount<=info->ticket_left) { int i; printf(“请输入您的姓名:”); scanf(“%s”,name); printf(“请输入您的身份证号:”); scanf(“%s”,id); info->order=insertlink(info->order,amount,name,id); printf(“您的航班信息为:n”); display(info); for(i=0;i { printf(“%s的座位号是:%dn”,name,info->ticket_all-info->ticket_left+i+1); } info->ticket_left-=amount; printf(“订票成功!n”); break; } else { info++; i++; } } else { info++; i++; } } } 退票函数 void returnticket(){ struct airline *info; linklist *p1,*p2,*head; char name[10]; if(!(info=find())) { return; } head=info->order; p1=head; printf(“请输入您的姓名:”); scanf(“%s”,name); while(p1!=NULL) { if(!strcmp(name,p1->name)) { break; } p2=p1; p1=p1->next; } if(p1==NULL) { printf(“您没有订过票!n”); return; } else { if(p1==head) { head=p1->next; } else { p2->next=p1->next; } info->ticket_left+=p1->tickets; printf(“%s退票成功!n”,p1->name); free(p1); } info->order=head;} 存储结构 typedef struct passenger { char name[10]; int tickets; char id[30]; struct passenger *next;} linklist;typedef struct airline { char qi_name[10]; char jiang_name[10]; char air_num[10]; char qi_time[10]; char jiang_time[10]; int ticket_all; int ticket_left; linklist *order;} lineinfo;调试分析 查看航线信息 查询航线 ① 输入起飞城市 ② 输入抵达城市 ③ 输出航班信息 办理订票业务 ① 查询符合的航班 ② 查询余票量 ③ 输出航班信息 办理退票业务 源代码 #include char name[10]; int tickets; char id[30]; struct passenger *next;} linklist; typedef struct airline { char qi_name[10]; char jiang_name[10]; char air_num[10]; char qi_time[10]; char jiang_time[10]; int ticket_all; int ticket_left; linklist *order;} lineinfo; struct airline *start; void display(struct airline *info){ printf(“%st %10st %10st %10st %10st %5dt %5dn”,info->qi_name,info->jiang_name,info->air_num,info->qi_time,info->jiang_time,info->ticket_all,info->ticket_left);} void list(){ struct airline *info; int i=0; info=start; printf(“起点城市t终点城市t航班号t起飞时间t降落时间t总票数t余票数n”); while(i { display(info); info++; i++; } printf(“nn”);} void search(){ struct airline *info,*find(); char qiname[10]; char jiangname[10]; int i=0; info=start; printf(“请输入要起飞城市的名称:”); scanf(“%s”,qiname); printf(“请输入要抵达城市的名称:”); scanf(“%s”,jiangname); while(i { if(!strcmp(jiangname,info->jiang_name)) { break; } info++; i++; } if(i>=MAXSIZE) { printf(“没有这条航线!n”); } else { printf(“起飞城市t降落城市t航班号t起飞时间t降落时间t总票数t余票数n”); display(info); } } struct airline *find(){ struct airline *info; char number[10]; int i=0; info=start; printf(“请输入航班号:”); scanf(“%s”,number); while(i { if(!strcmp(number,info->air_num)) { return info; } info++; i++; } printf(“没有这条航线!n”); return NULL;} linklist *insertlink(linklist *head,int amount,char name[],char id[]){ linklist *p1,*new1; p1=head; new1=(linklist*)malloc(sizeof(linklist)); strcpy(new1->name,name); new1->tickets=amount; new1->next=NULL; strcpy(new1->id,id); if(head==NULL) { head=new1; new1->next=NULL; } else { while(p1->next!=NULL) p1=p1->next; p1->next=new1; } return head;} void order(){ struct airline *info; char qiname[10]; char jiangname[10]; int amount; char name[10]; char id[30]; info=start; printf(“请输入您的起飞城市:”); scanf(“%s”,qiname); printf(“请输入您的降落城市:”); scanf(“%s”,jiangname); printf(“请输入您需要的票数:”); scanf(“%d”,&amount); int i=1; while(i<5) { if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname)) { if(amount<=info->ticket_left) { int i; printf(“请输入您的姓名:”); scanf(“%s”,name); printf(“请输入您的身份证号:”); scanf(“%s”,id); info->order=insertlink(info->order,amount,name,id); printf(“您的航班信息为:n”); display(info); for(i=0;i { printf(“%s的座位号是:%dn”,name,info->ticket_all-info->ticket_left+i+1); } info->ticket_left-=amount; printf(“订票成功!n”); break; } else { info++; i++; } } else { info++; i++; } } } void returnticket(){ struct airline *info; linklist *p1,*p2,*head; char name[10]; if(!(info=find())) { return; } head=info->order; p1=head; printf(“请输入您的姓名:”); scanf(“%s”,name); while(p1!=NULL) { if(!strcmp(name,p1->name)) { break; } p2=p1; p1=p1->next; } if(p1==NULL) { printf(“您没有订过票!n”); return; } else { if(p1==head) { head=p1->next; } else { p2->next=p1->next; } info->ticket_left+=p1->tickets; printf(“%s退票成功!n”,p1->name); free(p1); } info->order=head;} int menu_select(){ int c; char s[20]; printf(“ 订票系统n”); printf(“-------------n”); printf(“ 1.查看航线信息 printf(” 2.查询航线 printf(“ 3.办理订票业务 printf(” 4.办理退票业务 printf(“ 5.退出系统 printf(”-------------n“); do { printf(”请选择(1-5):“); scanf(”%s“,s); c=atoi(s); } while(c<1||c>6); return c; n”);n“);n”);n“); n”); } int main(){ struct airline air[MAXSIZE]= { {“harbin”,“beijing”,“1”,“12:00”,“14:00”,30,30},{“harbin”,“shanghai”,“2”,“10:00”,“13:00”,20,20},{“harbin”,“beijing”,“3”,“13:30”,“10:00”,50,50},{“harbin”,“guangzhou”,“4”,“17:00”,“21:00”,50,50},{“harbin”,“dalian”,“5”,“14:00”,“17:00”,40,40} }; start=air; while(1) { system(“cls”); switch(menu_select()) { case 1: list(); break; case 2: search(); break; case 3: order(); break; case 4: returnticket(); break; case 5: exit(0); } getch(); } } 经验体会 1、通过设计飞机订票系统,加深了对链表的运用和理解。 2、通过多组测试数据,发现了程序的问题,并做了调整、3、通过设计选择菜单,对选择结构有更深刻的了解。 飞机订票系统 1.概述(设计题目与可行性分析) 1.1设计题目:飞机订票系统 1.2可行性分析 飞机订票系统是为机场工作人员和客户提供订票退票等与机票相关内容的管理系统,方便机场工作人员对机票的管理,以提高机场工作人员对机票管理工作的效率。当前飞机订票问题:手工订票所产生的客座率低。而我们的目标是:建立一个飞机订票系统数据库。 1.2.1研究现有系统,画现有系统的流程图 了解当前系统能够完成的功能及组成 航班管理:票据管理 售票点:直接面向用户 航班管理 票据管理 票库 订票库 订票管理 出售管理 打印机票 售票点1 售票点n 现有系统:票据都分布在各个售票点 1.2.2导出新系统的高层逻辑结构 数据流图的基本符号: 数据源/终点(人机界面): 加工处理: 文件名 文件: 数据流名 数据流: 票价信息 机票 查订票号 订票处理 客户信息 出票处理 订票记录 顾客 订票信息 订票号 库存信息 票价信息 票价管理 航班管理 航班信息 操作员 航班信息 保存 新系统的数据流图: 说明:流向文件的数据流的名可以省略 1.2.3可行性分析报告 随着Internet的迅速发展和用户数量的急剧增加,互联网对于企业和事业单位的运营和发展日益重要,网上交易也逐渐被人们认可,并成为未来交易的发展方向。在这种情况下,很多原有的C/S模式的系统也逐步向B/S模式靠拢,飞机订票系统也不例外。 飞机订票系统是飞机旅游服务信息系统的一个重要组成部分。为旅客提供优质便捷的服务,为了提高飞机客运的售票效率,丰富飞机客运的营销手段,飞机售票总站的下属代售点可以通过公用的互联网资源,建立数据库,实现网上的售票,查询及管理工作。 2.系统目标和设计原则 2.1系统目标: 建立一个飞机订票系统数据库。 2.1.1系统简介: 本系统是专为乘坐飞机的旅客准备的,旅客只需把自己的信息(姓名.性别.工作单位.身份证号.旅行时间.旅行目的地)预先交给旅行社,旅行社就可以将信息输入本系统,系统就可以为旅客安排航班,打印出取票通知和帐单。旅客只要在飞机起飞的前一天凭取票通知单和帐单交款取单,系统校对无误即印出机票给旅客。 2.2设计原则 2.2.1根据实际情况考虑三种可行性 技术可行性、经济可行性、操作可行性 2.2.2提出侯选方案、提出各种各样的实现方案 主机(纯主机型、C/S型)、开发环境、网络方案、对提出的每个方案进行成本估计 硬件、软件费用投资(根据各公司的报价)开发成本估计(任务估算法) 运行费用、投资回收期 纯收入:通过本系统的运行、投资回收后的收入 3、描述推荐理由:分别从技术、经济、用户、投资方的不同角度考虑 3.支撑环境规划 3.1整体系统运作图 3.2运行环境 服务器:硬件配置:CPU Intel P4 1.2G以上 内存256 硬盘 80G以上 软件配置:Windows 2000/2003 SERVER SQL SERVER 2000 4.系统功能结构 1、录入:可以录入航班情况(数据可以存储在一个数据文件中,数据结构、具体数据自定) 2、查询:可以查询某个航线的情况(如,输入航班号,查询起降时间,起飞抵达城市,航班票价,票价折扣,确定航班是否满仓);可以输入起飞抵达城市,查询飞机航班情况; 3、订票:(订票情况可以存在一个数据文件中,结构自己设定)可以订票,如果该航班已经无票,可以提供相关可选择航班; 4、退票:可退票,退票后修改相关数据文件; 客户资料有姓名,证件号,订票数量及航班情况,订单要有编号。 5、修改航班信息:当航班信息改变可以修改航班数据文件。 5.数据库设计 5.1概念结构设计 E-R图如下: 5.2逻辑结构设计 1.航空公司表:AIRLINE 2.客户表CUSTOMER 3、飞机表PLANE 4.航线表LINE 5.航班表FLIGHT 6.订票表BOOKTICKET 5.3实现设计 实现以下操作: 1、注册航空公司: 2、增加飞机: 3、增加航线: 4、增加航班: 5、增加客户: 6、建立一个订票的存储过程,存储过程名为Book_Ticket,请完成以下存储过程,实现订票的操作: a)指定要订的航班号(HID)及客户的编号(KID); b)先查看客户是否为特殊客户,如果不是,票价不打折扣; c)否则如果客户航程超过5万公里,票价7折,超过15万公里,票价打5折; d)查看客户订票以后,所有乘客的票数是否超过总的座位数,如果超过,回滚订票操作; e)要求在操作过程中使用到事务技术。 CREATE PROCEDURE Book_ticket @HID VARCHAR(20) @HID VARCHAR(20) AS DECLARE @TRANS_NAME VARCHAR(20)select @TRANS_NAME=’ ’ BEGIN TRANSACTION DECLARE @Bookid int,@seats int,@IsSpec char(1)/*定义订票里程DIST、折扣率discount、总的订票里程distance、票价PRICE(实型)*/ select @Isspec=Isspec,@distance=Points FROM Customer where select @discount=1 IF @ BEGIN END /*选择出票价*/ SELECT @PRICE=PRICE FROM FLIGHT WHERE /*加入客户订票信息*/ /*将客户新订票里程的信息累计到用户信息里面*/ UPDATE SET WHERE /*查看客户订票后,是否超过可容纳的座位数目,如果超过,取消所有操作*/ SELECT booked=count(*)FROM WHERE FID= /*查看额定座位容量*/ SELECT @seats=seatsnum FROM WHERE IF @BOOKED>@SEATS ELSE COMMIT TRANSACTION GO 7.运行这个订票操作的存储过程(自己设定客户及航班) book_ticket , 8.事务运行成功后,再显示各表的数据,按表分别写出来。 6.总体实施计划 6.1可行性研究: 研究现有系统,画现有系统的流程图,编写可行性分析报告 6.2进行数据库设计: 概念结构设计,逻辑结构设计,实现设计 6.3概要设计: 从数据流图导出初始结构图,设计优化 6.4详细设计: 结构化的程序设计,采用流程图的形式 6.5保密设计 1.每个用户需要注册才能进入航空订票信息系统,并进行网上订票的。用户必须 用自己真实的身份进行注册。 2.系统要另外在备一份数据库,防止系统出现错误而使数据信息丢失的可能性。 3.系统要安装防火墙,防止黑客入侵破坏系统。还有就是安装杀毒软件,防止 病毒入侵而导致系统瘫痪。 6.6维护设计 系统设置提供管理员操作页面: 1.提供管理员密码,方便维护操作.2.固定时间对系统进行维护和检测.3.若系统出现瘫痪时,可出动备用系统维持运转.4.定期对系统进行更新整顿清空.7.总结 这次数据库课程设计的“飞机订票系统”,通过近一周的上机操作,充分应用了所学的数据库的知识,并去图书馆查阅了一些书集和上网搜索一部分相当资料,粗略设计出该系统。总体上来说,这次课程设计还是比较成功的,充分运用了所学的软件工程设计、数据库的设计,设计出E-R图、流程图、数据库基本表,从整体规划出了系统的运行环境和系统实现的功能。 当然,由于学艺不精,在课程设计的过程也碰到的一些问题。其中,画E-R图时,各实体中的关系的确定,由于对系统还不够了解而找不到一个准确的词来形容;总体规划时,材料太多,不易整理;相关数据库技术方面没有多注意,这次课程设计的重点只在对整个系统的总体思路设计。 其实这些通过最近的课程设计觉得最重要一点就是:我们一定要自己动手,这样才能真正的学到东西。书本知识固然重要,但我们更要学会将书本知识应用到实际的工作中。实践中才会发现错误,也才能改进,才能达到学习的最终目的。 最后感谢在这次课程设计中帮助过我的老师,同学!8.参考文献 物流信息系统 赵刚 四川大学人民出版社 2002/9 物流信息管理 尹涛 东北财经大学出版社 2005/1 数据库系统概论 王珊 萨师煊 高等教育出版社 2006/5 数据库技术与应用-Access2000篇 郭力平人民邮电出版社 2002/8 软件设计师教程 陈平禇华 清华大学出版社 2006/6 文章引用自: 《银行帐户管理系统》设计报告 飞机航班订票系统概要设计 根据需求分析中的描述,知道需要三个struct结构体类型和一个class的类 struct person //定义旅客信息结构体类型 { char name[50];//旅客姓名 char sex[20];//旅客性别 char id[20];//旅客身份证号 char from[50];//旅客出发地 char to[50];//旅客目的地 int year;//旅客出发年 int month;//月 int day;//日 };struct fly //定义航班信息结构体类型 struct piao //定义订单信息结构体类型 这两个结构体类型和之前第一个相似。 class plane //定义一个类--plane { public: //public表示是共有属性,里面的东西变为共有的。对象外的用户可以调用对象内的类型 char menu();//定义 各种成员函数 void set();//**********************旅客信息添加修改删除函数声明 void AddPer();//旅客 增加信息 void chp();//旅客 修改信息 void dep();//旅客 删除信息 //**********************航班信息添加修改删除函数声明 《银行帐户管理系统》设计报告 void addf();//航班 增加信息 void chf();//航班 修改信息 void def();//航班 删除信息 //**********************订单信息添加修改删除函数声明 void addt();//订单中 增加信息 void cht();//订单中 修改信息 void det();//订单中 删除信息 //**********************按条件显示订单信息函数声明 void showno();//按航班班次显示订单信息 void showplace();//按出发地、目的地显示订单信息 void showname();//按旅客姓名显示订单信息 void save();//保存信息 void exit();//退出界面 private: person a[100];//定义一个用户的数组 fly b[100];//定义一个航班的数组 piao c[100];//定义一个订单的数组 int t; //旅客个数 int s; //航班个数 int r;//订单个数 };三个struct结构体类型中用于存放数据,在private中定义出a[]、b[]、c[]三个数组用来存放数据。并在public中声明出将要调用的函数。public表示是共有属性,将里面的东西变为共有的。对象外的用户也可以调用对象内的类型。 然后在main函数中写入一个switch函数用来满足用户的选择,依照用户的选择来实现case中的函数。case中函数来实现用户的需求:例如增加、修改、删除一个旅客资料等等。 《银行帐户管理系统》设计报告 2. 详细设计 //***********************plane创建一个类m将键盘输入的数据输入进m类中 plane m; //**************************从文件流之中讲数据读取************ void plane::set() { fstream file(“person.txt”,ios::in);//定义一个文件流,以输入的方式打开文件 int i=0;if(file.is_open()) //判断文件是否打开 { while(!file.eof()) //判断文件是否是最末尾端(如果不是则运行下列代码) { file>>m.a[i].name;//将名字写入到结构体类型person中 file>>m.a[i].sex; file>>m.a[i].id; file>>m.a[i].from; file>>m.a[i].to; file>>m.a[i].year>>m.a[i].month>>m.a[i].day; if(!file.eof())//判断文件是否是最末尾端 i++; //不是的话i+1 } m.t=i; file.close();} fstream file2(“fly.txt”,ios::in); //file2 3类似 fstream file3(“piao.txt”,ios::in);//***************************讲变量名中的数据输入到文件流之中 void plane::save(){ //*******************************将数据输入到person文件中 fstream file(“person.txt”,ios::out | ios::trunc);/*out以输出方式打开一个文件 trunc打开一个文件要是存在则删除其中全部数据 若不存在则建立新文件*/ if(file.is_open())//讲变量名之中的数据输入到file中 { for(int i=0;i file< file< file< 《银行帐户管理系统》设计报告 file< file< file< file< file< file.close(); } fstream file2(“fly.txt”,ios::out | ios::trunc); //file2 3类似 fstream file3(“piao.txt”,ios::out | ios::trunc); //******************************定义一个menu char plane::menu() { int k; cout<<“*************************飞 机 航 班 订 票 系 统**********************”< cout<<“ 1.增加一个旅客信息 ”< cout<<“ 2.修改一个旅客信息 ”< cout<<“ 3.删除一个旅客信息 ”< cout<<“ 4.增加一个航班信息 ”< cout<<“ 5.修改一个航班信息 ”< cout<<“ 6.删除一个航班信息 ”< cout<<“ 7.增加一个订单信息 ”< cout<<“ 8.修改一个订单信息 ”< cout<<“ 9.删除一个订单信息 ”< cout<<“ 10.按班次显示订单资料 ”< cout<<“ 11.按航班线路显示订单资料 ”< cout<<“ 12.按旅客姓名显示订单资料 ”< cout<<“请输入您要选择的功能序号:”; cin>>k; return k; //将用户选择的K值返回到主函数中赋值给R以此选择case } //*****************************添加旅客信息—从键盘中将数据输入到一个变量名之中 void plane::AddPer() { char choice;//choice用来判断y/n for(int i=m.t;i<100;i++) { //**************添加旅客信息 cout<<“添加旅客信息--姓名:”; cin>>m.a[i].name; cout<<“添加旅客信息--性别:”; cin>>m.a[i].sex; cout<<“添加旅客信息--身份证:”; cin>>m.a[i].id; cout<<“添加旅客信息--出发地:”; cin>>m.a[i].from; cout<<“添加旅客信息--目的地:”; cin>>m.a[i].to; cout<<“添加旅客信息--出发年:”; cin>>m.a[i].year; 《银行帐户管理系统》设计报告 cout<<“添加旅客信息--出发月:”; cin>>m.a[i].month; cout<<“添加旅客信息--出发日:”; cin>>m.a[i].day; m.t++; cout<<“一位旅客新信息输入完成,还要继续添加新的旅客信息么(y/n)?”; while(1) { cin>>choice; if(choice=='y'||choice=='n') //逻辑或 如果是y或者n则跳出while函数 break; else cout<<“输入错误!请重新输入!”< if(choice=='n')//如果是n的话跳出for循环 break; } save(); //保存旅客信息 } //************************改变旅客信息 void plane::chp(){ char J[100];//定义一个数组J用于修改旅客身份证号(利用id号来进行修改) cout<<“请输入要修改的旅客身份证号:”; cin>>J; for(int i=0;i if(strcmp(m.a[i].id,J)==0) //将已有的旅客id号和刚输入的id号进行比较 break; if(i==m.t) { cout<<“输入错误,没有此航班!”< return; } //********************输出修改内容 进行修改 cout<<“请输入旅客的姓名:”; cin>>m.a[i].name; cout<<“请输入旅客的性别:”; cin>>m.a[i].sex; cout<<“请输入旅客的身份证号:”; cin>>m.a[i].id; cout<<“请输入旅客的出发地:”; cin>>m.a[i].from; cout<<“请输入旅客的目的地:”; cin>>m.a[i].to; cout<<“请输入旅客的出发年:”; cin>>m.a[i].year; cout<<“请输入旅客的出发月:”; cin>>m.a[i].month; cout<<“请输入旅客的出发日:”; cin>>m.a[i].day; save(); cout<<“修改成功!”< } //**************************删除旅客信息 void plane::dep() 《银行帐户管理系统》设计报告 { char R[100]; cout<<“请输入要删除的旅客身份证:”;cin>>R; for(int i=0;i if(strcmp(m.a[i].id,R)==0) break; if(i==m.t) { cout<<“删除错误,没有您要删除的游客!”< return; } m.a[i]=m.a[m.t-1]; //将后面数组赋值到了找到的要删除的数组就将那个要删除的数组给删除了 m.t--; save(); cout<<“删除成功!”< 之后的几个函数都相类似。 //****************************添加航班信息 void plane::addf()//*****************************修改航班信息 void plane::chf()//*************************删除航班信息 void plane::def()//***********************添加航班订票信息 void plane::addt()//******************************修改订票信息 void plane::cht()//*********************删除订单信息 void plane::det()//****************************按航班起飞降落城市来查询订单信息 void plane::showplace() { char H[100]; char E[100]; cout<<“请输入要查询的订单航班出发地:”; cin>>H; cout<<“请输入要查询的订单航班目的地:”; cin>>E; for(int i=0;i //将输入的出发和降落城市和已存在的城市想比较来找到这笔订单 if(strcmp(m.c[i].chufadi,H)==0 && strcmp(m.c[i].mudidi,E)==0) break; if(i==m.r) { 《银行帐户管理系统》设计报告 cout<<“没有此订单!输入错误!”< return; } cout<<“查询结果如下:”< for(i=0;i if(strcmp(m.c[i].chufadi,H)==0 && strcmp(m.c[i].mudidi,E)==0) { cout<<“旅客姓名:”< cout<<“旅客性别:”< cout<<“旅客身份证:”< cout<<“航班班次:”< cout<<“出发地:”< cout<<“目的地:”< cout<<“出发日期-年:”< cout<<“出发日期-月:”< cout<<“出发日期-日:”< } } //*****************************按订单姓名来查询订单信息 void plane::showname()//****************************按航班班次来查询订单信息 void plane::showno()//***************************主函数使用switch函数来选择各个功能 int main(){ plane p; //plane定义一个p的类 p.set(); /*面向对象的思想 以对象为载体下一个对象要干什么 执行过程应该封装起来 而不是像面向过程一样讲过程代码一步一步写出来*/ while(1){ int R; R=p.menu();//在menu函数中选择case然后赋值到R中然后选择是第几个case switch(R) { case 1:p.AddPer(); break; case 2:p.chp(); break; case 3:p.dep(); break; case 4:p.addf(); break; case 5:p.chf(); break; case 6:p.def(); break; case 7:p.addt(); break; case 8:p.cht(); break; 《银行帐户管理系统》设计报告 case 9:p.det(); break; case 10:p.showno(); break; case 11:p.showplace(); break; case 12:p.showname(); break; default:cout<<“输入错误,请重新输入!”< } } return 0;} C语言程序设计——飞机订票系统 代码如下:” #include“stdio.h” #include“stdlib.h” #include“string.h” #defineLENsizeof(structplane)#defineMAX 10;structplane { char destination[12];char num[10];char time[12];int price;int amount;};typedefstructplanePLANE;PLANE a[100];void menu();void input();void search();void preserve();void planeadd();void delplane(); void main(){ system(“cls”);menu();} void menu(){ char *menu[] = { ************** 欢迎进入飞机订票系统*************,“ a:输入航线 ”,“ b:查询航线 ”,“ c:退订票系统 ”,“ d:追加航线 ”,“ e:删除航线 ”,“ f: 退出 ”,“****************************************************” };int i;char NO;int quit = 0;do { system(“cls”); for(i = 0;i<9;i++) printf(“n%s”, menu[i]); printf(“n请输入服务代码a,b,c,d,e或fn”); NO = getchar(); switch(NO) { case'a': input();break; case'b': search();break; case'c': preserve();break; case'd': planeadd();break; case'e': delplane();break; case'f': quit = 1;break; } } while(!quit);} void input(){ int i, n;FILE *fp;system(“cls”);if((fp = fopen(“D:file”, “wb”))== NULL){ printf(“error!n”);exit(0);} printf(“n请输入航班总数n:”);scanf(“%d”, &n);printf(“n请按下面提示输入航班信息:起点站:沈阳”);for(i = 0;i printf(“nt请输入终点:”); scanf(“%s”, a[i].destination); printf(“t 航班班次:”); scanf(“%s”, a[i].num); printf(“t 时间:”); scanf(“%s”, a[i].time); printf(“t 票价:”); scanf(“%d”, &a[i].price); printf(“t机票总数:”); scanf(“%d”, &a[i].amount); fwrite(&a[i], sizeof(PLANE), 1, fp);} fclose(fp);} void search(){ int i, j = 0, k = 101;char str[12];FILE *fp;PLANE b[5];if((fp = fopen(“D:file”, “rb”))== NULL){ printf(“error!n”); exit(0);} printf(“n请输入航班号:”);scanf(“%s”, str);while(fread(&b[j], LEN, 1, fp)!= 0) j++;for(i = 0;i if(strcmp(b[i].num, str)== 0) { printf(“沈阳至%s 航班号:%s 时间:%s 票价:%d 剩余票数:%dn”, b[i].destination, b[i].num, b[i].time, b[i].price, b[i].amount); k = i; } if(k == 101) printf(“对不起,没有您需要的航线。”);fclose(fp);system(“pause”);} void preserve(){ int a = 0, i = 0, k, m, n, x;char str[12];PLANE preserve[10];FILE *fp;if((fp = fopen(“D:file”, “rb”))== NULL){ printf(“error!n”); exit(0);} printf(“请输入航班号:”);scanf(“%s”, str);while(fread(&preserve[i], LEN, 1, fp)!= 0){ if(strcmp(preserve[i].num, str)== 0) printf(“沈阳至%s 航班号:%s 时间:%s 价格:%d 剩余票数:%d”, preserve[i].destination, preserve[i].num, preserve[i].time, preserve[i].price, preserve[i].amount); k = i; i++;} fclose(fp);printf(“n请输入订退票代码:0-订票 1-退票”);scanf(“%d”, &m);if(m == 0){ printf(“沈阳至%s 航班号:%s 时间:%s 价格:%d元剩余票数:%d”, preserve[k].destination, preserve[k].num, preserve[k].time, preserve[k].price, preserve[k].amount); printf(“n请输入订票总数n:”); scanf(“%d”, &n); x = preserve[k].price*n; printf(“n应付款%d元”, x); preserve[k].amount = preserve[k].amount1; del = 1; printf(“n成功删除信息!!”);} if(del == 0) { printf(“系统中不存在要删除的信息!”);menu();} else { if((fp = fopen(“D:file”, “wb+”))== NULL);{printf(“文件有错误不能打开!”); exit(0); } } for(i = 0;i fwrite(&delplane[i], LEN, 1, fp); fclose(fp);} }第二篇:数据结构课程设计 飞机订票系统
第三篇:数据库课程设计+飞机订票系统
第四篇:飞机订票系统课程设计
第五篇:C语言程序设计——飞机订票系统