Java超市收银系统(连接数据库实现具体功能)(源码——即搬可用)

因为代码较多,如果有需要可以找我拿压缩包,我会将全部(包括图片)打包送你哦


默认包中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 JTextFiel
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值