📄 trainlist.cpp
字号:
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 + -