数据结构课程设计 飞机订票系统_飞机订票系统课程设计
数据结构课程设计 飞机订票系统由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“飞机订票系统课程设计”。
飞机订票系统
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
{
if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))
{
if(amountticket_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 paenger {
char name[10];
int tickets;
char id[30];
struct paenger *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 #include #include #include #include #include using namespace std;#define MAXSIZE 5 typedef struct paenger {
char name[10];
int tickets;
char id[30];
struct paenger *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
{
if(!strcmp(info->qi_name,qiname)&&!strcmp(info->jiang_name,jiangname))
{
if(amountticket_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(c6);
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、通过设计选择菜单,对选择结构有更深刻的了解。
///////////////////////////////////////////////////////////////////// #include #include #include cla Customer//已定票乘客信息 { public:}; char Name[10];//姓名......
软件工程专业14级《数据结构》课程设计报告设计题目: 飞机订票系统 班 级: 软 件14 姓 名: 指导教师: 2015年 11月20日目录一、设计任务与要求 .....................................
《银行帐户管理系统》设计报告飞机航班订票系统概要设计根据需求分析中的描述,知道需要三个struct结构体类型和一个cla的类struct person //定义旅客信息结构体类型 { char......
飞机订票系统1.概述(设计题目与可行性分析)1.1设计题目:飞机订票系统1.2可行性分析飞机订票系统是为机场工作人员和客户提供订票退票等与机票相关内容的管理系统,方便机场工作人......
#include //标准输入、输出头文件 #include //包含字符串函数处理头文件 #include //包含acce函数的头文件 #define N //定义最多的航班数#define PRINT "%d\t\t%......
