收藏 分销(赏)

医院管理系统-课程设计说明书.doc

上传人:可**** 文档编号:10143538 上传时间:2025-04-23 格式:DOC 页数:14 大小:240.54KB 下载积分:8 金币
下载 相关 举报
医院管理系统-课程设计说明书.doc_第1页
第1页 / 共14页
医院管理系统-课程设计说明书.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
无锡职业技术学院课程设计说明书 一、系统需求与功能分析 1.系统需求分析 医院信息化是医院应用信息技术及其产品的过程,是信息技术由局部到全局、由战术层次到战略层次向医院的全面渗透,运用于流程管理、支持医院经营管理的过程。信息化的实施从自上而下的角度说,必须与医院的制度创新、组织创新和管理创新结合;从自上而下的角度说,必须以作为医院主体的业务人员直接受益及其使用水平的逐步提高为基础。 调查用户需求: 本系统的最终用户为医院,我们根据从医院方面取得的图表资料、文字资料以及其他细节方面的信息,根据我们日常生活中的经验,根据我们所做的其他询问和调查,得出用户的下列实际要求: 用户对系统的要求: 信息要求: 由于系统的使用主体是医院的管理人员,因此对系统的信息要求可分为以下方面: (1)病人信息 ①:首先是病人的基本信息,主要包括病人的姓名,性别,出生年月,年龄,家庭住址,联系方式等; ②:对于住院病人,还需要入院时间,所在病区,所在医科,床位等. (2)处理要求: 系统应当完成以下的信息处理: ①:存储病人信息,供相应的人员查询; ②:对病人信息进行及时的更新和统计; (3)安全性要求: 系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用. 2. 功能分析 (1)信息录入处理:住院病人信息录入、住院病人治疗费用录入、住院病人药品费用录入。 住院病人信息录入就是将源数据库中没有的病人信息重新录入进去,并且可以录入病人姓名.住院病人费用录入和住院病人药品录入功能相近,都是将 病人在住院期间的所花的费用进行录入保存,方便以后进行查询。 (2)信息查询处理:住院病人信息查询和住院病人费用查询。 住院病人信息查询和住院病人费用查询功能相似,从数据库中将病人信息和费用显示到前台,让病人及时了解自己的个人信息和消费情况。 (3)信息统计处理:住院病人总费用统计 按大类科、专科、病区及指定的病人进行查询统计 (4)信息打印处理:住院病人信息打印 住院病人信息报表打印用于显示病人的住院号、床位号、床位费、病人姓名、性别编码出生日期、民族、籍贯和病症等详细信息。 (5)系统维护处理:病人信息维护、大类科编码维护、专科编码维护、病区编码维护、治疗项目编码维护、药品编码维护医生编码维护和用户编码维护。 系统编码维护时分别对病人信息、大类科、专科、病区、治疗项目、药品信息、医生信息和用户信息进行录入、查询与修改等操作,数据编码表维护是对各类数据编码表中的记录进行录入、查询与修改等操作。 3。系统功能菜单 由此方案设计的系统功能菜单如下表所示。 信息录入 信息查询 信息统计 数据打印 系统维护 信息复制 病人信息录入 病人信息查询 病人总费用统计 病人信息打印 系统维护 批量复制 病人治疗费用录入 病人费用查询 大类科编码维护 病人药品费用录入 专科编码维护 病区编码维护 治疗项目维护 药品编码维护 医生编码维护 用户编码维护 表 学生成绩管理功能菜单 二、数据库设计 设计系统的数据库结构、数据表结构包含序号、数据项名、含义、数据项类型、长度、非空、索引、主键、外键、引用字段、数据来源等。 1.大类科编码表Category 表1 大类科编码表tblCategory 序号 字段名 含义 类型 宽度 小数 主/外键 1 Cate_Id 大类科编码 Varchar 10 PK 2 Cate_Name 大类科名称 Varchar 20 3 Cate_Dean 大类科主任 Varchar 10 2.专科编码表Spec 表2 专科编码表tblSpec 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Spec_Id 专科编码 Varchar 10 PK 2 Spec_Name 专科名称 Varchar 30 3 Spec_Cate 所属大类科编码 Varchar 10 FK tblCategory / Cate_ID 3。病区编码表Ward 表3 病区编码表tblWard 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Ward_Id 病区编码 Varchar 10 PK 2 Ward _Name 病区名称 Varchar 20 3 Ward_Pos 病区位置 Varchar 20 4 Ward_Beds 总床位数 Int 5 Ward_Used 已用床位数 Int 6 Ward_Rest 剩余床位数 flaot 7 Ward_Head 病区主任 Varchar 10 8 Ward_Spec 所属专科编码 Varchar 2 FK tblSpec / Spec_ID 4.病人信息表Patient 表4 病人信息表tblPatient 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Pat_Id 住院号 Varchar 10 PK 2 Pat_Bed 床位号 Varchar 50 3 Pat_BedFee 床位费 money 2 4 Pat_Name 病人姓名 Varchar 8 5 Pat_Sex 性别编码 Varchar 1 tblSex / Sex_ID 6 Pat_Birth 出生日期 Datetime 7 Pat_Nation 民族  Varchar 2 tblNation / Nation_ID 8 Pat_NtvPlc 籍贯 Varchar 6 tblNtvPlc / NtvPlc_ID 9 Pat_Sympton 病症 Varchar 20 10 Pat_Work 工作单位 Varchar 20 11 Pat_CharId 身份证号 Varchar 40 12 Pat_Ward 病区编码 Varchar 10 tblWard / Ward_ID 13 Pat_ZipCode 住宅邮编 Varchar 6 14 Pat_Phone 住宅电话 Varchar 20 15 Pat_Addr 户口地址 Varchar 50 16 Pat_Admit 入院日期 Datetime 17 Pat_Leave 出院日期 Datetime 18 Pat_PayAd 预交费 money 2 19 Pat_PaySum 费用总额 money 2 20 Pat_PayRest 费用结余 money 2 21 Pat_Image 病人照片 Image 5。性别编码表Sex 表5 性别编码表tblSex 序号 字段名 含义 类型 宽度 小数 主/外键 1 Sex_Id 性别编码 Varchar 1   PK 2 Sex_Name 性别 Varchar 10     6。民族编码表Nation 表6 民族编码表tblNation 序号 字段名 含义 类型 宽度 小数 主外键 1 Nation_Id 民族编码 Varchar 2   PK 2 Nation_Name 民族名称 Varchar 20     7.籍贯编码表NtvPlc 表7 籍贯编码表tblNtvPlc 序号 字段名 含义 类型 宽度 小数 主/外键 1 NtvPlc_Id 籍贯编码 Varchar 6   PK 2 NtvPlc_Name 籍贯名称 Varchar 20     8.治疗项目编码表Item 表8 治疗项目编码表tblItem 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Item_Id 项目编码 Varchar 10 PK 2 Item_Name 项目名称 Varchar 6 3 Item_Type 项目类别 Varchar 6 4 Item_Wbm 五笔码 Varchar 30 5 Item_Pym 拼音码 Varchar 10 6 Item_PerPrice 项目单价 float 2 7 Item_Mark 备注 Varchar 20 9.病人治疗项目费用表MedItem 表9 病人治疗项目费用表tblMedItem 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Mi_PatId 住院号 Varchar 10 PK tblPatient / Pat_Id 2 Mi_ItemId 项目编码 Varchar 10 tblItem / Item_ID 3 Mi_Quantity 数量 float 4 Mi_Amount 金额 int 5 Mi_Date 使用日期 Varchar 10 6 Mi_Time 使用时间 Varchar 50 7 Mi_DocId 医生编码 Varchar 10 tblDoctor / Doct_Id 8 Mi_Advice 医嘱号 Varchar 10 10。药品编码表Medicine 表10 药品编码表tblMedicine 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Med_Id 药品编码 Varchar 17 PK 2 Med_Wbm 五笔编码 Varchar 6 3 Med_Pym 拼音编码 Varchar 6 4 Med_Name 药品名称 Varchar 30 5 Med_Spec 药品规格 Varchar 16 6 Med_Unit 计量单位 Varchar 6 7 Med_PerPrice 药品单价 float 2 8 Med_Expirydate 药品有效期 Varchar 11.病人药品费用表MedFee 表11 病人药品费用表tblMedFee 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Mf_PatId 住院号 Varchar 10 PK tblPatient / Pat_Id 2 Mf_ItemId 药品编码 Varchar 17 tblMedicine / Med_Id 3 Mf_Unit 药品单位 Varchar 4 4 Mf_ Quantity 数量 float 5 Mf_Amount 金额 float 6 Mf_Date 使用日期 Varchar 10 7 Mf_Time 使用时间 Varchar 5 8 Mf_DocId 医生编码 Varchar 5 tblDoctor / Doct_Id 9 Mf_Advice 医嘱号 Varchar 10 12。医生编码表Doctor 序号 字段名 含义 类型 宽度 小数 主键 表12 医生编码表tblDoctor 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 Doct_ID 医生编码 Varchar 5 PK 2 Doct_Name 医生名称 Varchar 8 3 Doct_Spec 所属专科编码 Varchar 8 tblSpec / Spec_Id 4 Doct_Ward 所属病区编码 Varchar 10 tblWard / Ward_Id 13.用户表User 表13 用户表tblUser 序号 字段名 含义 类型 宽度 小数 主/外键 关联表/字段 1 User_ID 用户名 Varchar 10 PK 2 User_Psw 用户密码 Varchar 20 3 User_Flag 用户权限标志 Varchar 1 三、程序设计 1.系统登录(主) 图1 用户登录界面 在登录界面的设计中,我采用的是有连接访问数据库,这样数据并发性问题更容易控制,数据也是当前的和及时更新的;此外还设有用户权限,权限不同登录成功后呈现出的主界面也不同;并且使用DataReader组件来以只读和仅转发的方式从数据源检索数据;核心代码如下: //有连接访问 static string str = ”Data Source=ASUS—PC\\SQLEXPRESS;Initial Catalog=Hospital;User Id=sa;Password=sa"; SqlConnection con = new SqlConnection(str); private void btn_Login_Click(object sender, EventArgs e) { string cmdStr = "Select * From tblLogin Where User_Name=@a and User_Pwd=@b"; SqlCommand cmd = new SqlCommand(cmdStr, con); SqlParameter s1, s2; s1 = cmd.Parameters。Add(”@a", SqlDbType。VarChar, 20); s2 = cmd.Parameters。Add(”@b", SqlDbType.VarChar, 20); s1。Value = txt_UserName。Text; s2.Value = txt_UserPwd.Text; //打开连接 con.Open(); //定义SqlDataReader对象 SqlDataReader dr = cmd。ExecuteReader(); //只读的方式从数据源检索数据 if (dr。Read()) { //用户权限登录 Common.User_Flag = dr[”User_Flag"]。ToString(); //显示主窗体 Form_Main frm = new Form_Main(); frm.Show(); } else { MessageBox.Show(”用户名或密码错误!"); } //关闭连接 con.Close(); } 2。主界面(主) 图2 医院住院信息管理系统 在主界面设计,为了将所有界面以整体的方式全部实现出来,即执行一次就能看到全部效果,我在主界面添加了MenuStrip控件并且在MenuStrip控件上添加了MeauItem控件,双击MeauItem控件添加代码实现主/子窗体连接;而且把界面设计的漂亮、规范,我把Form窗体的IsMdiContainer属性设置为True,BackgroundImage属性导入一张图片,加入一个timer控件在statusStrip显示时间;此外涉及到用户权限问题,我在Form_Load事件中添加代码,用户权限不同登录后访问的主界面也不同。核心代码如下: //单击主界面上住院病人药品费用录入时,将显示出住院病人药品费用录入的Form子窗体 private void tsmiMfInput_Click(object sender, EventArgs e) { Form_MedFee frm = new Form_MedFee(); frm。MdiParent = this; frm。Show(); slbl_window。Text = " 当前窗体:" + frm。Text; } //用户权限设置 private void Form_Main_Load(object sender, EventArgs e) { //调用Common类的静态变量User_Flag,当用户权限为0时,系统维护界面失效,但可见 if (Common.User_Flag == ”0”) { //系统维护界面失效 MenuMaintain。Enabled = false; } } //timer控件显示时间 private void timer1_Tick(object sender, EventArgs e) { slbl_time。Text = ”日期:时间:” + Convert.ToString(DateTime。Now); } //单击主界面上住院病人总费用录入时,将显示出住院病人总费用录入的Form子窗体 private void 住院病人总费用统计ToolStripMenuItem_Click(object sender, EventArgs e) { Form_FeeStat frm = new Form_FeeStat(); frm。MdiParent = this; frm。Show(); slbl_window.Text = " 当前窗体:" + frm。Text; } //单击主界面上批量复制时,将显示出批量复制的Form子窗体 private void toolStripButton1_Click(object sender, EventArgs e) { Form_Copy frm = new Form_Copy(); frm.MdiParent = this; frm。Show(); slbl_window.Text = " 当前窗体:” + frm。Text; } //单击主界面上住院病人信息打印时,将显示出住院病人信息打印的Form子窗体 private void tsmiPatPint_Click(object sender, EventArgs e) { Form_PatBb frm = new Form_PatBb(); frm。MdiParent = this; frm。Show(); slbl_window。Text = " 当前窗体:” + frm。Text; } 3.病人信息录入(次) 图3 病人信息录入 病人信息用于对病人信息的录入、查询和显示等操作,并且可以插入病人照片。主要代码如下: while (myReader.Read()) { file = new FileStream(savedImageName, FileMode。OpenOrCreate, FileAccess。Write); bw = new BinaryWriter(file); startIndex = 0;//读取的起点位置 retval = myReader。GetBytes(0, startIndex, outbyte, 0, bufferSize);//返回实际读取的字节数 //当图片大小大于或等于数组大小时,需分块写入到文件中 while (retval == bufferSize) { bw.Write(outbyte); bw。Flush(); startIndex += bufferSize;//重置读取的起点位置 retval = myReader.GetBytes(0, startIndex, outbyte, 0, bufferSize); } bw.Write(outbyte, 0, (int)retval — 1); bw。Flush(); bw.Close(); file.Close(); } 4。住院病人信息查询(次) 图4 住院病人信息查询 从数据库中将病人信息和费用显示到前台,让病人及时了解自己的个人信息。代码: private void cbo_Cate_SelectedIndexChanged(object sender, EventArgs e) { //无连接访问实现专科表和大类科表的绑定 string cmdStr = ”Select * From tblSpec where Spec_Cate=@a”; SqlCommand cmd = new SqlCommand(cmdStr, con); SqlParameter s1; s1 = cmd.Parameters。Add(”@a”, SqlDbType.VarChar, 2); s1。Value = cbo_Cate。SelectedValue。ToString(); SqlDataAdapter dp = new SqlDataAdapter(); dp.SelectCommand = cmd; DataSet ds = new DataSet(); dp。Fill(ds, "Spec”); cbo_Spec.DataSource = ds。Tables["Spec”]; if (ds。Tables["Spec”]。Rows。Count == 0) { cbo_Spec。DisplayMember = "”; cbo_Spec。ValueMember = ”"; } else { cbo_Spec.DisplayMember = "Spec_Name"; cbo_Spec.ValueMember = "Spec_Id”; } } 5.住院病人总费用统计(次) 图5 住院病人总费用统计 住院病人总费用统计时用于统计病人住院治疗等项目的总费用,及其消费药品名称、数量、金额、使用时间等,都会相信的显示出来,一目了然。主要代码如下: while (rd_Cate。Read()) { //定义树结点 TreeNode node_Cate = new TreeNode(rd_Cate.GetValue(0).ToString()); if (rd_Cate.GetValue(1)。ToString() != string.Empty) { string strSpec = ”select Spec_Name,Spec_Id from tblSpec where Spec_Cate='"; strSpec += rd_Cate.GetValue(1).ToString(); strSpec += ”’”; SqlCommand cmd_Spec = new SqlCommand(strSpec, con); SqlDataReader rd_Spec = cmd_Spec.ExecuteReader(); while (rd_Spec.Read()) { TreeNode node_Spec = new TreeNode(rd_Spec.GetValue(0)。ToString()); if (rd_Spec.GetValue(1)。ToString() != string。Empty) { string strWard = ”select Ward_Name,Ward_Id from tblWard whereWard_Spec=’"; strWard += rd_Spec.GetValue(1)。ToString(); strWard += ”’"; SqlCommand cmd_Ward = new SqlCommand(strWard, con); SqlDataReader rd_Ward = cmd_Ward。ExecuteReader(); while (rd_Ward。Read()) { TreeNode node_Ward = new TreeNode(rd_Ward.GetValue(0)。ToString()); if (rd_Ward.GetValue(1).ToString() != string。Empty) { string strPat = ”select Pat_Name from tblPatient where Pat_Ward='”; strPat += rd_Ward.GetValue(1)。ToString(); strPat += ”'"; SqlCommand cmd_Pat = new SqlCommand(strPat, con); SqlDataReader rd_Pat = cmd_Pat。ExecuteReader(); while (rd_Pat.Read()) { TreeNode node_Pat =new TreeNode(rd_Pat。GetValue(0)。ToString()); node_Ward。Nodes。Add(node_Pat); } rd_Pat。Close(); } node_Spec。Nodes。Add(node_Ward); } rd_Ward。Close(); } node_Cate。Nodes.Add(node_Spec); } rd_Spec。Close(); } treeView_Patient.Nodes。Add(node_Cate); } 6。住院病人报表打印(主) 图6 病人信息报表打印 病人信息报表打印是我们组的重头戏,在HISDataSet内存数据集中添加一个内存表,相比其他内存数据表,这个内存数据表不是建立连接从外存数据库中拉入的,而是我用Select语句编写的即Patient;在解决方案资源管理器中新建Crystal报表并且从HISDataSet内存数据集中导入用Patient内存表的数据信息;另外在Form窗体上添加crystalReportViewer窗体,作用是在运行时,使From窗体上查询的信息显示在crystalReportViewer窗体上,形成报表的格式;此外在代码上也有做修改,当具体不知道病人的姓名时可采用模糊查询,当点击显示和预览两个按钮时出现的界面,这些都是通过代码实现的,具体代码如下: //预览按钮 private void tsBtn_Preview_Click(object sender, EventArgs e) { //显示crystalReportViewer crystalReportViewer1.Visible = true; //定义一个CrystalReport_Patient对象cr CrystalReport_Patient cr = new CrystalReport_Patient(); cr。SetDataSource(ds。Tables["Patient”]); crystalReportViewer1.ReportSource = cr; } //显示按钮 private void tsBtn_Display_Click(object sender, EventArgs e) { //不显示crystalReportViewer控件 crystalReportViewer1.Visible = false; } private void Form_PatBb_Load(object sender, EventArgs e) { cmd.CommandType = CommandType。Text; cmd.Connection = con; cmd.CommandTimeout = 15; //不显示crystalReportViewer控件 crystalReportViewer1.Visible = false; } //写一个私有的BindingPatient()方法 private void BindingPatient() { //打开连接 con.Open(); //使用Select语句从内存数据集HISDataSet中的Patient数据表中选择信息 string cmdStr = "Select Pat_Id,Pat_Bed,Pat_BedFee, ”; cmdStr += ” Pat_Name,Pat_Sex,Pat_Birth,Pat_Nation,Pat_NtvPlc,Pat_Sympton "; cmdStr += " from Patient ”; //模糊查询 cmdStr += ” Pat_Name like '" + textBox1。Text + "%'”; cmd。CommandText = cmdStr; da.SelectCommand = cmd; //关闭连接 con.Close(); da.Fill(ds, ”Patient"); //定义一个临时保存数据的网格虚拟表的对象table_Patient DataTable table_Patient = new DataTable(); table_Patient = ds。Tables["Patient"]; dataGridView1.DataSource = ds.Tables[”Patient"]; txt_Id.DataBindings。Clear(); txt_Id。DataBindings.Add("Text", table_Patient, ”Pat_Id"); txt_Bed。DataBindings。Clear(); txt_Bed.DataBindings.Add("Text”, table_Patient, ”Pat_Bed"); txt_BedFee.DataBindings。Clear(); txt_BedFee。DataBindings.Add(”Text”, table_Patient, ”Pat_BedFee"); txt_Name。DataBindings.Clear(); txt_Name。DataBindings。Add(”Text", table_Patient, "Pat_Name"); txt_Sex.DataBindin
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服