医院管理系统 项目研发阶段性总结

《医院管理系统——“药房管理”模块》项目研发阶段性总结
作者:饶芝华
本次任务完成时间:2018年8月22日~2018年9月8日
开发工具与关键技术:
完成模块功能:订货管理、进货管理、报损管理、进退货管理等
一、功能实现
订货管理主要包括订单录入、查看订单信息的功能模块。
订单查看:见图1,是订货管理模块实现界面。
医院管理系统 项目研发阶段性总结
图1 订单管理模块
点击图1【查看】按钮弹出此订单信息的界面如图2。单击选项卡药房管理中的“订单管理”选项,进入订单管理界面。该订单的详细信息,包括药品名称、单价、预定数量、总计金额等。

医院管理系统 项目研发阶段性总结
图2 订单信息

订单录入:见图3,是订单录入界面,主要是收集订货单的详细业务信息。

医院管理系统 项目研发阶段性总结
图3 订单录入
页面的上半部分主要是填写一些有关订货的业务记录信息,而下半部分的表格是可以单击列名添加一空行来进行药品编辑的,在首列输入药品编号即可查看该药品的信息,然后编辑数量即可。此订单可以支持预定多种药品。如果同样的药品编号被输入两次,系统将提示您此药品已存在订购清单,包括如果您输入系统中不存在的药品编号,系统将提示您此药品不存在,若要新增新药品请联系系统管理员。
点击【保存】按钮,系统提示录入成功则表示操作成功,此时订单的状态是待处理的。反之则失败。

订单录入后,在进货管理这边可以查看系统最新订单消息。如图4:
单击【进货管理】选项卡
进货单查看:
医院管理系统 项目研发阶段性总结
图4:进货管理界面
接着点击【订单自动统计】按钮,弹出模态框,显示所有待处理订单统计后的药品信息,自动统计出所有订单需要的花费以供查看。这些订单中出现相同的药品将不再重复出现,系统会把它整合到与它相同的药品中,同理该药品对应的数量也是多个相同药品数量合并后的药品总数。
如图5:
医院管理系统 项目研发阶段性总结
图5:订单数据信息统计

在进货管理中点击【新增】按钮,跳转到进货单编辑页面。如图6:
进货单录入:
医院管理系统 项目研发阶段性总结
图6:进货单录入界面
这里的进货单号是系统自动生成的流水号,编辑相关业务信息之后,选择要进货的订单号,订单中的药品信息将自动导入药品编辑表格,也可以手动改动进货药品信息。注意:订单号是从订单管理那边共享过来的待处理订单号。确认订单清单信息后单击【生效】下面的付款单表格里会列出您本次进货单的应付款金额,点击【一键付清】,付款单中的本次付款金额会全部与应付款一致,也可以在提交之前手动修改本次付款金额。
确认无误之后,再单击【保存】提交进货单,系统提示进货单录入成功表示操作完成。反之则失败。如果用户选择一次性付清进货款,药房药品对应数量增加,那么此订单状态完结。如果用户没有一次性付款结束,后期订单的状态是正在进货,继续付款结清后才订单完结。
继续付款如图7:
医院管理系统 项目研发阶段性总结
图7:继续付款的进货单
点击【继续付款】弹出继续付款模态框
医院管理系统 项目研发阶段性总结
点击【提交】完成余额缴纳。此订单完结。

二、相关业务表和关系

医院管理系统 项目研发阶段性总结

三、经典代码
使用goto 无条件跳转语句,确保数据库表中单据号是唯一的。

  public ActionResult JHGetNums()
        {
            string strnum = GetNum.GetRandom("TH-").Trim();
            bool a = false;
            //goto 无条件转向语句
            //此处试用:若查询到相同的编号则重新编号,直到产生唯一的编号
            loop:
            try
            {
                var tbStock = myModels.B_Stock.Where(m => m.B_StockNumber == strnum).Single();
                strnum = GetNum.GetRandom("TH-").Trim();
            }
            catch (Exception)
            {
                a = true;
            }
            if (!a)
            {
                goto loop;
            }
            return Json(strnum, JsonRequestBehavior.AllowGet);
        }

四、开发总结
这一块的功能主要是进销存相关的一部分。先说下功能设计,做过软件的人都知道,其实这些业务无非就是“增删查改”,但是要用它来设计业务还是需要搭配使用的呢。而我认为,这样的一个信息系统背后支撑的数据库设计才是最重要的。 因为这次真的遇到了麻烦,在刚开始数据库设计的时候考虑设计不周到,开发期间有些业务表设计不规范导致修改数据库和比较大的一部分代码。
吃一堑会长一智,以后分析业务的时侯还是要和队友多多交流啊,自己也要深度思考,说真的一个大体的业务模块设计千万不能马虎。可能一个主键ID在其他表中的位置不太对,或者放在另外一张表会更恰当时,呵呵,如果像我这次一样急于敲代码到后面就知道完蛋了。所以说呀,数据库设计还是比较重要地。我觉得它融合了整个项目的前后逻辑设计思维,系统的主要业务功能都要基于数据库的设计来实现,而且不一样的设计方式带来的效率也是不一样的。
开发期间也发现,我们的项目说明书提出的需求对我们刚刚学完MVC的人而言也是比较有挑战性的。当发现某个简单的页面功能可以用多种方式来做的话,有时候还是比较有趣。