Java swing jdbc DBUtils收银管理系统,商品管理系统【诗书画唱】
用了皮肤包,有时界面按钮颜色用代码改变不了。


以下都是按我自己写的顺序布局的内容(按顺序做是一个很好的习惯):
可以把多个表查出到一个界面,多个功能整合到一个界面等。



select * from sp a inner join sp_type b on a.sp_typeid=b.sp_typeid inner join gouwuche c on a.sp_id=c.sp_id

select * from sp a inner join sp_type b on a.sp_typeid=b.sp_typeid
create database shouyin
create table yh_Type(
yh_typeid int primary key identity(1,1),
yh_typename varchar(100) not null
);
insert into yh_Type values('普通用户');
insert into yh_Type values('管理员用户');
create table yonghu(
yh_ID int primary key identity(1,1),
yh_Uname varchar(30) not null unique,
yh_Pwd varchar(30) not null,
yh_Name varchar(30) not null,
yh_Age int,
yh_Sex varchar(20),
yh_Phone varchar(100),
yh_Address varchar(200),
yh_jieshao varchar(500),
yh_Q varchar(500),
yh_A varchar(500),
yh_type nvarchar(20) check(yh_type='普通用户' or yh_type='管理员用户'),
);
insert into yonghu values('1','11','诗书画唱1',21,'男','19999999999','江西','阳光帅气的男孩子','你爱好多吗?','多','普通用户');
insert into yonghu values('2','22','诗书画唱2',22,'男','29999999999','北京','阳光帅气的男孩子','你看过的书多吗?','多','普通用户');
insert into yonghu values('3','33','诗书画唱3',23,'男','39999999999','上海','阳光帅气的男孩子','你会的技能多吗?','多','普通用户');
insert into yonghu values('4','44','诗书画唱4',24,'男','49999999999','湖南','阳光帅气的男孩子','你喜欢的动漫吗?','多','普通用户');
insert into yonghu values('5','55','诗书画唱5',25,'男','59999999999','浙江','阳光帅气的男孩子','你喜欢的歌曲多吗?','多','管理员用户');
--商品类型表
create table sp_type(
sp_typeid int primary key identity(1,1),
sp_typename nvarchar(100) not null
)
insert into sp_Type values('水果');
insert into sp_Type values('零食');
insert into sp_Type values('小吃');
insert into sp_Type values('日常用品');
--商品表
create table sp(
sp_id int primary key identity(1,1),
sp_name nvarchar(50) not null unique,
sp_typeid int,
sp_price decimal(10,2),
sp_jieshao nvarchar(100)
)
insert into sp values('苹果',1,1,'好吃的苹果'),('薯片',2,1,'好香的薯片'),
('鸡柳',3,1,'好吃的鸡柳'),('牙刷',5,4,'全自动牙刷');
--购物车表
create table gouwuche(
gwc_id int primary key identity(1,1),
userid int,
sp_id int,
sp_num int
)
insert into gouwuche values(1,1,1);
select * from yh_type;
select * from yonghu;
select * from sp_type;
select * from sp;
select * from gouwuche;
drop table sp_type
drop table sp
drop table yh_type
drop table yonghu
drop table gouwuche;




package denglu;
import org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper;
public class mains {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
BeautyEyeLNFHelper.frameBorderStyle = BeautyEyeLNFHelper.FrameBorderStyle
.osLookAndFeelDecorated;
org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();
} catch (Exception e) {
}
new dengLu();
}
}



package denglu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class dengLu extends JFrame {
public static JButton dengLuAnNiu,
quXiaoAnNiu, zhuCeAnNiu,
zhaoHuiMiMaAnNiu = null;
static JComboBox xiaLaKuang = null;
public static JLabel unameWenZi,
pwdWenZi, imgJLabel,
yhTypeWenZi = null;
public static JPasswordField pwdKuang = null;
public static JTextField unameWenBenKuang = null;
public JPanel oldMianBan = null;
public dengLu() {
this.setTitle("收银管理系统");
this.setLayout(null);
this.setSize(640, 400);
this.setLocationRelativeTo(null);
unameWenZi = new JLabel("用户名");
pwdWenZi = new JLabel("密码");
yhTypeWenZi = new JLabel("用户类型");
xiaLaKuang = new JComboBox();
xiaLaKuang.addItem("普通用户");
xiaLaKuang.addItem("管理员用户");
xiaLaKuang.setBounds(180, 180, 140, 30);
yhTypeWenZi.setBounds(110, 180, 70, 30);
this.add(xiaLaKuang);
this.add(yhTypeWenZi);
unameWenZi.setBounds(110, 100, 70, 30);
pwdWenZi.setBounds(110, 140, 70, 30);
// 图片
imgJLabel = new JLabel();
imgJLabel.setBounds(30, 0, 580, 100);
imgJLabel.setIcon(new
ImageIcon("img//beijing.gif"));
oldMianBan = new JPanel();
oldMianBan.setLayout(null);
oldMianBan.setBounds(30, 0, 580, 100);
oldMianBan.add(imgJLabel);
this.add(oldMianBan);
this.add(unameWenZi);
this.add(pwdWenZi);
// JTextField_unametxt1 =
//new JTextField("1");//写死
unameWenBenKuang = new JTextField();
// 没写死
pwdKuang = new JPasswordField();
unameWenBenKuang.
setBounds(180, 100, 140, 30);
pwdKuang.setBounds(180, 140, 140, 30);
this.add(unameWenBenKuang);
this.add(pwdKuang);
dengLuAnNiu = new JButton("登录");
dengLuAnNiu.setBounds(60, 220, 100, 35);
dengLuAnNiu.addActionListener
(new shiJian(this));
quXiaoAnNiu = new JButton("取消");
quXiaoAnNiu.setBounds(450, 220, 70, 35);
quXiaoAnNiu.addActionListener
(new shiJian(this));
zhuCeAnNiu = new JButton("普通用户注册");
zhuCeAnNiu.setBounds(190, 220, 120, 35);
zhuCeAnNiu.addActionListener
(new shiJian(this));
zhaoHuiMiMaAnNiu = new JButton("找回密码");
zhaoHuiMiMaAnNiu.setBounds(330, 220, 90, 35);
zhaoHuiMiMaAnNiu.
addActionListener(new shiJian(this));
this.add(zhuCeAnNiu);
this.add(dengLuAnNiu);
this.add(quXiaoAnNiu);
this.add(zhaoHuiMiMaAnNiu);
this.setVisible(true);
}}
class shiJian implements ActionListener {
public dengLu jieShouChuangTi = null;
public shiJian(dengLu ChuangTi) {
this.jieShouChuangTi = ChuangTi;
}
@Override
public void actionPerformed
(ActionEvent arg0) {
String uname = jieShouChuangTi.
unameWenBenKuang.getText().trim();
String pwd = jieShouChuangTi.
pwdKuang.getText().trim();// 获取密码
String type = jieShouChuangTi.
xiaLaKuang.getSelectedItem().toString();
if (arg0.getActionCommand().
equals("登录")) {
if (type.equals("管理员用户")) {
String sql = "select * from yonghu "
+ "where yh_uname='" + uname
+ "' and yh_pwd='" + pwd +
"' and yh_type='" + type
+ "'";
System.out.println(sql);
ResultSet res = DBUtils.Select(sql);
try {
if (res.next()) {
new guanLiYuandengLu(uname);
jieShouChuangTi.setVisible(false);
} else {
JOptionPane.showMessageDialog(null,
"用户名或密码错误或你不是管理员用户"
+ "或用户类型选择错误");
}
} catch (SQLException e) {
e.printStackTrace();
}
} else if (type.equals("普通用户")) {
String sql = "select * from yonghu "
+ "where yh_uname='" + uname
+ "' and yh_pwd='" + pwd +
"' and yh_type='" + type
+ "'";
System.out.println(sql);
ResultSet res = DBUtils.Select(sql);
try {
if (res.next()) {
new ptYongHudengLu(uname);
jieShouChuangTi.setVisible(false);
} else {
JOptionPane.showMessageDialog(null,
"用户名或密码错误或你不是管理员用户或"
+ "用户类型选择错误");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
} else if (arg0.getActionCommand()
.equals("普通用户注册")) {
new zhuCe();
} else if (arg0.getActionCommand()
.equals("找回密码")) {
JOptionPane.showMessageDialog(null,
"点击了找回密码按钮");
new zhaoHuiMiMa();
}
else if (arg0.getActionCommand()
.equals("取消")) {
JOptionPane.showMessageDialog(null,
"点击了取消按钮");
jieShouChuangTi.setVisible(false);
}
}
}




package denglu;
import java.awt.event.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
class zhuCeShiJian implements ActionListener {
public static zhuCe jieShouChuangTi = null;
public zhuCeShiJian(zhuCe ChuangTi) {
this.jieShouChuangTi = ChuangTi;
}
@Override
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "点击了注册按钮");
String uname = jieShouChuangTi.unameKuang.getText();
String pwd1 = jieShouChuangTi.pwdKuang1.getText();
String pwd2 = jieShouChuangTi.pwdKuang2.getText();
String name = jieShouChuangTi.nameKuang.getText();
String age = jieShouChuangTi.xiaLaKuang.
getSelectedItem()
.toString();
String sex = "男";
if (jieShouChuangTi.rb2.isSelected()) {
sex = "女";
}
String StringPhone = jieShouChuangTi.
phoneKuang.getText();
ArrayList<String> jiHe = new ArrayList<String>();
if (jieShouChuangTi.diZhiFuxuanKaung1.isSelected()) {
jiHe.add(jieShouChuangTi.diZhiFuxuanKaung1.getText());
}
if (jieShouChuangTi.diZhiFuxuanKaung2.isSelected()) {
jiHe.add(jieShouChuangTi.diZhiFuxuanKaung2.getText());
}
if (jieShouChuangTi.diZhiFuxuanKaung3.isSelected()) {
jiHe.add(jieShouChuangTi.diZhiFuxuanKaung3.getText());
}
String StringAddress = " ";
for (int i = 0; i < jiHe.size(); i++) {
StringAddress += jiHe.get(i) + " ";
}
String StringJieShao = jieShouChuangTi.
jieshaoWenBenYu.getText();
String String_Q = jieShouChuangTi.wenTiKaung.getText();
String String_A = jieShouChuangTi.daAnKuang.getText();
if (!pwd1.equals(pwd2)) {
JOptionPane.showMessageDialog(null,
"两次密码输入不一致, 请重新输入");
return;
}
String sql = "select * from "
+ "yonghu where yh_uname='"
+ uname + "'";
ResultSet res_select_uname = DBUtils.
Select(sql);
try {
if (res_select_uname.next()) {
JOptionPane.showMessageDialog(null,
"用户名已经存在了,请重新输入");
return;
}
} catch (SQLException e) {
e.printStackTrace();
}
String sqlInsert = "insert into yonghu(yh_uname,"
+ "yh_pwd,yh_Name"
+ ",yh_age,yh_sex,yh_phone,yh_address"
+ ",yh_jieshao,yh_Q,yh_A,yh_type) values('"
+ uname+ "','"+ pwd1 + "','"
+ name + "'," + age + ",'" + sex
+ "','" + StringPhone + "','" + StringAddress
+ "','"+ StringJieShao + "','" + String_Q + "','"
+ String_A + "'"
+ ",'普通用户')";
if (DBUtils.ZSG(sqlInsert)) {
JOptionPane.showMessageDialog(null, "注册成功");
} else {
JOptionPane.showMessageDialog(null,
"出现了未知的错误,请重试");
}
}
}
public class zhuCe extends JFrame {
static JCheckBox diZhiFuxuanKaung1,
diZhiFuxuanKaung2,
diZhiFuxuanKaung3 = null;
public static JButton zhuCeAnNiu = null;
static JComboBox xiaLaKuang = null;
public static JPasswordField pwdKuang1,
pwdKuang2 = null;
static JTextArea jieshaoWenBenYu = null;
public static JTextField unameKuang, nameKuang,
phoneKuang, jieShaoKuang, wenTiKaung,
daAnKuang = null;
public static JLabel unameWenZi, pwdWenZi,
queRenPwdWenZi,
nameWenZi, ageWenZi, sexWenZi,
phoneWenZi, addressWenZi, jieShaoWenZi,
QWenZi, AWenZi = null;
static JRadioButton rb1, rb2 = null;
public zhuCe() {
this.setLayout(null);
this.setSize(600, 700);
this.setTitle("注册界面(只有普通用户才要注册)");
this.setLocationRelativeTo(null);
unameWenZi = new JLabel("用户名");
pwdWenZi = new JLabel("用户密码");
queRenPwdWenZi = new JLabel("确认密码");
nameWenZi = new JLabel("真实姓名");
ageWenZi = new JLabel("年龄");
sexWenZi = new JLabel("性别");
phoneWenZi = new JLabel("电话");
addressWenZi = new JLabel("地址");
jieShaoWenZi = new JLabel("介绍");
QWenZi = new JLabel("问题");
AWenZi = new JLabel("答案");
unameWenZi.setBounds(80, 100, 70, 30);
pwdWenZi.setBounds(80, 140, 70, 30);
queRenPwdWenZi.setBounds(80, 180, 70, 30);
nameWenZi.setBounds(80, 220, 70, 30);
ageWenZi.setBounds(80, 260, 70, 30);
sexWenZi.setBounds(80, 300, 70, 30);
phoneWenZi.setBounds(80, 340, 70, 30);
addressWenZi.setBounds(80, 380, 70, 30);
jieShaoWenZi.setBounds(80, 420, 70, 30);
QWenZi.setBounds(80, 460, 70, 30);
AWenZi.setBounds(80, 500, 70, 30);
this.add(unameWenZi);
this.add(pwdWenZi);
this.add(queRenPwdWenZi);
this.add(nameWenZi);
this.add(ageWenZi);
this.add(sexWenZi);
this.add(phoneWenZi);
this.add(addressWenZi);
this.add(jieShaoWenZi);
this.add(QWenZi);
this.add(AWenZi);
unameKuang = new JTextField();
pwdKuang1 = new JPasswordField();
pwdKuang2 = new JPasswordField();
nameKuang = new JTextField();
rb1 = new JRadioButton("男", true);
rb2 = new JRadioButton("女");
this.add(rb1);
this.add(rb2);
xiaLaKuang = new JComboBox();
ButtonGroup anNiuFenZu = new ButtonGroup();
//anNiuFenZu按钮分组
anNiuFenZu.add(rb1);
anNiuFenZu.add(rb2);
for (int i = 18; i < 60; i++) {
xiaLaKuang.addItem(i);
}
this.add(xiaLaKuang);
phoneKuang = new JTextField();
diZhiFuxuanKaung1 = new JCheckBox("中国", true);
diZhiFuxuanKaung2 = new JCheckBox("日本");
diZhiFuxuanKaung3 = new JCheckBox("美国");
wenTiKaung = new JTextField();
daAnKuang = new JTextField();
jieshaoWenBenYu = new JTextArea();
jieshaoWenBenYu.setColumns(8);
jieshaoWenBenYu.setRows(4);
jieshaoWenBenYu.setLineWrap(true);
this.add(jieshaoWenBenYu);
unameKuang.setBounds(160, 100, 140, 30);
pwdKuang1.setBounds(160, 140, 140, 30);
pwdKuang2.setBounds(160, 180, 140, 30);
nameKuang.setBounds(160, 220, 140, 30);
xiaLaKuang.setBounds(160, 260, 140, 30);
rb1.setBounds(160, 300, 50, 30);
rb2.setBounds(220, 300, 50, 30);
phoneKuang.setBounds(160, 340, 140, 30);
diZhiFuxuanKaung1.setBounds(160, 380, 80, 30);
diZhiFuxuanKaung2.setBounds(240, 380, 70, 30);
diZhiFuxuanKaung3.setBounds(320, 380, 70, 30);
jieshaoWenBenYu.setBounds(160, 420, 140, 40);
wenTiKaung.setBounds(160, 460, 140, 30);
daAnKuang.setBounds(160, 500, 140, 30);
this.setLocationRelativeTo(null);
this.add(unameKuang);
this.add(pwdKuang1);
this.add(pwdKuang2);
this.add(nameKuang);
this.add(phoneKuang);
this.add(wenTiKaung);
this.add(daAnKuang);
this.add(diZhiFuxuanKaung1);
this.add(diZhiFuxuanKaung2);
this.add(diZhiFuxuanKaung3);
zhuCeAnNiu = new JButton("确认注册");
zhuCeAnNiu.addActionListener
(new zhuCeShiJian(this));
zhuCeAnNiu.setBounds(160, 580, 120, 30);
this.add(zhuCeAnNiu);
this.setVisible(true);
}
}





package denglu;
import java.awt.Color;
import java.awt.event.*;
import java.sql.*;
import javax.swing.*;
class zhaoHuiMiMaShiJian implements
FocusListener, ActionListener {
public zhaoHuiMiMa jieShouChuangTi = null;
public zhaoHuiMiMaShiJian(zhaoHuiMiMa ChuangTi) {
this.jieShouChuangTi = ChuangTi;
}
@Override
public void actionPerformed(ActionEvent arg0) {
if(arg0.getActionCommand()
.equals("确认且回答正确后跳转重置密码页面")){
String uname = jieShouChuangTi.unameWenBenKuang
.getText().trim();
String wenTi = jieShouChuangTi.wenTiWenBenKuang
.getText().trim();
String daAn = jieShouChuangTi.daAnWenBenKuang
.getText().trim();
String sql = "select * from yonghu where "
+ "yh_Uname='" + uname
+ "'and yh_Q='" + wenTi + "'and yh_A='" + daAn
+ "'";
ResultSet res = DBUtils.Select(sql);
try {
if (res.next()) {
new chongZhiMiMa();
gongjvClass.uname = uname;
} else {
JOptionPane.showMessageDialog(null, "答案输入错误");
jieShouChuangTi.daAnWenZi2.setText("答案输入错误");
jieShouChuangTi.daAnWenZi2.setForeground(Color.red);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
else if (arg0.getActionCommand()
.equals("取消")) {
JOptionPane.showMessageDialog(null,
"点击了取消按钮");
jieShouChuangTi.setVisible(false);
}
}
@Override
public void focusGained(FocusEvent arg0) {
}
@Override
public void focusLost(FocusEvent arg0) {
String uname = jieShouChuangTi.unameWenBenKuang.
getText().trim();
String sql = "select * from yonghu where yh_uname='"
+ uname + "'";
ResultSet res = DBUtils.Select(sql);
try {
if (res.next()) {
String wenTi = res.getString("yh_Q");
jieShouChuangTi.wenTiWenBenKuang.setText(wenTi);
jieShouChuangTi.unameWenZi2.setText("");
} else {
jieShouChuangTi.unameWenZi2.setText("用户名错误");
jieShouChuangTi.unameWenZi2.setForeground(Color.red);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class zhaoHuiMiMa extends JFrame {
static JButton queRenAnNiu, quXiaoAnNiu = null;
static JLabel unameWenZi1, wenTiWenZi1,
daAnWenZi1 = null;
static JLabel unameWenZi2, wenTiWenZi2,
daAnWenZi2 = null;
static JTextField unameWenBenKuang, wenTiWenBenKuang,
daAnWenBenKuang = null;
public zhaoHuiMiMa() {
this.setTitle("找回密码页面");
this.setLayout(null);
this.setSize(500, 500);
this.setLocationRelativeTo(null);
unameWenZi1 = new JLabel("用户名");
wenTiWenZi1 = new JLabel("问题");
daAnWenZi1 = new JLabel("答案");
unameWenZi2 = new JLabel("请输入用户名");
daAnWenZi2 = new JLabel("请输入答案");
unameWenBenKuang = new JTextField();
wenTiWenBenKuang = new JTextField();
daAnWenBenKuang = new JTextField();
unameWenBenKuang.addFocusListener
(new zhaoHuiMiMaShiJian(this));
unameWenZi2.setForeground(Color.blue);
daAnWenZi2.setForeground(Color.blue);
unameWenZi1.setBounds(100, 100, 100, 30);
wenTiWenZi1.setBounds(100, 140, 100, 30);
daAnWenZi1.setBounds(100, 180, 100, 30);
unameWenZi2.setBounds(310, 105, 100, 30);
daAnWenZi2.setBounds(310, 185, 100, 30);
this.add(unameWenZi1);
this.add(wenTiWenZi1);
this.add(daAnWenZi1);
this.add(unameWenZi2);
this.add(daAnWenZi2);
unameWenBenKuang.setBounds(210, 100, 100, 30);
wenTiWenBenKuang.setBounds(210, 140, 100, 30);
wenTiWenBenKuang.setEditable(false);
daAnWenBenKuang.setBounds(210, 180, 100, 30);
this.add(unameWenBenKuang);
this.add(wenTiWenBenKuang);
this.add(daAnWenBenKuang);
queRenAnNiu = new JButton("确认且回答正确后跳转重置密码页面");
queRenAnNiu.addActionListener(new zhaoHuiMiMaShiJian(this));
quXiaoAnNiu = new JButton("取消");
quXiaoAnNiu.addActionListener(new zhaoHuiMiMaShiJian(this));
queRenAnNiu.setBounds(10, 230, 290, 30);
quXiaoAnNiu.setBounds(340, 230, 70, 30);
this.add(queRenAnNiu);
this.add(quXiaoAnNiu);
this.setVisible(true);
}
}



package denglu;
import java.awt.event.*;
import javax.swing.*;
public class chongZhiMiMa extends JFrame {
static JButton QuRenAnNiu = null;
static JLabel tiShiWenZi1, tiShiWenZi2 = null;
static JPasswordField miMaKuang1, miMaKuang2 = null;
public chongZhiMiMa() {
this.setLayout(null);
this.setTitle("重置密码页面");
this.setSize(500, 500);
this.setLocationRelativeTo(null);
this.setVisible(true);
//tiShiWenZi提示文字
tiShiWenZi1 = new JLabel("请输入密码");
tiShiWenZi2 = new JLabel("请再次输入密码");
tiShiWenZi1.setBounds(100, 100, 100, 30);
this.add(tiShiWenZi1);
tiShiWenZi2 = new JLabel("请再次输入密码");
tiShiWenZi2.setBounds(100, 140, 100, 30);
this.add(tiShiWenZi2);
QuRenAnNiu = new JButton("确认修改");
QuRenAnNiu.setBounds(100, 290, 150, 30);
this.add(QuRenAnNiu);
QuRenAnNiu.addActionListener(new shijian_queRenXiuGai(this));
miMaKuang1 = new JPasswordField();
miMaKuang2 = new JPasswordField();
miMaKuang1.setBounds(280, 100, 100, 30);
miMaKuang2.setBounds(280, 140, 100, 30);
this.add(miMaKuang1);
this.add(miMaKuang2);
}
}
class shijian_queRenXiuGai implements ActionListener {
static chongZhiMiMa jieShouChuangTi = null;
public shijian_queRenXiuGai(chongZhiMiMa ChuangTi) {
this.jieShouChuangTi = ChuangTi;
}
@Override
public void actionPerformed(ActionEvent arg0) {
if (arg0.getActionCommand().equals("确认修改")) {
JOptionPane.showMessageDialog(null, "点击了修改密码按钮");
String pwd1 = jieShouChuangTi.miMaKuang1.getText();
String pwd2 = jieShouChuangTi.miMaKuang2.getText();
if (pwd1.equals(pwd2)) {
String uname = gongjvClass.uname;
String sql = "update yonghu set yh_pwd='" + pwd1
+ "' where yh_uname= '" + uname + "'";
if (DBUtils.ZSG(sql)) {
JOptionPane.showMessageDialog(null, "密码重置成功");
} else {
JOptionPane.showMessageDialog(null, "出现了未知的错误,请重试!");
}
} else {
JOptionPane.showMessageDialog(null, "两次密码输入不一致");
return;
}
}
}
}



