⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 trainlist.cpp

📁 这是一款列车时刻管理程序,是模拟火车站管理列车的C++系统编程
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	scanf("%s",&ttm);
	ttm[11]='\0';//prevent spill
	if(err=strchk(ttm))return err;//Illegal input data
	if(*ttm!='.')
		if(chktime(L->train,ttm))return 5;//not zero return error's code
	//--------------------edit end--------------------------------------

	//show the new
	printf("Show this new record: \n");
	printf("| Coach No.|    Start Station   |     End Station    |Arrive T| Leave T|\n");
	printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);

	return err;
}

//add function
int adddata()
{
	int			err=0;
	LinkList	*L;
	L=CrtList();
	printf("\tAdditive A Record:\n\n");

	//read database from files
	if(err=ReadFiles(L))return err;		//not zero return error's code

	//input data intu database
	if(err=Inputdata(L))return err;		//not zero return error's code

	//save database
	if(err=WriteFiles(L))return err;	//not zero return error's code

	return err;
}

//delete function
int deldata()
{
	int			n,err=0;
	char		str[lenid];
	LinkList	*L;
	L=CrtList();

	//get database
	if(err=ReadFiles(L))return err;		//not zero return error's code
	n=LenList(L);
	printf("\tDeletion A Record:\n\n");
	if(!n)return 1;						//return error's code(Empty)

	//get coach number
	printf("Please input the coach number[Fromat: T111]: ");
	scanf("%s",&str);
	str[9]='\0';						//prevent spill
	//delete it
	if(err=strchk(str))return err;		//Illegal input data
	if(err=DelList(L,str))return err;	//not zero return error's code

	//save data
	err=WriteFiles(L);
	return err;
}

//edit function
int edit()
{
	int			err=0,n=0;
	char		tid[lenid];
	LinkList	*L;
	L=CrtList();

	//get database
	if(err=ReadFiles(L))return err;		//not zero return error's code
	printf("\tEdition A Record:\n\n");
	n=LenList(L);
	if(!n)return 1;						//return error's code(Empty)

	//get coach number
	printf("Please input a train's coach number: ");
	scanf("%s",&tid);
	tid[9]='\0';//prevent spill

	//call edit infomation
	if(err=strchk(tid))return err;//Illegal input data
	if(err=editdata(L,tid))return err;	//not zero return error's code

	//save data
	err=WriteFiles(L);
	return err;
}

//view function
int search(char *str,char *opt)
{
	Times		trTM;
	int			n,i,f=0,err=0;
	LinkList *L;
	L=CrtList();

	//get database
	if(err=ReadFiles(L))return err;//not zero return error's code
	n=LenList(L);
	if(!n)return 1;//return error's code(Empty)
	
	printf("\tSearch A Record:\n\n");
	printf("| Coach No.|    Start Station   |     End Station    |Arrive T| Leave T|\n");

	/*++++++++++++++++++++++++Searching+start++++++++++++++++++++++++*/
	if(!strcmp(opt,"cn"))//by coach number
	{
		for(i=0;i<n;i++)
		{
			L=L->next;
			if(!strcmp(L->train->ID,str))
			{
				//show result
				printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);
				break;
			}
		}
		if(i==n)err=2;//return error's code(no found)
	}
	else if(!strcmp(opt,"at"))//by arrive time
	{
		trTM=chktm(str);
		if(trTM.hour==-1||trTM.minute==-1)return 5;
		for(i=0;i<n;i++)
		{
			L=L->next;
			if((L->train->avtime.hour==trTM.hour)&&(L->train->avtime.minute==trTM.minute))
			{
				//show result
				printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);
				f++;
			}
		}
		if(!f)
			err=2;//return error's code(no found)
		else
			printf("Find %d about the arrive time: %s\n",f,str);
	}
	else if(!strcmp(opt,"lt"))//by leave time
	{
		trTM=chktm(str);
		if(trTM.hour==-1||trTM.minute==-1)return 5;
		for(i=0;i<n;i++)
		{
			L=L->next;
			if((L->train->lvtime.hour==trTM.hour)&&(L->train->lvtime.minute==trTM.minute))
			{
				//show result
				printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);
				f++;
			}
		}
		if(!f)
			err=2;//return error's code(no found)
		else
			printf("Find %d about the leave time: %s\n",f,str);
	}
	else if(!strcmp(opt,"ss"))//by start station
	{
		for(i=0;i<n;i++)
		{
			L=L->next;
			if(!strcmp(L->train->start,str))
			{
				//show result
				printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);
				f++;
			}
		}
		if(!f)
			err=2;//return error's code(no found)
		else
			printf("Find %d about the start station: %s\n",f,str);
	}
	else//by end station
	{
		for(i=0;i<n;i++)
		{
			L=L->next;
			if(!strcmp(L->train->end,str))
			{
				//show result
				printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);
				f++;
			}
		}
		if(!f)
			err=2;//return error's code(no found)
		else
			printf("Find %d about the end station: %s\n",f,str);
	}
	/*++++++++++++++++++++++++Searching+end++++++++++++++++++++++++++*/
	return err;
}

//view function
int view(char *str)
{
	int			n,i,err=0;
	LinkList	*L;
	L=CrtList();

	//get database
	if(err=ReadFiles(L))return err;//not zero return error's code
	n=LenList(L);
	printf("\tView All Record:\n\n");
	if(!n)return 1;//return error's code(Empty)
	
	SortList(L,str);
	//show all record
	L=L->next;
	printf("| Coach No.|    Start Station   |     End Station    |Arrive T| Leave T|\n");
	for(i=0;i<n;i++)
	{
		//show result
		printf("| %s\t   |%20s|%20s|%5d:%2d|%5d:%2d|\n",L->train->ID,L->train->start,L->train->end,L->train->avtime,L->train->lvtime);
		L=L->next;
	}
	printf("\n");
	return err;
}

//*-----------------------Handle_Error------------------------*//
void errHandle(int err)
{
	switch(err)
	{
	case 0:break;//no error
	case 1:
		{
			printf("Database Empty!\n");
			break;
		}
	case 2:
		{
			printf("Not Found!\n");
			break;
		}
	case 3:
		{
			printf("Linklist Creat Failure!\n");
			break;
		}
	case 4:
		{
			printf("The coach number has been! Input terminated!\n");
			break;
		}
	case 5:
		{
			printf("Error time! Input terminated!\n");
			break;
		}
	case 6:
		{
			printf("Illegal data! Input terminated!\n");
			break;
		}
	case 11:
		{
			printf("Files Open Error!\n");
			break;
		}
	default:printf("Unknow Error!\n");
	}
		/*equivalent(相等)*/
}


/*------------------------help_start-------------------------*/

/*-----------------------help_English------------------------*/
void help_t()
{
	printf("======================================================================\n");
	printf("\t\tTrain's Time List Manage\n");
	printf("\t\t\t      By Snowing.NK\n");
	printf("----------------------------------------------------------------------\n");
}

void help_e()
{
	printf("\t\t\t\t\t\t    Date: 2007.07.11\n");
	printf("======================================================================\n");
}

void help_s(char* str)
{
	printf("Search:\n");
	printf("Command line: %s -s <Option> <Parameter>\n",str);//parameter(参数)
	printf("\n");
	printf("Option:\n");
	printf("\t-cn\tSearch by coach number. Must have Parameter.\n");
	printf("\t-ss\tSearch by start station. Must have Parameter.\n");
	printf("\t-es\tSearch by end station. Must have Parameter.\n");
	printf("\t-at\tSearch by arrive time. Must have Parameter.\n");
	printf("\t-lt\tSearch by leave time. Must have Parameter.\n");
	printf("\t-h\tShow the help of this command.(English Edition)\n");
	printf("\t-hc\tShow the help of this command.(Chinese Edition)\n");
	printf("----------------------------------------------------------------------\n");
}

void help_v(char* str)
{
	printf("View:\n");
	printf("Command line: %s -v [Option]\n",str);//parameter(参数)
	printf("\n");
	printf("Option:\n");
	printf("\t-cn\tView by coach number.\n");
	printf("\t-ss\tView by start station.\n");
	printf("\t-es\tView by end station.\n");
	printf("\t-at\tView by arrive time.\n");
	printf("\t-lt\tView by leave time.\n");
	printf("\t-h\tShow the help of this command.(English Edition)\n");
	printf("\t-hc\tShow the help of this command.(Chinese Edition)\n");
	printf("----------------------------------------------------------------------\n");
}

void help(char* str)
{
	char		cmd;
	help_t();
	printf("Command line: %s <Option>\n",str);
	printf("\n");
	printf("Option:\n");
	printf("\t-a\tAdd a record. Add a record into the database.\n");
	printf("\t-d\tDelete a record. This option can delete a record that \n\t\tthe train had been canceled.\n");
	printf("\t-e\tEdit a record. Edit a record which had been changed.\n");
	printf("\t-s\tSearch a record in the database. Please read \"Search:\"\n\t\tto get particular infomation.\n");
	printf("\t-v\tView all the record. Please read \"View:\"\n\t\tto get particular infomation.\n\n");
	printf("\t-h\tShow the help of this command.(English Edition)\n");
	printf("\t-hc\tShow the help of this command.(Chinese Edition)\n");
	printf("----------------------------------------------------------------------\n");
	printf("  Show \"Search:\" particular infomation: [y/n]");
	cmd=getch();
	if(cmd=='y'||cmd=='Y')
	{
		printf("\n\n");
		help_s(str);
	}
	else
		printf("\n----------------------------------------------------------------------\n");
	printf("  Show \"View:\" particular infomation: [y/n]");
	cmd=getch();
	if(cmd=='y'||cmd=='Y')
	{
		printf("\n\n");
		help_v(str);
	}
	else
		printf("\n----------------------------------------------------------------------\n");
	help_e();
}


/*-----------------------help_Chinese------------------------*/
void help_tc()
{
	printf("======================================================================\n");
	printf("\t\t\t  列车时刻表管理\n");
	printf("\t\t\t\t      By Snowing.NK\n");
	printf("----------------------------------------------------------------------\n");
}

void help_ecn()
{
	printf("\t\t\t\t\t\t    日期: 2007.07.11\n");
	printf("======================================================================\n");
}

void help_sc(char* str)
{
	printf("查找:\n");
	printf("命令行: %s -s <选项> <参数>\n",str);
	printf("\n");
	printf("选项:\n");
	printf("\t-cn\t按车次寻找. 必须有参数.\n");
	printf("\t-ss\t按起始站点寻找. 必须有参数.\n");
	printf("\t-es\t按终止站点寻找. 必须有参数.\n");
	printf("\t-at\t按到达时间寻找. 必须有参数.\n");
	printf("\t-lt\t按发车时间寻找. 必须有参数.\n");
	printf("\t-h\t显示帮助. (英文版)\n");
	printf("\t-hc\t显示帮助. (中文版)\n");
	printf("----------------------------------------------------------------------\n");
}

void help_vc(char* str)
{
	printf("浏览:\n");
	printf("命令行: %s -v [选项]\n",str);
	printf("\n");
	printf("选项:\n");
	printf("\t-cn\t按车次查看.\n");
	printf("\t-ss\t按起始站点查看.\n");
	printf("\t-es\t按终止站点查看.\n");
	printf("\t-at\t按到达时间查看.\n");
	printf("\t-lt\t按发车时间查看.\n");
	printf("\t-h\t显示帮助. (英文版)\n");
	printf("\t-hc\t显示帮助. (中文版)\n");
	printf("----------------------------------------------------------------------\n");
}

void helpcn(char* str)
{
	char		cmd;
	help_tc();
	printf("命令行: %s <选项>\n",str);
	printf("\n");
	printf("选项:\n");
	printf("\t-a\t添加一个记录. 添加一个车次记录到数据库中.\n");
	printf("\t-d\t删除一个记录. 删除被已经取消的车次记录.\n");
	printf("\t-e\t编辑一个记录. 编辑一个已经被改变的车次记录.\n");
	printf("\t-s\t在数据库中查找一个记录. 请阅读 \"查找:\" 获得详细信息.\n");
	printf("\t-v\t显示所有记录. 请阅读 \"浏览:\" 获得详细信息.\n");
	printf("\t-h\t显示帮助. (英文版)\n");
	printf("\t-hc\t显示帮助. (中文版)\n");
	printf("----------------------------------------------------------------------\n");
	printf("  显示\"查找:\"详细信息: [y/n]");
	cmd=getch();
	if(cmd=='y'||cmd=='Y')
	{
		printf("\n\n");
		help_sc(str);
	}
	else
		printf("\n----------------------------------------------------------------------\n");
	printf("  显示\"浏览:\"详细信息: [y/n]");
	cmd=getch();
	if(cmd=='y'||cmd=='Y')
	{
		printf("\n\n");
		help_vc(str);
	}
	else
		printf("\n----------------------------------------------------------------------\n");
	help_ecn();
}
/*-------------------------help_end--------------------------*/


//main function by Parameter
void main(int argc,char* argv[])
{
	//adddata();
	if(argc<=4&&argc>1)
	{
		if(argc>2)
		{
			//search
			if(!strcmp(argv[1],"-s"))
			{
				//only four parameters
				if(argc==4)
				{
					if(!strcmp(argv[2],"-cn"))
					{
						//by coach number
						errHandle(search(argv[3],"cn"));
						return;
					}
					else if(!strcmp(argv[2],"-ss"))
					{
						//by start station
						errHandle(search(argv[3],"ss"));
						return;
					}
					else if(!strcmp(argv[2],"-es"))
					{
						//by end station
						errHandle(search(argv[3],"es"));
						return;
					}
					else if(!strcmp(argv[2],"-at"))
					{
						//by arrive time
						errHandle(search(argv[3],"at"));
						return;
					}
					else if(!strcmp(argv[2],"-lt"))
					{
						//by leave time
						errHandle(search(argv[3],"lt"));
						return;
					}
				}
				else if(!strcmp(argv[2],"-hc"))
				{
					//get Simple Chinese help face
					help_tc();
					help_sc(argv[0]);
					help_ecn();
					return;
				}
				else if(!strcmp(argv[2],"-h"))
				{
					//get English help face(default)
					help_t();
					help_s(argv[0]);
					help_e();
					return;
				}
				else
				{
					//Invalid command line, show help
					printf("Invalid command line!\n");
					help(argv[0]);
					return;
				}
			}
			else if(!strcmp(argv[1],"-v"))//view
			{
				//only three parameters
				if(argc==3)
				{
					if(!strcmp(argv[2],"-cn"))
					{
						//by coach number
						errHandle(view("cn"));
						return;
					}
					else if(!strcmp(argv[2],"-ss"))
					{
						//by start station
						errHandle(view("ss"));
						return;
					}
					else if(!strcmp(argv[2],"-es"))
					{
						//by end station
						errHandle(view("es"));
						return;
					}
					else if(!strcmp(argv[2],"-at"))
					{
						//by arrive time
						errHandle(view("at"));
						return;
					}
					else if(!strcmp(argv[2],"-lt"))
					{
						//by leave time
						errHandle(view("lt"));
						return;
					}
					else if(!strcmp(argv[2],"-hc"))
					{
						//get Simple Chinese help face
						help_tc();
						help_vc(argv[0]);
						help_ecn();
						return;
					}
					else if(!strcmp(argv[2],"-h"))
					{
						//get English help face(default)
						help_t();
						help_v(argv[0]);
						help_e();
						return;
					}
					else
					{
						//Invalid command line, show help
						printf("Invalid command line!\n");
						help(argv[0]);
						return;
					}
				}
				else
				{
					//Invalid command line, show help
					printf("Invalid command line!\n");
					help(argv[0]);
					return;
				}
			}
		}

		//only two parameters
		if(!strcmp(argv[1],"-a"))
		{
			//add
			errHandle(adddata());
		}
		else if(!strcmp(argv[1],"-d"))
		{
			//delete
			errHandle(deldata());
		}
		else if(!strcmp(argv[1],"-e"))
		{
			//edit
			errHandle(edit());
		}
		else if(!strcmp(argv[1],"-s"))
		{
			//get help of search
			help_t();
			help_s(argv[0]);
			help_e();
			return;
		}
		else if(!strcmp(argv[1],"-v"))
		{
			//view by coach number(default)
			errHandle(view("cn"));
			return;
		}
		else if(!strcmp(argv[1],"-h"))
		{
			//get help English
			help(argv[0]);
		}
		else if(!strcmp(argv[1],"-hc"))
		{
			//get help Simple Chinese
			helpcn(argv[0]);
		}
		else
		{
			//Invalid command line, show help
			printf("Invalid command line!\n");
			help(argv[0]);
			return;
		}
	}
	else
	{
		//Invalid command line, show help
		printf("Invalid command line!\n");
		help(argv[0]);
		return;
	}
}


/*++++++++++++++++++++++Function+end+++++++++++++++++++++++++++++*\
\*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


/******************************************************************\
|****************************code_end******************************|
\******************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -