基于MYSQL的医院综合信息管理系统设计报告.docx
- 文档编号:11849618
- 上传时间:2023-04-06
- 格式:DOCX
- 页数:87
- 大小:677.99KB
基于MYSQL的医院综合信息管理系统设计报告.docx
《基于MYSQL的医院综合信息管理系统设计报告.docx》由会员分享,可在线阅读,更多相关《基于MYSQL的医院综合信息管理系统设计报告.docx(87页珍藏版)》请在冰豆网上搜索。
基于MYSQL的医院综合信息管理系统设计报告
数据库实验报告
医院综合信息管理系统
专业
班级
组长
组员
指导教师
内容提要:
本系统是一个基于MYSQL而建立的医院综合信息管理系统。
用MicrosoftVisualStudio2010结合MYSQL开发了3个模块。
包括有人员信息管理,门诊信息管理,收费信息管理。
其中人员信息管理其中有医生信息管理,病人信息管理和药品信息管理。
门诊信息管理其中则含有就诊信息管理,病人处方管理。
这3模块基本实现了医院综合信息管理系统的需求。
【关键词】:
MicrosoftVisualStudio2010,MYSQL,人员信息管理,门诊信息管理,收费信息管理
一、需求分析:
整个医院综合信息管理系统可分为三个子系统:
人员信息管理系统,门诊信息管理系统,收费信息管理系统。
1.1人员信息管理系统
人员信息管理即对于人和物品的管理,人则包含医生及医护人员,就诊病人,还有药品等。
我们需要对他们的基本信息进行记录,并且还要具有增加,删除,修改,查询等基本功能,所以我建立了一个基本信息管理模块来专门处理。
我也在数据库中对应了三张表:
doctor,patient,durg以便对人员信息管理信息进行存储。
1.2门诊信息管理系统
对于就诊信息的管理,病人看病后会产生新的数据,例如医生对病人的诊断信息,以及药品处方信息。
而与其对应的则是我做的门诊信息管理,其中我做了两个窗口,一个是诊断信息窗口,主要实现对诊断信息的储存;另一个是处方信息窗口,有增加、删除、修改药品等功能。
然后我另做了一个查询的窗口,以便病人查询自己的处方记录。
对应数据库,我做了两张表:
diagnosis,prescription。
1.3收费信息管理系统
对于收费信息管理,病人拿到处方后,就会取药,付款。
则我需要对其总价进行计算,再者就是对于药品库存进行修改。
于是对应要求我做了一个收费前台。
虽然在数据库中没有对应相应的表。
可是它的操作主要是对prescription的读取,以及对durg库存的修改。
二、系统分析:
整个医院综合信息管理系统可分为三个子系统:
人员信息管理系统,门诊信息管理系统,收费信息管理系统。
2.1系统功能介绍
2.1.1人员信息管理系统的功能
对医生、病人、药品的基本信息进行增加,删除,修改,查询等的基本功能
2.1.2门诊信息管理系统的功能
对就诊信息的存储功能和对处方信息进行增加、删除、修改药品等的基本功能
3.2.3收费信息管理系统
对医疗费用进行总和计算的功能和对药品库存进行修改的功能
2.2功能模块
系统主要功能模块图如下:
三、数据库设计:
3.1E-R图:
3.1.1医生信息doctorE-R图
3.1.2病人信息patientE-R图
3.1.3药品信息drugE-R图
3.1.4诊断信息diagnosisE-R图
3.1.5处方信息prescriptionE-R图
3.1.6实体间主要关系E-R图
3.2数据字典:
表1:
doctor:
表2:
patient
表3:
durg
表4:
diagnosis
表5:
prescription
四、前台设计:
4.1.医生信息管理:
4.2.病人信息管理:
4.3.药品信息管理:
4.4.诊断界面:
4.5.处方界面:
4.6.病人处方查询:
4.7.收费信息管理:
五、程序调试结果:
1.主界面:
2.添加功能:
实现代码:
voidCEmployeeDlg:
:
OnBnClickedOk()
{
//TODO:
在此添加控件通知处理程序代码
//CDialogEx:
:
OnOK();
UpdateData(true);
if(m_number.IsEmpty())
{
MessageBox(CString("编号不能为空”));
return;
}
if(m_name.IsEmpty())
{
MessageBox(CString("名称不能为空!
"));
return;
}
if(m_idcard.IsEmpty())
{
MessageBox(CString("省份证号码不能为空!
"));
return;
}
CADOConnm_AdoConn;
m_AdoConn.OnInitADOConn();
_bstr_tsql;
sql="select*fromdoctor";
_RecordsetPtrm_pRecordset;
m_pRecordset=m_AdoConn.GetRecordSet(sql);
try
{
m_pRecordset->AddNew();//添加新行
m_pRecordset->PutCollect("employeeno",(_bstr_t)m_number);
m_pRecordset->PutCollect("name",(_bstr_t)m_name);
m_pRecordset->PutCollect("sex",(_bstr_t)m_sex);
m_pRecordset->PutCollect("age",(_bstr_t)m_age);
m_pRecordset->PutCollect("native",(_bstr_t)m_native);
m_pRecordset->PutCollect("nation",(_bstr_t)m_nation);
m_pRecordset->PutCollect("office",(_bstr_t)m_office);
m_pRecordset->PutCollect("position",(_bstr_t)m_position);
m_pRecordset->PutCollect("idcard",(_bstr_t)m_idcard);
m_pRecordset->PutCollect("phone",(_bstr_t)m_phone);
m_pRecordset->Update();//更新数据库
m_AdoConn.ExitConnect();//断开数据库连接
}
catch(...)
{
MessageBox(CString("操作失败"));
return;
}
MessageBox(CString("保存成功"));
m_grid.DeleteAllItems();//删¦除grid中原来的数据
CStringstr;
str="select*fromdoctor";
AddToGrid(str);//重新遍历
}
2.修改功能:
实现代码:
voidCEmployeeDlg:
:
OnBnClickedChange()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(true);
CADOConnm_AdoConn;
m_AdoConn.OnInitADOConn();
CStringtempSql;
tempSql.Format(CString("UPDATE`mydb`.`doctor`SET`name`='%s',`sex`='%s',`age`='%s',`native`='%s',`nation`='%s',`office`='%s',`position`='%s',`idcard`='%s',`phone`='%s'WHERE`employeeno`='%s'"),m_name,m_sex,m_age,m_native,m_nation,m_office,m_position,m_idcard,m_phone,m_number);
m_AdoConn.ExecuteSQL((_bstr_t)tempSql);
m_AdoConn.ExitConnect();
MessageBox(CString("修改成功."));
m_grid.DeleteAllItems();//删除grid中原来的数据
CStringstr;
str="select*fromdoctor";
AddToGrid(str);//重新遍历
}
3.删除功能:
代码实现:
voidCEmployeeDlg:
:
OnBnClickedDelete()
{
//TODO:
在此添加控件通知处理程序代码
UpdateData(true);
CADOConnm_AdoConn;
m_AdoConn.OnInitADOConn();
CStringtempSql;
tempSql.Format(CString("deletefromdoctorwhereemployeeno='%s'"),m_number);
CStringtenpstr;
tenpstr.Format(CString("是否要删除%s的记录"),m_name);
if(MessageBox(tenpstr,CString("提示"),MB_OKCANCEL)==IDOK)
{
m_AdoConn.ExecuteSQL((_bstr_t)tempSql);
m_AdoConn.ExitConnect();
MessageBox(CString("删除成功."));
m_grid.DeleteAllItems();//删除grid中原来的数据
CStringstr;
str="select*fromdoctor";
AddToGrid(str);//重新遍历
}
}
4.查询功能:
实现代码:
voidCEmployeeDlg:
:
OnBnClickedSelect()
{
//TODO:
在此添加控件通知处理程序代码
m_grid.DeleteAllItems();
UpdateData(true);
CStringstr1,str2;
intnum1,num2;
num1=m_combo.GetCurSel();
if(0==num1)
{
GetDlgItem(IDC_EDIT_CONTENT)->GetWindowText(str1);
str2=CString("select*fromdoctorwhereemployeenolike")+CString("'")+str1+CString("'");
AddToGrid(str2);//遍历功能信息记录
}
if(1==num1)
{
GetDlgItem(IDC_EDIT_CONTENT)->GetWindowText(str1);
str2=CString("select*fromdoctorwherenamelike")+CString("'")+str1+CString("'");
AddToGrid(str2);//遍历功能信息记录
}
if(2==num1)
{
GetDlgItem(IDC_EDIT_CONTENT)->GetWindowText(str1);
str2=CString("select*fromdoctorwhereofficelike")+CString("'")+str1+CString("'");
AddToGrid(str2);//遍历功能信息记录
}
if(3==num1)
{
GetDlgItem(IDC_EDIT_CONTENT)->GetWindowText(str1);
str2=CString("select*fromdoctorwherepositionlike")+CString("'")+str1+CString("'");
AddToGrid(str2);//遍历功能信息记录
}
if(4==num1)
{
GetDlgItem(IDC_EDIT_CONTENT)->GetWindowText(str1);
str2=CString("select*fromdoctorwhereidcardlike")+CString("'")+str1+CString("'");
AddToGrid(str2);//遍历功能信息记录
}
if(5==num1)
{
GetDlgItem(IDC_EDIT_CONTENT)->GetWindowText(str1);
str2="select*fromdoctororderbyemployeenoDESC";
AddToGrid(str2);//遍历功能信息记录
}
}
5.诊断界面:
6.处方界面:
7.处方查询:
8.付款界面:
9.修改库存:
对比图:
付款前:
付款后:
六、总结:
通过这次数据库大作业,我们熟悉了vs2010的数据库ADO编程。
对于它的添加,修改,删除步骤都有了较大的理解。
在此次作业当中遇到两大问题。
一是:
数据库连接问题,本来开始准备用access做后台,可是不知道为什么我的电脑一直连接不上,于是改用了MYAQL连接。
二是:
在是使用记录集指针的问题_RecordsetPtrm_pRecordset,在实现添加,删除,修改,查询等操作时,只能执行一次就出现指针无效的结果。
最后发现是在连接数据库时没有初始化COM,所以导致有指针无效的结果。
然后,最让我开心的是,是实现总价的计算。
我是用两个数组,amount[20],和price[20]记住数量和单价,利用for循环计算总价的。
然后,就是在vs2010中字符之间的转换也是我们应该注意的问题。
总之,这次实验,让我们学到了许多课本上学不到的知识,也锻炼了我们的思考问题,解决问题的能力。
附录:
医院综合信息管理系统源代码
//ADOConn.cpp:
实现文件
//
#include"stdafx.h"
#include"hospital.h"
#include"ADOConn.h"
//CADOConn
CADOConn:
:
CADOConn()
{
}
CADOConn:
:
~CADOConn()
{
}
//CADOConn成员函数
boolCADOConn:
:
OnInitADOConn(void)
{
HRESULThr;
:
:
CoInitialize(NULL);
try
{
hr=m_pDBConnection.CreateInstance("ADODB.Connection");
if(SUCCEEDED(hr))
{
m_pDBConnection->ConnectionTimeout=3;
//设置连接字符串
_bstr_tstrConnection="Driver={MySQLODBC5.2UnicodeDriver};SERVER=127.0.0.1;DATABASE=mydb;UID=root;PASSWORD=123456;PORT=3306";
hr=m_pDBConnection->Open(strConnection,"","",adModeUnknown);
}
}
catch(_com_errore)//捕捉异常
{
CStringtemp;
temp.Format(CString("连接数据库错误信息:
%s"),e.ErrorMessage());
:
:
MessageBox(NULL,temp,CString("提示信息"),NULL);
returnfalse;
}
returnfalse;
}
//断开数据库连接
voidCADOConn:
:
ExitConnect(void)
{
if(m_pRecordset!
=NULL)
m_pRecordset->Close();
m_pDBConnection->Close();
//释放环境
:
:
CoUninitialize();
}
//获取记录集
_RecordsetPtr&CADOConn:
:
GetRecordSet(_bstr_tbstrSQL)
{
try
{
if(m_pDBConnection==NULL)
OnInitADOConn();
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pRecordset->Open(bstrSQL,m_pDBConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);
}
catch(_com_errore)
{
CStringtemp;
temp.Format(CString("读取数据库错误信息:
%s"),e.ErrorMessage());
:
:
MessageBox(NULL,temp,CString("提示信息"),NULL);
}
returnm_pRecordset;
}
//执行SQL语句
boolCADOConn:
:
ExecuteSQL(_bstr_tbstrSQL)
{
_variant_tRecordsAffected;
try
{
if(m_pDBConnection==NULL)
OnInitADOConn();
m_pDBConnection->Execute(bstrSQL,NULL,adCmdText);
returntrue;
}
catch(_com_errore)
{
CStringtemp;
temp.Format(CString("执行SQL语句错误信息:
%s"),e.Description());
:
:
MessageBox(NULL,temp,CString("提示信息"),NULL);
returnfalse;
}
}
//返回记录集对象指针的SQL执行函数
_RecordsetPtrCADOConn:
:
ExcuteSQLObj(_bstr_tbstrSQL)
{
try
{
if(m_pDBConnection==NULL)
OnInitADOConn();
m_pRecordset=m_pDBConnection->Execute(bstrSQL,NULL,adCmdText);
}
catch(_com_errore)
{
CStringtemp;
m_pRecordset=NULL;
temp.Format(CString("执行SQL语句错误信息:
%s"),e.ErrorMessage());
:
:
MessageBox(NULL,temp,CString("提示信息"),NULL);
}
returnm_pRecordset;
}
//PrescriptionDlg.cpp:
实现文件
//处方:
万淑妍
#include"stdafx.h"
#include"hospital.h"
#include"PrescriptionDlg.h"
#include"afxdialogex.h"
#include"ADOConn.h"
//CPrescriptionDlg对话框
IMPLEMENT_DYNAMIC(CPrescriptionDlg,CDialogEx)
CPrescriptionDlg:
:
CPrescriptionDlg(CWnd*pParent/*=NULL*/)
:
CDialogEx(CPrescriptionDlg:
:
IDD,pParent)
{
m_patientno=_T("");
m_amount=_T("");
m_name=_T("");
m_no=0;
}
CPrescriptionDlg:
:
~CPrescriptionDlg()
{
}
voidCPrescriptionDlg:
:
DoDataExchange(CDataExchange*pDX)
{
CDialogEx:
:
DoDataExchange(pDX);
DDX_Control(pDX,IDC_LIST1,m_grid);
DDX_Text(pDX,IDC_PATIENTNO,m_patientno);
DDX_Text(pDX,IDC_AMOUNT,m_amount);
DDX_Text(pDX,IDC_DURGNAME,m_name);
DDX_Control(pDX,IDC_DATETIMEPICKER1,m_time);
}
BEGIN_MESSAGE_MAP(CPrescriptionDlg,CDialogEx)
ON_BN_CLICKED(IDOK,&CPrescriptionDlg:
:
OnBnClickedOk)
ON_BN_CLICKED(IDC_CHANGE,&CPrescriptionDlg:
:
OnBnClickedChange)
ON_NOTIFY(NM_CLICK,IDC_LIST1,&CPrescriptionDlg:
:
OnNMClickList1)
ON_BN_CLICKED(IDC_DELETE,&CPrescriptionDlg:
:
OnBnClickedDelete)
ON_BN_CLICKED(IDC_CLEAR,&CPrescriptionDlg:
:
OnBnClickedClear)
END_MESSAGE_MAP()
//CPrescriptionDlg消息处理程序
BOOLCPrescriptionDlg:
:
OnInitDialog()
{
CDialogEx:
:
OnInitDialog();
//TODO:
在此添加额外的初始化
flag=0;
returnTRUE;//returnTRUEunlessyousetthefocustoacontrol
//异常:
OCX属性页应返回FALSE
}
voidCPrescriptionDlg:
:
AddToGrid(CStringstr)
{
CADOConnm_AdoConn;
m_AdoConn.OnInitADOConn();
CStringsql;
sql.Format(str);
_RecordsetPtrm_pRecordset;
m_pRecords
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 MYSQL 医院 综合信息 管理 系统 设计 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)