JAVA GUI +JDBC 实现超市管理系统完整版

需求:第一个窗口为欢迎 界面 ,点击按钮 ,会进入管理系统界面


开始界面


进入管理界面

思路:1.用可视化工具 ,首先实现图形界面 ,然后实现每个组件的具体功能 ,

2. 每一次执行操作之后,对显示水果列表的组件进行刷新。

刷新功能


private int update_UI(JPanel panel, Statement stmt, JTextPane textPane, JTextPane textPane_1,

JTextPane textPane_2, JTextPane textPane_3) throws SQLException {

panel.updateUI();//首先将其全部组件进行刷新

panel.add(textPane);

panel.add(textPane_1);

panel.add(textPane_2);

panel.add(textPane_3);//添加上基础的四个组件

Statement stmt1=stmt;//获取操作数据库的权限

String sql="select * from goods_info";

ResultSet rs=stmt1.executeQuery(sql);//执行sql语句,这条语句会返回一个Set集合,里面包含要获取的信息

int pos=21;

while(rs.next()) {//对其进行迭代

String name=rs.getString("name");

int price=rs.getInt("price");

int id=rs.getInt("id");

String unit=rs.getString("unit");//每一次获取到完整的四个数据

System.out.println(id+name+price+"/"+"unit");

JTextPane t1=new JTextPane();//创建临时按钮,设置文本,设置不可编辑

t1.setText(id+"");//填充数值

t1.setEditable(false);//设置不可被改动

t1.setFont(new Font("宋体", Font.BOLD, 12));

t1.setBorder(BorderFactory.createEtchedBorder());//设置边框

JTextPane t2=new JTextPane();

t2.setText(name);

t2.setEditable(false);

t2.setFont(new Font("宋体", Font.BOLD, 12));

t2.setBorder(BorderFactory.createEtchedBorder());

JTextPane t3=new JTextPane();

t3.setText(price+"");

t3.setEditable(false);

t3.setFont(new Font("宋体", Font.BOLD, 12));

t3.setBorder(BorderFactory.createEtchedBorder());

JTextPane t4=new JTextPane();

t4.setText(unit+"");

t4.setEditable(false);

t4.setFont(new Font("宋体", Font.BOLD, 12));

t4.setBorder(BorderFactory.createEtchedBorder());

t1.setBounds(0,pos, 100, 20);//X Y  WIDTH HEIGH

panel.add(t1);

t2.setBounds(100,pos, 100, 20);

panel.add(t2);

t3.setBounds(200,pos, 100, 20);

panel.add(t3);

t4.setBounds(300,pos, 100, 20);

panel.add(t4);

pos+=20;

}

return pos-20;

}

删除功能:

添加功能:

btnNewButton.addMouseListener(new MouseAdapter() {//提交按钮事件,比较特殊,因为不需要刷新,只要在末尾添加即可。。大概吧

@Override

public void mouseClicked(MouseEvent e) {

/*

* 当点击提交按钮时, 先判断前四个按钮 是否都有文本,

* 如果含有文本,那么就创建 四个不可改变的textPane

* 给它们对应赋值以后,放到主显示框上

*/

//获取数据

String id=textPane1.getText();

String name=textPane2.getText();

String price=textPane3.getText();

String danwei=textPane4.getText();

//判断是否为空值

if(!id.isEmpty()&&!name.isEmpty()&&!price.isEmpty()&&!danwei.isEmpty()) {//必须用是否为空判断 ==?

y_pos+=20;

System.out.println(id+"---"+name+"---"+price+"---"+danwei);

//输入正确,处理数据1、清空 输入框的数据 2、将数据存储到mysql 中3、将数据上传

textPane1.setText(null);

    textPane2.setText(null);

textPane3.setText(null);

textPane4.setText(null);

JTextPane t1=new JTextPane();//创建临时按钮,设置文本,设置不可编辑

t1.setText(id);//填充数值

t1.setEditable(false);//设置不可被改动

t1.setFont(new Font("宋体", Font.BOLD, 12));

t1.setBorder(BorderFactory.createEtchedBorder());//设置边框

JTextPane t2=new JTextPane();

t2.setText(name);

t2.setEditable(false);

t2.setFont(new Font("宋体", Font.BOLD, 12));

t2.setBorder(BorderFactory.createEtchedBorder());

JTextPane t3=new JTextPane();

t3.setText(price);

t3.setEditable(false);

t3.setFont(new Font("宋体", Font.BOLD, 12));

t3.setBorder(BorderFactory.createEtchedBorder());

JTextPane t4=new JTextPane();

t4.setText(danwei);

t4.setEditable(false);

t4.setFont(new Font("宋体", Font.BOLD, 12));

t4.setBorder(BorderFactory.createEtchedBorder());

t1.setBounds(0,y_pos, 100, 20);//X Y  WIDTH HEIGH

t2.setBounds(100,y_pos, 100, 20);

t3.setBounds(200,y_pos, 100, 20);

t4.setBounds(300,y_pos, 100, 20);

//将数据存入MySQL中

String sql="insert into goods_info value("+id+",\""+name+"\","+price+",\""+danwei+"\");";

try {

stmt.execute(sql);

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

try {

y_pos=update_UI(panel,stmt,textPane,textPane_1,textPane_2,textPane_3);

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}

});

改动功能:

button.addMouseListener(new MouseAdapter() {//改动按钮事件

@Override

public void mouseClicked(MouseEvent e) {

/*

* 当点击改动按钮的时候,获取到改动的值,id值是必须要输入的!

* 。。。好吧如果只改动一个值那么就要判断好多次,,,还是全都输入才能改动吧(其实就是懒)

*

*/

//获取数据

String id=textPane5.getText();

String name=textPane6.getText();

String price=textPane7.getText();

String danwei=textPane8.getText();

//判断是否为空值

if(!id.isEmpty()&&!name.isEmpty()&&!price.isEmpty()&&!danwei.isEmpty()) {//必须用是否为空判断 ==?

textPane5.setText(null);

    textPane6.setText(null);

textPane7.setText(null);

textPane8.setText(null);//首先清除所有的值

//然后执行sql语句,将数据值进行更新

String sql="update goods_info set name=\""+name+"\",price="+price+",unit=\""+danwei+"\" where id="+id;

try {

stmt.execute(sql);

} catch (SQLException e2) {

// TODO Auto-generated catch block

e2.printStackTrace();

}

//然后刷新一下就好了

try {

y_pos=update_UI(panel,stmt,textPane,textPane_1,textPane_2,textPane_3);

} catch (SQLException e1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

}

}


难点在于 

1.结合了数据库 ,需要不断尝试将sql语句转换成有效的字符串,

2.组件之间的互动 ,要明确功能  和需要的组件 。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,240评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,328评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,182评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,121评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,135评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,093评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,013评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,854评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,295评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,513评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,678评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,398评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,989评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,636评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,801评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,657评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,558评论 2 352

推荐阅读更多精彩内容