医院病人信息管理软件 1.设计目的 在当今时代,人们越来越多依靠计算机来解决各种各样的难题。计算机已成为人们生活工作中必不可少的元素。同时,计算机技术处于高速发展的阶段,各类新式的计算机技术层出不穷,不断面世。因此在当今,学习好计算机信息技术已是我们学习中的重中之重。 运用计算机技术进行信息管理和控制,可以大大提高工作的效率及安全指标。计算机高效的控制管理优越性在复杂的管理控制软件中得到充分的体现。 在日常生活中疾病给我们带来了诸多不便,医院作为接待和医治病人的地方,就要做到更好,更有序的管理,医院接收庞大的病人,为了更好的,更快的查询病人的病例,等病人的信息。因此,编写好一个比较优秀的简单的病人信息管理程序对于一个新手阶段的编程者来说是一个很好的挑战。 本次课程设计采用“Java”编写,结合数据库的知识,编写一个简单的采用数据库存储的“医院病人信息管理软件”。 2.设计方案论证 2.1系统总体设计: 软件配置:JAVA JDK等编译软件 数据库:SQLServer, 操作系统:WINDOWS XP 服务器:小型计算机 2.2需求分析: 2.2.1功能要求 (1)能够实现主界面,录入,查询,删除等界面。 (2)能够实现对病人信息的查询,录入,删除等功能(包括数据库的连接)。 2.2.2操作要求 (1)懂得对计算机的基本操作。 (2)懂得医院的管理模式。 (3)能正确的对系统进行录入删除等功能 3.总体设计 3.1本软件的主要功能 (1) 录入病人基本信息界面。 (2) 修改病人基本信息。 (3) 查询病人基本信息。 (4) 删除病人基本信息。 (5) 数据库连接 。 3.2软件包含的类及类之间的关系 本软件共包括7个java源文件:ManagerWindow.java ModifySituaio.java Inquest.java HashMa.java PadifySituatio.java PatientPicture.java 数据库。 其中 ManagerWindow.java为主界面的登陆文件、其他的文件分别是需要ManagerWindow.java文件的调用,通过主界面中的单击操作使之互相连接起来。 各个文件的程序流程图如下所示: 图1 类之间的关系 3.3 java源文件及其功能 (1)PatientPicture.java PatientPicture类所创建的对象是 InputPatient,Inquest和ModifySituation类的成员之一,负责显示病人的照片。 (2)Inquest.java Inquest类创建的对象是ModifySituation类的重要成员之一,负责提供查询病人基本信息及打印基本信息的界面。× (3)ModifySituation.java ModifySituation类创建的对象是ManagerWindow类的重要成员之一,负责提供修改病人基本信息的界面。 (4)数据库创建功能,使得所有病人信息存储到计算机数据库中。 4.详细设计 4.1主类ManagerWindow (1)方法见表1
(2)方法见表2
(3)源代码见文件ManagerWindow.java 4.2 Inquest类 (1)成员变量见表3
(2)方法见表4
4.3 PatientPicture类 1)成员变量见表5
(2)方法见表6
4.4 ModifySituation类 1)成员变量见表7
(2)方法见表8
5.设计结果与分析 在JAVA环境中运行带有MAIN方法的主程序得到医院病人信息管理系统的主界面,该主界面可以进行对病人信息管理系统的每个功能的选择,其中可以选择进行录入、修改、查询病人信息以及打印等操作。 5.1 软件主界面 图2 软件主窗口 5.2 病人信息管理软件录入界面 在主界面中选择“录入病人基本信息”可以通过JAVA中子类的调用ModifySituation登陆到病人基本信息界面 图3病人信息管理录入界面 5.3 病人信息管理软件查询界面 在录入信息之后,可以进行对病人信息的查询操作该操作也是通过字类的调用将数据库中的信息显示到JAVA设计的界面中。具体界面如下: 图4病人信息查询界面 6设计心得 经过这段时间的学习我收获不小,总结起来有如下几点: (1)更进一步理解了JAVA编程的思想,体会到JAVA与其他编程语言的不同。对于这种面向对象的编程思想,使刚入门的人很快就能写出自己的程序。 (2)锻炼了自己的动手和自学能力,在编程中有许多类和方法在课本中没有学到和提及到。都是通过自己查帮助文档,或通过网络进行学习和了解到的。和别人在一起交流是一件很快了的事。 (3)体会到写程序最重要的是程序思想,而不是单纯的写代码。如何解决类之间的关联和继承关系,如何组织类是很关键的。此外对于接口和变量的私有还是公有,以及参数传递等方面也收获不小。 (4)本设计还有几点不足够;例如对数据的总体构架不了解很难用JAVA与数据库相连接,希望在以后的学习过程中能多对JAVA和数据库的连接多做了解并且能够熟练运用。 7.参考文献 [1] 耿祥义,张跃平.Java 2实用教程(第三版)[M].北京:清华大学出版社,2006.8 [2] 耿祥义,张跃平.Java 2课程设计(第三版)[M].北京:清华大学出版社,2006.8 [3] 郑莉. Java语言程序设计[M]. 北京:清华大学出版社:2007.01:67-75 [4]侯捷.Thinking in Java 2e中文版 .北京:清华大学出版社,2003 8.附录 ManagerWindow import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.HashMap; public class ManagerWindow extends JFrame implements ActionListener{ InputPatient 基本信息录入; ModifySituation 基本信息修改; Inquest 基本信息查询与打印; Delete 基本信息删除; JMenuBar bar; JMenu fileMenu; JMenuItem 录入,修改,查询与打印,删除,欢迎界面; HashMap<String,Patient> 基本信息=null; File file=null; CardLayout card=null; JLabel label=null; JPanel pCenter; public ManagerWindow(){ 录入=new JMenuItem("录入病人基本信息"); 修改=new JMenuItem("修改病人基本信息"); 查询与打印=new JMenuItem("查询与打印病人基本信息"); 删除=new JMenuItem("删除病人基本信息"); 欢迎界面=new JMenuItem("欢迎界面"); bar=new JMenuBar(); fileMenu=new JMenu("菜单选项"); fileMenu.add(录入); fileMenu.add(修改); fileMenu.add(查询与打印); fileMenu.add(删除); fileMenu.add(欢迎界面); bar.add(fileMenu); setJMenuBar(bar); label=new JLabel("医院病人信息管理软件",JLabel.CENTER); label.setIcon(new ImageIcon("hello.jpg")); label.setFont(new Font("黑体",Font.BOLD,36)); label.setHorizontalTextPosition(SwingConstants.CENTER); label.llow); 基本信息=new HashMap<String,Patient>(); 录入.addActionListener(this); 修改.addActionListener(this); 查询与打印.addActionListener(this); 删除.addActionListener(this); 欢迎界面.addActionListener(this); card=new CardLayout(); pCenter=new JPanel(); pCenter.setLayout(card); file=new File("基本信息.txt"); if(!ists()){ try{ FileOutputStream out=new FileOutputStream(file); ObjectOutputStream objectOut=new ObjectOutputStream(out); objectOut.writeObject(基本信息); objectOut.close(); out.close(); } catch(IOException e){} } 基本信息录入=new InputPatient(file); 基本信息修改=new ModifySituation(file); 基本信息查询与打印=new Inquest(file); 基本信息删除=new Delete(file); pCenter.add("欢迎界面",label); pCenter.add("录入界面",基本信息录入); pCenter.add("修改界面",基本信息修改); pCenter.add("删除界面",基本信息删除); add(pCenter,BorderLayout.CENTER); validate(); setVisible(true); setBounds(100,50,460,280); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ int n=JOptionPane.showConfirmDialog(null,"确认退出吗?","确认对话框", JOptionPane.YES_NO_OPTION ); if(n==JOptionPane.YES_OPTION) it(0); }}); validate(); } public void actionPerformed(ActionEvent e){ Source()==录入){ 基本信息录入.clearMess(); card.show(pCenter,"录入界面"); } else Source()==修改){ 基本信息修改.clearMess(); card.show(pCenter,"修改界面"); } else Source()==查询与打印){ 基本信息查询与打印.clearMess(); 基本信息查询与打印.setLocation(getBounds().x+getBounds().width,getBounds().y); 基本信息查询与打印.setVisible(true); } else Source()==删除) card.show(pCenter,"删除界面"); else Source()==欢迎界面) card.show(pCenter,"欢迎界面"); } public static void main(String args[]){ new ManagerWindow(); } } ModifySituation import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; import javax.swing.filechooser.*; public class ModifySituation extends JPanel implements ActionListener{ PatientPicture pic; HashMap<String,Patient> 基本信息表=null; JTextField 病历号,姓名,房间号,出生; JComboBox 科室; JButton 选择照片; JRadioButton 男,女; ButtonGroup group=null; JButton 开始修改,录入修改,重置; FileInputStream inOne=null; ObjectInputStream inTwo=null; FileOutputStream outOne=null; ObjectOutputStream outTwo=null; File systemFile,imagePic; JComboBox oldMess; Patient stu=null; public ModifySituation(File file){ systemFile=file; pic=new PatientPicture(); 病历号=new JTextField(6); 姓名=new JTextField(6); 科室=new JComboBox(); try{ FileReader inOne=new FileReader("科室.txt"); BufferedReader inTwo= new BufferedReader(inOne); String s=null; int i=0; while((adLine())!=null) 科室.addItem(s); inOne.close(); inTwo.close(); } catch(IOException exp){ 科室.addItem("内科"); 科室.addItem("外科"); } 房间号=new JTextField(6); 出生=new JTextField(6); 选择照片=new JButton("选择"); group=new ButtonGroup(); 男=new JRadioButton("男",true); 女=new JRadioButton("女",false); group.add(男); group.add(女); oldMess=new JComboBox(); 开始修改=new JButton("开始修改"); 录入修改=new JButton("录入修改"); 录入修改.setEnabled(false); 选择照片.setEnabled(false); 重置=new JButton("重置"); 病历号.addActionListener(this); 开始修改.addActionListener(this); 录入修改.addActionListener(this); 重置.addActionListener(this); 选择照片.addActionListener(this); Box ateHorizontalBox(); box1.add(new JLabel("输入要修改信息的病历号:",JLabel.CENTER)); box1.add(病历号); box1.add(开始修改); Box ateHorizontalBox(); box2.add(new JLabel("(新)姓名:",JLabel.CENTER)); box2.add(姓名); Box ateHorizontalBox(); box3.add(new JLabel("(新)性别:",JLabel.CENTER)); box3.add(男); box3.add(女); Box ateHorizontalBox(); box4.add(new JLabel("(新)科室:",JLabel.CENTER)); box4.add(科室); Box ateHorizontalBox(); box5.add(new JLabel("(新)房间号:",JLabel.CENTER)); box5.add(房间号); Box ateHorizontalBox(); box6.add(new JLabel("(新)出生:",JLabel.CENTER)); box6.add(出生); Box ateHorizontalBox(); box7.add(new JLabel(" 病人已有的数据:",JLabel.CENTER)); box7.add(oldMess); Box ateVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.add(box7); boxH.ateVerticalGlue()); JPanel picPanel=new JPanel(); picPanel.ange); picPanel.add(new JLabel("选择照片:",JLabel.CENTER)); picPanel.add(选择照片); JPanel putButton=new JPanel(); putButton.setBackground(Color.white); putButton.add(录入修改); putButton.add(重置); JPanel messPanel=new JPanel(); messPanel.ange); messPanel.add(boxH); setLayout(new BorderLayout()); JSplitPane splitV= new JSplitPane(JSplitPane.VERTICAL_SPLIT,picPanel,pic); JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,messPanel,splitV); add(splitH,BorderLayout.CENTER); add(putButton,BorderLayout.SOUTH); validate(); } public void actionPerformed(ActionEvent e){ Source()==开始修改||e.getSource()==病历号){ veAllItems(); String number=""; imagePic=null; stu=null; number=病历号.getText(); if(number.length()>0){ try { inOne=new FileInputStream(systemFile); inTwo=new ObjectInputStream(inOne); 基本信息表=(HashMap<String,Patient>)adObject(); inOne.close(); inTwo.close(); } catch(Exception ee){} if(基本信息表.containsKey(number)){ 录入修改.setEnabled(true); 选择照片.setEnabled(true); stu=基本信息表.get(number); oldMess.addItem("姓名:"+Name()); oldMess.addItem("科室:"+Disciping()); oldMess.addItem("房间号:"+Grade()); oldMess.addItem("出生日期:"+Borth()); Sex().equals("男")) 男.setSelected(true); else 女.setSelected(true); ImagePic(); pic.setImage(imagePic); paint(); 姓名.Name()); 房间号.Grade()); 出生.Borth()); } else{ 录入修改.setEnabled(false); 选择照片.setEnabled(false); String warning="该病历号不存在!"; JOptionPane.showMessageDialog(this,warning,"警告", JOptionPane.WARNING_MESSAGE); clearMess(); } } else{ 录入修改.setEnabled(false); 选择照片.setEnabled(false); String warning="必须要输入病历号!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); clearMess(); } } else Source()==录入修改){ String number=""; number=病历号.getText(); if(number.length()>0){ try { inOne=new FileInputStream(systemFile); inTwo=new ObjectInputStream(inOne); 基本信息表=(HashMap<String,Patient>)adObject(); inOne.close(); inTwo.close(); } catch(Exception ee){} if(基本信息表.containsKey(number)){ String question="该生基本信息已存在,您想修改他(她)的基本信息吗?"; JOptionPane.showMessageDialog(this,question,"警告", JOptionPane.QUESTION_MESSAGE); String m="基本信息将被修改!"; int ok=JOptionPane.showConfirmDialog(this,m,"确认", JOptionPane.YES_NO_OPTION,JOptionPane.INFORMATION_MESSAGE); if(ok==JOptionPane.YES_OPTION){ String name=姓名.getText(); if(name.length()==0) Name(); String discipling=(String)科室.getSelectedItem(); if(discipling==null) Disciping(); String grade=房间号.getText(); if(grade.length()==0) Grade(); String borth=出生.getText(); if(borth.length()==0) Borth(); String sex=null; if(男.isSelected()) sex=男.getText(); else sex=女.getText(); if(imagePic==null) ImagePic(); Patient 病人=new Patient(); 病人.setNumber(number); 病人.setName(name); 病人.setDiscipling(discipling); 病人.setGrade(grade); 病人.setBorth(borth); 病人.setSex(sex); 病人.setImagePic(imagePic); try{ outOne=new FileOutputStream(systemFile); outTwo=new ObjectOutputStream(outOne); 基本信息表.put(number, 病人); outTwo.writeObject(基本信息表); outTwo.close(); outOne.close(); clearMess(); } catch(Exception ee){} 录入修改.setEnabled(false); 选择照片.setEnabled(false); } else if(ok==JOptionPane.NO_OPTION){ 录入修改.setEnabled(true); 选择照片.setEnabled(true); } } else{ String warning="该病历号没有基本信息,不能修改!"; JOptionPane.showMessageDialog(this,warning,"警告", JOptionPane.WARNING_MESSAGE); 录入修改.setEnabled(false); 选择照片.setEnabled(false); clearMess(); } } else{ String warning="必须要输入病历号!"; JOptionPane.showMessageDialog(this,warning,"警告",JOptionPane.WARNING_MESSAGE); 录入修改.setEnabled(false); clearMess(); 录入修改.setEnabled(false); 选择照片.setEnabled(false); } } else Source()==选择照片){ JFileChooser chooser=new JFileChooser(); FileNameExtensionFilter filter = new FileNameExtensionFilter( "JPG & GIF Images", "jpg", "gif"); chooser.setFileFilter(filter); int state=chooser.showOpenDialog(null); File SelectedFile(); if(choiceFile!=null&&state==JFileChooser.APPROVE_OPTION){ 选择照片.Name()); imagePic=choiceFile; pic.setImage(imagePic); paint(); } } else Source()==重置){ clearMess(); 录入修改.setEnabled(false); 选择照片.setEnabled(false); } } public void clearMess(){ 病历号.setText(null); 姓名.setText(null); 房间号.setText(null); 出生.setText(null); veAllItems(); 选择照片.setText("选择"); java连接sqlserver数据库 imagePic=null; pic.setImage(imagePic); paint(); } } PatientPicture import javax.swing.*; import java.io.*; import java.awt.*; public class PatientPicture extends JPanel{ File imageFile; Toolkit tool; public PatientPicture(){ tool=getToolkit(); } public void setImage(File imageFile){ this.imageFile=imageFile; repaint(); } public void paintComponent(Graphics g){ super.paintComponent(g); int w=getBounds().width; int h=getBounds().height; if(imageFile!=null){ Image AbsolutePath()); g.drawImage(image,0,0,w,h,this); } else g.drawString("没有选择照片图像",20,30); } } Inquest import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.util.*; public class Inquest extends JDialog implements ActionListener{ PatientPicture pic; PrintJob print; Graphics g=null; HashMap<String,Patient> 基本信息表; JTextField 病历号,姓名,科室,房间号,出生; JRadioButton 男,女; JButton 查询,打印文本及照片,打印文本,打印照片; ButtonGroup group=null; FileInputStream inOne=null; ObjectInputStream inTwo=null; File systemFile=null; JPanel messPanel; Patient stu; public Inquest(File file){ setTitle("查询对话框"); setModal(false); systemFile=file; pic=new PatientPicture(); 病历号=new JTextField(6); 查询=new JButton("查询"); 病历号.addActionListener(this); 查询.addActionListener(this); 打印文本及照片=new JButton("打印文本及照片"); 打印文本=new JButton("打印文本"); 打印照片=new JButton("打印照片"); 打印文本及照片.addActionListener(this); 打印文本.addActionListener(this); 打印照片.addActionListener(this); 打印文本及照片.setEnabled(false); 打印文本.setEnabled(false); 打印照片.setEnabled(false); 姓名=new JTextField(5); 姓名.setEditable(false); 科室=new JTextField(5); 科室.setEditable(false); 房间号=new JTextField(5); 房间号.setEditable(false); 出生=new JTextField(5); 出生.setEditable(false); 男=new JRadioButton("男",false); 女=new JRadioButton("女",false); group=new ButtonGroup(); group.add(男); group.add(女); Box ateHorizontalBox(); box1.add(new JLabel("病历号:",JLabel.CENTER)); box1.add(病历号); box1.add(查询); Box ateHorizontalBox(); box2.add(new JLabel("姓名:",JLabel.CENTER)); box2.add(姓名); Box ateHorizontalBox(); box3.add(new JLabel("性别:",JLabel.CENTER)); box3.add(男); box3.add(女); Box ateHorizontalBox(); box4.add(new JLabel("科室:",JLabel.CENTER)); box4.add(科室); Box ateHorizontalBox(); box5.add(new JLabel("房间号:",JLabel.CENTER)); box5.add(房间号); Box ateHorizontalBox(); box6.add(new JLabel("出生:",JLabel.CENTER)); box6.add(出生); Box ateVerticalBox(); boxH.add(box1); boxH.add(box2); boxH.add(box3); boxH.add(box4); boxH.add(box5); boxH.add(box6); boxH.ateVerticalGlue()); messPanel=new JPanel(); messPanel.add(boxH); JSplitPane splitH=new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,messPanel,pic); add(splitH,BorderLayout.CENTER); JPanel pSouth=new JPanel(); pSouth.add(打印文本及照片); pSouth.add(打印文本); pSouth.add(打印照片); add(pSouth,BorderLayout.SOUTH); validate(); setVisible(false); setSize(360,230); addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e){ setVisible(false); }}); } public void actionPerformed(ActionEvent e){ Source()==查询||e.getSource()==病历号){ String number=""; number=病历号.getText(); if(number.length()>0){ try { inOne=new FileInputStream(systemFile); inTwo=new ObjectInputStream(inOne); 基本信息表=(HashMap<String,Patient>)adObject(); inOne.close(); inTwo.close(); } catch(Exception ee){} if(基本信息表.containsKey(number)){ stu=基本信息表.get(number); 姓名.Name()); 科室.Disciping()); 房间号.Grade()); 出生.Borth()); Sex().equals("男")) 男.setSelected(true); else 女.setSelected(true); pic.ImagePic()); paint(); 打印文本及照片.setEnabled(true); 打印文本.setEnabled(true); 打印照片.setEnabled(true); } else{ 打印文本及照片.setEnabled(false); 打印文本.setEnabled(false); 打印照片.setEnabled(false); String warning="该病历号不存在!"; JOptionPane.showMessageDialog(this,warning,"警告", JOptionPane.WARNING_MESSAGE); clearMess(); } } else{ 打印文本及照片.setEnabled(false); 打印文本.setEnabled(false); 打印照片.setEnabled(false); String warning="必须要输入病历号!"; JOptionPane.showMessageDialog(this,warning,"警告", JOptionPane.WARNING_MESSAGE); } } else Source()==打印文本及照片){ try{ print=getToolkit().getPrintJob(new JFrame(),"打印",new Properties()); Graphics(); g.translate(120,200);//在打印页的坐标(120,200)开始打印文本内容 int Bounds().width; messPanel.printAll(g); g.translate(w,0); //在打印页的坐标(120+w,200)处打印照片 pic.printAll(g); 姓名.Name()); g.dispose(); d(); } catch(Exception exp){} } else Source()==打印文本){ try{ print=getToolkit().getPrintJob(new JFrame(),"打印",new Properties()); Graphics(); g.translate(120,200);//在打印页的坐标(120,200)开始打印文本内容 messPanel.printAll(g); g.dispose(); d(); } catch(Exception exp){} } else Source()==打印照片){ try{ print=getToolkit().getPrintJob(new JFrame(),"打印",new Properties()); Graphics(); int Bounds().width; g.translate(120+w,200);//在打印页的坐标(120+w,200)处打印照片 pic.printAll(g); g.dispose(); d(); } catch(Exception exp){} } } public void clearMess(){ 病历号.setText(null); 姓名.setText(null); 房间号.setText(null); 出生.setText(null); 科室.setText(null); pic.setImage(null); paint(); } } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论