?? sysline.cpp
字號:
//SysLine.cpp
#include "stdafx.h"
#ifndef SYSLINE_H
#define SYSLINE_H
#include "SysLine.h"
#endif
int SysLine::insertLine(CString name)
{
char Name[10];
for(int i=0;i<10;i++)
if(i<name.GetLength())Name[i]=name.GetAt(i);
else Name[i]=' ';
int l=-1,r=AllLineSz;
int mid;
while(l+1<r)
{
mid=(l+r)/2;
if(0==compare(lineArray[mid].destination,Name))return -1;
else if(compare(lineArray[mid].destination,Name)<0)l=mid;
else r=mid;
}
for(i=r;i<AllLineSz;i++)
if(lineArray[i].isEmpty==false)break;
if(i<AllLineSz)
{
int temp=FindLine(i);
for(i=temp;i<LineSz;i++)flightArray[i].lineindex++; //更新下標
}
for(i=AllLineSz;i>r;i--)
lineArray[i]=lineArray[i-1];
for(i=0;i<10;i++)
if(i<name.GetLength())lineArray[r].destination[i]=Name[i];
else lineArray[r].destination[i]=' '; //將后面的字符賦為空,以避免產生亂碼
lineArray[r].isEmpty=true;
AllLineSz++;
return r;
}
bool SysLine::deleteLine(int Lindex)
{
int temp;
for(int i=Lindex;i<AllLineSz;i++)if(lineArray[i].isEmpty==false)break;
if(i<AllLineSz)//更新flightArray數組中的下標,刪除對應的航班
{
bool isLindex=false;
if(i==Lindex)isLindex=true;
temp=FindLine(i);
for(int i=temp;i<LineSz-1;i++)
{
if(isLindex==true)flightArray[i]=flightArray[i+1];
flightArray[i].lineindex--;
}
if(isLindex==true)LineSz--;
else flightArray[LineSz-1].lineindex--;
}
for(i=Lindex;i<AllLineSz-1;i++)
lineArray[i]=lineArray[i+1];
AllLineSz--;
return true;
}
int SysLine::FindFlightIndex(int Line)
{
int l=-1,r=LineSz;
int mid;
while(l+1<r)
{
mid=(l+r)/2;
if(flightArray[mid].lineindex==Line)//該航班的航線已經存在flightArray中
{
if(flightArray[mid].flightN>3)return -1; //一天之中只能有4個航班
else return mid;
}
else if(flightArray[mid].lineindex<Line)l=mid;
else r=mid;
}
for(int i=LineSz;i>r;i--)
flightArray[i]=flightArray[i-1];
flightArray[r].flightN=0;
flightArray[r].lineindex=Line; //把航班所對應的航線下表賦給lineindex
return r;
}
bool SysLine::deleteFlight(int Findex)
{
return true;
}
int SysLine::compare(char a[],char b[]) //a和b的長度是相同的,都是10
{
for(int i=0;i<10;i++)
if(a[i]>b[i])return 1;
else if(a[i]<b[i])return -1;
return 0;
}
int SysLine::FindLine(int index)
{
int l=-1,r=LineSz;
int mid;
while(l+1<r)
{
mid=(l+r)/2;
if(flightArray[mid].lineindex==index)return mid;//該航班的航線已經存在flightArray中
else if(flightArray[mid].lineindex<index)l=mid;
else r=mid;
}
return -1;//找不到
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -