关于C# 电影管理系统选座条件上的设置问题

.Net技术 码拜 6年前 (2015-05-10) 804次浏览 0个评论

现在选座模块已经做完了,现在遇到的问题是无论座位是否售出,都可购票,希望达到的效果是,当座位售出时,点击订票按钮提示票已售出。数据库设计座位是给每个座位分别用1-30来表示,然后设计了一个state值来表示座位是否为空(1为售出。0为空)图片不知为何上传不了,座位表一共3列 第一列是filmid 电影编号(和电影信息表的filmid相关联),第二列是num 表示每个座位的数字(1-30)第三列是state 表示座位的装态(1和0)
数据库连接用的DBHelper,然后又设计了一个帮助类UserHelper来存放一些主键和信息:class UserHelper    public static int Id = 0;     //存放电影的主键(标识列)(售票员用的)     public static int ID = 0;//存放电影的主键FID(管理员用的),请高手帮忙下,给我的订票按钮设置一个条件,当state=1时 提示“改座位已有用户,请选择其他座位”。
菜鸟新人第一次发帖··· 希望大家见谅

5分
不就是if判断吗
if不会用?
10分
给我的订票按钮设置一个条件,当state=1时 提示“改座位已有用户
在点击的时候,根据位置编号取查找对应的状态,如果已经是1了,提示,这个还要什么帮助啊

if(bll.CheckState(12))
{
//这个座位还没卖
}
else
{
//这个座位已经被卖掉了
}
10分
不知道是不是楼主想的有点复杂了?我觉得可能是这样

if(判断给座位的state是否为0){进行售出操作}else{messagebox.show("该座位已经售出,请选择其他座位!");}
if我知道怎么判断,我现在这么写程序运行不对

string sql_1 = "select * from seats where filmid=""" + UserHelper.Id+ """";
                dataAdapter = new SqlDataAdapter(sql_1, DBHelper.conn);
                DataSet dataset_1 = new DataSet();
                dataAdapter.Fill(dataset_1, "seats");
                DataTable dt = dataset_1.Tables["seats"];
                if (dt.Rows.Count > 0)
                {
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr["state"].ToString() == "1")
                        {
                            foreach (Button b1 in groupBox1.Controls)
                            {
                                if (b1.Text == dr["num"].ToString())
                                {
                                    //提示无法选座
                                }
else{
//打开}
15分
你需要加锁,因为可能是多线程的,后者会覆盖前者。
其次的逻辑自己解决吧。没什么难的了。
可以考虑行级锁
大体逻辑入下
传入座位ID
根据座位ID获取数据库座位的那一条数据。
然后在判断当前的状态
如果符合状态返回可购买,否则不可购买。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C# 电影管理系统选座条件上的设置问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!