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