《2022年Java课程设计超市管理系统设计实现 .pdf》由会员分享,可在线阅读,更多相关《2022年Java课程设计超市管理系统设计实现 .pdf(12页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、. . 课 程 设 计课程名称 Java 语言课程设计题目名称超市管理系统的设计与实现学生学院应用数学学院专业班级信息与计算科学1 班学号学生姓名指导教师2013 年 10 月 24 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 12 页 - - - - - - - - - . . 超市管理系统的设计与实现1 系统设计内容随着小超市规模的发展不断扩大,商品数量急剧增加, 有关商品的各种信息量也成倍增长。 超市时时刻刻都需要对商品各种信息进行统计分析。而大型的超市管理系
2、统功能过于强大而造成操作繁琐降低了小超市的工作效率。超市管理系统是市场上最流行的超市上常用的系统之一,它主要包含以下几个模块: 系统登陆、商品入库、商品查询、商品更改和删除等。从而,实现对进货、销售及员工信息等实现全面、动态、 及时的管理。本文系统的分析了软件开发的背景以过程;首先介绍了软件的开发环境, 其次介绍了本软件的详细设计过程: 数据库的设计、各个模块的设计和实现,以及具体界面的设计和功能。超市库存管理系统是基于Java 作为开发工具 , Mysql 作为后台数据库支持。超市库存管理系统开发主要是界面程序的开发、数据库的建立、数据库的维护。应用程序功能完善,界面人机交互要好,而且操作简
3、单。同时JAVA语言简单,在较短的时间内能够开发出使用性强、功能完善, 易于操作的程序, 也能实现与数据库的连接。 通过以上的需求分析, 初步确定该系统功能主要包括以下几个模块:1. 系统登录2. 商品入库管理(包括商品信息管理)3. 商品销售管理4. 用户管理与权限管理名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 12 页 - - - - - - - - - . . 系统流程图2 系统设计方案2.1 Java Swing 概述通过图形用户界面 (Graphical U
4、ser Interface,GUI) ,用户和程序之间可以方便的进行交互。 Java 的 java.awt (Abstract Window Toolkit) 包中包括了多种类和接口, 用于在 Java Application中进行 GUI编程。 Java Swing是 Java Foundation Classes(JFC )的一部分,是一个用于开发Java 应用程序用户界面的开发工具包。在Swing 中,Sun开发了一个经过仔细设计的、灵活而强大的GUI 工具包。它以抽象窗口工具包 (AWT )为基础使跨平台应用程序可以使用任何可插拔的外观风格。Swing 开发人员只用很少的代码就可以利用
5、Swing 丰富、灵活的功能和模块化组件来创建优雅的用户界面。Swing 增强了AWT 中组件的功能,这引起增强的组件命名通常是在AWT 组件名前增加了一个“J”输 入错 误重 新登 录系统登录确定登录销售员登录页面管理员登录页面人员管理删除用户注册密码修改个人信息修改进货管理个人信息修改密码修改销售管理添加销售商品删除销售商品结账按钮添加库存商品查询库存商品删除库存商品用户信息数据库商品信息数据库名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 12 页 - - - -
6、- - - - - . . 字 母; 同时 也 提 供了 更多 的组 件 库 , 如 : 按 钮( JButton ) 、 单 选 按钮(JRadioButton ) 、复选框 (JCheckBox ) 、文本区 (JTextArea) 、文本字段(JTextField)、 列表(JList )、 组合框 (JComboBox ) 、 树(JTree) 、 表格(JTable) 。一个 Java GUI通常由顶层容器、 中间容器以及多个原子组件组成。每个原子组件或容器都可能触发相应事件的产生。容器是一类能够在其中容纳其他组件的特殊组件。Swing 的 GUI组件类是按照类属层次以树状结构进行组
7、织的。在这个树的最顶层,即树的根部,使一个最基本的容器类,被称为顶层容器。Swing 提供了三个通用的顶层容器类JFrame,JDialog 和 JApplet 。JFrame提供了基于窗体的应用程序, JDialog 提供对话框形式的界面, JApplet 提供 Java 小应用程序的界面形式。 在顶层容器下是中间容器, 用于容纳其他的组件。 通常窗格本身在显示界面中是看不到的。 面板类 Panel 是一种中间容器, 它的唯一作用是使组件更容易定位。顶层容器通过 getContentPane() 方法获取内部的一个内容窗格。2.2 使用 JDBC-ODBC 与 MySQL 数据库建立连接1、
8、在开发环境中加载指定数据库的驱动程序。2、在 Java 程序中加载驱动程序。在Java 程序中,可以通过“Class.forName( “指定数据库的驱动程序”)” 方式来加载添加到开发环境中的驱动程序,例如加载MySQL 的数据驱动程序的代码为:Class.forName(org.gjt .mm.mysql.Driver); 3、 创建数据连接对象:通过 DriverManager 类创建数据库连接对象Connection 。DriverManager 类作用于 Java 程序和 JDBC 驱动程序之间, 用于检查所加载的驱动程序是否可以建立连接,然后通过它的getConnection方法,
9、根据数据库的URL 、用户名和密码,创建一个JDBC Connection 对象。如: Connection connection = DriverManager.geiCo nnection( “连接数据库的 URL, 用户名, 密码”)。本程序创建 MySQL 的数据库连接代码如下:String url = jdbc:mysql:/localhost:3306/market; String username = root; String password = root; connect = DriverManager.getConnection(url, username, passwor
10、d); 4、创建 Statement 对象:Statement 类的主要是用于执行静态 SQL 语句并返回它所生成结果的对象。 通过 Connection 对象的 createStatement()方法可以创建一个 Statement 对象。例如: Statement statament = connection.createStatement(); 本程序创建 Statement 对象代码如下:Statement stat = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE
11、); 5、 调用 Statement 对象的相关方法执行相对应的 SQL 语句: 通过 execuUpdate()方法用来数据的更新,包括插入和删除等操作,通过调用Statement 对象的名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 12 页 - - - - - - - - - . . executeQuery() 方法进行数据的查询,而查询结果会得到 ResulSet 对象,ResulSet 表示执行查询数据库后返回的数据的集合,ResulSet 对象具有可以指向当
12、前数据行的指针。通过该对象的next() 方法,使得指针指向下一行,然后将数据以列号或者字段名取出。如果当next() 方法返回 null ,则表示下一行中没有数据存在。使用示例代码如下:ResultSet resultSel = statement.executeQuery( select * from commodity; ); 6、关闭数据库连接:使用完数据库或者不需要访问数据库时,通过Connection的 close() 方法及时关闭数据连接。商品数据项的描述:数据项名数据类型长度说明number vachar 50 商品编号CName vachar 50 商品名称supplier
13、vachar 50 商品供应商PArea vachar 50 商品生产地unit vachar 50 商品单位shelfFife vachar 50 商品规格price float 50 商品价格pack vachar 50 商品包装fullNumber float 50 商品数量管理人员和销售人员数据想描述: (其中 1、2 分别表示管理员、销售员权限)user vachar50 用户名password vachar50 密码power vachar50 权限3 功能模块详细设计及实现3.1 系统登录页面统登录模块需要管理员和销售员提供的用户名、初始密码和权限进行登录验证,如果成功则进入系统
14、, 否则提示无法登录并返回登录一面。运行如图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 12 页 - - - - - - - - - . . 3.2 管理员登录页面管理员身份登录成功进入管理员登陆界面。其中包括模块进货管理、 查看所有人员、用户注册、密码修改、个人信息修改。管理员登陆页面运行截图进货管理功能是通过系统中的public void allRecord() 方法查询数据库 commodity 显示超市仓库中所有商品。 但是在这里涉及一个类型转化问题、因为在数
15、据库的设计中商品的数量和价格都是float类型。在所有商品价格方面直接利用数据库中的第七列和第九列的数据相乘。即sum += rSet.getFloat(7) * rSet.getFloat(9);但是在页面中合计金额需要显示的是一个string类型的,而这里的 sum是一个 float类型变量,则就需要用一个类型准换语句, 并将该值传入文本框。语句分别为String cString = new Float(sum).toString(); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - -
16、 第 6 页,共 12 页 - - - - - - - - - . . minventoryJFrame.getTotalJTextField().setText(cString); 运行截图删除按钮的设计是通过查找商品编号进行删除。如果没有对应的商品则通过JOptionPane.showMessageDialog(null, 库存中没有对应的商品 , 删除记录, 1)语句提示库存中没有对应的商品、否则通过查询数据库并执行下列语句删除对应的库存品。String sql = delete from commodity where number= + minventoryJFrame.getJTa
17、ble().getValueAt(row, 0) + ; stat.executeUpdate(sql); allRecord(); JOptionPane.showMessageDialog(null, 成功删除记录 , 删除记录 , 1); 添加页面设计需要对数据类型和对输入文本框是否有空值进行检测,如果不合法则通过 JOptionPane.showMessageDialog(this, 请确认数据类型和是否有空值! ) 给出提示。否则通过执行下列语句并提示添加商品成功信息。String sql=INSERT INTO commodity(number,CName,supplier,PAr
18、ea,unit,shelfFife,price,pack,fullNumber)+VALUES(+Number.getText()+,+CName.getText()+,+Supplier.getText()+,+PArea.getText()+,+unit.getText()+,+ShelfFife.getText()+,+Float.parseFloat(Price.getText()+,+Pack.getT名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 12 页 -
19、 - - - - - - - - . . ext()+,+Float.parseFloat(FullNumber.getText()+); stmt.executeUpdate(sql); JOptionPane.showMessageDialog(this, 商品添加成功! ); 运行截图人员管理模块可以查看所有人员直接通过下列语句String sql = select * from userinfo;获取数据库中的所有人员。运行截图删除人员则是通过选中人员所对应的行进行删除。实现语句为:String sql=DELETE FROM userinfo WHERE user=+cellValu
20、e+; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 12 页 - - - - - - - - - . . 用户注册需要先查询数据库中的用户名和密码,如果都存在则提示该用户已经存在。不存在则可以通过下列语句注册新员工String str=INSERT INTO userinfo VALUES(+User+,+Password+,+power+,+personneID+,+SEX+,+Birthday+,+Job+,+Id+); 密码修改则即更新数据库。通过下列语句可以实
21、现String sql=UPDATE userinfo SET password=+String.valueOf(newPassword.getPassword()+ WHERE user=+cook.user+; 用户信息修改也是一个更新数据库的操作,通过下列代码可以实现:String str=UPDATE userinfo SET 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 12 页 - - - - - - - - - . . sex=+SEX+,birthday
22、=+Birthday+,job=+Job+,ID=+Id+ WHERE user=+cook.user+; stmt.executeUpdate(str); 3.3 管理员登录页面销售人员身份登录成功进入销售人员登陆页面。其中包括商品的销售、 结账页面、其中个人信息修改和密码修改和管理员的相似。销售页面通过输入商品的编号和数量、 在通过查询数据库中对应的商品名称和数量,如果没有对用的商品则通过语句JOptionPane.showMessageDialog(this, 对不起,暂时没有这件商品,请联系管理员添加! ); 提示没有商品,如果商品数量不够则通过语句JOptionPane.showMe
23、ssageDialog(this, 对 不 起 , 此 商 品 库 存 仅 剩+rs.getFloat(fullNumber);给出销售人员销售数量超出库存量的提示信息。但是在添加商品时本系统是利用数据库查询,再通过一个数组利用编号和数量进行保存的。因为如果直接利用从库存数据库中查询再添加到一个销售数据库中是直接将库存数据库中的所有商品都添加到了销售数据库表中。实现的语句为for(int i=0;irows;i+) Namei=String.valueOf(tableModel.getValueAt(i, 0); Qi=Float.parseFloat(String.valueOf(table
24、Model.getValueAt(i, 8); while(rs.next() for(int i=0;irows;i+) String name=rs.getString(number); if(name.equals(Namei) Qi=rs.getFloat(fullNumber)-Qi; String sql=UPDATE commodity SET fullNumber=+Qi+ WHERE number=+name+; stmt1.executeUpdate(sql); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - -
25、 名师精心整理 - - - - - - - 第 10 页,共 12 页 - - - - - - - - - . . 通过上述语句可以添加销售商品,在通过点击确认销售按钮时通过语句int n=JOptionPane.showConfirmDialog(null, 确认出售列表中货物(共计:+acount+ 元) ?); 销售商品删除按钮是通过鼠标选中需要删除的行进行删除。执行语句为:if(myTable.getSelectedRow()!= -1) int row1= myTable.getSelectedRow(); tableModel.removeRow(row1); else JOpti
26、onPane.showMessageDialog(this, 请选中要删除的信息再点击删除! ); 运行截图4 结论通过此次的论文,我学到了很多知识, ,在论文的写作过程中,通过查资料和搜集有关的文献, 培养了自学能力和编程能力。 并且由原先的被动的接受知识转换为主动的寻求知识, 这可以说是学习方法上的一个很大的突破。我们可能会记住很多的书本知识, 但是通过课程设计, 我们学会了如何将学到的知识转化为自己的东西,学会了怎么更好的处理知识和实践相结合的问题。次超市库存管理系统课程设计, 让我充分运用自己所学的知识, 让我明白只名师资料总结 - - -精品资料欢迎下载 - - - - - - -
27、- - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 12 页 - - - - - - - - - . . 有单纯的理论知识是远远不够的, 只有通过实际的锻炼才能更好的运用所掌握的基础知识, 才能在原有的基础上提升自己的能力,提高自己解决问题的能力。 在这短短的一个星期内,查阅有关的java 学习资料和数据库,设计的规则,代码的编写及到最后的调试。在设计过程中,通过对控件事件的处理,界面的布局,代码的调试, 充分锻炼了自己的思维, 获得了充分的实际经验, 提高了处理问题的能力,同时也提高了对问题思考的应急能力和抗压力的能力。经过一个星期的努力,
28、虽然设计已经完成, 但仍然有很多模块和功能要完善,存在很多美中不足之处。 但是基本上还能满足小型超市的管理。在论文的写作过程中也学到了做任何事情所要有的态度和心态,对于出现的任何问题和偏差都不要轻视,要通过正确的途径去解决, 在做事情的过程中要有耐心和毅力,只要坚持下去就可以找到思路去解决问题的。五、问题与讨论问题一页面跳转可以通过一个鼠标监听器实现,当鼠标点击按钮时事件被出发,通过隐藏当前页面显示需要的目的页面。本程序则是通过三个抽象方法实现该功能。鼠标监听函数:public abstract void initActionListener(); 页面显示函数public abstract
29、void show(); 当前页面隐藏函数 public abstract void hide(); 问题二在销售页面中添加销售商品,我们刚开始的实现的从酷讯数据库中去查询对应编号的商品, 然后将对用的商品添加到一个临时销售商品数据库保存表,但是早实现的过程中,如果查到该商品存在, 通过编号主键将商品插入语句 (insert into )插入到销售表,但发现此操作的操作结果是只要一个条件符合查询条件就是将库存表中的所有记录都插入到销售表中。对于该问题的解决办法是我们想到了JSP中的 Cookies(Cookies是一种能够让网站服务器把少量数据储存到客户端的硬盘或内存,或是从客户端的硬盘读取数据的一种技术)实现了可以将需要销售的商品临时保存, 当点击确认销售以后要, 再通过循环表中的每一行将对应的数据清除。实现函数为:for(int i=0;irows;i+) tableModel.removeRow(i); 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 12 页 - - - - - - - - -