数据结构课程设计论文1059Word下载.docx

上传人:b****5 文档编号:19679233 上传时间:2023-01-08 格式:DOCX 页数:13 大小:18.88KB
下载 相关 举报
数据结构课程设计论文1059Word下载.docx_第1页
第1页 / 共13页
数据结构课程设计论文1059Word下载.docx_第2页
第2页 / 共13页
数据结构课程设计论文1059Word下载.docx_第3页
第3页 / 共13页
数据结构课程设计论文1059Word下载.docx_第4页
第4页 / 共13页
数据结构课程设计论文1059Word下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

数据结构课程设计论文1059Word下载.docx

《数据结构课程设计论文1059Word下载.docx》由会员分享,可在线阅读,更多相关《数据结构课程设计论文1059Word下载.docx(13页珍藏版)》请在冰豆网上搜索。

数据结构课程设计论文1059Word下载.docx

 假设某小型航空公司开设了5条直达航线,每条航线的信息分为可变的和不可变的,其中定量有终点站站名、航班号、飞机号、飞行周日和乘员定额(分别为一等舱、二等舱、三等舱),变量则有余票量(分别为一等舱、二等舱、三等舱)、已订票的乘客名单(名字、订票量、等级)和候补乘客

当用户输入终点站时,系统进行查找,成功则输入相关信息,不成功则请再输入一次

当用户进行订票或退票时,定量不变,系统对变量进行修改,操作成功后退出系统,否则,请用户再输入一次

4数据流程图

 

  

五模块的划分

由于订票系统涉及到三个基本操作,再加上数据的输入,可以将整个系统划分为四个模块,分别为数据的输入和保存,查询航线,订票以及退票

在数据的输入和保存这个模块中

,数据需要保存在一个文件里面,在查询、订票和退票模块中,对文件里的数据进行调用和

处理,但文件里的数据保持不变

在退票模块中,要考虑是否有候补乘客,如果有并且退票

满足他的要求,则要调用订票模块,进行订票操作

 数据的输入和保存

输入终点站,飞机号,航班号

时间,票额

  查询

订票

退票

七算法

1)定义

 #defineMAX5

#defineN10

#defineM10

#defineOK1

#defineERROR0

#include<

stdio.h>

malloc.h>

typedefintstatus;

structseat{

intfrist;

intsecond;

intthird;

};

//票的定义,分为一等、二等、三等

structElemType{

charname;

seatticket;

//ElemType

typedefstructLNode{

structLNode*next;

}LNode,*passenger;

typedefstructWQueue{

passengerfront;

passengerrear;

//WQueue,候补队列;

typedefstructAL{

charEPlace;

//终点站

intFNo;

//航班号

intPNo;

//飞机号

intTime;

//时间

seatTicket;

//总票量,用结构体seat

passengerBPassenger;

//已经订票的乘客,next存放已经订票的乘客链表的表地址

seatRTicket;

//剩余的票额

passengerwait;

//候补队列,next存放队头地址

}AL,Airline[MAX];

2)链表和队列的基本操作

statusInitlink(passenger&

Pa){

Pa=(passenger)malloc(sizeof(LNode));

if(!

Pa)returnERROR;

Pa->

name=0;

ticket.frist=0;

ticket.second=0;

ticket.third=0;

next=NULL;

returnOK;

}//Initlink,建立乘客链表

statusInitQueue(WQueueQ){

Q.front=Q.rear=(passenger)malloc(sizeof(LNode));

Q.front)

returnERROR;

Q.front->

}//InitQueue,建立候补队列

statusEnQueue(WQueue&

Q,ElemTypepa)

{

passengerp;

p=(passenger)malloc(sizeof(LNode));

p)returnERROR;

p->

name=pa.name;

ticket.frist=pa.ticket.frist;

ticket.second=pa.ticket.second;

ticket.third=pa.ticket.third;

Q.rear->

next=p;

Q.rear=p;

}//EnQueue,队头出队

statusInsertList(passenger&

L,ElemTypepa){

passengerp,q;

p=L;

while(p->

next&

&

p)

p=p->

next;

q=(passenger)malloc(sizeof(LNode));

q->

next=q;

}//乘客链表的插入

statusDeQueue(WQueue&

Q,ElemTypep){

passengerq;

if(Q.front==Q.rear)

q=Q.front->

p.name=q->

name;

p.ticket.frist=q->

ticket.frist;

p.ticket.second=q->

ticket.second;

p.ticket.third=q->

ticket.third;

next=q->

if(Q.rear==q)

Q.front=Q.rear;

}//DeQueue,入队列

statussearch_delet(passengerL,ElemTypepa){

p=L->

next){

if(p->

next->

name==pa.name)

elsep=p->

}//while

q=p->

free(q);

}//乘客链表的插入和删除

2)各个模块的具体算法

输入数据信息

statusEnter(ALAirline[MAX]){

inti;

printf("

Pleaseenterthesemessages!

\n"

);

for(i=0;

i<

MAX;

i++){

scanf("

%c,%d,%d,%d,%d,%d,%d"

&

Airline[i].EPlace,

&

Airline[i].FNo,

Airline[i].PNo,

Airline[i].Time,

Airline[i].Ticket.frist,

Airline[i].Ticket.second,

Airline[i].Ticket.third

);

passengerPa;

Initlink(Pa);

Airline[i].BPassenger->

next=Pa;

WQueueQ;

InitQueue(Q);

Airline[i].wait->

next=Q.rear;

Airline[i].RTicket.frist=Airline[i].Ticket.frist;

Airline[i].RTicket.second=Airline[i].Ticket.second;

Airline[i].RTicket.third=Airline[i].Ticket.third;

}//for

}//输入航线信息

查询

statusSearch(charplace,ALAirline[MAX]){

if(place==Airline[i].EPlace){

EPlace:

%c\nPNo:

%d\nFNo:

%d\nTime:

%d\n"

Airline[i].EPlace,

Airline[i].PNo,

Airline[i].FNo,

Airline[i].Time);

Therestoftickets\n"

frist:

%dsecond:

%dthird:

%d\n"

Airline[i].RTicket.frist,

Airline[i].RTicket.second,

Airline[i].RTicket.third);

}//if

if(i>

=MAX)

Pleaseenteragain!

returnAirline[i];

}//Search,查找

订票

statusBook(ALline){

intp,q;

ElemTypepa;

Doyouwanttobooktickets?

%d"

p);

Thankyou!

else{

if(line.RTicket.frist==0&

line.RTicket.second==0

&

line.RTicket.third==0)

{printf("

Doyouwanttowaitforreturnedtickets?

q);

q)

elseEnQueue(Q,pa);

   else{

   printf("

Pleaseenteryournameandticket:

   

scanf("

%c,%d,%d,%d"

pa.name,&

pa.ticket.frist,&

pa.ticket.second,&

pa.ticket.third);

InsertList(Pa,pa);

line.RTicket.frist=line.RTicket.frist-pa.ticket.frist;

line.RTicket.second=line.RTicket.second-pa.ticket.second;

line.RTicket.third=line.RTicket.third-pa.ticket.third;

Successful!

Thankyou!

}//else

}//else

}//Book,订票

退票

statusReturn(ALline){

Doyouwanttoreturnyourticket?

intp;

if(p){

pa.ticket.second

&

pa.ticket.third);

search_delet(line.BPassenger,pa);

if(Q.rear!

=Q.front){

DeQueue(Q,pa);

InsertList(line.BPassenger,pa);

else{line.RTicket.frist=line.RTicket.frist+pa.ticket.frist;

line.RTicket.second=line.RTicket.second+pa.ticket.second;

line.RTicket.third=line.RTicket.third+pa.ticket.third;

}//else

}//if

elseprintf("

}//退票

八测试数据

输入a,01,747,020312,20,30,40,b,02,747,020312,10,20,30,c,03,747,20,30,50,

      d,04,747,020314,50,10,20,d,05,747,020214,10,20,30,

  当输出"

Pleaseenteraplace:

"

时,请任意输入一个一个字符的地名,如果输出

  "

则表明没有与该地名匹配的信息,反之,会输出终点站、

  飞机号、航班号以及一、二、三等舱的余票额

接下来,程序输出"

Doyouwantto

  booktickets?

,如果要,请输入"

1"

,程序会输出"

Pleaseenteryourname:

  请输入你的姓名(一个字符)和订票额(一等、二等、三等),订票成功后会输出"

  Successful!

如果不要订票,请输入"

0"

,程序将输出"

  当程序输出"

Doyouwanttoreturnyourtickets?

时,操作与订票基本一致

 九心得体会

这次课程设计进行了整整两个星期,虽然一整天都在电脑房里对着电脑,很枯燥,

也很辛苦,但是我觉得还是很有收获的

这是我们第一次自己去设计一个比较系统的程序,对我们来说也是一个很好的锻炼

首先,为了能写出程序,我将以前所学都好好的巩固了一遍,并且努力的去灵活的运用

码现在对结构体,链表的操作还是熟练了很多

以前一些很模糊的知识点,通过这次练习,

很多都清楚起来

其次,平时都是编写一些单个的操作,这次需要自己写出一个可以实现

几个功能的系统性的程序,刚开始时是一头雾水,但经过大家的讨论,自己的摸索,也慢慢

找到了方法

这让我体会到,在编写程序时,不仅需要扎实的知识,还要有细心周到的考虑,

同学之间的合作也是很重要的

   在这两个星期里,我觉得发现了自己还有很多很多的不足,也深刻的体会到了自己还

有很多东西要学,而且要真的掌握,还得多用心,多用脑

计算机的确不好学,但只要努力

就会有收获

这次程序是写了不少,但还是没能运行出一个正确的结果,不过我相信,经过

以后的学习和努力,是肯定能做出一个好的程序来的!

返回

16、莫等闲,白了少年头,空悲切——岳飞

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1