




已阅读5页,还剩32页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库程序设计实践报告数据库程序设计实践报告 课程名称:数据库系统概论课程名称:数据库系统概论 专业:软件工程专业:软件工程 实验:销售管理系统实验:销售管理系统 任课老师:邓新国任课老师:邓新国 学生:学生: 时间时间 2014 年年 6 月月 20 日日 目录目录 1.概述概述 1.1 实验目的实验目的.1 1.2 实验环境实验环境.1 1.3 实验分工实验分工1 2.需求分析需求分析2 3.概念结构概念结构3 4.逻辑结构设计逻辑结构设计.8 5.数据库的实现数据库的实现11 6.应用系统设计的实现(代码)应用系统设计的实现(代码)21 7.附录附录. 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 1 2 2需求分析需求分析 销售管理系统,可用于企业的销售信息管理,查询,更新与维护,使用方便,易用性强, 图形界面清晰明了。该软件用 java 语言编写,用 SQLServer2005 数据库作为后台的数据库进 行信息的存储,用 SQL 语句完成销售信息的添加,查询,修改,删除的操作。用 ODBC 驱动实 现前台 Java 与后台 SQL 数据库的连接。Java 语言跨平台性强,可以在 windows,linux,ubuntu 等系统下使用,方便简单,安全性好。SQLServer2005 数据库高效安 全,两者结合可相互利用各自的优势。 该系统实现的大致功能: 1.用户登陆界面。该界面可以选择使用者的身份, “系统管理员,基本档案管理员,业务员” 。 不同的身份有不同的操作界面和功能权限。ID 号和密码输入正确即可登录。 2.系统管理员界面,拥有最高权限。提供了客户信息管理、产品信息管理、订单信息管理、 发货管理与签收管理等功能。 3.基本档案管理员界面。提供了客户信息管理、产品信息管理等功能。 4.业务员界面。提供了订单信息管理、发货管理与签收管理等功能。 5.登录的用户信息分别存储在 SQL 数据库的“unpw 表”中,如果用户信息不存在这个表中, 将会无权利登录本管理系统。 6.保证了本销售管理系统的安全性。 系统功能图如下系统功能图如下: : 2 2 销售管理系统 业务员系统管理员基本档案管理员 订 单 信 息 管 理 发 货 管 理 签 收 管 理 客 户 信 息 管 理 产 品 信 息 管 理 订 单 信 息 管 理 发 货 管 理 客 户 信 息 管 理 产 品 信 息 管 理 订 单 信 息 管 理 签 收 管 理 3 3概念结构设计概念结构设计 根据以上对系统的需求分析,系统设计,本系统使用的数据库实体分别为客户信息实体, 产品信息实体,订单信息实体,发货单实体,签收单实体。 1:客户信息实体 客户信息实体包括客户名称、单位地址、联系电话、地址、开户银行、银行账号、发票抬 头、所在区域等属性。客户信息实体的 E-R 图如图所示。 2:发货单实体 发货单实体包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、 单价、运费、总价、发货日期等属性,E-R 图如图所示。 3 3:签收单实体 客户信息 客户名称 单位地址 联系电话 地址 开户银行 银行账号 发票抬头 所在区域 发货单 客户名称 联系人 联系电话 发货地址 地址 产品名称 型号 数量 单价 运费 总价 发货日期 签收单实体包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、 单价、运费、总价、收货日期等属性,E-R 图如图所示。 4:unpw 实体 unpw 实体包括 un、pw、qx 等属性,E-R 图如图所示。 4 unpw un pw qx 签收单 客户名称 联系人 联系电话 发货地址 地址 产品名称 型号 数量 单价 运费 总价 收货日期 5:产品信息实体 产品信息实体主要包括产品名称、规格、型号、操作系统、产品描述、产品分类等属性。E- R 图如图所示 6:订单信息实体 订单信息实体主要包括客户名称、联系人、联系电话、发货地址、最后到货期限(日期) 以及产品名称、型号、数量、产品要求等属性。E-R 图如图所示。 5 实体属性表:实体属性表: 产品信息 产品名称 规格 型号 操作系统 产品描述 产品分类 订单信息 联系人 联系电话 发货地址 最后到货期限 客户名称 产品名称 型号 数量 产品要求 实体属性 客户信息 客户名称、单位地址、联系电话、地址、开户银行、银行账号、发票抬头、所在区域 产品信息 产品名称、规格、型号、操作系统、产品描述、产品分类 订单信息 客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、 数量、产品要求 签收单 客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、 总价、收货日期 发货单 客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、 总价、发货日期 unpw(用户) un(登录名) 、pw(密码) 、qx(用户) 6 6 7 4 4逻辑结构设计逻辑结构设计 产品信息 产品名称 型号 规格 订单信息 产品名称 产品要求 型号 客户信息 客户名称 产品名称 单位地址 地址 签收单 银行账号 型号 单价 数量 发票抬头 总价 发货日期 运费 发货单 开户银行 联系电话 所在区域 操作系统 产品描述 产品分类 数量 客户名称 发货地址 联系电话 联系人 地址 收货日期 数量 总价 运费 单价 1 包含 n 1 签 收 N 1 生成 1 1 1 采购 n (1) 表.客户信息(客户信息表) 客户信息表包括客户名称、单位地址、联系电话、地址、开户银行、银行帐号、 发票抬头、所在区域等信息。 (2) 表.产品信息(产品信息表) 产品信息表包括产品名称、规格、型号、操作系统、产品描述、产品分类等信 息。 8 (3)表.订单信息(订单信息表) 订单信息表包括客户名称、联系人、联系电话、发货地址、最后到货期限(日 期)以及产品名称、型号、数量、产品要求等信息。 (4) 表.发货单信息(发货单表) 发货单表主要包括客户名称、联系人、联系电话、发货地址、地址、产品名称、 型号、数量、单价、运费、总价、发货日期等信息。 9 (5) 表.签收单信息(签收单表) 签收单表主要包括客户名称、联系人、联系电话、发货地址、地址、产品名称、 型号、数量、单价、运费、总价、收货日期等信息。 (6) 表.unpw(用户表) 用户表包括 un、pw、qx 等信息。 10 5 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) ) 1313 6 6应用系统设计实现应用系统设计实现 用户登录模块 登录错误还可以重置 1系统管理员登录 在登陆界面选择“系统管理员”角色,输入正确的ID和密码。验证成功则可进入系 统管理员管理界面。系统管理员ID号和登录密码存在数据库中的管理员信息表。表 中存在的管理员才允许登录 14 基本档案管理员操作模块 1.1 点击客户信息,会显示订单的客户信息,有增加,删除修改,查询,显示功能 1.2 点击订单信息模块 出现现在的订单信息,包括客户信息,定的产品信息 15 1.3 点击产品信息管理出现仓库现有的产品信息 1.4 点击发货管理,出现已发货的订单的客户信息和产品信息 2 业务员模块 16 2.1 点击点击 出现用户订单情况 2.2点击增加键出现 17 2.3 点击 删除键出现删除键出现 2.4 点击 修改修改 18 2.5 点击 查询查询 2.6 点击 出现还未发货的客户订单信息 2.7 点击 出现已发货的客户信息 3 基本档案管理员模块 19 3.1点击 出现已在该系统订单的客户信息 3.2点击 出现仓库还有的存货信息 20 6 关键代码 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(“登录界面“); 21 p1 = 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 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() / 找出表中的记录数赋给i 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(“发票抬头“); 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 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() 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() 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 columnN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 7.5 解直角三角形说课稿-2025-2026学年初中数学苏科版2012九年级下册-苏科版2012
- 人教版二年级上册数学全册集体备课教学设计(配2025年秋改版教材)
- 二年级品德下册 主题三“我们一起做”说课稿 首师大版
- 探究与实践 看云识天气教学设计-2025-2026学年初中地理湘教版2024七年级上册-湘教版2024
- 《第一单元 唱歌 大雨和小雨》(教学设计)-2023-2024学年人教版(2012)音乐一年级上册
- 农药的田间药效试验说课稿-2025-2026学年中职专业课-植物保护技术-农林类-农林牧渔大类
- 蒲城县医院知识培训课件
- 蒜苔农业知识培训课件
- 葡萄酒酒标基础知识培训
- 2025年林业时政试题及答案解析
- 中级注册安全工程师《法律法规》试题及答案
- 2025年汽车转向系统行业需求分析及创新策略研究报告
- 2025年四川省成都市高新区事业单位招聘考试综合类面试真题模拟试卷
- 2025年秋统编版语文二年级上册全册课件(课标版)
- 七下期末人教版数学试卷
- 2025新疆巴音郭楞州和硕县面向社会招聘社区工作者7人笔试参考题库附答案解析
- 2025年六安市裕安区石婆店镇公开招考村级后备干部8名笔试备考试题及答案解析
- 2025年事业单位考试题库及参考答案
- 2025全国农业(水产)行业职业技能大赛(水生物病害防治员)选拔赛试题库(含答案)
- 石油钻采设备与工具专业标准分类
- GB/T 39725-2020信息安全技术健康医疗数据安全指南
评论
0/150
提交评论