收藏 分销(赏)

JAVA专业课程设计企业销售标准管理系统.doc

上传人:天**** 文档编号:2658691 上传时间:2024-06-03 格式:DOC 页数:26 大小:733.04KB 下载积分:10 金币
下载 相关 举报
JAVA专业课程设计企业销售标准管理系统.doc_第1页
第1页 / 共26页
JAVA专业课程设计企业销售标准管理系统.doc_第2页
第2页 / 共26页


点击查看更多>>
资源描述
序号: 10 学号: 11416230 常 州 大 学 课程设计 课 程 名 称: 《面向对象程序设计(JAVA)》 题 目: 企业销售管理系统 姓 名: ````````` 学 院: 信息科学和工程学院 专业班级: ``````` 指 导 教 师: `````` 设计时间: 年 12 月 24 日 ~ 年 1 月 11 日 目录 1. 任务书 a) 系统功效分析········································03 b) 系统组成············································03 2. 正文 a) 系统分析 i. 功效模块·········································04 ii. 功效步骤图·······································06 b) 数据库设计··········································07 c) 系统具体设计 i. 连接数据库·······································08 ii. 主界面···········································08 iii. 修改、添加、删除模块·····························10 iv. 查询、打印、登录模块·····························14 3. 系统使用说明···········································21 4. 日志···················································22 5. 心得体会···············································22 6. 参考文件···············································23 7. 致谢···················································23 一、任务书 (一)、系统功效分析 本系统用于对企业销售进行管理,包含职员基础信息表、商品信息表和职员销售信息表,关键功效包含: l 数据表统计添加、删除、修改和浏览。 l 对职员基础情况、商品和销售相关信息查询。 l 报表打印输出。 l 系统退出。 (二)、系统组成 依据系统功效分析,给出系统参考处理方案。 整个系统功效经过菜单实现,包含数据库、表单、菜单、报表和主程序等多个部分,具体为: 后台数据库 销售管理数据库: 1.职员基础信息表(职员编号,职员名,年纪,性别,部门,职务)。 2. 商品信息表 (商品编号,商品名称,商品单价)。 3. 职员销售信息表 (职员编号, 商品编号,商品数目,应付金额,用户付款,找回金额)。 二、正文 (1) 系统分析: 企业销售管理系统关键实现功效为:和数据库连接,实施对职员基础信息表、商品信息表、职员销售信息表查询、修改、添加、删除等功效实现。和对3张表信息进行输出打印,打印保留成XLS格式。 功效模块以下: 查询功效: 模糊查找 正确查找 查询功效 其它模糊查找 金额模糊查找 数目模糊查找 名称模糊查找 编号模糊查找 名称查找 编号查找 添加其它 添加数目 添加编号 添加名称 添加功效 添加功效: 修改功效: 保留退出 修改功效 修改其它 修改数目 修改编号 修更名称 查询数据 删除功效: 删除功效 查询数据 确定删除 保留退出 程序结构步骤图: 企业销售管理系统 职员基础信息表 商品信息表 职员销售信息表 查询 修改 添加 删除 查询 修改 添加 添加 修改 删除 输出打印 系统退出 (2)数据库设计: 根据规范设计方法,考虑数据库及其管理系统开发全过程,将数据库设计分为以下六个阶段:   · 需求分析   · 概念结构设计   · 逻辑结构设计   · 物理结构设计   · 数据库实施 · 数据库运行和维护 基础要求 在mysql软件基础上,利用应用系统开发为企业销售管理设计数据库和建立对应数据库。创建4个表格,分别为sellInfo,staffInfo,goodsInfo,和登录所需password表格。 信息要求,处理要求,安全性和 完整性要求,数据流图,数据字典,数据项之间应有联络必需表示出来,用数据依靠表示即可逻辑结构设计必需:说明各个关系模式所属范式,假如不是BC或3NF范式, (3)系统具体设计: 一、 连接数据库: import java.sql.*; public class Connection1 { Connection connect; private String dbDriver = "com.mysql.jdbc.Driver"; //加载数据库驱动 private String url = "jdbc:mysql://localhost:3306/sell?true&characterEncoding=utf-8"; // 地址 /** Creates a new instance of connectJdbc */ public Connection getConnection() { try { Class.forName(dbDriver).newInstance(); connect=DriverManager.getConnection(url, "root", "123456"); } catch (Exception ex) { System.out.println("数据库加载失败"); } return connect; } 二、 主界面:View.java 首先在主界面panel里显示数据库中数据,以商品信息表为例。 JTable table; JScrollPane jscrollpane;//申明滚动面板变量 TableModel myTable = new DefaultTableModel(); Connection1 db = new Connection1(); Connection con = db.getConnection();//连接到数据库 Statement ps; try { ps = con.createStatement(); ResultSet rs; rs = ps.executeQuery("select * from goodsInfo");//在sell表格中实施查询 ResultSetMetaData metaData; metaData = rs.getMetaData();//得到数据库元数据 int number = metaData.getColumnCount();//得到数据库中表列个数 Vector columnNames = new Vector();//调用Vector类,生成可自动增加数组对象列 Vector rows = new Vector();//对象行 for (int num = 0; num < number; num++) { columnNames.addElement(metaData.getColumnLabel(num + 1)); }//循环生成 while (rs.next()) { Vector newRow = new Vector(); /* for循环,将结果集中一行数据放到newRow矢量中 */ for (int i = 1; i <= number; i++) { newRow.addElement(rs.getObject(i)); }/* 将上面矢量newRow作为矢量rows中一个元素,这么rows中一个元素就代表结果集中一行数据 */ rows.addElement(newRow);//增加行 myTable = new DefaultTableModel(rows, columnNames);//在表格中加载数据 } } catch (SQLException ex) { } table = new JTable(myTable); jscrollpane = new JScrollPane(table); jscrollpane.setViewportView(table); jscrollpane.revalidate(); jPanel3.setLayout(new BorderLayout()); jPanel3.add(jscrollpane, BorderLayout.CENTER); jPanel3.setVisible(true); 效果以下: 三、修改模块: 首先对所需修改职员信息进行查询,并显示在修改界面上,关键代码以下: Connection1 db = new Connection1(); Connection con = db.getConnection();//连接数据库 String sql = "select* from sellInfo"; Statement ps = con.createStatement(); ResultSet rs = ps.executeQuery(sql);//查询 while (rs.next()) { if (rs.getString("职员编号").equals(jTextField1.getText())) { //匹配该职员信息; num1 = rs.getString("职员编号"); num2 = rs.getString("商品编号"); num3 = rs.getInt("商品数目"); price1 = rs.getInt("应付金额(元)"); price2 = rs.getInt("用户付款(元)"); price3 = rs.getInt("找回金额(元)"); } } jTextField2.setText(num1); jTextField3.setText(num2); jTextField4.setText("" + num3); jTextField5.setText("" + price1); jTextField6.setText("" + price2); jTextField7.setText("" + price3);//在修改界面上显示该职员销售信息 } 然后在对修改界面上信息进行修改,并返回保留至数据库,关键代码以下: String sql = "update sellInfo set 职员编号='" + num1 + "',商品编号='" + num2+ "',商品数目=" + num3 + ",应付金额(元)=" + price1 + ",用户付款(元)="+ price2 + ",找回金额(元)=" + price3 + " where 职员编号='" + num1 + "'"; try { ps = con.createStatement(); ps.executeUpdate(sql);//数据更新 } catch (SQLException e) { e.printStackTrace(); } 效果以下: 四、删除模块: 首先对用户输入职员编号或职员名称进行查找,当数据库中由此数据时,显示该数据,并请求用户是否确定删除,利用sql语句中delete,以职员基础信息为例,关键代码以下: Statement ps = con.createStatement(); ResultSet rs = ps.executeQuery(sql); while (rs.next()) { if (rs.getString("职员编号").equals(jTextField1.getText()) || rs.getString("职员名").equals(jTextField2.getText())) { num1 = rs.getString("职员编号"); num2 = rs.getString("职员名"); i = rs.getInt("年纪"); num3 = rs.getString("性别"); num4 = rs.getString("部门"); num5 = rs.getString("职务"); } } } int s = JOptionPane.showConfirmDialog(null, "确定要删除此数据吗?\t\n职员编号: "+ jTextField1.getText() + "\t\n" + "职员名: " + num2 + "\t\n" + "年纪: " + i + "(岁)" + "\t\n" + "性别: " + num3 + "\t\n" + "部门: " + num4 + "\t\n" + "职务: " + num5 + "\t");//显示对话框是否确定删除 if (s == 0) { String jk = jTextField1.getText(); String jk1 = jTextField2.getText(); String sql1 = "delete from staffInfo where 职员编号='" + jk + "'or 职员名='" + jk1 + "'"; Statement ps1; try { ps1 = con.createStatement(); ps1.execute(sql1);//实施删除 } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } 效果以下: 五、添加模块: 添加数据到数据库关键用是sql中insert语句,在数据中增加所需数据,这期间要尤其注意语句中变量和引号问题,以职员销售表为例,关键代码以下: String num1 = jTextField1.getText(); String num2 = jTextField2.getText(); int ii = Integer.valueOf(jTextField3.getText()); int price1 = Integer.valueOf(jTextField4.getText()); int price2 = Integer.valueOf(jTextField5.getText()); int price3 = Integer.valueOf(jTextField6.getText()); String sql = "insert into sellInfo values('" + num1 + "','" + num2 + "','" + ii + "','" + price1 + "','" + price2 + "','" + price3 + "')"; PreparedStatement ps = con.prepareStatement(sql); ps.executeUpdate();//实施并更新语句 效果以下: 六、查询模块: 查询方法关键有两种:一是正确查找,经过用户所输入编号,名称进行查找;二是模糊查找,经过用户所输入模糊信息进行查找,输出全部符合结果。 1.正确查找关键代码以下: String sql = "select* from goodsInfo"; String num1 = null, name = null; int num2 = 0; Statement ps = con.createStatement(); ResultSet rs = ps.executeQuery(sql); while (rs.next()) { if (rs.getString("商品编号").equals(jTextField1.getText()) || rs.getString("商品名称").equals(jTextField2.getText())) { num1 = rs.getString("商品编号"); name = rs.getString("商品名称"); num2 = rs.getInt("商品单价(元)"); } } 2.模糊查询关键代码以下: String num1 = jTextField3.getText(), num2 = jTextField4.getText(), num3 = jTextField5.getText(); if (num1.equals("") && num2.equals("") && num3.equals("")) { GoodsInfo gi = new GoodsInfo(); gi.getGoodsInfo();//假如全部为空,则显示全部数据 } else if (!num1.equals(null) || !num2.equals(null) || !num3.equals(null)) { Statement ps; ps = con.createStatement(); ResultSet rs; rs = ps.executeQuery("select * from goodsInfo where 商品编号 like '"+ num1+ "%' and 商品名称 like '"+ num2+ "%' and 商品单价(元) like '" + num3 + "%'"); 效果以下: 正确查找:输入商品编号:04,显示结果以下: 模糊查找:输入商品编号:0,显示结果以下: 七、打印模块: 打印信息表关键将修改好数据输出称excel形式,保留在电脑里,以staffInfo为例, String[] title = { "职员编号", "职员名","年纪","性别","部门","职务"};// 准备设置excel工作表标题 String filePath = "D:\\staffInfo.xls";// 输出excel路径 OutputStream os = new FileOutputStream(filePath);// 创建Excel工作薄 WritableWorkbook wwb = Workbook.createWorkbook(os); // 添加第一个工作表并设置第一个Sheet名字 WritableSheet sheet = wwb.createSheet("职员基础信息表", 0); Label label = null; for (int i = 0; i < title.length; i++) { // Label(x,y,z)其中x代表单元格第x+1列,第y+1行, 单元格内容是y// 在Label对象子对象中指明单元格位置和内容 label = new Label(i, 0, title[i]);// 将定义好单元格添加到工作表中 sheet.addCell(label); } Statement stmt = con.createStatement(); ResultSet result = stmt.executeQuery("select * from staffInfo");//查询表中全部数据 int x = 0; while (result.next()) { // 从数据库中取得数据 x++; // 控制行数 for (int y = 0; y < title.length; y++) {// 取得列数 label = new Label(y, x, result.getString(y + 1)); // x代表行, y代表列,经过rst.getString()设置单元格内容 sheet.addCell(label);// 将内容加到execl中去 } } wwb.write(); // 写入数据 wwb.close(); // 关闭文件 保留效果以下: 关键代码以下: OutPutExl oe1 = new OutPutExl(); oe1.OutPutExlstaff(); JOptionPane.showMessageDialog(null, "输出打印职员基础信息表成功!保留在D:staffInfo"); 八、登陆界面:Login.Java 首先连接数据库,并判定用户所输用户名,密码是否正确,假如匹配则让其经过,不然提醒用户名和密码不匹配,请重新输入。判定方法queryUser语句以下: boolean queryUser(String userName,String pass){ Connection1 db=new Connection1(); Connection con=db.getConnection(); String sql="select* from password where Username= '"+userName +"'and Password= '"+pass+"'"; try { Statement ps=con.createStatement(); ResultSet rs=ps.executeQuery(sql); if(rs.next()){ if(rs.getString("Username").equals(userName)&&rs.getString("Password").equals(pass)) return true; else return false; }else return false; 登录以下: (4)系统使用说明: 设备支持:推荐配置:Windows7,512内存。 数据库:MySQL Server 5.0。 软件支持:MyEclipse 编写。 (5)日志: 课程设计第一天:进行整体布局构思,创建职员信息表、商品信息表、职员销售信息表连接数据库,实现多个方法验证登录。 第二天:创建主界面,将数据库里表格信息出现在用户端上。关键是panel利用。 第三天:进行简单语句查询,调试编码问题—汉字乱码,并设置滚动面板。经过网上查找了解学习输出打印,将表格输出保留为xls文件。 第四天:编写删除功效代码,利用sql语句对编号正确查找,然后读取该行数据,实现对数据删除,并设置对应控件。 第四天:编写添加、修改功效代码,创建功效面板,调用sql语句进行查找,取得符合要求数据,修改并进行更新数据。 第五天:编写模糊查询,实现对数据模糊查找,并显示在数据面板上。 第六天:在主界面中调用调试各个功效面板,实现功效。并对各个图形界面进行美化。 第七天:编写备注信息,填写课程设计汇报。 (6)心得体会 依据题目要求,编写一个企业销售管理系统。开始设计时,因为初学java语言,对于系统整体编写有一定难度,所以茫然无措。在翻阅了部分书籍后最终有些想法,并开始付诸实施。连接数据库是碰到第一个难点,过程中总是碰到汉字字符,和java和数据库数据交互时汉字乱码问题。后经过调试,查阅资料,并尝试用网上字符转码语句fliter,将写入数据和从数据库中读取数据进行转码,知道须将数据库注册码和生成表字符码要和java编辑软件myeclipse字符码相一致,才排除了数据库信息在面板中异常显示。当处理到选择查询、模糊查询时,又碰到了sql语句引号问题,在sql语句中加入参数需要引号,假如是字符类型,需要表示为’”+data+”’,假如单单是整型,就不需要单引号了。相关局部变量、组员变量、全局变量,也有了深入认识,并经过此程序编写得到了强化。包含到数据库修改问题,因为第一次写入update语句中没有写上判定在数据库中哪一行改变(where···),结果造成全部数据全部变为同一数据,数据库信息丢失了。相关面板居中问题也能自己经过直接编辑代码实现。唯一遗憾是此系统采取是可视化界面做,全部GUI组件位置不稳定,易受干扰,所形成图形界面在美观上不是很好,有待改善。总而言之,此次课程设计不仅锻炼了自己利用java语言编写能力,也增强了自己在处理部分错误,排错技能,对自己以后学习有很大帮助。 参考文件 [1] 孙浏毅.Java宝典[M].电子工业出版社..8 [2] 郎波.Java语言程序设计[M].2版.清华大学出版社..9 [3]张广彬.王小宁.高静Java课程设计案例精编(第二版)[M].清华大学出版社..6 [4]王鹏.何昀峰.Java Swing 图形界面开发和案例详解[M].清华大学出版社..12 注: [M]论著 (8)致谢
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服