结构:
自己写的代码:
drop table yonghu, shangpin,dingdanxiangqing,sp_Type
create table yonghu(--创建用户表
yh_ID int primary key identity(1,1),
yh_Uname varchar(30) not null,
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_AQ varchar(500)
);
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 varchar(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 shangpin(--商品表
sp_ID int primary key identity(1,1),
sp_Name varchar(100) not null,
sp_Price decimal(10,2) not null,
sp_TypeID int,
sp_Jieshao varchar(300)
);
insert into shangpin values('苹果',12,1,'好吃的苹果');
insert into shangpin values('香蕉',2,1,'好吃的香蕉');
insert into shangpin values('橘子',4,1,'好吃的橘子');
insert into shangpin values('娃哈哈',3,2,'好吃营养好');
insert into shangpin values('牙刷',5,4,'全自动牙刷');
drop table dingdan
create table dingdan(
dingdan_ID int primary key identity(1,1),
yh_ID int,
dingdanxiangqing_ID int
)
insert into dingdan values(1,1);
insert into dingdan values(1,2);
insert into dingdan values(1,3);
insert into dingdan values(2,4);
insert into dingdan values(2,5);
insert into dingdan values(2,6);
insert into dingdan values(3,7);
create table dingdanxiangqing(
dingdanxiangqing_ID int primary key identity(1,1),
sp_ID int,
sp_num int
)
insert into dingdanxiangqing values(1,3);
insert into dingdanxiangqing values(2,4);
insert into dingdanxiangqing values(1,5);
insert into dingdanxiangqing values(3,5);
insert into dingdanxiangqing values(4,2);
insert into dingdanxiangqing values(5,1);
insert into dingdanxiangqing values(3,3);
insert into dingdanxiangqing values(4,3);
select * from yonghu;
select * from shangpin;
select * from sp_Type;
package denglu;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtils {
private static Connection con = null;
private static ResultSet res = null;
private static Statement sta = null;
static {
try {
Class.forName("com.microsoft.sqlserver." + "jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getCon() {
if (con == null) {
try {
con = DriverManager.getConnection(
"jdbc:sqlserver://DESKTOP-49FTFSP;"
+ "databaseName=yonghu", "sa", "1234abcd");
} catch (SQLException e) {
e.printStackTrace();
}
}
return con;
}
public static ResultSet Select(String sql) {
/* Select为用于查找的静态方法 */
con = getCon();
try {
sta = con.createStatement();
res = sta.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
return res;
}
public static boolean ZSG(String sql) {
/* ZXG为用于增加(Z)或修改(G)或删除(S)的静态方法,命名不可太长不然这里会不管用 */
boolean b = false;
con = getCon();
try {
sta = con.createStatement();
int num = sta.executeUpdate(sql);
if (num > 0) {
b = true;
}
} catch (SQLException e) {
e.printStackTrace();
}
return b;
}
}
package denglu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
public class denglu extends JFrame {
public static JButton btn_dl, btn_qx, btn_zc = null;
//画窗体
public static JLabel lb_uname, lb_pwd = null;
public static JPasswordField pwd1 = null;
public static JTextField JTextField_unametxt1 = null;
public denglu() {
// 窗体必写的5句话
this.setLayout(null);
this.setSize(440, 400);
this.setLocationRelativeTo(null);
lb_uname = new JLabel("用户名:");
lb_pwd = new JLabel("密码");
lb_uname.setBounds(100, 100, 70, 30);
lb_pwd.setBounds(100, 140, 70, 30);
this.add(lb_uname);
this.add(lb_pwd);
JTextField_unametxt1 = new JTextField();
pwd1 = new JPasswordField();
JTextField_unametxt1.setBounds(180, 100, 140, 30);
pwd1.setBounds(180, 140, 140, 30);
this.add(JTextField_unametxt1);
this.add(pwd1);
btn_dl = new JButton("登录");
btn_dl.addActionListener(new shijian_dl(this));
btn_dl.setBounds(140, 180, 70, 35);
btn_qx = new JButton("取消");
btn_qx.addActionListener(new shijian_dl(this));
btn_qx.setBounds(230, 180, 70, 35);
btn_zc = new JButton("注册 ");
btn_zc.setBounds(330, 100, 70, 20);
this.add(btn_zc);
this.add(btn_dl);
this.add(btn_qx);
// btn_qx.setBounds(arg0, arg1, arg2, arg3);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
// 点击按钮是触发事件,所以加点击事件
// 因为事件中药使用窗体,将窗体传过来
class shijian_dl implements ActionListener {
public denglu dd = null;
public shijian_dl(denglu d) {
dd = d;
}
@Override
public void actionPerformed(ActionEvent arg0) {
// JOptionPane.showMessageDialog(null, "点击");
if (arg0.getActionCommand().equals("登录")) {
String uname = dd.JTextField_unametxt1.getText().trim();// 获取用户输入的用户名
String pwd = dd.pwd1.getText().trim();// 获取密码
String sql = "select * from yonghu where yh_uname='" + uname
+ "'and yh_pwd='" + pwd + "'";
ResultSet res = DBUtils.Select(sql);
try {// 如果res中有数据,登录成功,否则登录失败
if (res.next()) {
JOptionPane.showMessageDialog(null, "登录成功");
new zhujiemian();
dd.setVisible(false);
} else {
JOptionPane.showMessageDialog(null, "用户名或密码错误");
}
// 项目中,登录,注册,找回密码
// 如果res中有数据,登录成功,否则登录失败
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 点击按钮后会做什么事
// 要登录,首先要获取窗体上的用户名和密码
// 去数据库里查一下用户输入的用户名和密码数据库中存在吗?
// 如果数据库中存在和用户输入的用户名和密码一致
// 说明数据库有这条数据库,用户就可以登录
} else if (arg0.getActionCommand().equals("注册")) {
// JOptionPane . showMessageDialog(null, "点击了往册按钮");
new zhuce();
// dd. setVisible(false);
}
}
}
package denglu;
public class main {
public static void main(String[] args) {
new denglu();
new zhuce();
new zhaohuimima();
}
}
package denglu;
import javax.swing.JFrame;
public class zhaohuimima extends JFrame {
// 窗体必写的5句话
public zhaohuimima() {
this.setLayout(null);
this.setSize(700, 700);
this.setTitle("找回密码界面");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
package denglu;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JRadioButton;
import javax.swing.JTextArea;
import javax.swing.JTextField;
//再加一个注册的事件类,点击事件
class shijian_zhuce implements ActionListener {
public static zhuce zc = null;
public shijian_zhuce(zhuce z) {
this.zc = z;
}
@Override
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null, "点击了注册按钮");
// 点击往册按钮后要做什么事?
// 得到用户输入的用户名和真实姓名
String String_uname = zc.JTextField_uname.getText();// 得到用户名
String String_pwd = zc.JPasswordField_pwd1.getText();// 得到密码
String String_pwd1 = zc.JPasswordField_pwd2.getText();// 得到确认密码
String String_TureName = zc.JTextField_name.getText();// 得到用户名
String String_age = zc.JTextField_age.getText();// 得到年龄
String String_sex = zc.JTextField_sex.getText();// 得到性别
String String_phone = zc.JTextField_phone.getText();// 得到电话号码
String String_address = zc.JTextField_address.getText();// 得到地址
String String_jieshao = zc.JTextArea_jieshao.getText();// 得到地址
String String_Q = zc.JTextField_Q.getText();// 得到地址
String String_A = zc.JTextField_A.getText();// 得到地址
// 判断两次输入的秘密是否一致
if (!String_pwd.equals(String_pwd1)) {
JOptionPane.showMessageDialog(null, "两次密码输入不一致, 请重新输入");
return;
}
// 加一个判断,数据库里查询一下这个用户名存不存在
String sql_panduanuname = "select * from yonghu where yh_uname='"
+ String_uname + "'";
ResultSet res_select_uname = DBUtils.Select(sql_panduanuname);
try {
if (res_select_uname.next()) {
// 说明这个用户已经存在了,如果已经存在了,提示一下,之后return
// 如果用户名已经存在了,还有住数据库添加内容的必要吗?
JOptionPane.showMessageDialog(null, "用户名已经存在了,请重新输入");
return;
}
} catch (SQLException e) {
e.printStackTrace();
}
//
// yh_Uname ,yh_Pwd ,yh_Name ,yh_Age ,yh_Sex ,yh_Phone ,yh_Address
// ,yh_Jieshao
String sql = "insert into yonghu values('" + String_uname + "','"
+ String_pwd + "','"
+ String_TureName + "'," + String_age + ",'" + String_sex
+ "','" + String_phone + "','" + String_address + "','"
+ String_jieshao + "','" + String_Q + "','" + String_A + "'"
+ ")";
if (DBUtils.ZSG(sql)) {
JOptionPane.showMessageDialog(null, "注册成功");
} else {
JOptionPane.showMessageDialog(null, "出现了未知的错误,请重试");
}
// 如果判断了用户名是唯一的,并且两次秘密输入-致,就提示用户数输入真实姓名
// 1.先获取用户输入的用户名和密码
// 2.判断两次输入的秘密是否-致
}
}
public class zhuce extends JFrame {
public static JButton btn_zhuce = null;
public static JRadioButton btn1, btn2 = null;
public static JComboBox com_age = null;
public static JPasswordField JPasswordField_pwd1,
JPasswordField_pwd2 = null;
public static JTextArea jta_adress, jta_jieshao = null;
/* JTextArea类是一 个显示纯文本的多行(DuoHang)区域。 */
static JTextArea JTextArea_jieshao = null;
public static JTextField JTextField_uname, JTextField_name,
JTextField_phone, JTextField_age, JTextField_sex,
JTextField_address, JTextField_jieshao, JTextField_Q,
JTextField_A = null;
public static JLabel lb_uname, lb_pwd, lb_qrpwd, lb_name, lb_age, lb_sex,
lb_phone, lb_address, lb_jieshao, lb_Q, lb_A = null;
public zhuce() {
// 窗体必写的5句话
this.setLayout(null);
this.setSize(400, 700);
this.setTitle("注册界面");
this.setLocationRelativeTo(null);
lb_uname = new JLabel("用户名");
lb_pwd = new JLabel("用户密码");
lb_qrpwd = new JLabel("确认密码");
lb_name = new JLabel("真实姓名");
lb_age = new JLabel("年龄");
lb_sex = new JLabel("性别");
lb_phone = new JLabel("电话");
lb_address = new JLabel("地址");
lb_jieshao = new JLabel("介绍");
lb_Q = new JLabel("问题");
lb_A = new JLabel("答案");
lb_uname.setBounds(80, 100, 70, 30);
lb_pwd.setBounds(80, 140, 70, 30);
lb_qrpwd.setBounds(80, 180, 70, 30);
lb_name.setBounds(80, 220, 70, 30);
lb_age.setBounds(80, 260, 70, 30);
lb_sex.setBounds(80, 300, 70, 30);
lb_phone.setBounds(80, 340, 70, 30);
lb_address.setBounds(80, 380, 70, 30);
lb_jieshao.setBounds(80, 420, 70, 30);
lb_Q.setBounds(80, 460, 70, 30);
lb_A.setBounds(80, 500, 70, 30);
this.add(lb_uname);
this.add(lb_pwd);
this.add(lb_qrpwd);
this.add(lb_name);
this.add(lb_age);
this.add(lb_sex);
this.add(lb_phone);
this.add(lb_address);
this.add(lb_jieshao);
this.add(lb_Q);
this.add(lb_A);
JTextField_uname = new JTextField();
JTextField_name = new JTextField();
JPasswordField_pwd1 = new JPasswordField();
JPasswordField_pwd2 = new JPasswordField();
JTextField_age = new JTextField();
JTextField_sex = new JTextField();
JTextField_phone = new JTextField();
JTextField_address = new JTextField();
JTextField_Q = new JTextField();
JTextField_A = new JTextField();
JTextArea_jieshao = new JTextArea();
JTextArea_jieshao.setColumns(8);
JTextArea_jieshao.setRows(4);
JTextArea_jieshao.setLineWrap(true);
this.add(JTextArea_jieshao);
JTextField_uname.setBounds(160, 100, 140, 30);
JPasswordField_pwd1.setBounds(160, 140, 140, 30);
JPasswordField_pwd2.setBounds(160, 180, 140, 30);
JTextField_name.setBounds(160, 220, 140, 30);
JTextField_age.setBounds(160, 260, 140, 30);
JTextField_sex.setBounds(160, 300, 140, 30);
JTextField_phone.setBounds(160, 340, 140, 30);
JTextField_address.setBounds(160, 380, 140, 30);
JTextArea_jieshao.setBounds(160, 420, 140, 40);
JTextField_Q.setBounds(160, 460, 140, 30);
JTextField_A.setBounds(160, 500, 140, 30);
this.setLocationRelativeTo(null);
this.add(JTextField_uname);
this.add(JPasswordField_pwd1);
this.add(JPasswordField_pwd2);
this.add(JTextField_name);
this.add(JTextField_age);
this.add(JTextField_sex);
this.add(JTextField_phone);
this.add(JTextField_address);
this.add(JTextField_Q);
this.add(JTextField_A);
btn_zhuce = new JButton("确认注册");
btn_zhuce.addActionListener(new shijian_zhuce(this));
btn_zhuce.setBounds(100, 580, 120, 30);
this.add(btn_zhuce);
// this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
package denglu;
import javax.swing.JFrame;
public class zhujiemian extends JFrame {
// 窗体必写的5句话
public zhujiemian() {
this.setLayout(null);
this.setSize(700, 700);
this.setTitle("主界面");
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
}
实现运行效果:
/*这里的用户名为数据库中的yh_Name,加了不可重名的判断条件等*/