Java课程设计超市库存管理系统附源代码可以直接运行.doc
《Java课程设计超市库存管理系统附源代码可以直接运行.doc》由会员分享,可在线阅读,更多相关《Java课程设计超市库存管理系统附源代码可以直接运行.doc(43页珍藏版)》请在咨信网上搜索。
______________________________________________________________________________________________________________ 榆林学院 [超市库存管理系统] 专业:[计算机科学与技术] 班级:[ 13级计本1班 ] 学生姓名:[ 李 治 生 ] 学 号:[1312210142] 精品资料 一、 需求分析 3 二、 概要设计 3 三、 详细设计 4 1、 数据库设计 4 用户登录界面: 6 进入主界面: 9 四、 软件测试 39 五、 总结 40 六、 附录: 41 一、 需求分析 本系统主要是用来帮助小型超市进行库存管理系统,能够有效的帮助小型超市进行库存管理!其中包括增删改查等基本的应用。极大的提高了超市的库存管理效率,节省了大量的时间。 *********************************************************** *********************************************************** 二、 概要设计 1、 本系统的每一个功能模块都包含了多个功能。整个系统主要完成对超市商品的日常管理,包括进货管理,库存管理和供应商管理等方面。在功能上系统可以完成对相关信息的浏览、查询、添加、删除、修改等功能。本课题的核心之一是销售管理、库存管理和进货管理三者之间的联系,同时系统有完整的用户管理功能。 本系统采用java语言和SQL Server 2008作为开发工具。这种系统优势在于系统比较简单,但功能强大,扩展性能也比较好,完全能够处理一般超市的日常任务 2、 整体分为3个模块(货物,供应商,记录)每个模块之间相互关联,都有自己的增删改查! 3、 程序流程图如下: 三、 详细设计 1、 数据库设计 Goods表: Lzs(用户登录名,密码): Recond表():记录表 Supplier(供应商表): 用户登录界面: 设计代码如下: package source; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*; @SuppressWarnings("serial") public class loginframe extends JFrame implements ActionListener { JTextField 用户名; JPasswordField 密码; JButton 登录,重置; Box baseBox,box1,box2,box3;//盒式布局 ImagePanel p;//用于插入图片的面板 JSplitPane split;//拆分窗格 Font f;//设置字体 JLabel userName,psw; Function wMain; Connection con; Statement sql; ResultSet rs; String dbdriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dburl = "jdbc:sqlserver://localhost:1433;DatabaseName=LZS"; String user = "sa"; String pass = "123"; public loginframe() { setLayout(new FlowLayout()); init(); setBounds(130,80,960,600); setVisible(true); setResizable(false); try{ Class.forName(dbdriver); } catch(ClassNotFoundException classnotfound){ System.out.println("未能找到SQLServerDriver,请检查是否已加载SQLServer驱动"); } } void init() { f = new Font("幼圆",Font.BOLD,18); p = new ImagePanel(new ImageIcon("E:/Java文件/SuperMarket/picture/1.jpg").getImage()); 登录 = new JButton("登录"); 登录.addActionListener(this); 重置 = new JButton("重置"); 重置.addActionListener(this); 用户名 = new JTextField(16); 用户名.setFont(f); 密码 = new JPasswordField(16); userName = new JLabel("用户名:"); userName.setFont(f); psw = new JLabel("密码:"); psw.setFont(f); box1 = Box.createVerticalBox(); box1.add(userName); box1.add(Box.createVerticalStrut(20)); box1.add(psw); box2 = Box.createVerticalBox(); box2.add(Box.createVerticalStrut(240)); box2.add(用户名); box2.add(Box.createVerticalStrut(20)); box2.add(密码); box2.add(Box.createVerticalStrut(20)); box3 = Box.createHorizontalBox(); box3.add(登录); box3.add(Box.createHorizontalStrut(20)); box3.add(重置); box2.add(box3); box2.add(Box.createVerticalStrut(200)); baseBox = Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(15)); baseBox.add(box2); //baseBox.add(登录); split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,p,baseBox); split.setDividerLocation(0.5); add(split,BorderLayout.PAGE_START); } public void actionPerformed(ActionEvent e) { if(e.getSource() == 登录){ String Uname = 用户名.getText().trim(); char[]psw = 密码.getPassword(); String passWord = new String(psw); try{ con = DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=LZS","sa","123"); System.out.println("数据库连接成功!"); sql=con.createStatement(); String string = "SELECT * FROM lzs WHERE Uname= '"+Uname+"' AND mima = '"+passWord+"'"; rs = sql.executeQuery(string); if(rs.next()){ wMain = new Function(); wMain.setTitle("超市库存管理系统"); wMain.setVisible(true); this.dispose(); // wMain.pack(); } else{ JOptionPane.showMessageDialog(this, "您输入的用密码不正确","警告对话框",JOptionPane.WARNING_MESSAGE); 密码.setText(null); 密码.requestFocus(); } con.close(); } catch(SQLException ee){ ee.printStackTrace(); } }else if(e.getSource() == 重置){ 用户名.setText(""); 密码.setText(""); } } } 进入主界面: 第一菜单(货物): 第二菜单(供应商): 第三菜单(记录): 设计代码如下: package source; import java.awt.*; import java.awt.event.*; import javax.swing.*; @SuppressWarnings("serial") public class Function extends JFrame implements ActionListener{ Font f; //菜单栏 JMenuBar menubar;//菜单条 JMenu 货物,供应商,记录; //菜单 JMenuItem 货物管理,退出,供应商管理,查询记录,进货计划;//菜单项 //Box box; JLabel label; ImagePanel p;//用于插入图片的面板 //构造函数 Function() { setLayout(new FlowLayout()); init(); setTitle("超市库存管理系统"); setLocation(20,30); setSize(1200,800); setBounds(130,80,960,600); setVisible(true); setResizable(false); } void init() { menubar = new JMenuBar(); f = new Font("华文行楷",Font.BOLD,50); Font f2 = new Font("宋体",0,12); p = new ImagePanel(new ImageIcon("E:Java文件/SuperMarket/picture/2.jpg").getImage()); //库房货物管理菜单 货物 = new JMenu("货物"); 货物.setFont(f2); 货物管理 = new JMenuItem("货物管理"); 货物管理.setFont(f2); 货物管理.addActionListener(this); 退出 = new JMenuItem("退出"); 退出.setFont(f2); 退出.addActionListener(this); 货物.add(货物管理); 货物.add(退出); menubar.add(货物); //货物供应商菜单 供应商 = new JMenu("供应商"); 供应商.setFont(f2); 供应商管理 = new JMenuItem("供应商管理"); 供应商管理.setFont(f2); 供应商管理.addActionListener(this); 供应商.add(供应商管理); menubar.add(供应商); //货物进货、入库和出库记录查询菜单 记录 = new JMenu("记录"); 记录.setFont(f2); 查询记录 = new JMenuItem("查询记录"); 查询记录.setFont(f2); 查询记录.addActionListener(this); 进货计划 = new JMenuItem("进货计划"); 进货计划.setFont(f2); 进货计划.addActionListener(this); 记录.add(查询记录); 记录.add(进货计划); menubar.add(记录); label = new JLabel("欢迎进入超市库存管理系统"); label.setFont(f); p.add(label); label.setBounds(300,400,800,200); add(p,BorderLayout.CENTER); setJMenuBar(menubar); } public void actionPerformed(ActionEvent e) { if(e.getSource()==供应商管理) { SupplierManage smTable = new SupplierManage(); smTable.setVisible(true); smTable.pack(); } else if(e.getSource()==货物管理) { goods goTable = new goods(); goTable.setVisible(true); goTable.pack(); } else if(e.getSource()==查询记录) { record reTable = new record(); reTable.setVisible(true); reTable.pack(); } else if(e.getSource() ==进货计划){ plan plTable = new plan(); plTable.setVisible(true); plTable.pack(); } else if(e.getSource()==退出) { this.dispose(); } } } 进入第一菜单(货物管理): 在此菜单下,可进行货物的增删改查操作,设计代码如下: package source; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; @SuppressWarnings("serial") public class goods extends JFrame implements ActionListener{ JTable table; JLabel label; JTextField inputText; String []name = {"货物号","货物名","进货价","售价","折扣价","余量","余量预警值","供应商"}; String []strings = new String[8]; JButton 添加,修改,删除,退出,确认修改; JPanel p; JLabel []labels = new JLabel[8]; JTextField []fields = new JTextField[8]; Box baseBox,box1,box2; ImagePanel pp;//用于插入图片的面板 JSplitPane split;//拆分窗格 DefaultTableModel deModel = null; Connection con; Statement sql; ResultSet rs; String dbdriver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; String dburl = "jdbc:sqlserver://localhost:1433;DatabaseName=LZS"; String user = "sa"; String pass = "123"; goods() { setLayout(new BorderLayout()); init(); // Toolkit tk = Toolkit.getDefaultToolkit(); // Image img = tk.getImage("E:Java文件/SuperMarket/picture/2.jpg"); // setIconImage(img); setTitle("货物管理"); setBounds(130,80,960,600);; //setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setResizable(false); try{ Class.forName(dbdriver); } catch(ClassNotFoundException classnotfound){ classnotfound.printStackTrace(); } } void init() { pp = new ImagePanel(new ImageIcon("E:/Java文件/SuperMarket/picture/2.jpg").getImage()); 添加= new JButton("添加"); 修改= new JButton("修改"); 删除 = new JButton("删除"); 退出 = new JButton("退出"); 确认修改 = new JButton("确认修改"); label = new JLabel("请输入想要删除或修改的货物名:"); inputText = new JTextField(8); 添加.addActionListener(this); 修改.addActionListener(this); 删除.addActionListener(this); 退出.addActionListener(this); 确认修改.addActionListener(this); p = new JPanel(); p.add(label); p.add(inputText); p.add(添加); p.add(修改); p.add(删除); p.add(退出); p.add(确认修改); add(p,BorderLayout.SOUTH); labels[0] = new JLabel("货物号"); labels[1] = new JLabel("货物名"); labels[2] = new JLabel("进货价"); labels[3] = new JLabel("售价"); labels[4] = new JLabel("折扣价"); labels[5] = new JLabel("余量"); labels[6] = new JLabel("余量预警值"); labels[7] = new JLabel("供应商"); for(int i = 0;i<8;i++){ fields[i] = new JTextField(20); } //用盒式容器装要录入的数据和标签 box1 = Box.createVerticalBox(); box1.add(Box.createVerticalStrut(15)); for(int i = 0;i<8;i++){ box1.add(labels[i]); box1.add(Box.createVerticalStrut(35)); } box2 = Box.createVerticalBox(); box2.add(Box.createVerticalStrut(10)); for(int i = 0;i<8;i++){ box2.add(fields[i]); box2.add(Box.createVerticalStrut(14)); } baseBox = Box.createHorizontalBox(); baseBox.add(box1); baseBox.add(Box.createHorizontalStrut(15)); baseBox.add(box2); //添加表格 add(baseBox,BorderLayout.EAST); deModel = new DefaultTableModel(name,0); table = new JTable(deModel); table.setCellSelectionEnabled(false); table.setEnabled(false); table.setShowHorizontalLines(true); table.setShowVerticalLines(true); //add(new JScrollPane(table),BorderLayout.CENTER); split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,false,new JScrollPane(table),baseBox); split.setDividerLocation(0.5); add(split,BorderLayout.CENTER); String sqlString = "select * from goods"; try{ //连接数据库 con = DriverManager.getConnection(dburl, user, pass); sql = con.createStatement(); JOptionPane.showMessageDialog(this, "数据库连接成功!","消息对话框",JOptionPane.INFORMATION_MESSAGE); rs = sql.executeQuery(sqlString); while(rs.next()){ for(int i = 0;i<8;i++){ strings[i]=rs.getString(i+1);//把查询的结果填入表格中 } deModel.addRow(strings); deModel.fireTableStructureChanged();//更新中的数据 } } catch(SQLException ee){ ee.printStackTrace(); } } public void actionPerformed(ActionEvent e) { if(e.getSource() == 添加){ String sqlString = "INSERT INTO goods VALUES ('"+fields[0].getText()+"','"+fields[1].getText()+"','"+fields[2].getText()+"','"+fields[3].getText()+"','"+fields[4].getText()+"','"+fields[5].getText()+"','"+fields[6].getText()+"','"+fields[7].getText()+"')"; try{ sql.execute(sqlString); JOptionPane.showMessageDialog(this, "操作成功!","消息对话框",JOptionPane.INFORMATION_MESSAGE); //更新表格中的数据 for(int i = deModel.getRowCount()-1;i>=0;i--){ deModel.removeRow(i); deModel.fireTableStructureChanged(); } rs = sql.executeQuery("select * from goods"); while(rs.next()){ for(int j = 0;j<8;j++){ strings[j]=rs.getString(j+1); } deModel.addRow(strings); deModel.fireTableStructureChanged();//更新中的数据 } } catch(SQLException ee){ ee.printStackTrace(); } for(int i = 0;i<8;i++){ fields[i].setText(""); } fields[0].requestFocus();//设置光标的位置,在第一个文本框上面 } else if(e.getSource() == 修改){ try{ rs = sql.executeQuery("select * from goods"); while(rs.next()){ for(int i = 0;i<8;i++){ strings[i]=rs.getString(i+1); } if(strings[1].trim().compareTo(inputText.getText().trim())==0){ for(int i = 0;i<8;i++){ fields[i].setText(strings[i]); } } } fields[0].setEditable(false); fields[1].setEditable(false); } catch(SQLException ee){ ee.printStackTrace(); } }else if(e.getSource() == 确认修改){ String sqlString = "UPDATE goods SET shangpinhao = '"+fields[0].getText()+"',shangpinming='"+fields[1].getText()+"',jinhuojia='"+fields[2].getText()+"',shouji='"+fields[3].getText()+"',zhekoujia='"+fields[4].getText()+"',yuliang='"+fields[5].getText()+"',yuliangyujingzhi='"+fields[6].getText()+"',gongyingshang='"+fields[7].getText()+"'where shangpinming ='"+inputText.getText()+"'"; try{ sql.execute(sqlString); JOptionPane.showMessageDialog(this, "操作成功!","消息对话框",JOptionPane.INFORMATION_MESSAGE); //更新表格中的数据 for(int i = deModel.getRowCount()-1;i>=0;i--){ deModel.removeRow(i); deModel.fireTableStructureChanged(); } rs = sql.executeQuery("select * from goods"); while(rs.next()){ for(int j = 0;j<8;j++){ strings[j]=rs.getString(j+1); } deModel.addRow(strings); deModel.fireTableStructureChanged();//更新中的数据 } } catch(SQLException ee){ ee.printStackTrace(); } for(int i = 0;i<8;i++){ fields[i].setText(""); } fields[0].setEditable(true); fields[1].setEditable(true); inputText.setText(""); fields[0].requestFocus();//设置光标的位置,在第一个文本框上面 } else if(e.getSource() == 删除){ String sqlString = "DELETE FROM goods WHERE shangpinming = '"+inputText.getText().trim()+"'"; try{ sql.execute(sqlString); //将表格中的内容清空 for(int i = deModel.getRowCount()-1;i>=0;i--){ deModel.removeRow(i); deModel.fireTableStructureChanged(); } rs = sql.executeQuery("select * from goods"); while(rs.next()){ for(int i = 0;i<8;i++){ strings[i]=rs.getString(i+1);//把查询的结果填入表格中 } deModel.addRow(strings); deModel.fireTableStructureChanged();//更新中的数据 } JOptionPane.showMessageDialog(this, "操作成功!","消息对话框",JOptionPane.INFORMATION_MESSAGE); inputText.setText(""); } catch(SQLException ee){ ee.printStackTrace(); } } else if(e.getSource()==退出) { this.dispose(); } } } 进入第二菜单(供应商管理界面): 在此界面下可进行供应商的增删改查操作: 设计代码如下: package source; import java.awt.*; import java.awt.event.*; import java.sql.*; import javax.swing.*; import javax.swing.table.DefaultTableModel; import java.util.Date; @SuppressWarnings("serial") public class SupplierManage extends JFrame implements ActionListener{ JTable table; JLabel label; JTextField inputText; String []name = {"添加时间","供应商","联系电话","地址","邮箱","备注"}; String []strings = new String[6]; JButton 修改,删除,添加,退出,确认修改; JPanel p; JLabel []labels = new JLabel[5]; JTextField []fields = new JTextField[5]; Box baseBox,box1,box2; JSplitPane split;//拆分窗格 DefaultTableModel deMod- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 课程设计 超市 库存 管理 系统 源代码 可以 直接 运行
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文