linux下处方跟踪系统的开发.docx
《linux下处方跟踪系统的开发.docx》由会员分享,可在线阅读,更多相关《linux下处方跟踪系统的开发.docx(26页珍藏版)》请在冰豆网上搜索。
linux下处方跟踪系统的开发
目录
1引言1
1.1课程设计的意义1
1.2课程设计的目的1
2MySQL的安装和数据库创建……………………………………………………………….2
2.1Linux平台下Mysql的安装2
2.2程序与数据库设计2
3处方跟踪系统的需求分析4
3.1系统的功能与需求分析4
3.2系统的使用者5
4系统功能模块设计6
4.1系统功能规划6
4.2建立系统UML图6
5数据库逻辑结构设计8
5.1数据表的设计8
6数据库访问与操作10
6.1数据库的建立与连接10
6.2创建数据库和数据表10
7程序的运行与测试13
7.1测试系统13
8结束语16
参考文献17
附录A处方跟踪系统的主要源代码18
1引言
1.1课程设计的意义
随着计算机科学的迅速发展,计算机已深入到社会的各个领域,它的应用已不再局限于科学计算,以解决一些数学问题,而且可以解决一些抽象化的具体问题,更多地用于控制,管理及数据处理等非数值计算的处理工作,这便为我们的日常生活提供了很多的方便,譬如说火车售票系统,学生成绩管理,车厢调度等实际问题。
本系统就是针对处方跟踪而设计的。
如果用手工记录,数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
基于这此问题,我认为有必要建立一个处方跟踪系统,使病人处方的信息,系统化,程序化,避免处方存储的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改处方信息。
既提高了工作效率又为客户的人生安全做到最大的提供保障。
1.2课程设计的目的
对于该课程设计,目的有三个:
(1)学习在Linux平台下对Mysql进行安装和配置
(2)熟悉并掌握JDK在Linux下的安装和配置
(3)掌握Eclipse+Java语言+Mysql在Linux环境下的相关开发
2MySQL的安装和数据库创建
2.1Linux平台下Mysql的安装
本课程设计采用的Linux版本是ubuntu版本,Mysql数据库管理系统不需要下载,直接在Linux平台下直接安装就行,由于Mysql已经安装(同时此安装命令也就是更新命令),故显示的是更新信息。
安装命令如图2-1下:
图2-1Mysql的安装
2.2程序与数据库设计
数据库设计应该与应用系统设计相结合。
也就是说,整个设计过程作用要把数据库结构设计和对数据的处理设计密切结合起来。
早期的数据库应用系统开发过程中,常常把数据库设计和应用系统的设计分离开来,如图2-2所示。
由于数据库设计有它专门的技术和理论,但并不等于数据库设计和数据库应用系统开发是相互分离的。
相反,数据库设计和应用程序设计应密切结合,并作为数据库设计的重要特点,下面是关于如何把实际应用转化为数据库设计的逻辑结构的过程步骤。
图2-2结构和行为分离的设计
3处方跟踪系统的需求分析
3.1系统的功能与需求分析
需求分析的任务是通过详细条差现实世界要处理的对象,充分了解原系统工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。
调查的重点是“数据”和“处理”。
经过初步调查,基本确认处方跟随系统(PTS)的需求如下:
✧系统用于跟踪每个用户的以下信息
Ø客户名称
Ø电话号码
Ø出生日期
Ø承保公司
Ø保单号
Ø处方历史记录,详情如下。
✧每个客户的处方历史记录会记录每个处方的以下信息:
Ø药房制订的唯一处方ID号
Ø处方开出的药物
Ø开处方的医生名称和电话
Ø处方日期
Ø处方终止日期
Ø批准的再次给药次数
Ø每次按照药方抓药的“单位”数量,其中“单位”可能是丸、茶匙、毫升等
Ø如果某种药物没有,是否可以用通用替代药物。
✧对药房库存的每种药物,系统需要记录以下信息:
Ø名称
Ø处方中的给药“单位”(丸、茶匙、毫升,等等)
Ø哪些药物可以作为其他药物的替代品。
Ø服用药物的任何副作用。
✧系统需要支持以下查询:
Ø指定用户请求的处方历史记录——也就是说,所有曾经开给指定客户的处方报表。
Ø某种药物的所有副作用的报表,将附在每一个处方上。
Ø特定药物的通用替代药物清单
Ø给定的处方是否可以再次给药,即是否还有再次给药余量,以及处方是否过期。
上述所有功能都可以通过安全的web站点被各个客户以及药房的药剂师访问。
3.2系统的使用者
处方跟踪系统的使用者情况:
Customer(用户):
查询某个用户自己的处方信息,并通过处方到药房(Pharmacy)取药。
Physician(医生):
给Customer开处方,查询自己的开方记录。
4系统功能模块设计
4.1系统功能规划
根据以上对系统的功能需求的分析,了解到本系统的两个基本操作就是录入数据和查询数据,根据使用者的不同需求,可将系统的功能图如下:
录入处方信息
此模块的作用主要是把客户的处方信息记录到计算机中,以方便管理和查询。
依次输入客户的处方相关信息,不能有任何一项为空,否则会弹出消息对话框进行提示。
录入成功,就把相关数据保存到数据表中。
处方信息查询
模块的功能是查询数据库中已录入的处方记录。
本系统中是查询的方式是根据客户的处方编号来查询。
操作者输入要查询的用户处方编号进行查询。
在输入处方编号时前面不能有空格符合否则查询不成功,并提示相关信息。
查询成功则把相应信息在操作界面上显示出来。
药品查询
模块的功能是查询已有的药品信息记录。
对应的是数据库中drugs数据表,本系统中是查询的方式是根据药品名称来查询。
查询成功则把相应信息在界面上显示出来。
查询失败则弹出对话框并提示相关信息。
显示所有处方信息
显示所有数据表中所有数据记录,对应的是数据库中的prescription数据表。
以表格的形式显示同时也方便做打印报表。
退出系统
本模块为退出模块。
当系统管理员操作完成后所操作的功能模块。
4.2建立系统UML图
人对复杂问题的理解能力是有限的,通过建模,缩小说研究问题的范围,一次只着重研究一个方面,这样就通过解决一系列小问题从而解决整体的大问题[3]。
通过对系统需求分析和概述以及功能规划,得到如图4-1所示的UML图,这是制作系统的基础。
图4-1处方管理系统的UML图
5数据库逻辑结构设计
5.1数据表的设计
在确定了数据表及其表头字段后,在此基础上把数据表的基本属性登记成手册,方便以后的修改和并作为实际的创建数据表时的依据。
处方(Prescription):
表5-1Prescription记录表
字段名称
数据类型
长度
是否主键
字段描述
备注说明
clientname
varchar
25
NO
客户姓名
非空
clientele
varchar
25
NO
客户电话
非空
clientbirth
varchar
20
NO
客户出生
非空
insurecmp
varchar
50
NO
投保公司
非空
insurenum
varchar
20
NO
保单号
非空
prescriptionid
varchar
25
YES
处方编号
非空
drugs
varchar
50
NO
药品
非空
doctorname
varchar
50
NO
医生姓名
非空
doctortele
varchar
15
NO
医生电话
非空
begindate
varchar
20
NO
处方日期
非空
enddate
varchar
20
NO
处方结束日期
非空
redrugsnum
int
4
NO
再次给药次数
非空
drugsunit
varchar
10
NO
药品单位
非空
药物(drugs):
表5-2drugs信息表
字段名称
数据类型
长度
是否主键
字段描述
备注说明
drugsname
varchar
50
NO
药物名称
非空
drugsunit
varchar
20
NO
药物单位
非空
tidaidrugs
varchar
50
NO
替代药品
非空
fuzuoyongdrugs
varchar
100
NO
副作用
允许空
6数据库访问与操作
6.1数据库的建立与连接
数据库在物理设备上的存储结构与存储方法称为数据库的物理结构,它依赖于选定的数据库管理系统。
为一个给定的逻辑数据模型选取一个最合适应用要求的物理结构的过程,就是数据库的物理设计。
本系统选择由瑞典MySQLAB公司首先开发,现在为Sun公司运营的MySQL数据库管理系统。
鉴于本系统选择使用JAVA语言进行系统的开发,JAVA应用程序连接DBMS。
JDBC作为一种数据库访问技术,具有简单易用的优点。
考虑到配置和移植的方便性,本系统采用JDBC方式访问数据库。
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("driverload");
Connectionconnection=DriverManager.getConnection("jdbc:
mysql:
//"+"@01946ae88d54409/java","system","system");
System.out.println("Databaseconnected");//用来测试数据库连接是否成功
Statementstmt=connection.createStatement();
stmt.close();//关闭数据库连接
connection.close();//关闭数据库连接
}
catch(Exceptione){
e.printStackTrace();
}
}
6.2创建数据库和数据表
(1)创建数据库java
图6-1Linux下数据库创建代码
(2)创建数据表prescription
图6-2Linux下在Mysql数据库中创建处方表
创建数据表drugs
图6-3Linux下在Mysql数据库中创建药品表
7程序的运行与测试
7.1测试系统
(1)导入数据表后,调用测试系统。
系统启动界面图7-1所示
图7-1处方跟踪系统主界面
(2)选择菜单栏【Insert_prescription】,进行处方录入操作,返回结果如图7-2所示
图7-2录入处方信息界面
(3)选择菜单栏【Search_prescripion】,进行处方查询,返回结果如图7-4所示。
图7-3查询处方成功
(4)选择菜单栏【Search_drugs】,查询药品信息,返回结果如图7-6所示。
图7-4查询的药品信息
(5)选择菜单栏【Show_prescripion】,显示所有处方的信息,返回结果如图7-8所示。
图7-5显示所有处方的药物信息
8结束语
通过网络系统课程设计,使我对Linux操作系统有了一定的了解,同时我也总结出了一些分析问题和解决问题的方法及技巧。
本文探讨的是一个基于Linux下的用JAVA语言+Eclipse+MySQL数据库开发处方跟踪系统。
这也是我第一次在Linux操作系统下进行系统开发,在Linux操作系统下开发系统软件难度比较大。
首先我们要了解Linux的操作命令,它和Windows有着本质上的不同。
其次,在知道并熟悉掌握Linux操作命令之后,还要安装并配置Mysql数据库,并且创建数据库。
同时在完成系统过程中也遇到一些问题,如:
在Linux操作系统下的Eclipse开发环境下编码方式不同,就不能显示中文,必须要改编码方式为:
GBK编码方式。
在这一过程中我翻阅了大量的相关书籍来完成我的课程设计。
本次课程设计是邓江沙老师指导的,首先我的感谢指导老师的严格要求,否则我不会那样的努力去学习相关知识。
其次我要感谢我的同学,在学习和翻阅资料的时候,大家所发表的言论给我很大的启示。
再次,我要感谢我的任课老师,细心的教学,给我很大的鼓励。
在此,我要再次感谢在本次课程设计中帮助过我的同学和老师,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本课程设计的顺利完成。
参考文献
[1]王珊,萨师煊.数据库系统概论[M].北京:
高等教育出版社,2006
[2]张海藩.软件工程导论(第四版)[M].北京:
清华大学出版社,2003
[3]王晓悦著.JavaJDK、数据库系统开发、Web开发[M].北京:
人民邮电出版社,2006
[4]Y.DanielLiang著,万波、郑海红、潘蓉等译.Java语言程序设计进阶篇[M].北京:
机械工业出版社,2007
[5]MySQL_维基百科.维基百科,
http:
//zh.wikipedia.org/w/index.php?
title=MySQL&variant=zh-cn:
2009-01-02
附录A处方跟踪系统的主要源代码
源代码如下:
packageMajorProject;
importjava.sql.*;
importjavax.swing.table.*;
importjava.util.*;
importjavax.swing.*;
importMajorProject.searchmodule;
importMajorProject.Client;
importMajorProject.Prescription;
importMajorProject.Medicine;
importMajorProject.insertmodule;
publicclassdataclass{
privateClientc=newClient();
publicintcolumn;//定义处方记录表中列的个数
publicResultSetrset;//定义ResultSet变量
protectedStringname;//定义客户名字
protectedStringtele;//定义客户电话号码
protectedStringbirth;//定义客户出生日期
protectedStringcmp;//定义客户投保公司
protectedStringsureid;//定义客户保单号
protectedStringid;//定义客户处方编号
protectedStringdrugsname;//定义客户所需药品名称
protectedStringdocname;//定义医生姓名
protectedStringdoctele;//定义医生电话号码
protectedStringbegindate;//定义开处方日期
protectedStringenddate;//定义处方结束日期
protectedintenblenum;//定义再次给药次数
protectedStringunit;//定义药品单位
Vectorrowvectors=newVector();//定义一个Vector数据结构的变量
VectorcolumnHeadervector=newVector();
DefaultTableModeltablemodel=newDefaultTableModel();
privateJTabletable1;
protectedStringsclientname;
protectedStringsclienttele;
protectedStringsclientbirth;
protectedStringscmp;
protectedStringsinsureid;
protectedStringsid;
protectedStringsdrugs;
protectedStringsdocname;
protectedStringsdoctele;
protectedStringsbegindate;
protectedStringsenddate;
protectedintsenblenum;
protectedStringsunit;
protectedStringdrugname;
protectedStringdrugunit;
protectedStringreplacedrugs;
protectedStringsideeffect;
protectedStringdrug_name;
protectedStringdrug_unit;
protectedStringreplace_drugs;
protectedStringside_effect;
/*
*
*//显示所有处方信息的自定义方法函数
*/
publicvoiddataconnection(){
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("driverload");
Connectionconnection=DriverManager.getConnection("jdbc:
mysql:
//"+"@01946ae88d54409/java","system","system");
System.out.println("Databaseconnected");//用来测试数据库连接是否成功
Statementstmt=connection.createStatement();
rowvectors.clear();
columnHeadervector.clear();
Stringquerystring="select*fromprescription";
rset=stmt.executeQuery(querystring);
column=rset.getMetaData().getColumnCount();
while(rset.next()){
Vectorsinglerow=newVector();
for(inti=0;isinglerow.addElement((rset.getObject(i+1)));
}
rowvectors.addElement(singlerow);
}
for(inti=1;i<=column;i++){
columnHeadervector.addElement(rset.getMetaData().getColumnName(i));
}
stmt.close();//关闭数据库连接
connection.close();//关闭数据库连接
}
catch(Exceptione){
e.printStackTrace();
}
}
/*
*
*//根据处方编号来查询处方记录的自定义方法
*/
publicvoidsearch(Stringprescriptionid){
try{
Class.forName("com.mysql.jdbc.Driver");
System.out.println("driverload");
Connectionconnection=DriverManager.getConnection("jdbc:
mysql:
//"+"@01946ae88d54409/java","system","system");
System.out.println("Databaseconnected");//用来测试数据库连接是否成功
Statementstmt=connection.createStatement();
Stringquerystring="select*fromprescriptionwhere处方编号='"+
prescriptionid+"'";
rset=stmt.executeQuery(querystring);
if(rset.next()){
sclientname=rset.getString
(1);//获取数据表信息
sclienttele=rset.getString
(2);
sclientbirth=rset.getString(3);
scmp=rset.getString(4);
sinsureid=rset.getString(5);
sid=rset.getString(6);
sdrugs=rset.getString(7);
sdocname=rset.getString(8);
sdoctele=rset.getString(9);
sbegindate=rset.getString(10);
senddate=rset.getString(11);
senblenum=rset.getInt(12);
sunit=rset.getString(13);
Clientc=newClient(sclientname,sclienttele,sclientbirth,scmp,sinsureid);
name=c.getclientname();
tele=c.getclienttele();
birth=c.getclientbirth();
cmp=c.getinsurecmp();
sureid=c.getinsurenum();
Prescriptionp=newPrescription(sid,sdrugs,sdocname,sdoctele,sbegindate,
senddate,senblenum);
id=p.getid();
drugsname=p.getdrugsname();
docname=p.getdoctorname();
doctele=p.getdoctortele();
begi