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(); }
//查询一个城市所有发出的航线 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); }
//已经买到的票 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); }
//修改内存里的航班->修改数据库里的航班状态->插入消息 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); }
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); }
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(); } }
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); }
//插入航班(先引用一下上一个函数判断是否是重复航班) 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); } }
//检查是否有相同航班(检测航班号应该就行) 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); } }
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); }
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; } }
//航班取消 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); }
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); }
public AirLineButton(AirLine temp) : base() { airLine = temp; }