列车时刻查询系统设计c课程设计报告.docx
- 文档编号:6035056
- 上传时间:2023-01-03
- 格式:DOCX
- 页数:29
- 大小:69.26KB
列车时刻查询系统设计c课程设计报告.docx
《列车时刻查询系统设计c课程设计报告.docx》由会员分享,可在线阅读,更多相关《列车时刻查询系统设计c课程设计报告.docx(29页珍藏版)》请在冰豆网上搜索。
列车时刻查询系统设计c课程设计报告
C++课程设计报告
课程设计题目:
列车时刻查询系统
学生姓名:
专业:
软件工程系
班级:
指导教师:
2009年6月25日
一、问题分析:
i)具有不同类型的列车类的描述
建立了Train类,利用继承与派生建立派生类Ttrain(特快列车)类、Ztrain(直达特快列车)类、Dtrain(动车组)类、Ktrain(快速列车)类
ii)有列表时刻表类的描述
利用链表模板类来实现列车时刻表的存储,将整个程序运行过程中用户输入的所有列车信息存储到链表中,以便用户查询。
iii)能完成时刻表的输入、查询、保存等功能
利用链表模板存储信息,调用函数对链表进行处理完成输入、查询等功能。
利用文件的来实现列车信息的长久存储,将信息存储到磁盘上。
二、结构分析:
i)Train类的UML图
Train
-trainNum[10]:
char
-Eozoic[20]:
char
-Terminus[20];char
-starTime:
Time
+Train():
+Train(Num[]:
char,Eo[]:
char,Te[]:
char,Ti:
Time)
+Train(x:
const&Train)
+~Train()
+operator=(l:
constTrain&):
Train&
+GetNum():
char*
+GetEo():
char*
+GetTe():
char*
+GetTi():
Time
+SelectNum(Num[]:
char):
int
+SelectPlace(Place1[]:
char,Place2[]:
char):
int
+Show():
void
ii)Ztrain类的UML图
Ztrain
+Ztrain()
+Ztrain(Num[]:
char,Eo[]:
char,Te[]:
char,Ti:
Time)
+~Ztrain()
ii)Ttrain类的UML图
Ttrain
+Ttrain()
+Ttrain(Num[]:
char,Eo[]:
char,Te[]:
char,Ti:
Time)
+~Ttrain()
iii)Dtrain类的UML图
Dtrain
+Dtrain()
+Dtrain(Num[]:
char,Eo[]:
char,Te[]:
char,Ti:
Time)
+~Dtrain()
iv)Ktrain类的UML图
Ktrain
+Ktrain()
+Ktrain(Num[]:
char,Eo[]:
char,Te[]:
char,Ti:
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(){}
Train&operator=(constTrain&l);
char*GetNum();
char*GetEo();
char*GetTe();
TimeGetTi();
intSelectNum(charNum[]);
intSelectPlace(charPlace1[],charPlace2[]);
voidShow();
};
iv)Ztrain、Ttrain、Dtrain、Ktrain类的声明与实现:
classZtrain:
virtualpublicTrain
{
public:
Ztrain(){}
Ztrain(charNum[],charEo[],charTe[],TimeTi);
~Ztrain(){}
};
classTtrain:
virtualpublicTrain
{
public:
Ttrain(){}
Ttrain(charNum[],charEo[],charTe[],TimeTi);
~Ttrain(){}
};
classDtrain:
publicTtrain,publicZtrain
{
public:
Dtrain(){}
Dtrain(charNum[],charEo[],charTe[],TimeTi);
~Dtrain(){}
};
classKtrain:
publicTrain
{
public:
Ktrain(){}
Ktrain(charNum[],charEo[],charTe[],TimeTi);
~Ktrain(){}
};
iii)主函数的实现:
voidShowMenu();/*菜单显示*/
voidCreat();/*建立字符串工具箱*/
voidSerchAsPlace();//按站台查询
voidSerchAsNum();//按车次查询
voidDisplay();//显示所有信息
voidSave();//将链表信息保存到文件中
voidOpen();//将文件中的信息读到链表中
LinkedList
intmain(void)
{
charx;
boolquit=false;
List.ClearList();
Open();
while(!
quit)
{
ShowMenu();
cin>>x;
switch(x)
{
case'a':
cout<<"wode";
system("cls");
Creat();
system("cls");
break;
case'b':
system("cls");
SerchAsPlace();
system("cls");
break;
case'c':
system("cls");
SerchAsNum();
system("cls");
break;
case'd':
system("cls");
Display();
system("cls");
break;
case'e':
system("cls");
Save();
system("cls");
break;
case'f':
quit=true;
break;
default:
break;
}
//system("cls");
}
return1;
}
/*主菜单*/
voidShowMenu()
{
cout<<"\n*******************************************\n";
cout<<"a、添加列车时刻表\n";
cout<<"b、按始发站终点站查询信息\n";
cout<<"c、按车次查询列车信息\n";
cout<<"d、显示所有列车信息\n";
cout<<"e、保存列车信息\n";
cout<<"f、退出\n";
cout<<"\n*******************************************\n";
cout<<"请选择";
}
voidCreat()
{
intm=1;
charstr1[10];
inthour,minute;
charstr2[20],str3[20];
Trainp;
Timey1;
intn;
while(m==1)
{
cout<<"请输入列车的类型:
(,直达快车2,动车组3,特快车4,快车)"< cin>>n; cout<<"请输入车次: "; cin>>str1; cout<<"请输入发车时间(时和分中间用空格隔开): "< cin>>hour>>minute; y1.hour=hour; y1.minute=minute; cout<<"请输入始发站: "; cin>>str2; cout<<"请输入终点站: "; cin>>str3; if(n==1) { Ztraint(str1,str2,str3,y1); p=t; } elseif(n==2) { Dtraint(str1,str2,str3,y1); p=t; } elseif(n==3) { Ttraint(str1,str2,str3,y1); p=t; } elseif(n==4) { Ktraint(str1,str2,str3,y1); p=t; } else cout<<"输入错误! "; List.InsertRear(p); cout<<"是否想继续输入: ,是.2,否。 \n"; cin>>m; } system("pause"); } voidSerchAsPlace() { charstr2[20],str3[20]; longpos=0; Trainp; cout<<"请输入始发站: "; cin>>str2; cout<<"请输入终点站: "; cin>>str3; List.Reset(); while(! List.EndOfList()) { p=List.Data(); pos=p.SelectPlace(str2,str3); List.Next(); } if(pos==0) cout<<"没有此信息"; system("pause"); } voidSerchAsNum() { Trainp; longpos=0; charstr1[20]; cout<<"请输入车次: "; cin>>str1; List.Reset(); while(! List.EndOfList()) { p=List.Data(); pos=p.SelectNum(str1); List.Next(); } if(pos==0) cout<<"没有此信息"; system("pause"); } voidDisplay() { Trainp; List.Reset(); while(! List.EndOfList()) { p=List.Data(); p.Show(); List.Next(); } system("pause"); } 四、个性功能介绍: i)链表模板类的声明与实现: /*节点类*/ template classNode { private: Node public: Tdata; Node(constT&item,Node voidInsertAfter(Node Node Node }; template Node : Node(constT&item,Node data(item),next(ptrnext) {} template Node : NextNode()const { returnnext; } template voidNode : InsertAfter(Node { p->next=next; next=p; } template Node : DeleteAfter() { Node if(next==NULL) returnNULL; next=tempPtr->next; returntempPtr; } //链表类 template classLinkedList { private: Node Node intsize; intposition; Node voidFreeNode(Node voidCopyList(constLinkedList public: LinkedList(); LinkedList(constLinkedList ~LinkedList(); LinkedList intListSize()const; intListEmpty()const; voidReset(intpos=0); voidNext(); intEndOfList()const; intCurrentPosition()const; voidInsertFront(constT&item); voidInsertRear(constT&item); voidInsertAt(constT&item); voidInsertAfter(constT&item); TDeleteFront(); voidDeleteAt(); T&Data(void); voidClearList(void); }; template Node : GetNode(constT&item,Node { Node p=newNode if(p==NULL) { cout<<"Memoryallocationfailure! \n"; exit (1); } returnp; } template voidLinkedList : FreeNode(Node { deletep; } template voidLinkedList : CopyList(constLinkedList { //P用来遍历L Node 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->NextNode(); } } template LinkedList : LinkedList(void) { head=NULL; tail=NULL; size=0; position=0; } template LinkedList : LinkedList(constLinkedList { head=tail=NULL; prevPtr=currPtr=NULL; size=0; position=-1; CopyList(L); } template voidLinkedList : ClearList() { Node currPosition=head; while(currPosition! =NULL) { //取得下一结点的地址并删除当前结点 nextPosition=currPosition->NextNode(); FreeNode(currPosition); currPosition=nextPosition;//移动到下一结点 } head=tail=NULL; prevPtr=currPtr=NULL; size=0; position=-1; } template LinkedList : ~LinkedList() { ClearList(); } template LinkedList : operator=(constLinkedList&L) { if(this==&L)//不能将链表赋值给它自身 return*this; ClearList(); CopyList(L); return*this; } template intLinkedList : ListSize()const { returnsize; } template intLinkedList : ListEmpty()const { if(size==0) return1; else return0; } template voidLinkedList : Reset(intpos) { intstartPos; //如果链表为空,返回 if(head==NULL) return; //如果位置不合法,中止程序 if(pos<0||pos>size-1) { cerr<<"Thepositionyousetiswrongoroutofrange! "< return; } //设置与遍历链表有关的成员 if(pos==0) { //将指针重新设置到表头 prevPtr=NULL; currPtr=head; position=0; } else //重新设置currPtr,prevPtr,和position { currPtr=head->NextNode(); prevPtr=head; startPos=1; //移动指针直到position==pos for(position=startPos;position! =pos;position++) { //向前移动遍历指针 prevPtr=currPtr; currPtr=currPtr->NextNode(); } } } template voidLinkedList : Next() { if(currPtr! =NULL) { prevPtr=currPtr; currPtr=currPtr->NextNode(); position++; } } template intLinkedList : EndOfList()const { if(currPtr==NULL) return1; else return0; } template intLinkedList : CurrentPosition()const { returnposition; } template voidLinkedList : InsertFront(constT&item) { //如果链表不空则调用Reset if(head! =NULL) Reset(); InsertAt(item);//在表头插入 } template voidLinkedList : InsertRear(constT&item) { Node prevPtr=tail; newNode=GetNode(item);//创建新结点 if(head==NULL)//如果表空则插入在表头 head=tail=newNode; else { tail->InsertAfter(newNode); tail=newNode; } currPtr=tail; position=size; size++; } template voidLinkedList : InsertAt(constT&item) { Node //两种情况: 插入在链表头或链表之中 if(prevPtr==NULL) { //插入在链表头,包括将结点插入到空表中 newNode=GetNode(item,head); tail=newNode; } else { //插入到链表之中.将结点置于prevPtr之后 newN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 列车时刻查询系统设计c 课程设计报告 列车时刻 查询 系统 设计 课程设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)