客运站管理系统—更新站点的使用状态

开发工具与关键技术:Visual Studio 2015   LINQ
作者:孙水兵
撰写时间:2019年6月6

一、 为什么要更新站点的使用状态
站点的使用状态分为两种,使用中和未使用。设置站点的使用状态的优点有两个,一:更简洁明了的显示站点是否在使用;二:删除的时候只能删除未使用的站点,使用中的站点不能删除。因此,设置了站点的使用状态并让其在数据表格中显示出来能更明确的了解哪些站点可以删除。而更新站点的使用状态是为了防止有些站点正在使用却显示未使用,虽然正在使用的站点删除不了,但是为了让用户了解删除失败的原因。或者不让用户产生明明显示的是可以删除的站点(站点的使用状态是未使用)但却为什么会删除失败的心理。

二、 更新站点的方法
1.全自动方法:设置定时任务,规定到了某个时间自动执行更新站点的方法
优点:用户不需要手动更新站点使用状态,减少用户需要等待的时间,提高用户操作的效率
缺点:更新的站点的使用状态不一定完全准确,用户有可能在自动执行完更新站点使用状态的方法之后操作站点是否使用。
2.半自动:设置一个更新站点使用状态的按钮,用户在需要查看站点的使用状态时只需点击更新站点使用状态的按钮,达到更新站点使用状态的目的
优点:更新的站点的使用状态的准确率比之设置定时任务的更大。
缺点:增加用户的等待时间,降低用户的操作时间。

三、 涉及到的表格:站点表(SYS_Station)、站点明细表(SYS_StationDetail)、路段明细表(SYS_HighwaySectionDetail)
在这个项目中,使用了站点的表有两个,线路表和路段表。由于站点与线路或者路段的关系为多对多的关系,即一条路段或者线路可以有多个站点,一个站点可以有多条线路或者路段经过。因此,在这些表之间需要用中间表将其分隔开。而连接站点表与线路表的中间表为站点明细表,连接站点表与路段表的中间表为路段明细表。
在这里插入图片描述
四、 合并两个list格式的数据的方法
ListResult = listA.Union(listB).ToList(); //剔除重复项
ListResult = listA.Concat(listB).ToList(); //保留重复项
详细解释:https://www.cnblogs.com/cjm123/p/8876778.html

五、 代码
HTML代码
HTML代码非常简单,在自己觉得合适的位置放置一个自己满意的样式的按钮即可。当然点击事件是需要加上去的。
在这里插入图片描述
JS代码
JS代码也很简单,只需要在一个方法中用post提交调用控制器中相对应的更新站点状态的方法,然后用data接收控制器传递过来的数据,如果接收到的data中的state为true,说明站点状态更新成功。刷新站点表并弹出对应的提示框。否则,则说明在进行站点更新状态时出现异常,并弹出对应的提示框。注意:这个方法不要写在页面加载事件之中,否则这个方法会在每次加载页面的时候调用从而导致查询的效果会非常缓慢。
在这里插入图片描述

控制器代码
由于控制器代码比较多,我将其拆开来一点一点来说。
第一步:当然最先讲的也是最先开始写的代码。第一步则是新建一个方法名为UpdateStationState的方法。然后就是在方法中实例化实体类ReturnJsonVo(用来接收返回的状态和文本之类的类,可以自己声明变量代替)。然后将接收需要返回的数据的变量用json格式返回。然后则是用try{ } catch(){ }捕获异常。出现异常则返回文本“出现异常”。其中,由于bool类型的数据默认为false,所以在没有声明returnJson的状态(state)为true之前,返回的returnJson的状态一直为false。
在这里插入图片描述
第二步:在try{ }中分别从数据库中的站点明细表和路段明细表中将其中所有的站点ID并用List格式查出分别用UsingStationDetail和UsingHighwaySection接收,只要这两个表中存在的站点ID所在的站点都表示该站点正在使用。然后实例化一个list int?类型的的变量listStation,用来接收分别从数据库中的站点明细表和路段明细表中的所有的站点ID,由于两个表中的站点ID都是不唯一的。因此查出来的所有的站点ID都有可能重复,为了防止相同的站点ID多次请求数据库并修改数据,在进行其他操作之前,将查出来的所有的站点ID用上面提到的方法去除重复的站点ID并将其用listStation接收。
在这里插入图片描述
第三步:实例化的一些后面用得到的表对象的分别用来接收相对应的数据。之后从站点表中查询出所有站点的所有信息并用StationAll接收。Foreach循环所有的正在使用的站点ID,然后从站点表中查询出正在使用的站点ID对应的站点信息,并将其放入表对象listStationInfo中。然后在foreach循环中用for循环查出来的所有的站点信息,然后判断所有未使用的站点的状态。如果所有站点信息中的站点ID(StationAll[i].StationID)不等于正在使用的站点ID(UsingStationID)则说明站点信息中的站点ID所在的站点未使用。Convert.ToBoolean是将其他类型的数据转化为bool类型,这样更好判断。然后判断未使用的站点的状态(WhetherStop)是否为true(表示正在使用),如果是,则将其状态改为false(表示未使用)。然后将其放入listRemoveUsingStation中。
在这里插入图片描述
第四步:for循环所有正在使用的站点的信息,若果正在使用的站点的状态为false(表示未使用),然后将正在使用的站点的状态改为true并将其放入listUpdateStation,然后用上面提到的方法将所有未使用但却显示使用的站点ID与所有正在使用的但却显示未使用的站点ID合并到listResult中并将重复的数据剔除。然后foreach循环所有需要修改的数据,并将其用修改,然后判断是否修改成功,修改成功则返回returnJson的状态为true并返回文本。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值