package view;
import java.awt.BorderLayout;
import java.awt.Font;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.ListSelectionModel;
import javax.swing.table.AbstractTableModel;
import bean.Customer;
import bean.Drug;
import bean.Sale;
import dao.DrugDao;
import dao.SaleDao;
import listener.ExitListenter;
/**
*
* 药品管理界面
*
*/
public class DrugManagement implements ActionListener {
private JFrame frame;
JTable table;
// 药品数据集合
private List<Drug> drugList;
private Customer customer;
public DrugManagement(Customer customer) {
// customer==null 区分登录人 是管理员还是客户
this.customer = customer;
frame = new JFrame("药品操作管理界面"); // 设置主窗体
frame.setVisible(true); // 窗体可见
frame.setSize(900, 650); // 设置窗体大小
frame.setLocationRelativeTo(null);// 设置居中
JLabel jlab_1 = new JLabel("以下是管理员操作功能,请选择您要执行的相关操作:");
jlab_1.setFont(new Font("", 1, 15));
frame.add(jlab_1);
JPanel contentPanle = new JPanel();
frame.setContentPane(contentPanle);
contentPanle.setLayout(new BorderLayout());// 设置主页面的布局
JPanel jPanel = new JPanel(new FlowLayout());// 创建一个流式布局的面板
contentPanle.add(jPanel, BorderLayout.NORTH);// 添加并放在头部
JButton jbt_1 = new JButton("查找药品信息"); // 按钮1
jbt_1.setName("1");// 设置name标识
jbt_1.addActionListener(this);// 添加监听器
jPanel.add(jbt_1);
// 管理员才有以下功能
if (customer==null) {
JButton jbt_2 = new JButton("删除药品信息"); // 按钮2
jbt_2.setName("2");// 设置name标识
jbt_2.addActionListener(this);// 添加监听器
jPanel.add(jbt_2);
JButton jbt_3 = new JButton("添加药品信息");// 按钮3
jbt_3.setName("3");// 设置name标识
jbt_3.addActionListener(this);// 添加监听器
jPanel.add(jbt_3);
JButton jbt_4 = new JButton("修改药品信息");// 按钮4
jbt_4.setName("4");// 设置name标识
jbt_4.addActionListener(this);// 添加监听器
jPanel.add(jbt_4);
} else {
// 普通客户 可以购买药品
JButton jbt_2 = new JButton("加购药品"); // 按钮2
jbt_2.setName("5");// 设置name标识
jbt_2.addActionListener(this);// 添加监听器
jPanel.add(jbt_2);
}
JButton jbt_7 = new JButton("退出");// 按钮7
// 设置药品管理人员登录界面的监听器
jbt_7.addActionListener(new ExitListenter());
jPanel.add(jbt_7);
// frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 关闭窗体
JScrollPane scrollPane = new JScrollPane();
contentPanle.add(scrollPane, BorderLayout.CENTER);// 设置居中布局
// 放入滚动页面
// 展示数据
table = new JTable();
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
scrollPane.setViewportView(table);
// scrollPane.setVisible(true);
reflushTable();
}
// 刷新table
void reflushTable() {
// 创建线程异步加载 避免数据获取延迟页面黑屏
new Thread(new Runnable() {
@Override
public void run() {
try {
drugList = DrugDao.getList();
System.out.println(drugList);
// 初始值
table.setModel(new DrugTableModle(drugList));
table.repaint();// 重绘table
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
}).start();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
JButton jButton = (JButton) e.getSource();
// 获取选中的行
int selectRow = table.getSelectedRow();
// 通过按钮的名称 判断点击的按钮
switch (jButton.getName()) {
case "1":
// 刷新table
reflushTable();
break;
case "2":
// 判断是否选中了
if (selectRow == -1) {
JOptionPane.showMessageDialog(null, "请选中要删除的药品信息 ");
return;
} else {
int flag = JOptionPane.showConfirmDialog(null, "你确认删除该药品吗?", "提示", JOptionPane.YES_NO_CANCEL_OPTION);
// 判断是否点击了确定删除按钮
if (flag == JOptionPane.YES_OPTION) {
try {
DrugDao.deleteById(drugList.get(selectRow).getId());
JOptionPane.showMessageDialog(null, "删除成功");
reflushTable();
} catch (Exception e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}
}
break;
case "3":
// 打开添加弹窗
new DrugEdit(frame, "新增药品信息", null, this).setVisible(true);
;
break;
case "4":
// 判断是否选中了
if (selectRow == -1) {
JOptionPane.showMessageDialog(null, "请选中要修改的药品信息 ");
return;
} else {
new DrugEdit(frame, "新增药品信息", drugList.get(selectRow), this).setVisible(true);
;
}
break;
case "5":
// 客户购买药品操作
// 判断是否选中了
if (selectRow == -1) {
JOptionPane.showMessageDialog(null, "请选中要购买药品信息 ");
return;
} else {
String count = JOptionPane.showInputDialog(frame, "请输入购买数量", JOptionPane.QUESTION_MESSAGE);
try {
Sale sale = new Sale();
sale.setCustomerId(customer.getId());
sale.setDrugId(drugList.get(selectRow).getId());
sale.setNumber(Integer.parseInt(count));
SaleDao.add(sale);
JOptionPane.showMessageDialog(null, "购买成功");
} catch (Exception e2) {
// TODO: handle exception
JOptionPane.showMessageDialog(null, "输入格式不正确");
}
}
break;
}
}
// 自定义tableModel
class DrugTableModle extends AbstractTableModel {
private List<Drug> drugList;
public DrugTableModle(List<Drug> drugList) {// 构造方法,在创建对象时就将数据传入
this.drugList = drugList;
}
// 返回列数
@Override
public int getColumnCount() {
// TODO 自动生成的方法存根
return 5;
}
// 返回行数
@Override
public int getRowCount() {
// TODO 自动生成的方法存根
return this.drugList == null ? 0 : this.drugList.size();
}
@Override
public boolean isCellEditable(int rowIndex, int columnIndex) {
// TODO 自动生成的方法存根
return false;
}
// 返回数据
@Override
public Object getValueAt(int rowIndex, int columnIndex) {
switch (columnIndex) {
case 0:
return this.drugList.get(rowIndex).getId();
case 1:
return this.drugList.get(rowIndex).getName();
case 2:
return this.drugList.get(rowIndex).getPrice();
case 4:
return this.drugList.get(rowIndex).getValidDate();
case 3:
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.drugList.get(rowIndex).getCreateDate());
default:
return "-";
}
}
// 列名,给定列号,返回列名
@Override
public String getColumnName(int column) {
switch (column) {
case 0:
return "编号";
case 1:
return "名称";
case 2:
return "价格";
case 3:
return "生产日期";
case 4:
return "有效期";
default:
return "-";
}
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
药品管理系统 JAVA swing+Sql server.zip (62个子文件)
DrugManagement
bin
dao
JDBCUtils.class 6KB
WarehoseDao.class 266B
DrugDao.class 2KB
SaleDao.class 1KB
CustomerDao.class 2KB
StorageDao.class 2KB
bean
Warehouse.class 697B
Sale.class 1KB
Storage.class 2KB
Customer.class 1KB
Drug.class 2KB
view
CustomerManagement$CustomerTableModle.class 2KB
StorageManagement$1.class 1KB
Log$1.class 735B
CustomerManagement.class 4KB
SaleManagement$1.class 1KB
CustomerFrame.class 2KB
StorageEdit.class 5KB
CustomerManagement$1.class 1KB
StorageEdit$1.class 624B
AdminFrame.class 2KB
DrugManagement$DrugTableModle.class 2KB
CustomerEdit.class 4KB
DrugManagement.class 5KB
LoginFrame.class 3KB
StorageManagement$TableModle.class 2KB
SaleManagement$TableModle.class 2KB
DrugEdit.class 4KB
DrugManagement$1.class 1KB
Log.class 2KB
StorageManagement.class 4KB
SaleManagement.class 2KB
lib
mssql-jdbc-6.1.0.jre8.jar 748KB
listener
ExitListenter.class 787B
.settings
org.eclipse.jdt.core.prefs 598B
src
dao
StorageDao.java 1KB
DrugDao.java 1KB
WarehoseDao.java 49B
CustomerDao.java 1KB
JDBCUtils.java 5KB
SaleDao.java 803B
bean
Warehouse.java 341B
Sale.java 682B
Drug.java 1KB
Storage.java 1KB
Customer.java 801B
view
DrugManagement.java 7KB
LoginFrame.java 3KB
CustomerFrame.java 2KB
StorageEdit.java 3KB
SaleManagement.java 4KB
CustomerEdit.java 5KB
DrugEdit.java 4KB
Log.java 2KB
StorageManagement.java 6KB
AdminFrame.java 2KB
CustomerManagement.java 6KB
lib
mssql-jdbc-6.1.0.jre8.jar 748KB
listener
ExitListenter.java 527B
.project 390B
.classpath 373B
drugManagement.sql 4KB
共 62 条
- 1
资源评论
- 无能为力就要努力2023-07-28该文件为药品管理系统提供了可靠的数据库支持,保证了数据的安全性和稳定性。
- 经年哲思2023-07-28这个文件的代码结构清晰,容易理解和修改,非常适合初学者学习和使用。
- 朱王勇2023-07-28这个文件的开发团队非常负责,及时解决了我在使用过程中遇到的问题,赞!
- 阿汝娜老师2023-07-28该文件的界面设计简单大方,操作起来非常流畅,能够提高工作效率。
- 普通网友2023-07-28这个文件提供了一个功能齐全的药品管理系统,界面简洁易用。
54hake
- 粉丝: 5
- 资源: 6
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功