C++语言 列车查询系统

C语言 列车查询系统

#include<iostream>
#include<fstream>
#include<string>
#include<string.h>
using namespace std;
template<class T>
struct Node           //列车链表的结点
{
   
	T data;           //数据域
	Node<T> *next;    //指针域
};
struct trainxinxi          //列车信息结构体
{
   
	char miaoshu[50];
	char trainname[20]; //车次
	char beginname[20];//始发站
	char endname[20];//终点站
	char begintime[20];//始发时间
	char endtime[20];//到达时间
} ;
template<class T>
class train
{
   
	public:
		train(T a[],int n); //构造各个列车的单链表
		void chaxun();//按照列车车次查询
		void chaxun2();//按照始发站和终点站查询
		void luru();  //录入列车信息
		void xiugai();//修改列车信息
		void shanchu();  //删除列车信息
		void bianli();  //查看所有列车信息
		void wenjian();  //将列车信息写入文件中
	//	void dakaiwenjian();//将文件中的信息读出

 
	private:
		Node<T> *first;  //头结点指针
		Node<T> *M;      //新指针与尾指针指向相同
};



template<class T>	
struct Pass              //途径站结点
{
   
	T dataplace;         //数据域
	Pass<T> *nextplace;  //指针域
};
 
struct byxinxi           //途径站信息结构体
{
   
	char placename[20];  //途径站
	char arrive[20];       //到达时间
	char go[20];          //出发时间
	char  length[20];       //距上一站的距离
	char  sumlength[20];       //总距离
    char  time[20];          //距上一站时间
	char  sumtime[20];        //总时间
};  


template<class T>
class past                 
{
   
public:
	past(T a[],int n);//构造各个途经站单链表
	void printlist();//遍历函数
    void zhanshanchu(); //途经站的删除
	void zhanluru();//途经站的录入
	void zhanwenjian();  //将途经站的信息录入文件


private:
	Pass<T> *first1;  //链表头指针
};


	byxinxi loc1[4]=
	{
   
		{
   "渭南","10:00","10:05","200","200","1.0","1.0"},
		{
   "运城","11:35","11:40","100","300","1.5","2.5"},
		{
   "石家庄","13:40","14:00","200","500","2.0","4.5"},  //第一个列车始发站信息
		{
   "北京","16:00","无	","200","700","2.0","6.5"}
	};

	byxinxi loc2[4]=
	{
   
		{
   "郑州","10:00","10:05","200","200","1.0","1.0"},
		{
   "合肥","12:35","12:40","200","400","2.5","3.5"},
		{
   "南京","15:40","16:00","250","650","3.0","6.5"},  //第二个列车始发站信息
		{
   "上海","17:00","无	","100","750","1.0","7.5"}
	};

	byxinxi loc3[4]=
	{
   
		{
   "汉中","9:00","9:05","100","100","0.5","0.5"},
		{
   "巴中","10:35","10:40","100","200","1.5","2.0"},
		{
   "南充","11:40","12:00","100","300","0.5","2.5"},  //第三个列车始发站信息
		{
   "重庆","13:00","无	","100","400","0.5","3.0"}
	};

	byxinxi loc4[4]=
	{
   
		{
   " "," "," "," "," "," "," "},
		{
   " "," "," "," "," "," "," "},                   //即将被插入的列车信息初始化
		{
   " "," "," "," "," "," "," "},
		{
   " "," "," "," "," "," "," "}
	};


past<byxinxi> B1(loc1,4);//构造第一个列车的途径站的链表
past<byxinxi> B2(loc2,4);//构造第一个列车的途径站的链表
past<byxinxi> B3(loc3,4);//构造第一个列车的途径站的链表
past<byxinxi> B4(loc4,4);//构造第一个列车的途径站的链表

途经站


template<class T>              //构造途经站的单链表
past<T>::past(T a[] ,int n)
{
   
	first1=new Pass<T>;//建立头结点
	Pass<T> *r;    //工作指针
	r=first1;       //工作指针指向头结点
	for(int i=0;i<=n-1;i++)//尾插法构造单链表
	{
   
		Pass<T> *s;
		s=new Pass<T>;
		s->dataplace=a[i];
	    r->nextplace=s;
		r=s;

	}
	r->nextplace=NULL;
}


template<class T>
void past<T>::zhanluru()        //将途径站的信息录入
{
   
	Pass<T> *V;             //定义工作指针
	 V=first1->nextplace;//此工作指针指向第一个结点
	 int i=1;
				 while(V!=NULL) //当工作指针不为空时循环进行录入
				 {
   
				 char AA[20];
				 cout<<"请输入第"<<i<<"个途经站:	";
				 cin>>AA;
				 strcpy(V->dataplace.placename,AA);
				 char BB[20];
				 cout<<"请输入到达时间:	";
				 cin>>BB;
				 strcpy(V->dataplace.arrive,BB);
				 char CC[20];
				 cout<<"请输入发车时间:	";
				 cin>>CC;
				 strcpy(V
  • 2
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值