南邮住院课程设计报告.docx
《南邮住院课程设计报告.docx》由会员分享,可在线阅读,更多相关《南邮住院课程设计报告.docx(25页珍藏版)》请在冰豆网上搜索。
南邮住院课程设计报告
通达学院
专业课程设计报告
题目:
医院住院部信息管理系统
专业
软件工程
学生姓名
班级学号
指导教师
张少娴
指导单位
南京邮电大学计算机学院
日期
2014-6-9至2014-6-20
评分细则
评分项
优秀
良好
中等
差
遵守机房规章制度
上机时的表现
学习态度
程序准备情况
程序设计能力
团队合作精神
课题功能实现情况
算法设计合理性
用户界面设计
报告书写认真程度
内容详实程度
文字表达熟练程度
回答问题准确度
简短评语
教师签名:
年月日
评分等级
备注
评分等级有五种:
优秀、良好、中等、及格、不及格
一.课题名称:
医院住院部信息管理系统
二.设计目标:
按照软件工程的规范,以SQLServer2000为后台数据库,建议以delphi为前端开发工具,设计并实现一个医院住院部信息管理系统。
三.需求描述:
医院的住院部管理非常复杂,它涉及众多诸如病人的信息、每天的具体费用、住院期间的总费用等问题,因此,设计本系统,完成病人住院登记、每天费用录入、费用查询、总费用统计等功能,具体需求如下:
1.住院登记,用于录入住院病人的信息,包括编号、姓名、性别、年龄、病房号、床号、住院日期、工作单位、病因、预交押金等信息,同时可浏览、添加、删除、编辑记录。
2.费用录入,用于录入病人每天费用清单,包括编号、姓名、护理等级、结算日期、护理费、床位费、注射费、药费、治疗费、手术费等,同时可浏览、添加、删除、编辑记录。
3.费用查询,提供主从界面,当在主表中浏览病人信息时,从表中将显示当前对应记录病人的所有费用记录。
4.总费用统计,在此页面中单击“开始统计”按钮,表格中将依次显示各病人的预交押金、总费用以及剩余或赊欠的费用,同时,文本框将显示催款名单,若无人欠款,将显示“没有任何病人赊欠费用”。
四.具体设计
本次实验以SQLServer2000为后台数据库,以delphi7.0为前端开发工具,OS为WinXPsp1系统。
住院部信息管理系统用一个数据库和两张表进行存储
两张表的内容如下:
数据库:
医院住院管理
表:
1、基本信息表
基本信息用于录入存储住院病人的信息,包括编号、姓名、性别、年龄、病房号、床号、住院日期、工作单位、病因等信息
具体设置如下
2.医院信息表
医院信息用于录入病人每天费用清单,包括编号、姓名、护理等级、预交押金,结算日期、护理费、床位费、注射费、药费、治疗费、手术费等
具体设置如下
其中,总费用=([手术费]+[治疗费]+[护理费]+[床位费]+[注射费]+[药费])
剩余费用=([预约金]-[总费用])(当为-的时候为赊欠)
在前端Delphi开发中最终用到了5个form。
分别为登录,导航,住院登记,费用录入,信息查询和总揽统计。
五.详细设计
系统自动生成的:
1.programProject1;
uses
Forms,
Unit1in'Unit1.pas'{Form1},
Unit3in'Unit3.pas'{Form3},
Unit4in'Unit4.pas'{Form4},
Unit5in'Unit5.pas'{Form5},
Unit7in'Unit7.pas'{Form7},
Unit2in'Unit2.pas'{Form2};
{$R*.res}
begin
Application.Initialize;
Application.CreateForm(TForm1,Form1);
Application.CreateForm(TForm3,Form3);
Application.CreateForm(TForm4,Form4);
Application.CreateForm(TForm5,Form5);
Application.CreateForm(TForm7,Form7);
Application.CreateForm(TForm2,Form2);
Application.Run;
end.
2.Form1登陆界面
确认按钮被单击
判断edit1和edit2的数据,当为admin密码为admin进入导航(管理员权限)
为123密码为123,进入普通用户界面仅支持查询
procedureTForm1.Button1Click(Sender:
TObject);
begin
ifedit1.Text=''then
begin
showmessage('账号不能为空');
exit;
end;
ifedit2.Text=''then
begin
showmessage('密码不能为空');
exit;
end;
if(Edit1.Text='admin')and(Edit2.Text='admin')then
begin
Form4.Button1.Enabled:
=True;//from4下的空间Button1属性Enabled为true,admin可调用。
若为false则没有权限,下同。
Form4.Button2.Enabled:
=True;
Form4.Button3.Enabled:
=True;
Form4.Button4.Enabled:
=True;
Form7.Button2.Enabled:
=True;
Form4.Show;
end
else
//对于普通用户"123"而言只有查询的权限
if(Edit1.Text='123')and(Edit2.Text='123')then
begin
Form4.Button1.Enabled:
=False;
Form4.Button2.Enabled:
=False;
Form7.Button2.Enabled:
=false;
Form4.Show;
exit;
End
//判断帐号密码是否正确
else
begin
showmessage('账号密码不正确');
end
end;
3.导航界面ForM4
procedureTForm4.Button1Click(Sender:
TObject);
begin
Form5.show;
end;
procedureTForm4.Button2Click(Sender:
TObject);
begin
Form7.show;
end;
procedureTForm4.Button3Click(Sender:
TObject);
begin
Form2.show;
end;
procedureTForm4.Button4Click(Sender:
TObject);
begin
Form3.Show;
end;
单击不同按钮则进入不同的界面进行操作(普通用户按钮124不可用)
4.Form5住院登记
文本框输入相符内容,点登记则完成登记
登记按钮代码如下
procedureTForm5.Button2Click(Sender:
TObject);
begin
//先做好保护工作
ifedit1.Text=''then
begin
showmessage('编号不能为空!
');
exit;
end;
//先查看是否已经有病人信息
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*');
ADOQuery1.SQL.Add('from医院信息');
ADOQuery1.SQL.Add('where编号='''+Edit1.Text+
'''');
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery1.Active:
=true;
ifADOQuery1.RecordCount>0then
begin
//有该信息就弹出一个提示框,然后推出该函数的执行
messageBox(0,'已有该病人的信息','Error!
',mb_OK);
exit;
end;
//当不存在该病人信息时
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insertinto基本信息values(');
ADOQuery1.SQL.Add(''''+Edit1.Text+''''+',');//编号
ADOQuery1.SQL.Add(''''+Edit2.Text+''''+',');//姓名
ADOQuery1.SQL.Add(''''+Edit3.Text+''''+',');//性别
ADOQuery1.SQL.Add(''''+Edit4.Text+''''+',');//年龄
ADOQuery1.SQL.Add(''''+Edit5.Text+''''+',');//工作单位
ADOQuery1.SQL.Add(''''+Edit7.Text+''''+',');//病房号
ADOQuery1.SQL.Add(''''+Edit8.Text+''''+',');//床号
ADOQuery1.SQL.Add(''''+edit10.text+''''+',');//住院日期
ADOQuery1.SQL.Add(''''+Edit9.Text+''''+')');//病因
ADOQuery1.ExecSQL;
//把DBGrid框的内容进行更新
ADOQuery2.Close;
ADOQuery2.Open;
ADOQuery2.Active:
=true;
end;
查询功能:
输入对应编号,在文本框中显示相应信息;
procedureTForm5.Button6Click(Sender:
TObject);
begin
ifedit1.Text=''then
begin
showmessage('编号不能为空!
');
exit;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*');
ADOQuery1.SQL.Add('from基本信息');
ADOQuery1.SQL.Add('where编号='''+Edit1.Text+
'''');
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery1.Active:
=true;
ifADOQuery1.RecordCount=0then
begin
//有该信息就弹出一个提示框,然后推出该函数的执行
messageBox(0,'没有该病人的信息','Error!
',mb_OK);
exit;
end;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select编号from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit1.text:
=adoquery1.fieldbyname('编号').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select姓名from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
edit2.text:
=adoquery1.fieldbyname('姓名').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select性别from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit3.text:
=adoquery1.fieldbyname('性别').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select年龄from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit4.text:
=adoquery1.fieldbyname('年龄').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select工作单位from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit5.text:
=adoquery1.fieldbyname('工作单位').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select住院日期from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
edit10.text:
=adoquery1.fieldbyname('住院日期').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select病房号from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit7.text:
=adoquery1.fieldbyname('病房号').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select床号from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit8.text:
=adoquery1.fieldbyname('床号').AsString;
ADOQuery1.Close;
Adoquery1.sql.clear;
Adoquery1.sql.add('select病因from基本信息where编号='''+Edit1.Text+'''');
Adoquery1.Open;
Edit9.text:
=adoquery1.fieldbyname('病因').AsString;
end;
(同样能将信息输出到右边的DBGrid1里)
修改按钮:
功能:
先查询,将要修改的数据填写到对面文本框,点修改即可,对应DBGRID也会修改并显示修改后的内容。
代码实现如下:
procedureTForm5.Button4Click(Sender:
TObject);
begin
ifapplication.MessageBox('您确定要修改数据嘛?
','危险',MB_OKCANCEL)=IDCANCELthen
exit;
//先查看是否已经有改信息
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*');
ADOQuery1.SQL.Add('from基本信息');
ADOQuery1.SQL.Add('where编号='''+Edit1.Text+'''');
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery1.Active:
=true;
ifADOQuery1.RecordCount=0then
begin
//没有该航班信息就弹出一个提示框,然后推出该函数的执行
messageBox(0,'无该病人的信息','Error!
',mb_OK);
exit;
end;
//当该信息存在时则可以将其信息更新到表中
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('update基本信息set');
ADOQuery1.SQL.Add('编号='+''''+Edit1.Text+''''+',');
ADOQuery1.SQL.Add('姓名='+''''+Edit2.Text+''''+',');
ADOQuery1.SQL.Add('性别='+''''+Edit3.Text+''''+',');
ADOQuery1.SQL.Add('年龄='+''''+Edit4.Text+''''+',');
ADOQuery1.SQL.Add('工作单位='+''''+Edit5.Text+''''+',');
ADOQuery1.SQL.Add('住院日期='+''''+edit10.text+''''+',');
ADOQuery1.SQL.Add('病房号='+''''+Edit7.Text+''''+',');
ADOQuery1.SQL.Add('床号='+''''+Edit8.Text+''''+',');
ADOQuery1.SQL.Add('病因='+''''+Edit9.Text+'''');
ADOQuery1.SQL.Add('where');
ADOQuery1.SQL.Add('编号='+''''+Edit1.Text+'''');
ADOQuery1.ExecSQL;
ADOQuery2.Close;
ADOQuery2.Open;
ADOQuery2.Active:
=true;
删除按钮:
功能,输入对应编号删除代码如下
procedureTForm5.Button3Click(Sender:
TObject);
begin
ifapplication.MessageBox('您确定要修改数据嘛?
','危险',MB_OKCANCEL)=IDCANCELthen
exit;
//先做好保护工作
ifedit6.Text=''then
begin
showmessage('编号不能为空!
');
exit;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*');
ADOQuery1.SQL.Add('from基本信息');
ADOQuery1.SQL.Add('where编号='''+Edit6.Text+'''');
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery1.Active:
=true;
ifADOQuery1.RecordCount=0then
begin
//有该信息就弹出一个提示框,然后推出该函数的执行
messageBox(0,'没有该病人的信息','Error!
',mb_OK);
exit;
end;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('deletefrom基本信息');
ADOQuery1.SQL.Add('where编号='''+Edit6.Text+'''');//编号
ADOQuery1.ExecSQL;
//把DBGrid框的内容进行更新
ADOQuery2.Close;
ADOQuery2.Open;
ADOQuery2.Active:
=true;
end;
刷新按钮只是重置下表格内容,代码省略
5.费用录入FORM7
和住院登记一样,插入文本框的数据,通过费用录入可以将对应数据插入数据库中
费用录入代码如下:
procedureTForm7.Button4Click(Sender:
TObject);
begin
ifedit3.Text=''then
begin
showmessage('编号不能为空!
');
exit;
end;
//先查看是否已经有病人信息
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('select*');
ADOQuery1.SQL.Add('from医院信息');
ADOQuery1.SQL.Add('where编号='''+Edit3.Text+
'''');
ADOQuery1.Prepared;
ADOQuery1.Open;
ADOQuery1.Active:
=true;
ifADOQuery1.RecordCount>0then
begin
//有该信息就弹出一个提示框,然后推出该函数的执行
messageBox(0,'已有该病人的信息','Error!
',mb_OK);
exit;
end;
//当该航班信息不存在时则可以将其信息插入flight表中
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insertinto医院信息values(');
ADOQuery1.SQL.Add(''''+Edit3.text+''''+',');//编号
ADOQuery1.SQL.Add(''''+Edit4.Text+''''+',');//护理等级
ADOQuery1.SQL.Add(Edit12.Text+',');//预约金
ADOQuery1.SQL.Add(''''+Edit2.Text+''''+',');//结算日期
ADOQuery1.SQL.Add(Edit5.Text+',');//护理费
ADOQuery1.SQL.Add(Edit7.Text+',');//床位费
ADOQuery1.SQL.Add(Edit8.Text+',');//注射费
ADOQuery1.SQL.Add