客运综合管理系统项目—售票管理(废票)

2.2.4 废票

在售票过程中有一些票被打坏等情况,可以进行废票处理

                                                                                                                         2.2.4(图1)

从界面上可以看到我们这里用到的控件有

控件名称

说明

    文字(Label)

控件可以在工具箱直接拖动至窗体,拖至窗体后右击属性可以修改控件的样式和各种属性,还可以编辑事件。右击控件选择属性,在跳出框里面选择带有雷电的图标,在里面可以选择属性

下拉框(ComboBox)

文本(TextBox)

按钮(Button)

表格(DataGridView)

容器(Panel)

日期控件(DateTimePicker)

功能实现:

第一步:数据库

1、表与关系


                                                                                                                           2.2.4(图2)

                                                                                                          

表1.站点表(StationList)

列名

数据类型

主键/外键

说明

StationID

int

主键

站点ID

StationNumber

char (100)

 

站点编号

StationName

char (100)

 

站点名称

StopNo

bit

 

停用否

表2.车辆表(VehicleList)

列名

数据类型

主键/外键

说明

VehicleID

int

主键

车辆ID

VehicleNumber

char (100)

Yes

车辆编号

VehicleBlockNumber

char (100)

Yes

车牌号

VehicleStateID

int

外键

车辆状态表.车辆状态ID

MotorcadeID

int

外键

车队表.车队ID

VehicleClearID

int

外键

车辆明细表.车辆明细ID

VehicleTypeID

int

外键

车型表.车型ID

DriverID

int

外键

司机表.司机ID

DeputyDriverOneID

int

外键

司机表.副司机1ID

DeputyDriverTwoID

int

外键

司机表.副司机2ID

StationID

int

外键

站点表.车站ID

LineID

int

外键

线路表.线路ID

OpenVehicleTime

datetime

 

发车时间

ASeatNumberID

int

外键

座号表.座号ID

FeeRateID

int

外键

费用表.费用ID

SeatNumber

char (100)

 

座位数

AddSeatNumber

char (100)

 

加座数

Remarks

char (100)

 

备注

ClassesLongStopID

int

外键

班次长停表.班次长停ID

ClassesRepeatID

int

外键

扣费表.扣费ID

Classes

char (100)

 

班次

OpenVehicleSiteID

int

外键

站点表.发车站 ID

EndVehicleSiteID

int

外键

站点表.终点站ID

DeductFeeNo

bit

 

扣费否

MotorNumber

char (100)

 

车队编号

VehicleAlterTypeCase

char (100)

 

车辆改型情况

WhetherCheck

char (100)

 

安检情况

SafeCheckNo

bit

 

安检否

表3.座位表(ASeatNumberList)

列名

数据类型

主键/外键

说明

ASeatNumberID

int - Identity

主键

座号ID

ASeatNumber

char (10)

 

座号

VehicleID

int

外键

车辆表.车辆ID

SeatStateID

int

外键

座位状态表.座位状态ID

UserNo

bit

 

有用否

LinkNo

bit

 

连接否

表4.票号表(TicketNumberList)

列名

数据类型

主键/外键

说明

TicketNumberID

int

主键

票号ID

TicketNumber

char (100)

 

票号

ASeatNumberID

int

外键

座位表.座号ID

UserNo

bit

 

有用否

表5:票据表 (BillList)

列名

数据类型

主键/外键

说明

BillID

int

主键

.票据ID

TicketNumber

char(100)

 

票号

GetOnStation

char(100)

 

上车站

GetOffStation

char(100)

 

下车站

BillTypeID

int

外键

票据类型表.票据类型ID

BillStatusID

int

外键

票据状态表.票据状态ID

SellTicKetTime

datetime

 

买票时间

SellTicketSatffID

int

外键

员工表.售票员ID

ASeatNumberID

int

外键

座位表.座位ID

SellTicKetYuan

decimal(18, 3)

 

买票金额

CheckTicketID

int

外键

检票表.检票ID

TicketNumberID

int

外键

票号表.票号ID

表6.员工表(dbo.StaffList)

列名

数据类型

主键/外键

说明

StaffID

int

主键

员工ID

StaffNumber

char (100)

 

员工编号

StaffName

char (100)

 

员工姓名

Sex

char (100)

 

性别

IdentityCardNumber

char (100)

 

身份证号

HomeLocation

char (100)

 

家庭地址

Phone

char (100)

 

电话

StaffTypeID

int

外键

员工类型表.员工类型ID

OrganizationID

int

外键

机构表.机构ID

StationID

int

外键

站点表.站点ID

Remarks

char (100)

 

备注

LeaveOfficeNo

bit

 

离职否

InvokingNo

bit

 

调用否

Date

datetime

 

日期

Photo

nvarchar (3000)

 

相片






















表7.站点表(StationList)

列名

数据类型

主键/外键

说明

StationID

int

主键

站点ID

StationNumber

char (100)

 

站点编号

StationName

char (100)

 

站点名称

StopNo

bit

 

停用否

表8.票据类型表(BillTypeList)

列名

数据类型

主键/外键

说明

BillTypeID

int

主键

票据类型ID

BillTypeName

char (100)

 

票据类型名称

TicketPrice

decimal (18, 3)

 

票价

表9.废票表(AbolishTicketList)

列名

数据类型

主键/外键

说明

AbolishTicketID

int

主键

废票ID

AbolishTicketCause

char (100)

 

废票原因

BillID

int

外键

票据表.票据ID

SatffID

int

外键

员工表.员工ID

AbandonTicketTime

datetime

 

废票时间

1.dgv绑定票据信息

第一步:数据库的存储过程

IF @TYPE='frmAbolishTicket_SelectAbolishTicket'--dgv绑定票据信息
	BEGIN
    SELECT     ASeatNumberList.ASeatNumberID, VehicleList.VehicleID, LTRIM(RTRIM(VehicleList.VehicleBlockNumber))AS VehicleBlockNumber, LTRIM(RTRIM(ASeatNumberList.ASeatNumber))AS ASeatNumber,
               LTRIM(RTRIM(BillList.GetOffStation))AS GetOffStation, LTRIM(RTRIM(BillList.GetOnStation))AS GetOnStation, LTRIM(RTRIM(BillTypeList.BillTypeName))AS BillTypeName, 
               LTRIM(RTRIM(BillList.SellTicKetYuan))AS SellTicKetYuan, BillList.SellTicKetTime, LTRIM(RTRIM(StaffList.StaffName))AS StaffName, LTRIM(RTRIM(VehicleList.Classes))AS Classes, VehicleList.OpenVehicleTime,
               StationList.StationID AS OpenVehicleSiteID, LTRIM(RTRIM(StationList.StationName)) AS OpenVehicleSite, StationList_1.StationID AS EndVehicleSiteID, LTRIM(RTRIM(StationList_1.StationName)) AS EndVehicleSite, 
               LTRIM(RTRIM(TicketNumberList.TicketNumber))AS TicketNumber, AbolishTicketList.BillID, StaffList_1.StaffID, LTRIM(RTRIM(StaffList_1.StaffName)) AS StaffNameOne, AbolishTicketList.AbandonTicketTime, 
                LTRIM(RTRIM(AbolishTicketList.AbolishTicketCause))AS AbolishTicketCause, TicketNumberList.TicketNumberID
     FROM      ASeatNumberList INNER JOIN
                      VehicleList ON ASeatNumberList.VehicleID = VehicleList.VehicleID INNER JOIN
                      BillList ON ASeatNumberList.ASeatNumberID = BillList.ASeatNumberID INNER JOIN
                      BillTypeList ON BillList.BillTypeID = BillTypeList.BillTypeID INNER JOIN
                      StaffList ON BillList.SellTicketSatffID = StaffList.StaffID INNER JOIN
                      StationList ON VehicleList.OpenVehicleSiteID = StationList.StationID INNER JOIN
                      StationList AS StationList_1 ON VehicleList.EndVehicleSiteID = StationList_1.StationID INNER JOIN
                      AbolishTicketList ON BillList.BillID = AbolishTicketList.BillID INNER JOIN
                      StaffList AS StaffList_1 ON AbolishTicketList.SatffID = StaffList_1.StaffID INNER JOIN
                      TicketNumberList ON BillList.TicketNumberID = TicketNumberList.TicketNumberID

第二步:逻辑层(BLL)代码

[OperationContract]
         public DataSet frmAbolishTicket_SelectAbolishTicket()//dgv绑定票据信息 
         {
             SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char) };
             mySqlParameter[0].Value = "frmAbolishTicket_SelectAbolishTicket";
             DataTable myDataTable = myDALMethod.QueryDataTable("SellTicketManage_frmAbolishTicket", mySqlParameter);
             DataSet myDataSet = new DataSet();
             myDataSet.Tables.Add(myDataTable);
             return myDataSet;
         }

第三步:界面层(UIL)代码,在窗体的Load事件中绑定dgv的数据

 private void frmAbolishTicket_Load(object sender, EventArgs e)
        {
                       DataTable dtAbolishTicket = myfrmAbolishTicketClient.frmAbolishTicket_SelectAbolishTicket().Tables[0];//获取数据
            dgvReturnATicketRecord.DataSource = dtAbolishTicket;//给dgv绑定数据
}

1.废票的实现

第一步:数据库的存储过程

@BillID INT=0,
@ASeatNumberID INT=0,
 IF @TYPE='frmAbolishTicket_UpdateTicketStaue'--修改票据信息
     BEGIN
     Update BillList
     set BillList.BillStatusID=5--修改票据状态
     WHERE BillList.BillID=@BillID--获取一条数据
     UPDATE ASeatNumberList
     set ASeatNumberList.SeatStateID=3--修改座位状态
     WHERE ASeatNumberList.ASeatNumberID=@ASeatNumberID
     END
     IF @TYPE='frmAbolishTicket_InsertAbolishTicket'--新增废票
     BEGIN
     INSERT INTO   AbolishTicketList(AbolishTicketCause, BillID, SatffID, AbandonTicketTime)
     VALUES (@AbolishTicketCause, @BillID, @SatffID, @AbandonTicketTime)          
     END


第二步:逻辑层(BLL)代码

 [OperationContract]
         public DataSet frmAbolishTicket_UpdateTicketStaue(int intBillID, int intASeatNumberID)//修改票据状态,修改座位状态
         {
             SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char),
                                            new SqlParameter("@BillID", SqlDbType.Int),
                                            new SqlParameter("@ASeatNumberID", SqlDbType.Int)};
             mySqlParameter[0].Value = "frmAbolishTicket_UpdateTicketStaue";
             mySqlParameter[1].Value = intBillID;
             mySqlParameter[2].Value = intASeatNumberID;
             DataTable myDataTable = myDALMethod.QueryDataTable("SellTicketManage_frmAbolishTicket", mySqlParameter);
             DataSet myDataSet = new DataSet();
             myDataSet.Tables.Add(myDataTable);
             return myDataSet;
         }
         [OperationContract]
         public int frmAbolishTicket_InsertAbolishTicket(string strAbolishTicketCause, int BillID, int SatffID, DateTime dtAbandonTicketTime)//废票新增
         {
             SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char),
                                             new SqlParameter("@AbolishTicketCause", SqlDbType.Char),
                                             new SqlParameter("@BillID", SqlDbType.Int),
                                             new SqlParameter("@SatffID", SqlDbType.Int),
                                             new SqlParameter("@AbandonTicketTime", SqlDbType.DateTime),};
             mySqlParameter[0].Value = "frmAbolishTicket_InsertAbolishTicket";
             mySqlParameter[1].Value = strAbolishTicketCause;
             mySqlParameter[2].Value = BillID;
             mySqlParameter[3].Value = SatffID;
             mySqlParameter[4].Value = dtAbandonTicketTime;
             return myDALMethod.UpdateData("SellTicketManage_frmAbolishTicket", mySqlParameter);
         }

第三步:界面层(UIL)代码

 private void btnAbolishTicket_Click(object sender, EventArgs e)//废票
        {
            if (Convert.ToInt32(cboTicketNumber.SelectedValue) > 0)
            {
                if (MessageBox.Show("确定该票已报废?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK)//提示框,有确定和取消按钮
                {
                    DataTable dtTicketNews = myfrmReturnATicketClient.frmReturnATicket_SelectTicketNews(PublicStaticObject.intTicketNumberID).Tables[0];//获取一行数据
                    string strAbolishTicketCause = txtAbolishTicketCause.Text.ToString().Trim();
                    int SatffID = PublicStaticObject.intSatffTwo;
                    int BillID = (int)dtTicketNews.Rows[0]["BillID"];
                    DateTime dtAbandonTicketTime = Convert.ToDateTime(txtAbolishTicketTime.Text);
                    int i = myfrmAbolishTicketClient.frmAbolishTicket_InsertAbolishTicket(strAbolishTicketCause, BillID, SatffID, dtAbandonTicketTime);
                    int BillIDOne = (int)dtTicketNews.Rows[0]["BillID"];
                    int ASeatNumberID = (int)dtTicketNews.Rows[0]["ASeatNumberID"];
                    if (i > 0)//判断i是否大于0
                    {
                        int intTicketNumberID = (int)dtTicketNews.Rows[0]["TicketNumberID"];
                        myfrmReturnATicketClient.frmReturnATicket_UpdateTicketStaue(BillID, ASeatNumberID, intTicketNumberID).Tables[0].ToString().Trim();
                        myfrmAbolishTicketClient.frmAbolishTicket_UpdateTicketStaue(BillIDOne, ASeatNumberID).Tables[0].ToString().Trim();//执行这个方法
                       // myfrmSellTicketClient.frmSellTicket_UpdateTicketUserNo(intTicketNumberID);
                        int intASeatNumberID = ASeatNumberID;//赋值,获取ID
                        //myfrmSellTicketClient.frmSellTicket_UpdateLineNo(intASeatNumberID);
                        string KnowName = "于" + dtAbandonTicketTime + "废一张班次为" + txtClasses.Text.ToString().Trim() + "票号为" + cboTicketNumber.Text.ToString().Trim() + "的票";//提示框
                        myfrmMainClient.frmMain_InsertKnow(KnowName);
                        MessageBox.Show("废票完成!");//提示框
                        frmAbolishTicket_Load(null, null);//执行load事件
                        txtAbolishTicketCause.Text = "";//文本的值为空
                    }
                    else
                    {
                        MessageBox.Show("废票失败!");
                        frmAbolishTicket_Load(null, null);
                        txtAbolishTicketCause.Text = "";
                    }
                }
            }
            else
            {
                MessageBox.Show("请选择票号!");
            }
        }

3.下拉框的绑定请查看登陆界面的实现,查询的实现请查看售票管理(库存/取票),dgv的绑定请查看售票管理(退票)




                          



                                                                             仅供学习,禁止用于商业用途






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值