客运综合管理系统项目—售票管理(留票)
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 { }}
仅供学习,禁止用于商业用途
客运综合管理系统项目—售票管理(留票)相关推荐
- 客运综合管理系统项目—售票管理(售票)
2.2.2 售票 售票这个模块,可以根据车站选择车辆,也可以直接根据班次和线路查询车辆,按钮直接查询是不根据车站来查询的按车站查是根据车站来查询的,当鼠标移动到车辆图片时,左上角会出现该车辆的信息,点 ...
- 客运综合管理系统项目解析-检票管理-检票
第2章 功能实现 2.1 检票管理: 检票管理具有检票(查询/手工检票/报班/出车).补检(查询/补检,绿色通道:可实现先上车购票,后补检).检票查询(查询/清空)等功能. 2.1-1 检票: 鼠标到 ...
- 客运综合管理系统项目—报班统计(车辆调度报班)
2.3.2 车辆调度报班 车辆调度报班可以对车辆进行延时,停班,修改停班和取消停班等操作 2.3.2(图1) 从界面上可以看到我们这里用到的控件有 控件名称 说明 文字(Label) 控件可以在工具箱 ...
- 基于springboot的中国国家图书馆管理系统项目(管理功能)
中国国家图书馆管理系统项目(模板) 中国国家图书馆管理系统项目介绍 项目背景 项目功能 项目技术 项目模块 项目要求 中国国家图书馆管理系统项目开发流程 第一节 登录 1. 持久层 2. 业务层 3. ...
- 鼎尚影院计算机售票管理系统,电影院售票管理信息系统
影院售票管理系统是一款适合在电影院使用的管理系统,方便管理者进行票价的设置,会员的管理以及节目设置等等,能够按照不同的时间来统计售票信息.软件附带有指南,可指导你操作. 软件功能 1.会员信息 会员信 ...
- 无人机综合管理系统/web端后台管理系统/设备管理/运维管理/维护管理/人员管理/维修保养/配件管理/保养管理/团队管理/axure后台管理原型/axure原型/web端后台管理原型/rp原型
无人机综合管理系统/web端后台管理系统/设备管理/运维管理/维护管理/人员管理/维修保养/配件管理/保养管理/团队管理/axure后台管理原型/axure原型/web端后台管理原型/rp原型 axu ...
- 无人机综合管理系统、设备管理、设备台账、零部件管理、故障维修、维护工单、飞控成员、飞行站点、飞行计划、飞行记录、运维管理、维护管理、人员管理、无人机管理、维修保养、配件管理、保养管理、团队管理
无人机综合管理系统.设备管理.设备台账.零部件管理.故障维修.维护工单.飞控成员.飞行站点.飞行计划.飞行记录.运维管理.维护管理.人员管理.无人机管理.维修保养.配件管理.保养管理.团队管理. ax ...
- (附源码)计算机毕业设计SSM基于的智慧校园安防综合管理系统
(附源码)计算机毕业设计SSM基于的智慧校园安防综合管理系统 项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclisp ...
- 计算机毕业设计之java+javaweb的充电桩综合管理系统
** 计算机毕业设计之java+javaweb的充电桩综合管理系统 项目介绍 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息.为了迎合时代需求,优化 ...
最新文章
- Python趣味打怪:60秒学会一个例子,147段简单代码助你从入门到大师 | 中文资源...
- linux apt-get proxy
- perl use 命令中指定路径
- element-ui使用笔记
- java相册_精致小巧的java相册制作方法
- Python之路,day4-Python基础
- 【C++grammar】访问控制与抽象类与纯虚函数
- 图形的装饰教案计算机,《电脑图案设计师》教案教学设计
- 文件上传 jqueryForm
- 计算机试讲教案模板范文,试讲教案模板1.doc
- VS2010中查询替换使用
- 面试现场简单几道java算法题,你能写出几道?
- css cursor 鼠标手势
- 浅谈前端开发过程中使用的代理方法
- 字节跳动8年经验,亲身经历教你如何从小白晋升月薪过万的测试工程师
- 高中计算机教室标语,高中教室标语
- Go语言系列——Go语言介绍
- JPEG编码压缩率调整
- AppCrash explorer问题(解决方法)
- python go高并发_天下武功为快不破,戏说Python与Go高并发争锋!