《数据库系统原理》医药管理信息系统课程设计报告

  • 格式:doc
  • 大小:713.50 KB
  • 文档页数:16

《数据库系统原理》课程设计报告课程设计题目:医药管理信息系统班级:10级计算机科学与技术(1)班姓名:大锅饭学号:任课教师:开始时间:2012年04月02日结束时间:2012年06月08日目录第一章概述 (2)1.1 项目介绍 (2)1.2 项目开发环境 (2)第二章需求分析 (2)2.1 信息要求 (2)2.2 处理要求 (2)2.3 安全性与完整性要求 (4)第三章概念结构设计 (4)第四章逻辑结构设计 (5)第五章主要功能的设计以及代码 (6)5.1 设计思路 (6)5.2 主要代码 (6)5.2.1查询功能主要代码 (6)5.2.2 删除功能主要代码 (7)5.2.3 修改功能主要代码 (9)5.2.4 浏览功能主要代码 (9)5.2.5 打印功能主要代码 (10)5.2.6 添加功能主要代码 (14)5.3 系统制作简介 (16)第六章总结 (16)6.1开发过程中遇到的问题 (16)6.2开发心得 (17)第一章概论1.1项目介绍模拟医药超市的部分管理功能。

药品由专门的采购人员从医药经销商处购进医药超市,并将药品信息记录入库,顾客从超市购买药品需填写相关个人信息,每次售药需登记经办人(医药超市员工,即销售人员)的信息,以及所售药品的信息。

1.2项目开发环境Winxp以上操作系统,并且装有SQL server2000或以上的任意版本(装好SP3或SP4补丁),还要装有JDK1.6或JDK1.7,此外要有能够运行java程序的软件(譬如Eclipse、Myeclipse等)。

第二章需求分析2.1信息要求通过本系统用户可以从数据库中获得相关的药品信息和顾客的个人信息以及购买的药品信息,还有药店相关人员的情况。

数据库中需要存储顾客信息表,经办人信息表、药品信息表、账户信息表。

2.2处理要求此系统功能分为八大功能,主要有:⑴“信息查询”功能①查询顾客信息②查询经办人信息③查询药品信息⑵“信息录入”功能①录入顾客信息②录入经办人信息③录入药品信息⑶“信息删除”功能①删除顾客信息②删除经办人信息③删除药品信息⑷“信息修改”功能①修改顾客信息②修改经办人信息③修改药品信息⑸“信息浏览”功能①浏览顾客信息②浏览经办人信息③浏览药品信息⑹“数据报表”功能①顾客信息报表②经办人信息报表③药品信息报表⑺用户管理与用户登陆功能系统可根据需要添加、删除用户,并可对已有的用户信息进行修改操作;在添加新用户时,可定义其操作权限(查询、更新、浏览、报表等权限);用户密码可进行随时修改;各种不同身份的用户登陆系统后,可享有不同的系统操作权限。

⑻系统帮助及使用说明功能为用户提供必要的在线帮助功能和简要的操作使用说明。

下图为本管理系统的大致功能图2.3安全性与完整性要求本系统由于是供学习交流用的,所以在数据库的安全性方面做的不是特别严密,对于药品的信息可以公开查询,而系统中的账户的信息则不对外公开。

一般的账户时没办法查看其他账户的信息(除管理员外)。

这些都是根据不同账户设定的,安全性可以跟据情况作恰当的改动。

至于完整性也是一样,可以根据实际情况修改数据库的完整性约束条件,以此来满足用户的要求。

第三章概念结构设计下图为根据本系统而做的基本E-R图第四章逻辑结构设计把E-R图转为关系表如下:顾客(顾客号,顾客名,顾客性别,顾客年龄,顾客住址,顾客电话,顾客症状,药品号,经办人号,日期,顾客备注)药品(药品号,药品名称,药品服用方法,药品功效)经办人(经办人号,经办人姓名,经办人电话,经办人备注)图3.1基本E-R图第五章 主要模块的设计以及代码5.1总体模块设计思路5.2关键代码:5.2.1 查询模块部分主要代码:(1)c=new Choice(); String[]selectname={"cno","cname","csex","cage","caddress","cphone","csymptom","mno ","ano","cdate","cremark"};for (int i=0;i<selectname.length;i++)c.add(selectname[i]);jl=new JLabel("请选择查询类型:");b1=new JButton("查询"); b1.addActionListener(this );//=========================================监听查询按钮(2)public void actionPerformed(ActionEvent e){if (e.getSource()==b1){String select=new String(c.getSelectedItem()).trim();//下拉选择要查询的条件String input=tf.getText().trim();//从文本框中获取输入的内容 String sql="use market select * from client where "+""+select+""+"="+"'"+input+"'";//写出sql 语句 登陆界面 用户登录 选择用户 实现不同功能System.out.println("ssfsfsfs=="+sql);cm=new ClientModel(sql);//执行sql查询,并且更新table,显示结果table.setModel(cm);}5.2.2删除模块的主要部分代码:if(e.getSource()==b3){//--------------------=========================---------int rownum=this.table.getSelectedRow();if(rownum==-1){JOptionPane.showMessageDialog(this, "请选一行");return ;}// System.out.println("西欧 "+rownum);num=(String)cm.getValueAt(rownum,0);//----------------------------获取当前行的cno------------// System.out.println(num);try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");con =DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; databaseName=market","sa","1234");String sql="use market delete from client wherecno="+""+num+"";stmt=con.createStatement();stmt.executeUpdate(sql);}catch (ClassNotFoundException e1) {e1.printStackTrace();JOptionPane.showMessageDialog(null, "驱动未找到!");}catch (SQLException e1) {e1.printStackTrace();JOptionPane.showMessageDialog(null, "应用软件错误");} finally{try {if (rs != null) {rs.close(); // 关闭命令对象连接rs = null;}if (stmt != null) {stmt.close();stmt = null;}if (con != null) {con.close(); // 关闭数据库连接con = null;}} catch (SQLException e1) {e1.printStackTrace();}}cm=new ClientModel();table.setModel(cm);}5.2.3修改模块的主要代码:try {Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");con =DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; databaseName=market","sa","1234");stmt =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATA BLE);rs = stmt.executeQuery(sql);while (rs.next()) {Vector<String> temp = new Vector<String>();temp.add(rs.getString(1));temp.add(rs.getString(2));temp.add(rs.getString(3));temp.add(String.valueOf(rs.getInt(4)));temp.add(rs.getString(5));temp.add(rs.getString(6));temp.add(rs.getString(7));temp.add(rs.getString(8));temp.add(rs.getString(9));temp.add(String.valueOf(rs.getDate(10)));temp.add(rs.getString(11));a.add(temp);}}5.2.4浏览模块主要代码:try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");con =DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433; databaseName=market","sa","1234");String sql="use market delete from client wherecno="+""+num+"";stmt=con.createStatement();stmt.executeUpdate(sql);}catch (ClassNotFoundException e1) {e1.printStackTrace();JOptionPane.showMessageDialog(null, "驱动未找到!");}catch (SQLException e1) {e1.printStackTrace();JOptionPane.showMessageDialog(null, "SQL语句执行错误");}5.2.5打印报表:public class FileChose extends JFrame {te JFileChooser chooser = null;private FileNameExtensionFilter filter = null;int returnVal;String[] NameA = {"编号","姓名","性别","电话","备注"};String[] NameM = {"编号","名称","服用方法","功效"};String[] NameC = {"编号","姓名","性别","年龄","住址","电话","症状","已购药品","经办人" , "录入时期" , "备注"};/*ClientOne client;AttnOne agency;MedicineOne medi;*/ClientModel cclient = new ClientModel();AgencyModel aagency = new AgencyModel();MedicineModel mmedi = new MedicineModel();public FileChose(int select) /*throws MalformedURLException*/{//System.out.println("123");try{//UIManager.setLookAndFeel( UIManager.getSystemLookAndFeelClassName());//Font font = new Font("Courier",Font.BOLD,20);}catch(Exception e){e.printStackTrace();}FileNameExtensionFilter filter = new FileNameExtensionFilter("xls文件", "xls");chooser = new JFileChooser();chooser.setFileFilter(filter);chooser.setSelectedFile(new File("123.xls"));int returnVal = chooser.showSaveDialog(this);if(returnVal == JFileChooser.APPROVE_OPTION){String path = chooser.getCurrentDirectory().getPath()+chooser.getSelectedFile().getName();File dataFile = new File(path);try{int length = 0 ;PrintWriter pw = new PrintWriter(dataFile);if(select == 1){for(int i = 0 ; i < 11 ; i++){pw.write(NameC[i]);pw.write("\t");}length = cclient.getRowCount();pw.write("\n");for(int i = 0 ; i < length ; i++){for(int j = 0 ; j < 11 ; j++){pw.write(cclient.getValueAt(i, j).toString());pw.write("\t");}pw.write("\n");}}if(select == 2){for(int i = 0 ; i < 5 ; i++){pw.write(NameA[i]);pw.write("\t");}length = aagency.getRowCount();pw.write("\n");for(int i = 0 ; i < length ; i++){for(int j = 0 ; j < 5 ; j++){pw.write(aagency.getValueAt(i, j).toString());pw.write("\t");}pw.write("\n");}}if(select == 3){for(int i = 0 ; i < 4 ; i++){pw.write(NameM[i]);pw.write("\t");}length = mmedi.getRowCount();pw.write("\n");for(int i = 0 ; i < length ; i++){for(int j = 0 ; j < 4 ; j++){pw.write(mmedi.getValueAt(i, j).toString());pw.write("\t");}pw.write("\n");}pw.close();}catch(FileNotFoundException e){e.printStackTrace();}}5.2.6 添加模块主要代码:public void actionPerformed(ActionEvent e){if(e.getSource()==b1){try{Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");aConnection = DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;databaseName=market","sa","1234");// pas = aConnection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);String c1= t1.getText();String c2=t2.getText();String c3=ch.getSelectedItem().trim();int c4=Integer.parseInt(t4.getText().trim());String c5=t5.getText();String c6=t6.getText();String c7=t7.getText();c8=t8.getText();c9=t9.getText();String c10=t0.getText();String c11=t11.getText();String sql="use market insert into client values("+"'"+c1+"'"+","+"'"+c2+"'"+","+"'"+c3+"'"+","+"'"+c4+"'"+","+"'"+c5+"'"+","+"'"+c6+"'" +","+"'"+c7+"'"+","+"'"+c8+"'"+","+"'"+c9+"'"+","+"'"+c10+"'"+","+"'"+c11+"'"+")";pas=aConnection.prepareStatement(sql);pas.executeUpdate();frame.dispose();//================================关闭添加窗口new Clienttable2();}catch (SQLException e1) {if(Integer.parseInt(c9)>6){e1.printStackTrace();JOptionPane.showMessageDialog(frame,"注意没有这个经办人");}if(Integer.parseInt(c8)>18){e1.printStackTrace();JOptionPane.showMessageDialog(null, "抱歉,没有这药品");}} catch (ClassNotFoundException e1) {// TODO Auto-generated catch blocke1.printStackTrace();JOptionPane.showMessageDialog(null, "驱动未找到!");}}5.3系统制作简介本系统采用Elipse作为前台开发软件,通过java的JDBC和数据库sql语句连接SQL Server2000。