1. 程式人生 > 實用技巧 >客車網上售票系統(分解九)

客車網上售票系統(分解九)

1、今日完成任務:
(1)票務管理-顯示所有票務資訊

(2)票務管理-根據使用者輸入的查詢條件顯示滿足條件票務資訊

(3)票務管理-刪除票務資訊

2、核心原始碼:

(1)票務管理-顯示所有票務資訊前臺頁面效果圖(已發車的車次不顯示編輯和刪除)

(2)票務管理-顯示所有票務資訊前臺頁面程式碼

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=0
"> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <link href="../css/reset.css" rel="stylesheet" /> <link href="../css/iconfont.css" rel="stylesheet" /> <link href="../css/aa.css" rel="stylesheet" /> <script src="../js/jquery-1.9.1.min.js"></script> <script src="
../js/f.js"></script> <script src="../js/laydate/laydate.js"></script> <script> //執行一個laydate例項 laydate.render({ elem: '#test1' //指定元素 }); </script> <style type="text/css"> .icon-weibiaoti1:before { content:
"\e695"; } .icon-xinxiliulan:before { content: "\e614"; } #test1 { clear: both; border: 1px solid #ccc; height: 25px; position: relative; left: 50px; bottom: 20px; } .InputDiv { border: none; } #txtCfd, #txtMdd { border: 1px solid #ccc; height: 25px; } #btnSelect { color: #fff; } .auto-style1 { background: #fff; margin-left: 40px; } .headboxtext { height: 30px; line-height: 30px; } #Label1 { font-size: 20px; } #GridView1 { text-align: center; } .btn { color: #fff; background-color: #FD4C4C; width: 90PX; height: 30px; } #txtTname { line-height: 30px; } </style> <title>票務管理</title> </head> <body> <form id="form1" runat="server"> <div class="PublicHead clearfix"> <div class="leftBox clearfix"> <!--<div class="companyLogo"> <img src="images/logo.jpg" /> </div>--> <!--<i class="iconfont icon-caidan"></i>--> <div class="companyText"> 客車網上售票系統 </div> </div> <div class="RightBox clearfix"> <div class="UserPhotoBox"> <div class="UserPic"> <img src="../Images/user.jpg" /> </div> <div class="UserName"> 使用者 </div> </div> <a href="Login.aspx"> <div class="dropOutBox"> <i class="iconfont icon-app_icons--"></i> <span>退出</span> </div> </a> </div> </div> <div class="PublicDownWhole clearfix"> <!--左側--> <div class="leftBox"> <ul> <a href="UpdateAdminInfo.aspx"> <li class=""><i class="iconfont icon-yonghuguanli"></i><span>使用者資訊</span></li> </a> <a href="UserInfo.aspx"> <li class=""><i class="iconfont icon-tubiao_dingdan"></i><span>使用者管理</span></li> </a> <a href="Pwgl.aspx"> <li class="Select"><i class="iconfont icon-fenlei"></i><span>票務管理</span></li> </a> </ul> </div> <!--右側--> <div class="RightBox"> <div class="PublicContentBox"> <!--公用指向頁面名字--> <div class="PublicPointToAgeText"> <span class="span1">客車網上售票系統 </span><span class="span2">票務管理</span> </div> <!--查詢--> <div class="InquireBox clearfix"> <div class="InquireleftBox"> <div class="Text">列車名稱:</div> <div class="InputDiv"> <asp:TextBox ID="txtTname" runat="server"></asp:TextBox> </div> </div> <div class="InquireleftBox" style="width:220px;"> <div class="layui-inline"> <label class="layui-form-label">日期:</label> <div class="layui-input-inline"> <asp:TextBox runat="server" class="layui-input" ID="test1"></asp:TextBox> </div> </div> </div> <div class="InquireleftBox"> <div class="Text">是否發車:</div> <div class="InputDiv" style="border-style: none; margin-top: 2px;"> <asp:RadioButtonList ID="radMark" runat="server" RepeatDirection="Horizontal"> <asp:ListItem Value="0">未發車</asp:ListItem> <asp:ListItem Value="1">已發車</asp:ListItem> <asp:ListItem Value="2" Selected="True">全部</asp:ListItem> </asp:RadioButtonList> </div> </div> <div class="PublicBtnIcon Color1Btn fr" style="margin-right: 550px;"> <asp:Button ID="Button1" runat="server" Text="新增" Style="width: 48px; color: #fff;" OnClick="Button1_Click" /> </div> <div class="PublicBtnIcon Color1Btn fr"> <i class="iconfont icon-icon-chaxun"></i> <%--<span>查詢</span>--%> <asp:Button ID="btnSelect" runat="server" Text="查詢" Style="width: 38px" OnClick="btnSelect_Click" /> </div> </div> <!--表修改--> <div class="auto-style1" style="margin-left: 0px; height: 700px;"> <div class="headbox"> <div class="headboxtext"> <%--<span class="span1">車票查詢</span>--%> <asp:Label ID="Label2" runat="server" Text="票務管理"></asp:Label> </div> </div> <div id="content"> <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White" BorderColor="#CC9966" BorderWidth="1px" CellPadding="4" Height="139px" Width="796px" DataKeyNames="Cid" OnRowDeleting="GridView1_RowDeleting" OnRowEditing="GridView1_RowEditing"> <Columns> <asp:BoundField DataField="Tname" HeaderText="列車名稱" /> <asp:BoundField DataField="Begin_sta" HeaderText="出發地" /> <asp:BoundField DataField="End_sta" HeaderText="目的地" /> <asp:BoundField DataField="Start_date" HeaderText="出發日期" /> <asp:BoundField DataField="Start_time" HeaderText="出發時間" /> <asp:BoundField DataField="End_time" HeaderText="到站時間" /> <asp:BoundField DataField="Seatnum" HeaderText="座位數" /> <asp:BoundField DataField="Price" HeaderText="價格" /> <asp:TemplateField HeaderText="是否發車"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%#Convert.ToBoolean(Eval("Cmark"))?"已發車":"未發車" %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="操作"> <ItemTemplate> <asp:Button ID="Button2" runat="server" Text="取消" OnClientClick="return confirm('確定要取消該車次嗎?')" CommandName="delete" Visible='<%#Convert.ToBoolean(Eval("Cmark"))?false:true %>' /> <asp:Button ID="Button3" runat="server" Text="編輯" CommandName="edit" Visible='<%#Convert.ToBoolean(Eval("Cmark"))?false:true %>' /> </ItemTemplate> </asp:TemplateField> </Columns> <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" /> <HeaderStyle BackColor="#fe7844" Font-Bold="True" ForeColor="#FFFFCC" /> <PagerStyle BackColor="#FFFFCC" ForeColor="#330099" HorizontalAlign="Center" /> <RowStyle BackColor="White" ForeColor="#330099" /> <SelectedRowStyle BackColor="#FFCC66" Font-Bold="True" ForeColor="#663399" /> <SortedAscendingCellStyle BackColor="#FEFCEB" /> <SortedAscendingHeaderStyle BackColor="#AF0101" /> <SortedDescendingCellStyle BackColor="#F6F0C0" /> <SortedDescendingHeaderStyle BackColor="#7E0000" /> </asp:GridView> </div> </div> </div> </div> </div> </form> </body> </html>

(3)票務管理-顯示所有票務資訊後臺頁面程式碼

 public partial class Pwgl : System.Web.UI.Page
    {
        CarinfoManager bll = new CarinfoManager();
        OrderinfoManager orderBll = new OrderinfoManager();
        protected void Page_Load(object sender, EventArgs e)
        {
            Update();
            if (!IsPostBack)
            {
                this.GridView1.DataSource = bll.Get();
                this.GridView1.DataBind();
            }
        }
        protected void Update()
        {
            //獲取當前日期
            DateTime date = Convert.ToDateTime(DateTime.Now.ToShortDateString());
            //獲取當前時間
            DateTime time = Convert.ToDateTime(DateTime.Now.ToShortTimeString().ToString());
            DataSet ds = bll.GetData();
            Carinfo carinfo = new Carinfo();
            foreach (DataRow r in ds.Tables[0].Rows)
            {
                carinfo.Cid = Convert.ToInt32(r["Cid"]);
                carinfo.Start_date = r["Start_date"].ToString();
                carinfo.Start_time = r["Start_time"].ToString();
                //強制轉換
                DateTime date2 = Convert.ToDateTime(carinfo.Start_date);
                DateTime time2 = Convert.ToDateTime(carinfo.Start_time);
                //比較
                if (DateTime.Compare(date, date2) > 0)
                {
                    //當前日期大於發車日期  已發車
                    bll.UpdateCmark(carinfo.Cid);
                }
                else if (DateTime.Compare(date, date2) == 0)
                {
                    if (DateTime.Compare(time, time2) > 0)
                    {
                        bll.UpdateCmark(carinfo.Cid);
                    }
                }
            }
        }
DAL層:
 public DataSet Get()
        {
            string sql = "select * from Traininfo inner join Carinfo on Traininfo.Tid=Carinfo.Tid";
            DataSet ds = dbHelper.GetData(sql);
            return ds;
        }
  public void UpdateCmark(int cid)
        {
            string sql = $"update Carinfo set Cmark=1 where Cid={cid}";
            int num=dbHelper.ExecuteNonQuery(sql);
        }

(1)票務管理-根據使用者輸入的查詢條件顯示滿足條件票務資訊前臺效果圖

(2)票務管理-根據使用者輸入的查詢條件顯示滿足條件票務資訊後臺程式碼

  /// <summary>
        /// 查詢
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnSelect_Click(object sender, EventArgs e)
        {
            //從前臺獲取資料
            string tName = this.txtTname.Text;
            string date = DateTime.MinValue.ToString();
            if (this.test1.Text != "")
            {
                //出發日期
                date = this.test1.Text;
            }
            int mark =Convert.ToInt32(this.radMark.SelectedValue);
            DataSet ds = bll.GetDataByInfo(tName, date, mark);
            this.GridView1.DataSource = ds;
            this.GridView1.DataBind();
        }
DAL層:
 public DataSet GetDataByInfo(string tname,string date,int mark)
        {
            string sql = $"select * from Carinfo inner join Traininfo on Carinfo.Tid=Traininfo.Tid where 1=1 ";
            if (tname != "")
            {
                sql += $"and Tname ='{tname}'";
            }
            if (date != DateTime.MinValue.ToString())
            {
                sql += $"and Start_date='{date}'";
            }
            if (mark!=2)
            {
                sql += $" and Cmark={mark}";
            }
            DataSet ds = dbHelper.GetData(sql);
            return ds;
        }

(1)票務管理-刪除票務資訊前臺效果圖

(2)票務管理-刪除票務資訊後臺程式碼

  /// <summary>
        /// 取消(刪除)車次
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //獲取Uid
            int cid = Convert.ToInt32(this.GridView1.DataKeys[e.RowIndex].Value);
            //先查詢訂單表,有訂單的話將訂單表中付款改為未付款表示已退款,然後再刪除車次表;無訂單則直接刪除車次表
            int num = orderBll.SelectCount(cid);
            if (num!=0)
            {
                //刪除訂單表中資訊
                orderBll.DelByCid(cid);
            }
            bool boo = bll.Delete(cid);
            if (boo)
            {
                //刪除成功
                Response.Write("<script>alert('車次取消成功!!!')</script>");
                this.GridView1.DataSource = bll.Get();
                this.GridView1.DataBind();
            }
            else
            {
                Response.Write("<script>alert('車次取消失敗!!!')</script>");
            }
        }
DAL層:
  public bool DelByCid(int cid)
        {
            string sql = $"delete from Orderinfo where Cid={cid}";
            int num = dbHelper.ExecuteNonQuery(sql);
            if (num != 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }
  public bool Delete(int cid)
        {
            string sql = $"delete from Carinfo where Cid={cid}";
            int num = dbHelper.ExecuteNonQuery(sql);
            if (num > 0)
            {
                return true;
            }
            else
            {
                return false;
            }
        }


3、遇到的問題:
(1)顯示所有票務資訊時需要首先先將發車時間過去的車輛狀態更改為已發車

(2)刪除車次表中資訊時一直報外來鍵錯誤

(3)很多想實現的效果因為能力有限沒辦法實現,需要前端技術
4、解決的方法:
(1)檢視報錯資訊,查詢到時因為有的車次有訂票資訊,需要在刪除之前先查詢訂單表,有訂單的話將訂單表中付款改為未付款表示已退款,然後再刪除車次表;無訂單則直接刪除車次表
(2)技術能力方面需要利用這個暑假做提升