因为代码较多,如果有需要可以找我拿压缩包,我会将全部(包括图片)打包送你哦
默认包中MainText类——Main函数主方法:
//引包
import javax.swing.*;
import pane._7_UserPane;
import view._1_LoginFrame;
import view._2_MainFrame;
public class MainText {
public static void main(String[] args) {
new _1_LoginFrame();
}
}
view包中的LoginFrame类:登录页面:
package view;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import dao.UserDao;
import vo.User;
import java.sql.*;//操作数据库
//窗体的默认布局是边界布局管理器
//面板的默认布局是流式布局管理器
public class _1_LoginFrame extends JFrame implements ActionListener{//将整个类作为监听器
//面板
JPanel jp1,jp2,jp3;
//标签
JLabel labimg,labusr,labpwd,labrole;
//文本框
JTextField jtf;
//密码框
JPasswordField jpf;
//按钮
JButton btnlog,btnclear;
//复选按钮
JRadioButton jrblog,jrbshouyin;
public _1_LoginFrame() {
jp1 = new JPanel();
jp2 = new JPanel();
jp3 = new JPanel();
//设置收银系统登录页面的上面的图片---------(图片添加到标签上进行插入)
labimg = new JLabel();
labimg.setIcon(new ImageIcon("src/images/top.jpg"));
labimg.setPreferredSize(new Dimension(536,148));//设置图片的大小
labusr = new JLabel("用户名");
labpwd = new JLabel("密码");
labrole = new JLabel("角色");
jtf = new JTextField(12);
jpf = new JPasswordField(12);
btnlog = new JButton("登录");
btnlog.addActionListener(this);
btnclear = new JButton("取消");
btnclear.addActionListener(this);
jrblog = new JRadioButton("管理员",true);//true表示按钮一出现就会被选中
jrbshouyin = new JRadioButton("收银员");
jp1.add(labimg);
add(jp1,"North");
//jp2的面板设置为空(面板设置为空的话,就可以自定义面板的布局,根据设定的位置进行设置布局)
jp2.setLayout(null);
labusr.setBounds(71, 17, 53, 27);//用户名
labpwd.setBounds(71, 56, 48, 23);//密码
jtf.setBounds(156, 20, 145, 22);//文本框
jpf.setBounds(156, 57, 145, 24);//密码框
labrole.setBounds(71, 85, 53, 38);//角色
jrblog.setBounds(155, 96, 79, 21);//管理员
jrbshouyin.setBounds(251, 96, 75, 17);//收银员
//将组件添加到jp2面板上
jp2.add(labusr);
jp2.add(labpwd);
jp2.add(jtf);
jp2.add(labpwd);
jp2.add(jpf);
jp2.add(labrole);
jp2.add(jrblog);
jp2.add(jrbshouyin);
//将jp2面板添加到窗体上,并设置为中心
add(jp2,"Center");
jp3.add(btnlog);
jp3.add(btnclear);
add(jp3,"South");
//设置不允许改变窗口的大小
this.setResizable(false);
this.setBounds(300, 200, 480, 400);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//1.获取用户的输入
String id = jtf.getText();
String pwd = new String(jpf.getPassword());
if(e.getSource() == btnlog) {
/*
//2.连接数据库
Connection conn = DBUtil.open();
//3.查询数据库的信息
String sql = "select * from user where id = ? and pwd = ? ";
PreparedStatement psmt = conn.prepareStatement(sql);
psmt.setString(1, id);
psmt.setString(2, pwd);
ResultSet rs = psmt.executeQuery();
if(rs.next())
JOptionPane.showMessageDialog(null, "登录成功");
else
JOptionPane.showMessageDialog(null, "登录失败");
*/
//2.调用方法,查询数据
UserDao ud = new UserDao();
User u = ud.findById(id);
if(u!=null) {
if(pwd.equals(u.getPwd())) {
this.dispose();
new _2_MainFrame();
JOptionPane.showMessageDialog(null, "登录成功");
}else
JOptionPane.showMessageDialog(null, "密码错误");
}else
JOptionPane.showMessageDialog(null, "用户名错误");
}
if(e.getSource()==btnclear) {
jtf.setText("");
jpf.setText("");
jtf.requestFocusInWindow();
}
}
}
view包中的MainFrame类:登录成功后的页面:
package view;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
//引包
import pane._0_MainPane;
import pane._2_CashierPane;
import pane._6_MemberPane;
import pane._7_UserPane;
import tools.ShowTime;
public class _2_MainFrame extends JFrame implements ActionListener{
//面板
JPanel jpnor,jpsou,jpcen,jpwest;//分别为上,下,中,左
//标签
JLabel labup,labcen,labwel,labtime,labadmin;
//按钮
JButton btn1, btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9;
//将创建的卡片对象写在构造方法的外面,这样下面超出方法的 actionPerformed方法就可以正常识别
CardLayout card = new CardLayout();
public _2_MainFrame() {
//创建面板
jpnor = new JPanel();
jpsou = new JPanel();
jpcen = new JPanel();
jpwest = new JPanel();
//创建标签
labup = new JLabel(new ImageIcon("src/images/banner.jpg"));
labcen = new JLabel();
labwel = new JLabel("欢迎光临超市收银系统");
labtime = new JLabel();
labadmin = new JLabel("管理员");
ShowTime st = new ShowTime();
labtime = st.getTimeLabel();
btn1 = new JButton(new ImageIcon("src/images/1.jpg"));
btn2 = new JButton(new ImageIcon("src/images/2.jpg"));
btn3 = new JButton(new ImageIcon("src/images/3.jpg"));
btn3.addActionListener(this);
btn4 = new JButton(new ImageIcon("src/images/4.jpg"));
btn5 = new JButton(new ImageIcon("src/images/5.jpg"));
btn6 = new JButton(new ImageIcon("src/images/6.jpg"));
btn6.addActionListener(this);
btn7 = new JButton(new ImageIcon("src/images/7.jpg"));
btn7.addActionListener(this);
btn8 = new JButton(new ImageIcon("src/images/8.jpg"));
btn9 = new JButton(new ImageIcon("src/images/9.jpg"));
jpnor.add(labup);
add(jpnor,"North");
//设置jpwest面板的布局是网格布局
jpwest.setLayout(new GridLayout(9,1));
jpwest.add(btn1);
jpwest.add(btn2);
jpwest.add(btn3);
jpwest.add(btn4);
jpwest.add(btn5);
jpwest.add(btn6);
jpwest.add(btn7);
jpwest.add(btn8);
jpwest.add(btn9);
add(jpwest,"West");
//设置jpcen的布局为卡片布局
// jpcen.setLayout(new CardLayout());
jpcen.setLayout(card);
_0_MainPane mp = new _0_MainPane();
jpcen.add("main",mp);
add(jpcen,"Center");
_6_MemberPane mmp = new _6_MemberPane();
jpcen.add(mmp,"member");
_2_CashierPane gp = new _2_CashierPane();
jpcen.add(gp,"goods");
_7_UserPane up = new _7_UserPane();
jpcen.add(up,"user");//user为卡片的名称
//设置jpsou的布局为网格布局,并添加组件
jpsou.setLayout(new GridLayout(1,3));
jpsou.add(labwel);
jpsou.add(labtime);
jpsou.add(labadmin);
add(jpsou,"South");
this.setResizable(false);//禁止改变窗口大小
this.setBounds(300, 200, 850, 650);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==btn3) {
card.show(jpcen,"goods");
}
if(e.getSource()==btn6) {
card.show(jpcen,"member");
}
if(e.getSource()==btn7) {
card.show(jpcen,"user");
}
}
}
pane包中的MainPane类——大面板:
package pane;
import javax.swing.*;
public class _0_MainPane extends JPanel{
public _0_MainPane(){
JLabel lab = new JLabel(new ImageIcon(("src/images/guanyu.jpg")));
add(lab);
}
}
pane包中的UserPane类——用户页面(已实现增删改查的功能):
package pane;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.border.*;
import javax.swing.table.DefaultTableModel;
import service.UserService;
import vo.User;
public class _7_UserPane extends JPanel implements ActionListener{//类实现监听
//创建标签 (输入,用户名,密码,姓名,角色)
JLabel labin,labid,labpwd,labxm,labrole;
//文本框 (输入,用户名,姓名)
JTextField jtfin,jtfid,jtfxm;
//密码框
JPasswordField jpf;
//组合框
JComboBox jcb;
//按钮 (查找,添加,删除,修改,清除)
JButton btnfind,btnadd,btndel,btnupdate,btnclear;
//面板
JPanel jpleft,jpright,jpnor,jpcen,jpdown,jpone,jptwo,jpthree,jpfour,jpfive,jpsix;
//组件
JTable table;
JScrollPane jsp;
DefaultTableModel dtm;
String[] rolelist = {"管理员","收银员"};
User users ;
public _7_UserPane(){
labin = new JLabel("请输入账号或姓名");//----------------------------标签
labid = new JLabel("请输入用户名");
labpwd = new JLabel("请输入密码");
labxm = new JLabel("请输入姓名");
labrole = new JLabel("请输入角色");
jtfin = new JTextField(12);//--------------------------------文本框
jtfid = new JTextField(12);
jtfxm = new JTextField(12);
jpf = new JPasswordField(12);//------------------------------密码框
// String[] rolelist = {"管理员","收银员"};
jcb = new JComboBox<String>(rolelist);//-------------------------------------组合框
//设置组件的大小
jcb.setPreferredSize(new Dimension(135,22));
btnfind = new JButton("查询");//----------------------------按钮
btnfind.addActionListener(this);
btnadd = new JButton("添加");
btnadd.addActionListener(this);
btndel = new JButton("删除");
btndel.addActionListener(this);
btnupdate = new JButton("修改");
btnupdate.addActionListener(this);
btnclear = new JButton("清空");
btnclear.addActionListener(this);
jpleft = new JPanel();//-------------------------------------面板
jpright = new JPanel();
jpnor = new JPanel();
jpcen = new JPanel();
jpone = new JPanel();
jptwo = new JPanel();
jpthree = new JPanel();
jpfour = new JPanel();
jpfive = new JPanel();
jpsix = new JPanel();
//创建表格组件
//1.创建表格模型,在表格中使用模型保存数据
dtm = new DefaultTableModel();
//使用默认表格模型的方法添加列标题
dtm.addColumn("账号");
dtm.addColumn("密码");
dtm.addColumn("姓名");
dtm.addColumn("角色");
//创建表格,并添加到滚动面板中
table = new JTable(dtm);
table.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
//获取选中的行
int row = table.getSelectedRow();
//获取选中行的各列值
String id = (String) table.getValueAt(row, 0);
String pwd = (String) table.getValueAt(row, 1);
String uname = (String) table.getValueAt(row, 2);
String role = (String) table.getValueAt(row, 3);
//将各列值复制给右侧的文本框
jtfid.setText(id);
jpf.setText(pwd);
jtfxm.setText(uname);
jcb.setSelectedItem(role);
users = new User(id,pwd,uname,role);
}
});
jsp = new JScrollPane(table);
// jpdown = new JPanel();
// jpdown.add(jsp);
jpcen.add(jsp);
TitledBorder tb1 = BorderFactory.createTitledBorder("用户信息");
TitledBorder tb2 = BorderFactory.createTitledBorder("资料维护");
//把组件添加到面板
jpnor.add(labin);
jpnor.add(jtfin);
jpnor.add(btnfind);
jpone.add(labid);
jpone.add(jtfid);
jptwo.add(labpwd);
jptwo.add(jpf);
jpthree.add(labxm);
jpthree.add(jtfxm);
jpfour.add(labrole);
jpfour.add(jcb);
jpfive.add(btnadd);
jpfive.add(btnupdate);
jpsix.add(btndel);
jpsix.add(btnclear);
//设置布局
jpleft.setLayout(new BorderLayout());
jpright.setLayout(new GridLayout(6,2));
this.setLayout(new BorderLayout());
//把子面板添加到主面板(左右面板)上
jpleft.add(jpnor,"North");
jpleft.add(jpcen,"Center");
jpright.add(jpone);
jpright.add(jptwo);
jpright.add(jpthree);
jpright.add(jpfour);
jpright.add(jpfive);
jpright.add(jpsix);
//把左右面板添加到主面板
this.add(jpleft,"Center");
this.add(jpright,"East");
//给左右面板加边框
jpleft.setBorder(tb1);
jpright.setBorder(tb2);
}
UserService us = new UserService();
@Override
public void actionPerformed(ActionEvent e) {
// 查找用户
if(e.getSource() == btnfind) {
/* Vector<Vector<String>> vv = new Vector<Vector<String>>();
String str = jtfin.getText().trim();
if(str.equals("")) {
vv = us.find();//查找所有的记录
}else {
vv = us.find(str);
}
//在显示表之前,把原来的表中的记录清空
int row = dtm.getRowCount();//原本存在记录的行数
for(int i = 0 ; i< row ; i++) {
//每次都删除第一行(因为删除了第一行,下面的行又跑到了第一行,所以每次都删除第一行)
dtm.removeRow(0);
}
for(int i=0 ; i <vv.size() ;i++) {
Vector<String> v = vv.get(i);//查找第几行,数字从0开始,即(0为第一行)
dtm.addRow(v);
} */
showData();
}
//添加用户
if(e.getSource() == btnadd) {
String uid = jtfid.getText();
String pwd = new String(jpf.getPassword());
String uname = jtfxm.getText();
String role = (String) jcb.getSelectedItem();//将OBject强转为String
User u = new User(uid,pwd,uname,role);
boolean b =us.addUser(u);
if(b==true) {
JOptionPane.showMessageDialog(null, "添加成功");
showData();
}else
JOptionPane.showMessageDialog(null, "账号重复,添加失败");
}
//删除用户
if(e.getSource() == btndel) {
String uid = jtfid.getText();
boolean b = us.delUser(uid);
if(b==true) {
JOptionPane.showMessageDialog(null, "删除成功");
showData();
}else
JOptionPane.showMessageDialog(null, "账号不存在,删除失败");
}
/* //修改用户(先删除再添加的方法)
if(e.getSource() == btnupdate) {
String uid = jtfid.getText();
String pwd = new String(jpf.getPassword());
String uname = jtfxm.getText();
String role = (String) jcb.getSelectedItem();//将OBject强转为String
User u = new User(uid,pwd,uname,role);
int b = us.updateUser(uid, u);
if(b==1)
JOptionPane.showMessageDialog(null, "未查找到该账号,无法修改");
else if(b==3){
JOptionPane.showMessageDialog(null, "修改成功");
showData();
}
}
//修改用户(直接修改的方法)
if(e.getSource() == btnupdate) {
String uid = jtfid.getText();
String pwd = new String(jpf.getPassword());
String uname = jtfxm.getText();
String role = (String) jcb.getSelectedItem();//将OBject强转为String
User u = new User(uid,pwd,uname,role);
boolean b = us.updateUser(uid, u);
if(b==false)
JOptionPane.showMessageDialog(null, "未查找到该账号,无法修改");
else if(b==true) {
JOptionPane.showMessageDialog(null, "修改成功");
showData();
}
} */
//修改用户
if(e.getSource() == btnupdate) {
String uid = jtfid.getText();
String pwd = new String(jpf.getPassword());
String uname = jtfxm.getText();
String role = (String) jcb.getSelectedItem();//将OBject强转为String
User u = new User(uid,pwd,uname,role);
boolean b = us.updateUser(uid,users, u);
if(b==true) {
JOptionPane.showMessageDialog(null, "修改成功");
showData();
}else
JOptionPane.showMessageDialog(null, "已存在该账号,无法修改为相同的账号");
}
//清空文本框
if(e.getSource()==btnclear) {
jtfin.setText("");
jtfid.setText("");
jtfxm.setText("");
jpf.setText("");
}
//清空所有用户的信息
/* if(e.getSource()==btnclear) {
boolean b = us.clearUser();
if(b) {
JOptionPane.showMessageDialog(null, "清空成功");
showData();
}
else
JOptionPane.showMessageDialog(null, "内容为空,无法清除");
} */
}
public void showData() {
Vector<Vector<String>> vv = new Vector<Vector<String>>();
String str = jtfin.getText().trim();//trim()方法是用来删除前后多余的空格的
if(str.equals("")) {
vv = us.find();//查找所有的记录
}else {
vv = us.find(str);
}
//在显示表之前,把原来的表中的记录清空
int row = dtm.getRowCount();//原本存在记录的行数
for(int i = 0 ; i< row ; i++) {
//每次都删除第一行(因为删除了第一行,下面的行又跑到了第一行,所以每次都删除第一行)
dtm.removeRow(0);
}
for(int i=0 ; i <vv.size() ;i++) {
Vector<String> v = vv.get(i);//查找第几行,数字从0开始,即(0为第一行)
dtm.addRow(v);
}
}
}
pane包中的Member类——会员管理页面(已实现增删改查的功能):
package pane;
import java.awt.*;
import java.awt.event.*;
import java.util.Vector;
import javax.swing.*;
import javax.swing.border.TitledBorder;
import javax.swing.table.DefaultTableModel;
import service.MemberService;
import tools.DatePicker;
import vo.Member;
public class _6_MemberPane extends JPanel implements ActionListener{
//标签 (查询 ,卡号 ,姓名 ,电话 ,生日 ,积分 ,余额, 兑换 ,充值)
JLabel labfind,labcard,labname,labphone,labbirth,labjifen,labmoney,labchange,labaddmoney;
//文本框 (查询 ,卡号 ,姓名 ,电话 ,生日 ,积分 ,余额 ,充值)
JTextField jtffind,jtfcard,jtfname,jtfphone,jtfbirth,jtfjifen,jtfmoney,jtfaddmoney;
//按钮 (查询,添加会员,删除会员,修改会员,清空数据,兑换,充值)
JButton btnfind,btnadd,btndelete,btnupdate,btnclear,btnchange,btnaddmoney;
//组合框
JComboBox jcbchange;
//面板 (上下2大面板 + 上面板的两个面板 + 下面板的两个面板 + 下面板的中面板的中面板与右面板)
JPanel jpup,jpdown,jpupnor,jpupcen,jpdowncen,jpdownsou,jpdowncencen,jpdownceneast;
//再设置六个面板,每一个面板上添加一个标签和与之对应的文本框
JPanel one,two,three,four,five,six;
//组件
JTable table;
JScrollPane jsp;
DefaultTableModel dtm;
String [] gift = {"保温杯","自动牙刷","帽子","一斤鸡蛋","袜子五双","蓝牙耳机","电动车"};
int [] giftChange = {50,20,15,25,15,50,800};
Member mber ;
public _6_MemberPane() {
// TODO Auto-generated constructor stub
labfind = new JLabel("会员卡号 / 姓名 / 电话");// ----------------------------标签
labcard = new JLabel("卡号 :");
labname = new JLabel("姓名 :");
labphone = new JLabel("电话 :");
labbirth = new JLabel("生日 :");
labjifen = new JLabel("积分数:");
labmoney = new JLabel("余额:");
labchange = new JLabel("兑换:");
labaddmoney = new JLabel("充值:");
jtffind = new JTextField(12);// --------------------------------文本框
jtfcard = new JTextField(10);
jtfname = new JTextField(10);
jtfphone = new JTextField(10);
jtfbirth = new JTextField();
jtfjifen = new JTextField(10);
jtfmoney = new JTextField(10);
jtfaddmoney = new JTextField(9);
//添加日期选择框
DatePicker datePicker = new DatePicker();
jtfbirth = datePicker;// 生日文本框
jtfbirth.setColumns(10);
btnfind = new JButton("查询");// --------------------