列车时刻查询系统设计c课程设计报告Word下载.docx

上传人:b****6 文档编号:19030735 上传时间:2023-01-03 格式:DOCX 页数:29 大小:69.26KB
下载 相关 举报
列车时刻查询系统设计c课程设计报告Word下载.docx_第1页
第1页 / 共29页
列车时刻查询系统设计c课程设计报告Word下载.docx_第2页
第2页 / 共29页
列车时刻查询系统设计c课程设计报告Word下载.docx_第3页
第3页 / 共29页
列车时刻查询系统设计c课程设计报告Word下载.docx_第4页
第4页 / 共29页
列车时刻查询系统设计c课程设计报告Word下载.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

列车时刻查询系统设计c课程设计报告Word下载.docx

《列车时刻查询系统设计c课程设计报告Word下载.docx》由会员分享,可在线阅读,更多相关《列车时刻查询系统设计c课程设计报告Word下载.docx(29页珍藏版)》请在冰豆网上搜索。

列车时刻查询系统设计c课程设计报告Word下载.docx

+GetTi():

Time

+SelectNum(Num[]:

char):

int

+SelectPlace(Place1[]:

char,Place2[]:

+Show():

void

ii)Ztrain类的UML图

Ztrain

+Ztrain()

+Ztrain(Num[]:

char,Eo[]:

+~Ztrain()

ii)Ttrain类的UML图

Ttrain

+Ttrain()

+Ttrain(Num[]:

+~Ttrain()

iii)Dtrain类的UML图

Dtrain

+Dtrain()

+Dtrain(Num[]:

+~Dtrain()

iv)Ktrain类的UML图

Ktrain

+Ktrain()

+Ktrain(Num[]:

Time)

+~Ktrain()

三、实现流程分析:

i)Train类的声明与实现:

structTime

{

inthour;

intminute;

};

classTrain

private:

chartrainNum[10];

charEozoic[20];

charTerminus[20];

TimestarTime;

public:

Train(){}

Train(charNum[],charEo[],charTe[],TimeTi);

Train(constTrain&

x);

~Train(){}

operator=(constTrain&

l);

char*GetNum();

char*GetEo();

char*GetTe();

TimeGetTi();

intSelectNum(charNum[]);

intSelectPlace(charPlace1[],charPlace2[]);

voidShow();

iv)Ztrain、Ttrain、Dtrain、Ktrain类的声明与实现:

classZtrain:

virtualpublicTrain

Ztrain(){}

Ztrain(charNum[],charEo[],charTe[],TimeTi);

~Ztrain(){}

classTtrain:

Ttrain(){}

Ttrain(charNum[],charEo[],charTe[],TimeTi);

~Ttrain(){}

classDtrain:

publicTtrain,publicZtrain

Dtrain(){}

Dtrain(charNum[],charEo[],charTe[],TimeTi);

~Dtrain(){}

classKtrain:

publicTrain

Ktrain(){}

Ktrain(charNum[],charEo[],charTe[],TimeTi);

~Ktrain(){}

iii)主函数的实现:

voidShowMenu();

/*菜单显示*/

voidCreat();

/*建立字符串工具箱*/

voidSerchAsPlace();

//按站台查询

voidSerchAsNum();

//按车次查询

voidDisplay();

//显示所有信息

voidSave();

//将链表信息保存到文件中

voidOpen();

//将文件中的信息读到链表中

LinkedList<

Train>

List;

intmain(void)

charx;

boolquit=false;

List.ClearList();

Open();

while(!

quit)

{

ShowMenu();

cin>

>

x;

switch(x)

case'

a'

:

cout<

<

"

wode"

;

system("

cls"

);

Creat();

break;

b'

SerchAsPlace();

c'

SerchAsNum();

d'

Display();

e'

Save();

case'

f'

quit=true;

default:

}

//system("

return1;

}

/*主菜单*/

voidShowMenu()

cout<

\n*******************************************\n"

a、添加列车时刻表\n"

b、按始发站终点站查询信息\n"

c、按车次查询列车信息\n"

d、显示所有列车信息\n"

e、保存列车信息\n"

f、退出\n"

请选择"

}

voidCreat()

intm=1;

charstr1[10];

inthour,minute;

charstr2[20],str3[20];

Trainp;

Timey1;

intn;

while(m==1)

cout<

请输入列车的类型:

(,直达快车2,动车组3,特快车4,快车)"

endl;

cin>

n;

请输入车次:

str1;

请输入发车时间(时和分中间用空格隔开):

hour>

minute;

y1.hour=hour;

y1.minute=minute;

请输入始发站:

str2;

请输入终点站:

str3;

if(n==1)

{

Ztraint(str1,str2,str3,y1);

p=t;

}

elseif(n==2)

Dtraint(str1,str2,str3,y1);

elseif(n==3)

Ttraint(str1,str2,str3,y1);

elseif(n==4)

Ktraint(str1,str2,str3,y1);

else

cout<

输入错误!

List.InsertRear(p);

是否想继续输入:

,是.2,否。

\n"

m;

pause"

voidSerchAsPlace()

longpos=0;

List.Reset();

List.EndOfList())

p=List.Data();

pos=p.SelectPlace(str2,str3);

List.Next();

if(pos==0)

没有此信息"

voidSerchAsNum()

charstr1[20];

pos=p.SelectNum(str1);

voidDisplay()

p.Show();

四、个性功能介绍:

i)链表模板类的声明与实现:

/*节点类*/

template<

classT>

classNode

private:

Node<

T>

*next;

public:

Tdata;

Node(constT&

item,Node<

*ptrnext=NULL);

voidInsertAfter(Node<

*p);

*DeleteAfter();

*NextNode()const;

Node<

Node(constT&

*ptrnext):

data(item),next(ptrnext)

{}

*Node<

NextNode()const

returnnext;

voidNode<

InsertAfter(Node<

*p)

p->

next=next;

next=p;

DeleteAfter()

Node<

*tempPtr=next;

if(next==NULL)

returnNULL;

next=tempPtr->

next;

returntempPtr;

//链表类

classLinkedList

*head,*tail;

*prevPtr,*currPtr;

intsize;

intposition;

*GetNode(constT&

voidFreeNode(Node<

voidCopyList(constLinkedList<

&

L);

LinkedList();

LinkedList(constLinkedList<

~LinkedList();

LinkedList<

operator=(constLinkedList<

intListSize()const;

intListEmpty()const;

voidReset(intpos=0);

voidNext();

intEndOfList()const;

intCurrentPosition()const;

voidInsertFront(constT&

item);

voidInsertRear(constT&

voidInsertAt(constT&

voidInsertAfter(constT&

TDeleteFront();

voidDeleteAt();

T&

Data(void);

voidClearList(void);

*LinkedList<

GetNode(constT&

*ptrnext)

*p;

p=newNode<

(item,ptrnext);

if(p==NULL)

cout<

"

Memoryallocationfailure!

exit

(1);

returnp;

voidLinkedList<

FreeNode(Node<

deletep;

CopyList(constLinkedList<

L)

//P用来遍历L

*p=L.head;

intpos;

//将L中的每一个元素插入到当前链表最后

while(p!

=NULL)

InsertRear(p->

data);

p=p->

NextNode();

//如果链表空,返回

if(position==-1)

return;

//在新链表中重新设置prevPtr和currPtr

prevPtr=NULL;

currPtr=head;

for(pos=0;

pos!

=position;

pos++)

prevPtr=currPtr;

currPtr=currPtr->

LinkedList(void)

head=NULL;

tail=NULL;

size=0;

position=0;

LinkedList(constLinkedList<

head=tail=NULL;

prevPtr=currPtr=NULL;

size=0;

position=-1;

CopyList(L);

ClearList()

*currPosition,*nextPosition;

currPosition=head;

while(currPosition!

//取得下一结点的地址并删除当前结点

nextPosition=currPosition->

FreeNode(currPosition);

currPosition=nextPosition;

//移动到下一结点

head=tail=NULL;

~LinkedList()

ClearList();

LinkedList<

operator=(constLinkedList&

if(this==&

L)//不能将链表赋值给它自身

return*this;

return*this;

intLinkedList<

ListSize()const

returnsize;

ListEmpty()const

if(size==0)

return1;

else

return0;

Reset(intpos)

intstartPos;

//如果链表为空,返回

if(head==NULL)

//如果位置不合法,中止程序

if(pos<

0||pos>

size-1)

cerr<

Thepositionyousetiswrongoroutofrange!

endl;

//设置与遍历链表有关的成员

if(pos==0)

//将指针重新设置到表头

position=0;

//重新设置currPtr,prevPtr,和position

currPtr=head->

prevPtr=head;

startPos=1;

//移动指针直到position==pos

for(position=startPos;

position!

=pos;

position++)

//向前移动遍历指针

prevPtr=currPtr;

Next()

if(currPtr!

=NULL)

prevPtr=currPtr;

currPtr=currPtr->

position++;

EndOfList()const

if(currPtr==NULL)

else

CurrentPosition()const

returnposition;

InsertFront(constT&

item)

//如果链表不空则调用Reset

if(head!

Reset();

InsertAt(item);

//在表头插入

InsertRear(constT&

item)

*newNode;

prevPtr=tail;

newNode=GetNode(item);

//创建新结点

if(head==NULL)//如果表空则插入在表头

head=tail=newNode;

tail->

InsertAfter(newNode);

tail=newNode;

currPtr=tail;

position=size;

size++;

InsertAt(constT&

//两种情况:

插入在链表头或链表之中

if(prevPtr==NULL)

//插入在链表头,包括将结点插入到空表中

newNode=GetNode(item,head);

//插入到链表之中.将结点置于prevPtr之后

newN

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

当前位置:首页 > 幼儿教育 > 唐诗宋词

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

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