java数据库销售管理系统实验报告

上传人:ch****o 文档编号:157695183 上传时间:2022-09-30 格式:DOC 页数:37 大小:880.02KB
返回 下载 相关 举报
java数据库销售管理系统实验报告_第1页
第1页 / 共37页
java数据库销售管理系统实验报告_第2页
第2页 / 共37页
java数据库销售管理系统实验报告_第3页
第3页 / 共37页
点击查看更多>>
资源描述
数据库程序设计实践报告 课程名称:数据库系统概论 专业:软件工程 实验:销售管理系统 任课老师:邓新国 学生: 时间 2014年6月20日 目录1.概述 1.1实验目的.1 1.2实验环境.1 1.3 实验分工.12. 需求分析.23. 概念结构.34. 逻辑结构设计.85. 数据库的实现.116. 应用系统设计的实现(代码).217. 附录. 7.1实验心得.35 1 概述实验目的:数据库是一门应用性很强的专业课,在学习时必须注意理论与实践相结合。本实践课的目的是通过实践使学生经历一个数据库系统的数据库设计的全过程和受到一次综合的训练,以便能较全面地理解、掌握和综合运用所学的知识。本次实验目的是利用本学期所学知识,掌握数据库模式设计,依据实际要求设计表结构,建立表的关系;结合一定的开发工具实现数据库应用程序的开发。深入了解数据库建立的几大问题。实验环境:硬件环境:处理器:Intel(R) Core(TM) i3 CPU M 380 2.53GHz 2.53GHz安装内存:(RAM):2GB(1.86GB可用)软件环境操作系统: Windows7数据库管理系统:MySQL 开发工具: Eclipse (MySQL-Front WampServer)开发语言:java实验分工:(1) 需求分析:小组全员(2) 概念设计:小组全员(3) 逻辑设计:小组全员(4) 物理设计: 小组全员(5) 数据库实现:第一部分:系统管理员模块 苏雯 第二部分:基本档案管理员模块 陈建儿第三部分:业务员模块 陈秋霞(6) 报告制作:小组全员1 2需求分析 销售管理系统,可用于企业的销售信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用SQLServer2005数据库作为后台的数据库进行信息的存储,用SQL语句完成销售信息的添加,查询,修改,删除的操作。用ODBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer2005数据库高效安全,两者结合可相互利用各自的优势。该系统实现的大致功能:1. 用户登陆界面。该界面可以选择使用者的身份,“系统管理员,基本档案管理员,业务员”。不同的身份有不同的操作界面和功能权限。ID号和密码输入正确即可登录。2. 系统管理员界面,拥有最高权限。提供了客户信息管理、产品信息管理、订单信息管理、发货管理与签收管理等功能。3. 基本档案管理员界面。提供了客户信息管理、产品信息管理等功能。4. 业务员界面。提供了订单信息管理、发货管理与签收管理等功能。5. 登录的用户信息分别存储在SQL数据库的“unpw表”中,如果用户信息不存在这个表中,将会无权利登录本管理系统。6. 保证了本销售管理系统的安全性。系统功能图如下: 销售管理系统 基本档案管理员业务员系统管理员发货管理签收管理订单信息管理产品信息管理客户信息管理订单信息管理订单信息管理产品信息管理客户信息管理发货管理签收管理 2 3概念结构设计根据以上对系统的需求分析,系统设计,本系统使用的数据库实体分别为客户信息实体,产品信息实体,订单信息实体,发货单实体,签收单实体。1:客户信息实体客户信息实体包括客户名称、单位地址、联系电话、地址、开户银行、银行账号、发票抬头、所在区域等属性。客户信息实体的E-R图如图所示。 所在区域 发票抬头 银行账号 地址 联系电话单位地址 客户名称 客户信息 开户银行2:发货单实体发货单实体包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期等属性,E-R图如图所示。 产品名称 发货日期 单价 总价 运费 数量型号 地址 联系人 发货单 发货地址 联系电话 客户名称33:签收单实体签收单实体包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期等属性,E-R图如图所示。 产品名称 收货日期 总价 运费 数量型号 地址 联系人 签收单 发货地址 联系电话 客户名称 单价4:unpw实体unpw实体包括un、pw、qx等属性,E-R图如图所示。 pw un unpw qx45:产品信息实体 产品信息实体主要包括产品名称、规格、型号、操作系统、产品描述、产品分类等属性。E-R图如图所示 规格 产品名称 型号 产品分类 产品描述 产品信息 操作系统6:订单信息实体订单信息实体主要包括客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、数量、产品要求等属性。E-R图如图所示。 最后到货期限 联系人 产品要求 数量型号 产品名称 客户名称 发货地址 联系电话 订单信息5实体属性表: 实体属性客户信息客户名称、单位地址、联系电话、地址、开户银行、银行账号、发票抬头、所在区域产品信息产品名称、规格、型号、操作系统、产品描述、产品分类订单信息客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、数量、产品要求签收单客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期发货单客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期unpw(用户)un(登录名)、pw(密码)、qx(用户) 6产品描述操作系统产品分类产品名称产品信息产品名称1包含n型号型号1采购n数量订单信息规格客户名称地址产品要求1生成11客户信息产品名称所在区域1签收N单位地址型号发货单发票抬头联系电话客户名称数量银行账号联系电话单价签收单开户银行联系人运费数量发货地址总价地址单价发货日期收货日期总价运费 7 4逻辑结构设计(1) 表.客户信息(客户信息表)客户信息表包括客户名称、单位地址、联系电话、地址、开户银行、银行帐号、发票抬头、所在区域等信息。(2) 表.产品信息(产品信息表)产品信息表包括产品名称、规格、型号、操作系统、产品描述、产品分类等信息。8(3)表.订单信息(订单信息表)订单信息表包括客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、数量、产品要求等信息。(4) 表.发货单信息(发货单表)发货单表主要包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期等信息。 9(5) 表.签收单信息(签收单表)签收单表主要包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期等信息。(6) 表.unpw(用户表)用户表包括un、pw、qx等信息。 10 5数据库实现(1)数据库关系图(2)SQL语句实现数据表的创建:(i)客户信息表创建:create table 客户信息表(客户名称 varchar(10) primary key ,单位地址varchar(10),联系电话varchar(10),地址varchar(10),开户银行varchar(10),银行账号varchar(10),发票抬头varchar(10),所在区域varchar(10),)(ii)产品信息表创建:create table 产品信息表(产品名称varchar(10) primary key ,规格varchar(10), 型号varchar(10), 11操作系统varchar(10),产品描述varchar(10),产品分类varchar(10), )(iii)订单信息表创建:create table 订单信息表(客户名称varchar(10) primary key ,联系人varchar(10),联系电话varchar(10),发货地址varchar(10),最后到货期限varchar(10),产品名称varchar(10),型号varchar(10),数量 int,产品要求varchar(10),)(iv)发货单表创建:create table 发货单表(客户名称varchar(10) primary key ,联系人varchar(10),联系电话varchar(10),发货地址varchar(10)地址varchar(10),产品名称varchar(10)型号varchar(10),数量 int,单价 int,运费 int,总价 int,发货日期varchar(10),)(v)收货单表创建:create table 收货单表(客户名称varchar(10) primary key ,联系人varchar(10),联系电话varchar(10),发货地址varchar(10),地址varchar(10),产品名称varchar(10),型号varchar(10),数量 int,单价 int,运费 int,总价 int, 12收货日期varchar(10),)(vi)管理员信息表创建:create table unpw表(qx int primary key ,un varchar(12),pw varchar(12)) 13 6应用系统设计实现 用户登录模块登录错误还可以重置1系统管理员登录在登陆界面选择“系统管理员”角色,输入正确的ID和密码。验证成功则可进入系统管理员管理界面。系统管理员ID号和登录密码存在数据库中的管理员信息表。表中存在的管理员才允许登录14基本档案管理员操作模块1.1点击客户信息,会显示订单的客户信息,有增加,删除修改,查询,显示功能1.2点击订单信息模块出现现在的订单信息,包括客户信息,定的产品信息151.3点击产品信息管理出现仓库现有的产品信息1.4点击发货管理,出现已发货的订单的客户信息和产品信息2业务员模块162.1点击 出现用户订单情况2.2点击增加键出现17 2.3点击 删除键出现 2.4点击 修改182.5点击 查询2.6点击 出现还未发货的客户订单信息2.7 点击出现已发货的客户信息3 基本档案管理员模块193.1点击 出现已在该系统订单的客户信息3.2点击出现仓库还有的存货信息206 关键代码6.1登陆界面代码package 销售管理系统;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class DLFrame extends JFrame implements ActionListener, ItemListener / 登录界面private static final long serialVersionUID = 1L;JPanel p1 = null;JPanel p2 = null;JPanel p3 = null;JLabel userName = new JLabel(用户:);JTextField txtUser = new JTextField();JLabel password = new JLabel(密码:);JPasswordField txtPwd = new JPasswordField(6);JLabel role = new JLabel(角色:);JComboBox cbrole = new JComboBox();JButton btnLogin = new JButton(登录);JButton btncz = new JButton(重置);JButton btnCancel = new JButton(取消);JLabel imageLabel;Icon image;static int OK = 1;static int CANCEL = 0;int actionCode = 0;Connection con = null;Statement stmt = null;ResultSet rs = null;int qxian = 0;SuppressWarnings(deprecation)public DLFrame() / 构造方法super(登录界面); 21p1 = new JPanel();p2 = new JPanel();p3 = new JPanel();cbrole.addItem(系统管理员);cbrole.addItem(基本档案管理员);cbrole.addItem(业务员);/*image = new ImageIcon(picturest.jpg);imageLabel = new JLabel(image);p1.add(imageLabel);*/this.setLayout(new FlowLayout();this.setBounds(150, 150, 250, 250);p2.setLayout(new GridLayout(4, 2);p2.add(userName);p2.add(txtUser);p2.add(password);p2.add(txtPwd);p2.add(role);p2.add(cbrole);p3.add(btnLogin);p3.add(btncz);p3.add(btnCancel);this.add(p1);this.add(p2);this.add(p3);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.show();btnLogin.addActionListener(this);cbrole.addItemListener(this);btncz.addActionListener(this);btnCancel.addActionListener(this);public void connDB() / 连接数据库try Class.forName(com.mysql.jdbc.Driver); catch (ClassNotFoundException e) e.printStackTrace();try con = DriverManager.getConnection(jdbc:mysql:/localhost:3306/sell?useUnicode=true&characterEncoding=utf8,root, );stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭连接try stmt.close();con.close(); catch (SQLException e) e.printStackTrace();public void itemStateChanged(ItemEvent e) if (e.getStateChange() = ItemEvent.SELECTED) JComboBox jcb = (JComboBox) e.getSource();qxian = jcb.getSelectedIndex();SuppressWarnings(deprecation)public void actionPerformed(ActionEvent e) Object source = e.getSource();String un = null;String pw = null;boolean success = false;/ 用于判断是否登录成功if (source = btnLogin) if (txtUser.getText().equals() | txtPwd.getPassword().equals() / 判断是否输入了用户名和密码JOptionPane.showMessageDialog(null, 登录名和密码不能为空!); else this.connDB();try rs = stmt.executeQuery(select * from unpw where qx=+qxian);while (rs.next() un = rs.getString(un).trim();pw = rs.getString(pw).trim();if (txtUser.getText().equals(un) if (txtPwd.getText().equals(pw) actionCode = OK;this.setVisible(false);if (qxian=0) new sysManagerFrame();/ 进入系统管理员界面if (qxian=1) new baseManagerFrame();/ 进入基本档案管理员界面if (qxian=2) new businessManFrame();/ 进入业务员界面success = true;break; else JOptionPane.showMessageDialog(null, 密码错误!);txtPwd.setText();success = true;if (!success) JOptionPane.showMessageDialog(null, 登录名错误!);txtUser.setText();txtPwd.setText(); catch (SQLException e1) e1.printStackTrace(); else if (source = btncz) txtUser.setText();txtPwd.setText(); else if (source = btnCancel) System.exit(0);6.2客户管理代码package 销售管理系统;import java.awt.event.*;import java.sql.*;import java.util.*;import javax.swing.*;public class CustomerManager extends JFrame implements ActionListener / 客户信息管理private static final long serialVersionUID = 1L;JPanel p = new JPanel();JButton btnAdd = new JButton(增加);JButton btnDelete = new JButton(删除);JButton btnAlter = new JButton(修改);JButton btnSearch = new JButton(查询);JButton btnDisplay = new JButton(显示);JMenuBar mb = new JMenuBar();JPanel p1 = new JPanel();JTable sTable;JScrollPane scroll;Connection con = null;Statement stmt = null;ResultSet rs = null;Object playerInfo;CustomerSelect sst;String mxh = null;boolean bstd = false;CustomerManager(String title) / 构造方法super(title);add(South, p);this.add(Center, p1);mb.add(btnAdd);mb.add(btnDelete);mb.add(btnAlter);mb.add(btnSearch);mb.add(btnDisplay);this.connDB(); / 连接数据库/this.display();this.setBounds(300, 300, 600, 450);btnAdd.addActionListener(this);btnDelete.addActionListener(this);btnAlter.addActionListener(this);btnSearch.addActionListener(this);btnDisplay.addActionListener(this);this.setJMenuBar(mb);/ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setResizable(false);show();CustomerManager(CustomerSelect sst,String title) / 构造方法super(title);this.sst = sst;bstd = true;add(South, p);this.add(Center, p1);mb.add(btnAdd);mb.add(btnDelete);mb.add(btnAlter);mb.add(btnSearch);mb.add(btnDisplay);this.connDB();this.setBounds(300, 300, 600, 450);btnAdd.addActionListener(this);btnDelete.addActionListener(this);btnAlter.addActionListener(this);btnSearch.addActionListener(this);btnDisplay.addActionListener(this);this.setJMenuBar(mb);this.setResizable(false);show();public void display() / 显示所有客户的基本信息int i = 0;int j = 0;List al = new ArrayList();try rs = stmt.executeQuery(select * from 客户信息);while (rs.next() / 找出表中的记录数赋给ial.add(rs.getString(客户名称);al.add(rs.getString(单位地址);al.add(rs.getString(联系电话);al.add(rs.getString(地址);al.add(rs.getString(开户银行);al.add(rs.getString(银行账号);al.add(rs.getString(发票抬头);al.add(rs.getString(所在区域);i+; catch (SQLException e) e.printStackTrace();playerInfo = new Objecti8;String columnNames = 客户名称, 单位地址, 联系电话, 地址, 开户银行, 银行账号, 发票抬头, 所在区域,;try rs = stmt.executeQuery(select * from 客户信息 order by 客户名称);while (rs.next() playerInfoj0 = rs.getString(客户名称);playerInfoj1 = rs.getString(单位地址);playerInfoj2 = rs.getString(联系电话);playerInfoj3 = rs.getString(地址);playerInfoj4 = rs.getString(开户银行);playerInfoj5 = rs.getString(银行账号);playerInfoj6 = rs.getString(发票抬头);playerInfoj7 = rs.getString(所在区域);j+; catch (SQLException e) e.printStackTrace();sTable = new JTable(playerInfo, columnNames);/ 创建网格p1.add(sTable);scroll = new JScrollPane(sTable);this.add(scroll);public void connDB() / 连接数据库try Class.forName(com.mysql.jdbc.Driver); catch (ClassNotFoundException e) e.printStackTrace();try con = DriverManager.getConnection(jdbc:mysql:/localhost:3306/sell?useUnicode=true&characterEncoding=utf8,root, );stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭数据库连接try stmt.close();con.close(); catch (SQLException e) e.printStackTrace();public void delete() / 删除某个客户的基本信息String xh = null;String xm = null;SuppressWarnings(unused)String xn = null;SuppressWarnings(unused)String xp = null;SuppressWarnings(unused)String xr = null;String xs = null;String xb = null;SuppressWarnings(unused)String yx = null;int row = -1;row = sTable.getSelectedRow();if (row = -1) / 判断要删除的信息是否被选中JOptionPane.showMessageDialog(null, 请选择要删除的记录!); else if (!bstd) / 判断选择的是不是查询后的结果int j1 = 0;try rs = stmt.executeQuery(select * from 客户信息);while (rs.next() & j1 = row) / 找出当前被选中的记录在数据库中的对应xh = rs.getString(客户名称);xm = rs.getString(单位地址);xn = rs.getString(联系电话);xp = rs.getString(地址);xr = rs.getString(开户银行);xs = rs.getString(银行账号);xb = rs.getString(发票抬头);yx = rs.getString(所在区域);j1+; catch (SQLException e) e.printStackTrace();int i1 = 0;try SuppressWarnings(unused)int rs1 = stmt.executeUpdate(delete from 客户信息 where 客户名称=+ xh + ); / 删除数据库中当前被选中的记录JOptionPane.showMessageDialog(null, 记录删除成功!);this.dispose();new CustomerManager(客户信息管理).display(); catch (SQLException e) e.printStackTrace(); else try SuppressWarnings(unused)int rs1 = stmt.executeUpdate(delete from 客户信息 where 客户名称=+ xh + );JOptionPane.showMessageDialog(null, 记录删除成功!);this.dispose();new CustomerManager(客户信息管理).display(); catch (SQLException e) e.printStackTrace();public void update() / 修改某个客户的基本信息String xh = null;String xm = null;String xn = null;String xp = null;String xr = null;String xs = null;String xb = null;String yx = null;int row = -1;row = sTable.getSelectedRow();if (row = -1) JOptionPane.showMessageDialog(null, 请选择要修改的记录!); else int j1 = 0;try if (!bstd) / 判断选择的是不是查询后的结果rs = stmt.executeQuery(select * from 客户信息); else rs = stmt.executeQuery(select * from 客户信息 where 客户名称= + xh+ );while (rs.next() & j1 = row) / 找出当前被选中的记录在数据库中的对应xh = rs.getString(客户名称);xm = rs.getString(单位地址);xn = rs.getString(联系电话);xp = rs.getString(地址);xr = rs.getString(开户银行);xs = rs.getString(银行账号);xb = rs.getString(发票抬头);yx = rs.getString(所在区域);j1+; catch (SQLException e) e.printStackTrace();CustomerAdd cadd = new CustomerAdd();cadd.setTitle(修改);cadd.t1.setText(xh);cadd.t2.setText(xm);cadd.t3.setText(xn);cadd.t4.setText(xp);cadd.t5.setText(xr);cadd.t6.setText(xs);cadd.t7.setText(xb);cadd.t8.setText(yx);cadd.t1.setEnabled(false);this.dispose();public void select() / 显示某个查询的结果String mx;mx = sst.x;playerInfo = new Object18;String columnNames = 客户名称, 单位地址, 联系电话, 地址, 开户银行, 银行账号, 发票抬头, 所在区域;try rs = stmt.executeQuery(select * from 客户信息 where 所在区域= + mx + );while (rs.next() playerInfo00 = rs.getString(客户名称);playerInfo01 = rs.getString(单位地址);playerInfo02 = rs.getString(联系电话);playerInfo03 = rs.getString(地址);playerInfo04 = rs.getString(开户银行);playerInfo05 = rs.getString(银行账号);playerInfo06 = rs.getString(发票抬头);playerInfo07 = rs.getString(所在区域); catch (SQLException e) e.printStackTrace();if (playerInfo07 = null) this.dispose();JOptionPane.showMessageDialog(null, 客户所在区域不存在!);new CustomerManager(客户信息管理).display(); else sTable = new JTable(playerInfo, columnNames);/ 创建网格p1.add(sTable);scroll = new JScrollPane(sTable);this.add(scroll);public void actionPerformed(ActionEvent e) if (e.getActionCommand() = 增加) new CustomerAdd();this.dispose();if (e.getActionCommand() = 删除) this.delete();if (e.getActionCommand() = 修改) this.update();if (e.getActionCommand() = 查询) sst = new CustomerSelect();this.dispose();if (e.getActionCommand() = 显示) this.dispose();new CustomerManager(客户信息管理).display();347 附录7.1实验总结(实验心得)本次操作实训虽然很辛苦,但实在是受益匪浅。在操作实训过程中碰到了很多问题,刚开始的时候,还真不知道从哪里下手。但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次操作实训我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在实验的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这次操作实训之后,一定把以前所学过的知识重新温故。 通过这次操作实训使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。35
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!