2.2.4 留票

查询按钮可以查询对应班次的座位信息,显示对应座位的图片,如果座位处于空的状态,就可以留票,右击座位图片进行留票和取消留票,右边DGV显示的是对应班次所留的票的一些基本信息

2.2.4(图1)

从图  2.1(图1)上可以看到我们这里用到的控件有

控件名称

说明

文字(label)

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

下拉框(ComboBox)

文本(TextBox)

按钮(Button)

容器(panel)

表格(DataGridView)

数据库

1、表与关系

2.2.4(图2)

表1.车辆表(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

安检否

表2.座位表(ASeatNumberList)

列名

数据类型

主键/外键

说明

ASeatNumberID

int - Identity

主键

座号ID

ASeatNumber

char (10)

座号

VehicleID

int

外键

车辆表.车辆ID

SeatStateID

int

外键

座位状态表.座位状态ID

UserNo

bit

有用否

LinkNo

bit

连接否

表3.票号表(TicketNumberList)

列名

数据类型

主键/外键

说明

TicketNumberID

int

主键

票号ID

TicketNumber

char (100)

票号

ASeatNumberID

int

外键

座位表.座号ID

UserNo

bit

有用否

表4.用户表(dbo.UserList)

列名

数据类型

主键/外键

说明

UserID

int

主键

用户ID

UserNumber

char (100)

用户编码

StaffID

int

外键

员工表.员工ID

WorkValue

char (100)

工价

LimitsOfAuthorityGroupID

int

外键

权限组表.权限组ID

Password

char (100)

密码

Remarks

char (100)

备注

StopUseNo

bit

停用否

表5.员工表(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)

相片

表6.票号表(TicketNumberList)

列名

数据类型

主键/外键

说明

TicketNumberID

int

主键

票号ID

TicketNumber

char (100)

票号

ASeatNumberID

int

外键

座位表.座号ID

UserNo

bit

有用否

表7.线路表(LineList)

列名

数据类型

主键/外键

说明

LineID

int - Identity

主键

线路ID

LineName

char (100)

线路名称

VehicleID

int

外键

车辆表.车辆ID

Remarks

char (100)

备注

StopNo

bit

停用否

表8.留票表(StayTicketList)

列名

数据类型

主键/外键

说明

StayTicketID

int - Identity

主键

留票ID

Remarks

char (100)

备注

ASeatNumberID

int

外键

座位表.座位ID

StayTicketTime

datetime

留票时间

StayTicketSatffID

int

外键

员工表.留票员ID

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

2.座位图片的显示留票的实现

                                                                                                              2.2.4(图3)

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

@TYPE CHAR(100)='',
@StayTicketID INT=0,
@Remarks CHAR(100)='',
@ASeatNumberID INT=0,
@StayTicketTime DATETIME='',
@StayTicketSatffID INT=0,
IF @TYPE='frmStayTicket_SelectAseatPhoto'--绑定座位图片
BEGIN
SELECT     ASeatNumberList.ASeatNumber, VehicleList.Classes, ASeatNumberList.SeatStateID, ASeatNumberList.ASeatNumberID, VehicleList.VehicleID, OutVehicleList.OutVehicleID
FROM         ASeatNumberList INNER JOINVehicleList ON ASeatNumberList.VehicleID = VehicleList.VehicleID INNER JOINOutVehicleList ON VehicleList.VehicleID = OutVehicleList.VehicleID
WHERE OutVehicleList.UserTo=1 and  VehicleList.DeductFeeNo=0--当有用否等于TRUE时
END
IF @TYPE='frmStayTicket_SelectAseatPhotoID'--获取新增座位的ID
BEGIN
SELECT     ASeatNumberList.ASeatNumber, VehicleList.Classes, ASeatNumberList.SeatStateID, ASeatNumberList.ASeatNumberID, VehicleList.VehicleID
FROM         ASeatNumberList INNER JOINVehicleList ON ASeatNumberList.VehicleID = VehicleList.VehicleID
WHERE ASeatNumberList.ASeatNumberID=@ASeatNumberID
END
IF @TYPE='frmStayTicket_InsertStayTicket'   --新增留票
BEGIN
INSERT INTO  StayTicketList(Remarks, ASeatNumberID, StayTicketTime, StayTicketSatffID,ClientID)
VALUES  (@Remarks, @ASeatNumberID, @StayTicketTime, @StayTicketSatffID,@ClientID)
END
IF @TYPE='frmStayTicket_UpdateSeatStaue'--修改座位状态
BEGIN
UPDATE     ASeatNumberList
SET        SeatStateID=5
WHERE      ASeatNumberList.ASeatNumberID=@ASeatNumberID
END

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

 [OperationContract]public DataSet frmStayTicket_SelectAseatPhoto()//绑定图片{SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char) };mySqlParameter[0].Value = "frmStayTicket_SelectAseatPhoto";DataTable myDataTable = myDALMethod.QueryDataTable("SellTicketManage_frmStayTicket", mySqlParameter);DataSet myDataSet = new DataSet();myDataSet.Tables.Add(myDataTable);return myDataSet;}[OperationContract]public int frmStayTicket_InsertStayTicket(string strRemarks, int intASeatNumberID, DateTime dtStayTicketTime, int intStayTicketSatffID)//新增留票{SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char),new SqlParameter("@Remarks", SqlDbType.Char),new SqlParameter("@ASeatNumberID", SqlDbType.Char),new SqlParameter("@StayTicketTime", SqlDbType.Char),new SqlParameter("@StayTicketSatffID", SqlDbType.Char)};mySqlParameter[0].Value = "frmStayTicket_InsertStayTicket";mySqlParameter[1].Value = strRemarks;mySqlParameter[2].Value = intASeatNumberID;mySqlParameter[3].Value = dtStayTicketTime;mySqlParameter[4].Value = intStayTicketSatffID;return myDALMethod.UpdateData("SellTicketManage_frmStayTicket", mySqlParameter);}[OperationContract]public int frmStayTicket_UpdateSeatStaue(int intASeatNumberID)//修改座位状态{SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char),new SqlParameter("@ASeatNumberID", SqlDbType.Char),};mySqlParameter[0].Value = "frmStayTicket_UpdateSeatStaue";mySqlParameter[1].Value = intASeatNumberID;return myDALMethod.UpdateData("SellTicketManage_frmStayTicket", mySqlParameter);}

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

 private void VehiclePhoto(DataTable dtClasses)//显示座位图片的方法(解说请查看售票管理(售票)){pnlVehicle.Controls.Clear();//设置panel为空for (int RowsIndex = 0, leftX = 50, leftY = 50; RowsIndex < dtVehicle.Rows.Count; RowsIndex++)//声明一个整形,一个横坐标和一个纵坐标,设置值的范围{int RowsCount = RowsIndex / 4;//一行有4个if (RowsIndex % 4 == 0)//取/4的余数{leftX = 10;//与左边的距离}else if (RowsIndex != 0)//如果声明的整形不等于0{leftX += 90;//两图片宽的距离}leftY = 12 + RowsCount * 85;//(8) 与顶点的距离(35)两图片高的距离 Button btn = new Button();btn.Name = dtVehicle.Rows[RowsIndex]["VehicleBlockNumber"].ToString().Trim();btn.Tag = Convert.ToInt32(dtVehicle.Rows[RowsIndex]["VehicleID"].ToString().Trim());btn.Location = new Point(leftX, leftY);btn.Text = "车牌号:" + dtVehicle.Rows[RowsIndex]["VehicleBlockNumber"].ToString()+ "\n 班次:" + dtVehicle.Rows[RowsIndex]["Classes"].ToString()+ "\n 线路:" + dtVehicle.Rows[RowsIndex]["LineName"].ToString();//车辆图片中显示的数据btn.ForeColor = Color.OrangeRed;//设置字体颜色btn.Font = new Font("宋体", 8, FontStyle.Bold);//字体大小btn.Size = new Size(80, 65);//btn.TextAlign = ContentAlignment.TopLeft;btn.BackgroundImageLayout = ImageLayout.Center;//图片出现的位置btn.BackgroundImage = imgVehicle.Images["001.png"];this.pnlVehicle.Controls.Add(btn);btn.MouseDown += new MouseEventHandler(btn_MouseDown);//鼠标按下事件(在控件上按下鼠标键事件,调用事件)btn.MouseEnter += new EventHandler(btn_MouseEnter);//鼠标移动到时发生btn.MouseLeave += new EventHandler(btn_MouseLeave);//鼠标离开时发生}}
void btn_MouseEnter(object sender, EventArgs e)//座位图片鼠标到达时发生(图片变大,){Button btnOne = sender as Button;PublicStaticObject.intAseatID = Convert.ToInt32(btnOne.Tag);btnOne.ForeColor = Color.MediumVioletRed;/图片中字体颜色改变btnOne.Size = new Size(55, 50);//改变图片的大小btnOne.BackgroundImageLayout = ImageLayout.Zoom;PublicStaticObject.intSeatTicKetNumber = Convert.ToInt32(btnOne.Tag);}void btn_MouseLeave(object sender, EventArgs e)//车辆图片鼠标离开(图片变小){Button btn = sender as Button;int intVehicleID = Convert.ToInt32(btn.Tag);btn.ForeColor = Color.OrangeRed;//图片中字体颜色改变btn.Size = new Size(45, 40);//改变图片的大小}private void 留票ToolStripMenuItem_Click(object sender, EventArgs e)//右键功能留票{try{DataTable dtphotoOne = myfrmStayTicketClient.frmStayTicket_SelectAseatPhotoID(PublicStaticObject.intAseatID).Tables[0];if ((int)dtphotoOne.Rows[0]["SeatStateID"] == 3)//判断,当座位状态等于空时,可以留票{DialogResult dr = MessageBox.Show("确定要留票?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);//提示框if (dr == DialogResult.OK)//当按下提示框中(是)时{if (txtRemarks.Text == ""){MessageBox.Show("备注不能为空!", "提示!", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);return;}if (MessageBox.Show("确定留备注为(" + txtRemarks.Text + "\n)的票?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk) == DialogResult.OK){DataTable dtphoto = myfrmStayTicketClient.frmStayTicket_SelectAseatPhotoID(PublicStaticObject.intAseatID).Tables[0];//获取数据string strRemarks = txtRemarks.Text.ToString().Trim();int intBillID = (int)dtphoto.Rows[0]["ASeatNumberID"];DateTime dtStayTicketTime = DateTime.Now;int intStayTicketSatffID = PublicStaticObject.UserID;int i = myfrmStayTicketClient.frmStayTicket_InsertStayTicket(strRemarks, intBillID, dtStayTicketTime, intStayTicketSatffID);if (i > 0){string KnowName = "于" + dtStayTicketTime + "留一张班次为" + cboClassesNumber.Text.ToString().Trim() +"的票";//信息提示myfrmMainClient.frmMain_InsertKnow(KnowName);MessageBox.Show("留票成功!");myfrmStayTicketClient.frmStayTicket_UpdateSeatStaue(PublicStaticObject.intAseatID);//修改座位状态btnSearch_Click(null, null);//刷新}else{MessageBox.Show("操作错误!");}}}}else{MessageBox.Show("该座位无法留票!");}}catch { }}

3.取消留票的实现

                                                                                                           2.2.4(图4)

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

IF @TYPE='frmStayTicket_UpdateSeatStaueOne'--修改座位状态(取消留票)
BEGIN
UPDATE     ASeatNumberList
SET        SeatStateID=3--修改座位的状态等于空
WHERE      ASeatNumberList.ASeatNumberID=@ASeatNumberID
END

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

 [OperationContract]public int frmStayTicket_UpdateSeatStaueOne(int intASeatNumberID)//修改座位状态(取消留票){SqlParameter[] mySqlParameter = { new SqlParameter("@Type", SqlDbType.Char),new SqlParameter("@ASeatNumberID", SqlDbType.Char),};mySqlParameter[0].Value = "frmStayTicket_UpdateSeatStaueOne";mySqlParameter[1].Value = intASeatNumberID;return myDALMethod.UpdateData("SellTicketManage_frmStayTicket", mySqlParameter);}

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

private void 取消留票ToolStripMenuItem_Click(object sender, EventArgs e)//右键取消留票{try{DataTable dtphotoOne = myfrmStayTicketClient.frmStayTicket_SelectAseatPhotoID(PublicStaticObject.intAseatID).Tables[0];//获取一条数据if ((int)dtphotoOne.Rows[0]["SeatStateID"] == 5)//判断座位状态是否是留{DialogResult dr = MessageBox.Show("确定要取消留票?", "系统提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);//提示框,if (dr == DialogResult.OK)//提示框按是时执行{int i =myfrmStayTicketClient.frmStayTicket_UpdateSeatStaueOne(PublicStaticObject.intAseatID);if (i > 0){DataTable DT = myfrmStayTicketClient.frmStayTicket_SelectStayTicket(PublicStaticObject.intAseatID).Tables[0];int StayTicketID = (int)DT.Rows[0]["StayTicketID"];myfrmStayTicketClient.frmStayTicket_UpdateStayTicket(StayTicketID);MessageBox.Show("取消成功!");btnSearch_Click(null, null);}else{MessageBox.Show("操作错误!");//提示框}}}else{MessageBox.Show("该座位不在留票状态!");}}catch { }}

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

客运综合管理系统项目—售票管理(留票)相关推荐

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

    2.2.2 售票 售票这个模块,可以根据车站选择车辆,也可以直接根据班次和线路查询车辆,按钮直接查询是不根据车站来查询的按车站查是根据车站来查询的,当鼠标移动到车辆图片时,左上角会出现该车辆的信息,点 ...

  2. 客运综合管理系统项目解析-检票管理-检票

    第2章 功能实现 2.1 检票管理: 检票管理具有检票(查询/手工检票/报班/出车).补检(查询/补检,绿色通道:可实现先上车购票,后补检).检票查询(查询/清空)等功能. 2.1-1 检票: 鼠标到 ...

  3. 客运综合管理系统项目—报班统计(车辆调度报班)

    2.3.2 车辆调度报班 车辆调度报班可以对车辆进行延时,停班,修改停班和取消停班等操作 2.3.2(图1) 从界面上可以看到我们这里用到的控件有 控件名称 说明 文字(Label) 控件可以在工具箱 ...

  4. 基于springboot的中国国家图书馆管理系统项目(管理功能)

    中国国家图书馆管理系统项目(模板) 中国国家图书馆管理系统项目介绍 项目背景 项目功能 项目技术 项目模块 项目要求 中国国家图书馆管理系统项目开发流程 第一节 登录 1. 持久层 2. 业务层 3. ...

  5. 鼎尚影院计算机售票管理系统,电影院售票管理信息系统

    影院售票管理系统是一款适合在电影院使用的管理系统,方便管理者进行票价的设置,会员的管理以及节目设置等等,能够按照不同的时间来统计售票信息.软件附带有指南,可指导你操作. 软件功能 1.会员信息 会员信 ...

  6. 无人机综合管理系统/web端后台管理系统/设备管理/运维管理/维护管理/人员管理/维修保养/配件管理/保养管理/团队管理/axure后台管理原型/axure原型/web端后台管理原型/rp原型

    无人机综合管理系统/web端后台管理系统/设备管理/运维管理/维护管理/人员管理/维修保养/配件管理/保养管理/团队管理/axure后台管理原型/axure原型/web端后台管理原型/rp原型 axu ...

  7. 无人机综合管理系统、设备管理、设备台账、零部件管理、故障维修、维护工单、飞控成员、飞行站点、飞行计划、飞行记录、运维管理、维护管理、人员管理、无人机管理、维修保养、配件管理、保养管理、团队管理

    无人机综合管理系统.设备管理.设备台账.零部件管理.故障维修.维护工单.飞控成员.飞行站点.飞行计划.飞行记录.运维管理.维护管理.人员管理.无人机管理.维修保养.配件管理.保养管理.团队管理. ax ...

  8. (附源码)计算机毕业设计SSM基于的智慧校园安防综合管理系统

    (附源码)计算机毕业设计SSM基于的智慧校园安防综合管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...

  9. 计算机毕业设计之java+javaweb的充电桩综合管理系统

    ** 计算机毕业设计之java+javaweb的充电桩综合管理系统 项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化 ...

最新文章

  1. Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
  2. linux apt-get proxy
  3. perl use 命令中指定路径
  4. element-ui使用笔记
  5. java相册_精致小巧的java相册制作方法
  6. Python之路,day4-Python基础
  7. 【C++grammar】访问控制与抽象类与纯虚函数
  8. 图形的装饰教案计算机,《电脑图案设计师》教案教学设计
  9. 文件上传 jqueryForm
  10. 计算机试讲教案模板范文,试讲教案模板1.doc
  11. VS2010中查询替换使用
  12. 面试现场简单几道java算法题,你能写出几道?
  13. css cursor 鼠标手势
  14. 浅谈前端开发过程中使用的代理方法
  15. 字节跳动8年经验,亲身经历教你如何从小白晋升月薪过万的测试工程师
  16. 高中计算机教室标语,高中教室标语
  17. Go语言系列——Go语言介绍
  18. JPEG编码压缩率调整
  19. AppCrash explorer问题(解决方法)
  20. python go高并发_天下武功为快不破,戏说Python与Go高并发争锋!

热门文章

  1. VScode 主题字体颜色 必备插件
  2. 【项目2:电机控制项目】 之 【6.硬件 - 检测系统电流】
  3. 写博客原来对程序员这么有用!手把手教你应该如何写博客
  4. Java用实力带你走向人生巅峰
  5. QTP测试web时:打开ie浏览器进行录制但qtp中并没有脚本生成的解决办法
  6. Ubuntu中下载和安装Eclipse
  7. 测试用例编写与用例管理工具选择
  8. [C/C++]PCLINT错误集锦
  9. 一个悲惨的程序的故事:死循环。循环的注意(1)
  10. 把自己电脑上的文件传给linux虚拟机中