Esempio n. 1
0
        private async void ListView_ItemClick(object sender, ItemClickEventArgs e)
        {
            AirLine temp         = (AirLine)e.ClickedItem;
            var     SelectDialog = new MessageDialog("选择操作");

            SelectDialog.Commands.Add(new UICommand("信息维护",
                                                    async(c) =>
            {
                var contentDialog = new ContentDialog()
                {
                    CloseButtonText = "关闭",

                    FullSizeDesired = false
                };
                contentDialog.Content = new ManageDialog(contentDialog, temp);
                await contentDialog.ShowAsync();
            }));


            SelectDialog.Commands.Add(new UICommand("延误/取消",
                                                    async(c) =>
            {
                var contentDialog = new ContentDialog()
                {
                    CloseButtonText = "关闭",
                    Title           = $"输入你希望对{temp.date}航班{temp.airlinenum}进行的操作",
                    FullSizeDesired = false
                };
                contentDialog.Content = new AdminOp(contentDialog, temp);
                await contentDialog.ShowAsync();
            }));
            await SelectDialog.ShowAsync();
        }
Esempio n. 2
0
        //查询一个城市所有发出的航线
        public List <AirLine> QueryAirlineBeginCity(string BeginCity, string Date)
        {
            string          Exe             = $"select * from airline where begincity=\"{BeginCity}\"and date=\"{Date}\"";
            List <AirLine>  airLines        = new List <AirLine>();
            MySqlDataReader mySqlDataReader = Execute(Exe);

            while (mySqlDataReader.Read())
            {
                AirLine newAirLine = new AirLine();
                newAirLine.arrivetime   = mySqlDataReader.GetString("arrivetime");
                newAirLine.date         = mySqlDataReader.GetString("date");
                newAirLine.comp         = mySqlDataReader.GetString("comp");
                newAirLine.airlinenum   = mySqlDataReader.GetString("airlinenum");
                newAirLine.arrivecity   = mySqlDataReader.GetString("arrivecity");
                newAirLine.begincity    = mySqlDataReader.GetString("begincity");
                newAirLine.begintime    = mySqlDataReader.GetString("begintime");
                newAirLine.remainticket = mySqlDataReader.GetInt32("remainticket");
                airLines.Add(newAirLine);
            }
            mySqlDataReader.Close();
            foreach (AirLine newAirLine in airLines)
            {
                newAirLine.status = GetStatus(newAirLine.airlinenum, newAirLine.date);
            }
            return(airLines);
        }
Esempio n. 3
0
        //已经买到的票
        public List <AirLine> GetBuyedTickets(string UserName)
        {
            string         Exe      = $"select * from airline natural join buyticket where userid=\"{UserName}\" and status=\"{0}\"";
            List <AirLine> airLines = new List <AirLine>();

            mySqlDataReader = Execute(Exe);

            while (mySqlDataReader.Read())
            {
                AirLine newAirLine = new AirLine();
                newAirLine.arrivetime   = mySqlDataReader.GetString("arrivetime");
                newAirLine.date         = mySqlDataReader.GetString("date");
                newAirLine.comp         = mySqlDataReader.GetString("comp");
                newAirLine.airlinenum   = mySqlDataReader.GetString("airlinenum");
                newAirLine.arrivecity   = mySqlDataReader.GetString("arrivecity");
                newAirLine.begincity    = mySqlDataReader.GetString("begincity");
                newAirLine.begintime    = mySqlDataReader.GetString("begintime");
                newAirLine.remainticket = mySqlDataReader.GetInt32("remainticket");
                newAirLine.price        = mySqlDataReader.GetInt32("price");
                airLines.Add(newAirLine);
            }
            mySqlDataReader.Close();
            foreach (AirLine newAirLine in airLines)
            {
                newAirLine.status = GetStatus(newAirLine.airlinenum, newAirLine.date);
            }
            return(airLines);
        }
Esempio n. 4
0
        //修改内存里的航班->修改数据库里的航班状态->插入消息
        public void AirlineLate(AirLine airLine, string LatetimeMin)
        {
            airLine.status.newtime = LatetimeMin;
            airLine.status.islate  = true;

            string AirlineId = airLine.airlinenum;
            string Date      = airLine.date;
            string str       = $"replace INTO airlinestatus VALUES (\"{AirlineId}\",\"{Date}\" ,'late',\"{LatetimeMin}\")";

            ExecuteNoQuery(str);
            //插入延误
            //给用户延误信息

            //先取得受影响的用户ID
            var    UseridList = GetUsersBuyedThisTicket(AirlineId, Date);
            string SubAirLine = GetNearAirLine(airLine);
            string Message;

            if (SubAirLine != null)
            {
                Message = $"您好,您在{Date}的航班{AirlineId}已经延误{LatetimeMin}分钟,您可以选择搭乘最近的航班{SubAirLine}";
            }
            else
            {
                Message = $"您好,您在{Date}的航班{AirlineId}已经延误{LatetimeMin}分钟,请谅解";
            }
            AddMessage(UseridList, Message);
        }
Esempio n. 5
0
        public bool ChangeAirline(AirLine airLine)
        {
            string str = $"update airline set remainticket={airLine._remainticket}, price={airLine.price} where airlinenum=\"{airLine.airlinenum}\" and date=\"{airLine.date}\"";

            ExecuteNoQuery(str);
            return(true);
        }
Esempio n. 6
0
        private async void ListView_ItemClick(object sender, ItemClickEventArgs e)
        {
            AirLine temp = (AirLine)e.ClickedItem;

            if (temp._status.iscanceled)
            {
                await new ContentDialog()
                {
                    CloseButtonText = "关闭",
                    Title           = $"航班已经取消 你不能买票!",
                    FullSizeDesired = false
                }.ShowAsync();
            }
            else
            {
                var contentDialog = new ContentDialog()
                {
                    CloseButtonText = "关闭",
                    Title           = $"输入你希望对{temp.date}航班{temp.airlinenum}进行的操作",
                    FullSizeDesired = false
                };

                contentDialog.Content = new AdminOp(contentDialog, temp);
                await contentDialog.ShowAsync();
            }
        }
Esempio n. 7
0
        public string GetNearAirLine(AirLine airLine)
        {
            //List<string> temp=new List<string>();
            string Search = $"SELECT * FROM airline Left join airlinestatus on(airline.airlinenum=airlinestatus.airlinenum and airline.date=airlinestatus.date) where airline.begincity =\"{airLine.begincity}\" and airline.arrivecity=\"{airLine.arrivecity}\" and airline.date=\"{airLine.date}\" and airline.airlinenum!=\"{airLine.airlinenum}\" and airlinestatus.status is NULL";

            mySqlDataReader = Execute(Search);
            string Temp = null;

            if (mySqlDataReader.Read())
            {
                Temp = (mySqlDataReader.GetString("airlinenum"));
            }
            mySqlDataReader.Close();
            return(Temp);
        }
Esempio n. 8
0
 //插入航班(先引用一下上一个函数判断是否是重复航班)
 public bool AddAirline(AirLine airline)
 {
     if (HasSameAirline(airline))
     {
         return(false);
     }
     else
     {
         string str = $"insert into airlinebackup.airline values (\"{airline.comp}\",\"{airline.airlinenum}\",\"{airline.begintime}\",\"{airline.arrivetime}\",\"{airline.remainticket}\",\"{airline.cross}\",\"{airline.begincity}\",\"{airline.arrivecity}\",\"{airline.price}\")";
         ExecuteNoQuery(str);
         string str_1 = $"insert into airline.airline select* from airlinebackup.airline inner join airline.date where airlinebackup.airline.airlinenum=\"{airline.airlinenum}\"";
         ExecuteNoQuery(str_1);
         return(true);
     }
 }
Esempio n. 9
0
        //检查是否有相同航班(检测航班号应该就行)
        public bool HasSameAirline(AirLine airline)
        {
            string str = $"select * from airline where airlinenum=\"{airline.airlinenum}\"";

            mySqlDataReader = Execute(str);
            if (mySqlDataReader.Read())
            {
                mySqlDataReader.Close();
                return(true);
            }
            else
            {
                mySqlDataReader.Close();
                return(false);
            }
        }
Esempio n. 10
0
        public List <AirLine> GetDayAirLines(string date)
        {
            string         Exe      = $"select * from  airline as a left join airlinestatus as b on(a.airlinenum=b.airlinenum and a.date=b.date) where a.date=\"{date}\"";
            List <AirLine> airLines = new List <AirLine>();

            mySqlDataReader = Execute(Exe);
            int i = 0;

            while (mySqlDataReader.Read())
            {
                AirLine newAirLine = new AirLine();
                newAirLine.arrivetime   = mySqlDataReader.GetString("arrivetime");
                newAirLine.date         = mySqlDataReader.GetString("date");
                newAirLine.comp         = mySqlDataReader.GetString("comp");
                newAirLine.airlinenum   = mySqlDataReader.GetString("airlinenum");
                newAirLine.arrivecity   = mySqlDataReader.GetString("arrivecity");
                newAirLine.begincity    = mySqlDataReader.GetString("begincity");
                newAirLine.begintime    = mySqlDataReader.GetString("begintime");
                newAirLine.remainticket = mySqlDataReader.GetInt32("remainticket");
                newAirLine.price        = mySqlDataReader.GetInt32("price");
                var time = mySqlDataReader.GetOrdinal("time");
                if (!mySqlDataReader.IsDBNull(time))
                {
                    newAirLine.status = new AirLine.Status();
                    switch (mySqlDataReader.GetString("status"))
                    {
                    case "late":
                        newAirLine.status.islate  = true;
                        newAirLine.status.newtime = mySqlDataReader.GetString("time");
                        break;

                    case "canceled":
                        newAirLine.status.iscanceled = true;
                        break;
                    }
                }
                airLines.Add(newAirLine);
            }
            mySqlDataReader.Close();
            return(airLines);
        }
Esempio n. 11
0
        public AdminOp(ContentDialog contentDialog, AirLine _airLine, ObservableCollection <AirLine> _airLines = null)
        {
            airLines = _airLines;
            airLine  = _airLine;
            this.InitializeComponent();
            father = contentDialog;
            switch (airLine.itemType)
            {
            case ResultPage.PageType.AdminSearchPage:
                AdminSearchPage();
                break;

            case ResultPage.PageType.UserMessagePage:
                UserMessagePage();
                break;

            case ResultPage.PageType.UserSearchPage:
                UserSearchPage();
                break;
            }
        }
Esempio n. 12
0
        //航班取消
        public void AirlineCanael(AirLine airLine)
        {
            string AirlineId = airLine.airlinenum;
            string Date      = airLine.date;
            string str       = $"replace into airlinestatus values (\"{AirlineId}\",\"{Date}\",'canceled','0')";

            ExecuteNoQuery(str);
            //先取得受影响的用户ID
            var    UseridList = GetUsersBuyedThisTicket(AirlineId, Date);
            string SubAirLine = GetNearAirLine(airLine);
            string Message;

            if (SubAirLine != null)
            {
                Message = $"您好,您在{Date}的航班{AirlineId}已经取消,您可以选择搭乘最近的航班{SubAirLine}";
            }
            else
            {
                Message = $"您好,您在{Date}的航班{AirlineId}已经取消,请谅解";
            }
            AddMessage(UseridList, Message);
        }
Esempio n. 13
0
        public List <AirLine> MostValueAirlines(string[] citys, string date, List <AirLine> DayAirlines)
        {
            int            count    = citys.Length - 1;
            List <AirLine> airLines = new List <AirLine>();
            List <AirLine> results  = new List <AirLine>();
            List <int>     values   = new List <int>();
            List <int[]>   numbers  = new List <int[]>();

            int[] times = new int[count];
            int[] tempo = new int[count];
            times[0] = 0;
            int num = 0;

            for (int i = 0; i < count; i++)
            {
                if (i + 1 <= count)
                {
                    foreach (AirLine airline in DayAirlines)
                    {
                        if (airline.begincity.Equals(citys[i]) && airline.arrivecity.Equals(citys[i + 1]) && airline.date.Equals(date))
                        {
                            airLines.Add(airline); num++;
                        }
                    }
                }
                if (i + 1 < count)
                {
                    times[i + 1] = num;
                }
            }

            for (int i = 0; i < count; i++)
            {
                tempo[i] = 0;
            }
            tempo[0] = -1;
            while (tempo[count - 1] <= num - 1)
            {
                int            value          = 0;
                List <AirLine> tempo_airlines = new List <AirLine>();
                int[]          saveNumber     = new int[count];
                tempo[0] += 1;
                bool isSmaller = true;
                for (int i = 0; i < count; i++)
                {
                    if (i + 1 < count)
                    {
                        if (tempo[i] == times[i + 1])
                        {
                            tempo[i]      = 0;
                            tempo[i + 1] += 1;
                        }
                    }
                }
                if (tempo[count - 1] + times[count - 1] >= num)
                {
                    break;
                }
                for (int i = 0; i < count; i++)
                {
                    saveNumber[i] = times[i] + tempo[i];
                }
                numbers.Add(saveNumber);
                for (int i = 0; i < count; i++)
                {
                    tempo_airlines.Add(airLines[tempo[i] + times[i]]);
                }

                for (int i = 0; i < count; i++)
                {
                    if (tempo_airlines[i].remainticket < 0)
                    {
                        isSmaller = false;
                    }
                    if (i + 1 < count)
                    {
                        bool a = (AirLine.MinusTime(tempo_airlines[i].arrivetime, tempo_airlines[i + 1].begintime) > 0);
                        if (a)
                        {
                            isSmaller = false;
                        }
                        else
                        {
                            int b = 10000;
                        }
                    }
                }
                if (isSmaller)
                {
                    for (int i = 0; i < count; i++)
                    {
                        if (i + 1 < count)
                        {
                            bool a = AirLine.MinusTime(tempo_airlines[i].arrivetime, tempo_airlines[i + 1].begintime) > 0;
                            if (a)
                            {
                                isSmaller = false;
                            }
                            else
                            {
                                int b = 10000;
                            }
                        }
                    }
                }
                if (isSmaller == false)
                {
                    values.Add(int.MinValue);
                    continue;
                }

                for (int i = 0; i < count; i++)
                {
                    value += tempo_airlines[i].getValue();
                }
                values.Add(value);
            }
            int maxLocal = 0;
            int max      = -10000;

            for (int i = 0; i < values.Count; i++)
            {
                if (values[i] > max)
                {
                    max = values[i];
                }
            }
            maxLocal = values.IndexOf(max);
            if (maxLocal == -1)
            {
                return(results);
            }
            for (int i = 0; i < count; i++)
            {
                results.Add(airLines[numbers[maxLocal][i]]);
            }
            return(results);
        }
Esempio n. 14
0
 public AirLineButton(AirLine temp) : base()
 {
     airLine = temp;
 }