《医院管理系统——“体检收费”模块》项目研发阶段性总结

作者:王文青
开发工具与关键技术:VS+ASP.Net MVC
完成模块功能红旗标志如图:
在这里插入图片描述
一、功能实现
体检流程:填写病人信息 –》体检项目设置 –》收费 –》体检
数据库设计如下:
在这里插入图片描述
1:填写病人信息
填写身份证正则验证,然后绑定性别,出生年月
填写手机号需要正则验证
在这里插入图片描述
代码经典部分
手机号验证,输入不正确自动清空:

//验证手机号
        function ipnone(hh, sj) {
            var pattern = /^0{0,1}(1[0-9][0-9]|15[7-9]|153|156|18[7-9])[0-9]{8}$/;
            if (hh.length == 11) {

            } else {
                sj.val("");
                layer.alert("输入的手机不正确");
            }
        }
        $("#ID").change(function () {
            //获取手机号
            var ip = $("#ID").val();
            ipnone(ip, $("#ID"));
        });

身份证正则+绑定信息

 //判断身份证
        $("#IDCardNo").change(function () {
            //获取身份证
            var idcode = $("#IDCardNo").val();
            //var IDNumber = $("#IDCardNo").val();
            layer.alert(checkIDCard(idcode));
            //生日
            birthday = idcode.substring(6, 10) + "-" + idcode.substring(10, 12) + "-" + idcode.substring(12, 14);
            //三、计算年龄
            currDate = new Date();
            month = currDate.getMonth() + 1;
            date = currDate.getDate();
            age = currDate.getFullYear() - idcode.substring(6, 10) - 1;

            currDate = new Date();
            month = currDate.getMonth() + 1;
            date = currDate.getDate();
            age = currDate.getFullYear() - idcode.substring(6, 10) - 1;
            //判断年龄
            if (idcode.substring(10, 12) < month || (idcode.substring(10, 12) == month && idcode.substring(12, 14) <= date)) {
                age++;
            }


            $("#Age").val(age);
            $("#Birthday").val(birthday);
            if (parseInt(idcode.substr(16, 1)) % 2 == 1) {
                //男
                sex = "man";
                $("#AS_SexID").val(18)
            } else {
                //女
                sex = "woman";
                $("#AS_SexID").val(19)
            }

        });
        // 函数参数必须是字符串,因为二代身份证号码是十八位,而在javascript中,十八位的数值会超出计算范围,造成不精确的结果,导致最后两位和计算的值不一致,从而该函数出现错误。
        function checkIDCard(idcode) {
            // 声明一个加权因子的数组
            var weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
            //声明一个校验码的数组
            var check_code = ['1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'];

            var code = idcode;//声明参数加
            var last = idcode[17];//获取字符串最后一个数字,校验位

            // ISO 7064:1983.MOD 11-2身份证最后一位校验码的算法
            // 判断最后一位校验码是否正确
            var arr = code.substring(0, 17).split("");//截取code0到17位的字符
            var len = arr.length;
            var num = 0;
            for (var i = 0; i < len; i++) {
                num = num + arr[i] * weight_factor[i];
                // 其中arr表示第i位置上的身份证号码数字值,weight_factor表示第i位置上的加权因子
                //num 就是身份证和加权因子相乘的结果
            }

            // 获取余数
            var resisue = num % 11;
            var last_no = check_code[resisue];

            // 格式的正则
            // 正则思路
            /*
            第一位不可能是0
            第二位到第六位可以是0-9
            第七位到第十位是年份,所以七八位为19或者20
            十一位和十二位是月份,这两位是01-12之间的数值
            十三位和十四位是日期,是从01-31之间的数值
            十五,十六,十七都是数字0-9
            十八位可能是数字0-9,也可能是X
            */
            var idcard_patter = /^[1-9][0-9]{5}([1][9][0-9]{2}|[2][0][0|1][0-9])([0][1-9]|[1][0|1|2])([0][1-9]|[1|2][0-9]|[3][0|1])[0-9]{3}([0-9]|[X])$/;

            //var idcard_patter = /(^\d{17}(\d|X)$)|(^\d{15}$)/
            // 判断格式是否正确
            var format = idcard_patter.test(idcode);

            // 返回验证结果,校验码和格式同时正确才算是合法的身份证号码
            if (last == last_no && format) {
                return "验证通过";
            } else {
                $("#IDCardNo").val("")
                return "验证失败";
            }
        }

2:对体检病人设置体检项目
体检
3:对体检项目进行收费
这里要判断是否收费,收完费则不可以进入这个界面
这里只针对直接来医院体检的收费
在这里插入图片描述
4: 进行体检(分为两种体检:1:直接来医院体检的。2:经过处方体检 )

在这里插入图片描述
二:开发总结
其实这个模块没有什么难度的,我做第一个项目,已经把计算收费,进行代码断点,明白其中的奥秘,正则这一块也是发费几节课搞定,学习只有不断的总结,不断的断点,弄懂流程,编码将会很快完成,每做一个项目,都有遇到的难点,思考难点,解决难点,这就是提升。不懂就要问,敢于提问,敢于思考问题,敢于尝试解决问题,总结是个好东西。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值