此系统同时支持mysql,sqlserver,有javaswing窗体和C#窗体两套代码
宠物医院管理系统
数据库设计
关系模型
管理员(主键,用户名,密码,名称,电话)
医生(主键,用户名,密码,头像,名称,性别,电话,编号)
宠物主人(主键,姓名,性别,电话,备注)
宠物(主键,名称,品种,年龄,性格,其他信息,主人)
预约宠物就诊(主键,预约医生,就诊宠物,宠物症状,状态,医生留言,看病费用,创建时间)
药品(主键,名称,编号,功效)
数据字典
管理员表
字段名
字段
数据类型
约束
描述
主键
id
varchar(40)
primary key;
唯一标识
用户名
username
varchar(20)
not null;unique;
不可为空;字段唯一;
密码
password
varchar(20)
名称
name
varchar(18)
not null;unique;
不可为空;字段唯一;
电话
tele
varchar(11)
医生表
字段名
字段
数据类型
约束
描述
主键
id
varchar(40)
primary key;
唯一标识
用户名
username
varchar(20)
not null;unique;
不可为空;字段唯一;
密码
password
varchar(20)
头像
pic
varchar(255)
名称
name
varchar(18)
not null;unique;
不可为空;字段唯一;
性别
gender
varchar(10)
电话
tele
varchar(11)
编号
numb
varchar(32)
not null;unique;
不可为空;字段唯一;
宠物主人表
字段名
字段
数据类型
约束
描述
主键
id
varchar(40)
primary key;
唯一标识
姓名
name
varchar(18)
not null;unique;
不可为空;字段唯一;
性别
gender
varchar(10)
电话
tele
varchar(11)
备注
notes
varchar(255)
宠物表
字段名
字段
数据类型
约束
描述
主键
id
varchar(40)
primary key;
唯一标识
名称
name
varchar(18)
not null;unique;
不可为空;字段唯一;
品种
type
varchar(255)
年龄
age
int
性格
xingge
varchar(255)
其他信息
infos
varchar(255)
主人
zhuren
varchar(255)
预约宠物就诊表
字段名
字段
数据类型
约束
描述
主键
id
varchar(40)
primary key;
唯一标识
预约医生
doctorId
varchar(255)
not null;
不可为空;
就诊宠物
mypet
varchar(255)
not null;
不可为空;
宠物症状
petstatus
varchar(255)
not null;
不可为空;
状态
status
varchar(255)
"已预约"
医生留言
liuyan
varchar(255)
""
看病费用
prices
double
0.0
创建时间
createtime
datetime
not null;
new Date()
药品表
字段名
字段
数据类型
约束
描述
主键
id
varchar(40)
primary key;
唯一标识
名称
name
varchar(18)
not null;unique;
不可为空;字段唯一;
编号
numb
varchar(32)
not null;unique;
不可为空;字段唯一;
功效
gongxiao
varchar(255)
package com.codeying.frame;
import com.codeying.dao.*; import com.codeying.entity.*;
import com.codeying.utils.*;
import com.codeying.utils.excel.ExcelUtil;
import com.mysql.cj.util.StringUtils;
import javax.swing.*;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import javax.swing.plaf.FontUIResource;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.*;
import java.util.List;
import java.io.*;
public class FormDoctorData extends JInternalFrame {
private Boolean editPermission = false;
DoctorDao dao = DoctorDao.me();
private List<Doctor> listData;
public FormDoctorData () {
initialize();
initPrivilege();
initData();
query(null);
}
private void initPrivilege(){
String role = Login.type;
if (role == "admin")
{
jButtonDel.setVisible(true);
jButtonEdit.setVisible(true);
editPermission = true;
}
if (role == "doctor")
{
tb_password.setEnabled(false);
}
if(Config.export){
jButtonExport.setVisible(true);
}
}
public void initData() {
List<String> l = new ArrayList<>();
l.add("主键");
l.add("用户名");
l.add("密码");
l.add("头像");
l.add("名称");
l.add("性别");
l.add("电话");
l.add("编号");
String heads[] = l.toArray(new String[0]);
model = new DefaultTableModel(null, heads);
con_gender .addItem(""); tb_gender .addItem("");
con_gender .addItem("男"); tb_gender .addItem("男");
con_gender .addItem("女"); tb_gender .addItem("女");
}
public class BtnListener implements ActionListener {
public void actionPerformed(ActionEvent e) {
String s;
if(e.getSource().equals(jButtonQuery)){
Map<String,String> paramMap = new HashMap<>();
s = con_username .getText().trim();
if(!StringUtils.isNullOrEmpty(s)) paramMap.put("username",s);
s = con_name .getText().trim();
if(!StringUtils.isNullOrEmpty(s)) paramMap.put("name",s);
s = (String)con_gender .getSelectedItem();
if(!StringUtils.isNullOrEmpty(s))paramMap.put("gender",s);
query(paramMap);
}else if(e.getSource().equals(jButtonDel)){
String id = tb_id.getText().trim();
if(StringUtils.isNullOrEmpty(id)){
JOptionPane.showMessageDialog(null, "未选中任何记录!");return;
}
int opt = JOptionPane.showConfirmDialog(null, "确认删除?", "确认信息", JOptionPane.YES_NO_OPTION);
if (opt == JOptionPane.YES_OPTION) {
int res = dao.deleteById(id);
if(res == 0){
JOptionPane.showMessageDialog(null, "删除失败!");
}else {
JOptionPane.showMessageDialog(null, "删除成功!");
query(null);
}
}
}else if(e.getSource().equals(jButtonEdit)){
String id = tb_id.getText().trim();
if(StringUtils.isNullOrEmpty(id)){
JOptionPane.showMessageDialog(null, "未选中任何记录!");return;
}
if (StringUtils.isNullOrEmpty(tb_name .getText().trim()))
{
JOptionPane.showMessageDialog(null, "名称 不可为空");return;
}
if (StringUtils.isNullOrEmpty(tb_numb .getText().trim()))
{
JOptionPane.showMessageDialog(null, "编号 不可为空");return;
}
Doctor t = new Doctor ();
String templateStr;
t.setId(id);
t.setId (tb_id .getText().trim());
templateStr = tb_username .getText().trim();
if(FormDoctorAdd .illegalAdd(id,"username",templateStr)){
JOptionPane.showMessageDialog(null, "用户名 : 已存在!");return;
}
t.setUsername (templateStr);
t.setPassword (tb_password .getText().trim());
t.setPic (tb_pic .getText().trim());
templateStr = tb_name .getText().trim();
if(FormDoctorAdd .illegalAdd(id,"name",templateStr)){
JOptionPane.showMessageDialog(null, "名称 : 已存在!");return;
}
t.setName (templateStr);
t.setGender ((String)(tb_gender .getSelectedItem()));
t.setTele (tb_tele .getText().trim());
templateStr = tb_numb .getText().trim();
if(FormDoctorAdd .illegalAdd(id,"numb",templateStr)){
JOptionPane.showMessageDialog(null, "编号 : 已存在!");return;
}
t.setNumb (templateStr);
int res = dao.updateById(t);
if(res == 0){
JOptionPane.showMessageDialog(null, "更新失败!");
}else {
JOptionPane.showMessageDialog(null, "更新成功!");
query(null);
}
}
else if(e.getSource().equals(jButtonExport)){
List<Doctor> data = dao.list();
for(Doctor stAv : data){
}
HashMap<String,String> headMap = new LinkedHashMap<>();
headMap.put("username","用户名");
headMap.put("password","密码");
headMap.put("pic","头像");
headMap.put("name","名称");
headMap.put("gender","性别");
headMap.put("tele","电话");
headMap.put("numb","编号");
try {
File f=new File("医生数据.xls");
OutputStream out = new FileOutputStream(f);
ExcelUtil.exportExcel(headMap, data, out);
out.close();
JOptionPane.showMessageDialog(null, "导出成功:"+f.getAbsolutePath());
} catch (Exception exception) {
exception.printStackTrace();
}
}
}
}
public class TableListener implements ListSelectionListener {
public void valueChanged(ListSelectionEvent e) {
if (jTable.getSelectedRow() != -1) {
Object o;
int index = jTable.getSelectedRow();
tb_id .setText(jTable.getValueAt(index,0).toString());
tb_username .setText(jTable.getValueAt(index,1).toString());
if(editPermission)
tb_password .setText(jTable.getValueAt(index,2).toString());
tb_pic .setText(jTable.getValueAt(index,3).toString());
tb_name .setText(jTable.getValueAt(index,4).toString());
o = jTable.getValueAt(index,5);
tb_gender .setSelectedItem(o == null?"":o.toString());
tb_tele .setText(jTable.getValueAt(index,6).toString());
tb_numb .setText(jTable.getValueAt(index,7).toString());
}
}
}
private void query(Map<String,String> wrapper){
if(wrapper == null){
wrapper = new HashMap<>();
}
listData = dao.list(wrapper);
for (Doctor t : listData){
}
int count = listData.size();
jLabelCounts.setText("记录数:" + count + "");
String labelStaAvg = "";
jLabelTips.setText(labelStaAvg);
model.setRowCount(count);
String d;
for(int i=0;i<count;i++){
int j = 0;
model.setValueAt(listData.get(i).getId (), i, j);
j++;
model.setValueAt(listData.get(i).getUsername (), i, j);
j++;
model.setValueAt(listData.get(i).getPassword (), i, j);
j++;
model.setValueAt(listData.get(i).getPic (), i, j);
j++;
model.setValueAt(listData.get(i).getName (), i, j);
j++;
model.setValueAt(listData.get(i).getGender (), i, j);
j++;
model.setValueAt(listData.get(i).getTele (), i, j);
j++;
model.setValueAt(listData.get(i).getNumb (), i, j);
j++;
}
jTable.setModel(model);
jTable.setAutoCreateRowSorter(true);
hideColumn(jTable,0);
if(!editPermission) hideColumn(jTable,2);
}
void hideColumn(JTable table,int column) {
TableColumn tc = table.getColumnModel().getColumn(column);
tc.setMaxWidth(0);
tc.setPreferredWidth(0);
tc.setWidth(0);
tc.setMinWidth(0);
table.getTableHeader().getColumnModel().getColumn(column).setMaxWidth(0);
table.getTableHeader().getColumnModel().getColumn(column).setMinWidth(0);
}
private void initialize() {
int x,y;
this.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
this.setResizable(true);
this.setClosable(true);
this.setMaximizable(true);
this.setIconifiable(true);
this.setSize(1200, 650);
this.setTitle("医生");
jPanel.setLayout(null);
jPanel.setBounds(new Rectangle(1, 1, 1150, 80));
jPanel.setBorder(BorderFactory.createTitledBorder("查找数据"));
jPanel.add(jButtonQuery, null);
jButtonQuery.setBounds(new Rectangle(1000, 50, 100, 24));
jPanel.add( labelC_username, null);
labelC_username .setBounds(new Rectangle(10, 20, 60, 24));
jPanel.add(con_username, null);
con_username .setBounds(new Rectangle(80, 20, 100, 24));
jPanel.add( labelC_name, null);
labelC_name .setBounds(new Rectangle(185, 20, 60, 24));
jPanel.add(con_name, null);
con_name .setBounds(new Rectangle(255, 20, 100, 24));
jPanel.add( labelC_gender, null);
labelC_gender .setBounds(new Rectangle(360, 20, 60, 24));
jPanel.add(con_gender, null);
con_gender .setBounds(new Rectangle(430, 20, 100, 24));
this.setContentPane(jContentPane);
jContentPane.setLayout(null);
jContentPane.setBorder(BorderFactory.createTitledBorder(""));
jContentPane.add(jPanel, null);
jContentPane.add(jScrollPane, null);
jScrollPane.setBounds(new Rectangle(10, 110, 950, 450));
jScrollPane.setViewportView(jTable);
jContentPane.add(jLabelCounts, null);
jLabelCounts.setBounds(new Rectangle(10, 85, 200, 24));
jContentPane.add(jLabelTips, null);
jLabelTips.setBounds(new Rectangle(10, 560, 650, 24));
jContentPane.add(tb_id);
tb_id.setBounds(new Rectangle(600, 85, 100, 24));
tb_id.setVisible(false);
x = 970; y = 110;
jContentPane.add(label_username, null);
label_username .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_username, null);
tb_username .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
tb_username .setEnabled(false);
jContentPane.add(label_password, null);
label_password .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_password, null);
tb_password .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
jContentPane.add(label_pic, null);
label_pic .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_pic, null);
tb_pic .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
jContentPane.add(label_name, null);
label_name .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_name, null);
tb_name .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
jContentPane.add(label_gender, null);
label_gender .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_gender, null);
tb_gender .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
jContentPane.add(label_tele, null);
label_tele .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_tele, null);
tb_tele .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
jContentPane.add(label_numb, null);
label_numb .setBounds(new Rectangle(x, y, 65, 24));
jContentPane.add(tb_numb, null);
tb_numb .setBounds(new Rectangle(x+65, y, 130, 24));
y+=35;
jContentPane.add(jButtonDel, null);
jButtonDel.setVisible(false);
jButtonDel.setBounds(new Rectangle(x, y, 80, 24));
jContentPane.add(jButtonEdit, null);
jButtonEdit.setVisible(false);
jButtonEdit.setBounds(new Rectangle(x+90, y, 80, 24));
jContentPane.add(jButtonExport, null);
jButtonExport.setVisible(false);
jButtonExport.setBounds(new Rectangle(800, 85, 150, 24));
jButtonQuery.addActionListener(listener);
jButtonEdit.addActionListener(listener);
jButtonExport.addActionListener(listener);
jButtonDel.addActionListener(listener);
jTable.getSelectionModel().addListSelectionListener(new TableListener());
}
BtnListener listener = new BtnListener();
private JPanel jContentPane = new JPanel();
private JPanel jPanel = new JPanel();
private JLabel jLabelCounts = new JLabel("记录数量:xx条");
private JLabel jLabelTips = new JLabel("统计信息...");
private JScrollPane jScrollPane = new JScrollPane();
private JTable jTable = new JTable();
DefaultTableModel model = new DefaultTableModel();
private JButton jButtonEdit = new JButton("保存");
private JButton jButtonExport = new JButton("导出到excel");
private JButton jButtonDel = new JButton("删除");
private JButton jButtonQuery = new JButton("查询");
private JTextField tb_id = new JTextField();
private JLabel label_username = new JLabel("用户名");
private JTextField tb_username = new JTextField();
private JLabel labelC_username = new JLabel("用户名");
private JTextField con_username = new JTextField();
private JLabel label_password = new JLabel("密码");
private JTextField tb_password = new JTextField();
private JLabel label_pic = new JLabel("头像");
private JTextField tb_pic = new JTextField();
private JLabel label_name = new JLabel("名称");
private JTextField tb_name = new JTextField();
private JLabel labelC_name = new JLabel("名称");
private JTextField con_name = new JTextField();
private JLabel label_gender = new JLabel("性别");
private JComboBox tb_gender = new JComboBox();
private JLabel labelC_gender = new JLabel("性别");
private JComboBox con_gender = new JComboBox();
private JLabel label_tele = new JLabel("电话");
private JTextField tb_tele = new JTextField();
private JLabel label_numb = new JLabel("编号");
private JTextField tb_numb = new JTextField();
}
相关知识
C#(asp.net) 宠物领养系统
宠物管理系统数据流图
宠物医院管理系统
宠物管理系统毕业设计实现
【宠物医院管理系统
【Python Django + Vue】宠物医院管理系统,一键预约挂号,智能病历管理,实时药品监控,全方位客户服务,打造宠物医疗新体验
宠物医院智能管理系统
SpringBoot+Vue宠物医院管理系统
PHMS宠物医院管理系统
【宠物医院管理系统网络版】宠物医院管理系统网络版 2009.0412
网址: C# 宠物医院管理系统 https://m.mcbbbk.com/newsview751799.html
上一篇: 【宠物管理系统数据库设计】:从业 |
下一篇: Java/SSM爱宠宠物商店管理 |