1、大连海事大学本科生实验报告数据库原理-操作实训院 系: 交通运输管理学院 专 业: 电子商务 课程名称: 数据库原理 学 号: 22201一三494 学 生: 周慧敏 任课教师: 贺琳 完成日期: 20一三 年 12 月1实验目的掌握数据库模式设计,依据实际要求设计表结构,建立表的关系;结合一定的开发工具实现数据库应用程序的开发。2实验环境2.1 硬件环境:处理器:Intel(R) Core(TM) i3 CPU M 380 x 2.53GHz 安装内存:RAM:2GB1.86GB可用2.2 软件环境操作系统: Windows7数据库管理系统:微软公司的SQL Server2005开发工具:
2、Eclipse3需求分析 销售管理系统,可用于企业的销售信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用SQLServer2005数据库作为后台的数据库进行信息的存储,用SQL语句完成销售信息的添加,查询,修改,删除的操作。用ODBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,平安性好。SQLServer2005数据库高效平安,两者结合可相互利用各自的优势。该系统实现的大致功能:1. 用户登陆界面。该界面可以选择使用者的身份,“系统管理员,根本档案管理员
3、,业务员。不同的身份有不同的操作界面和功能权限。ID号和密码输入正确即可登录。2. 系统管理员界面,拥有最高权限。提供了客户信息管理、产品信息管理、订单信息管理、发货管理与签收管理等功能。3. 根本档案管理员界面。提供了客户信息管理、产品信息管理等功能。4. 业务员界面。提供了订单信息管理、发货管理与签收管理等功能。5. 登录的用户信息分别存储在SQL数据库的“unpw表中,如果用户信息不存在这个表中,将会无权利登录本管理系统。6. 保证了本销售管理系统的平安性。系统功能图如下: 销售管理系统 根本档案管理员业务员系统管理员发货管理签收管理订单信息管理产品信息管理客户信息管理订单信息管理订单信
4、息管理产品信息管理客户信息管理发货管理签收管理4概念结构设计根据以上对系统的需求分析,系统设计,本系统使用的数据库实体分别为客户信息实体,产品信息实体,订单信息实体,发货单实体,签收单实体。1:客户信息实体客户信息实体包括客户名称、单位地址、x、地址、开户银行、银行账号、发票抬头、所在区域等属性。客户信息实体的E-R图如下图。 所在区域 发票抬头 银行账号 地址 x单位地址 客户名称 客户信息 开户银行2:发货单实体发货单实体包括客户名称、联系人、x、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期等属性,E-R图如下图。 产品名称 发货日期 单价 总价 运费 数量型号 地址
5、联系人 发货单 发货地址 x 客户名称3:签收单实体签收单实体包括客户名称、联系人、x、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期等属性,E-R图如下图。 产品名称 收货日期 单价 总价 运费 数量型号 地址 联系人 签收单 发货地址 x 客户名称4:unpw实体unpw实体包括un、pw、qx等属性,E-R图如下图。 pw un unpw qx5:产品信息实体 产品信息实体主要包括产品名称、规格、型号、操作系统、产品描述、产品分类等属性。E-R图如下图。 规格 产品名称 型号 产品分类 产品描述 产品信息 操作系统6:订单信息实体订单信息实体主要包括客户名称、联系人、x
6、、发货地址、最后到货期限日期以及产品名称、型号、数量、产品要求等属性。E-R图如下图。 最后到货期限 联系人 产品要求 数量型号 产品名称 客户名称 发货地址 x 订单信息实体属性表:实体属性客户信息客户名称、单位地址、x、地址、开户银行、银行账号、发票抬头、所在区域产品信息产品名称、规格、型号、操作系统、产品描述、产品分类订单信息客户名称、联系人、x、发货地址、最后到货期限日期以及产品名称、型号、数量、产品要求签收单客户名称、联系人、x、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期发货单客户名称、联系人、x、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期
7、unpw用户un登录名、pw密码、qx用户产品描述操作系统产品分类产品名称产品信息产品名称1包含n型号型号1采购n数量订单信息规格客户名称地址产品要求1生成11客户信息产品名称所在区域1签收N单位地址型号发货单发票抬头x客户名称数量银行账号x单价签收单开户银行联系人运费数量发货地址总价地址单价发货日期收货日期总价运费5逻辑结构设计1 (客户信息表)客户信息表包括客户名称、单位地址、x、地址、开户银行、银行帐号、发票抬头、所在区域等信息。2 表-dbo.产品信息(产品信息表)产品信息表包括产品名称、规格、型号、操作系统、产品描述、产品分类等信息。3(订单信息表)订单信息表包括客户名称、联系人、x
8、、发货地址、最后到货期限日期以及产品名称、型号、数量、产品要求等信息。4 表-dbo.发货单信息(发货单表)发货单表主要包括客户名称、联系人、x、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期等信息。5 (签收单表)签收单表主要包括客户名称、联系人、x、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期等信息。6 (用户表用户表包括un、pw、qx等信息。6数据库实现1数据库关系图2SQL语句实现数据表的创立:i客户信息表创立:create table 客户信息表(客户名称 nchar(10) not null primary key ,单位地址 nchar(1
9、0),x nchar(10),地址 nchar(10),开户银行 nchar(10),银行账号 nchar(10),发票抬头 nchar(10),所在区域 nchar(10),)ii产品信息表创立:create table 产品信息表(产品名称 nchar(10) not null primary key ,规格 nchar(10),型号 nchar(10),操作系统 nchar(10),产品描述 nchar(10),产品分类 nchar(10), )iii订单信息表创立:create table 订单信息表(客户名称 nchar(10) not null primary key ,联系人 n
10、char(10),x nchar(10),发货地址 nchar(10),最后到货期限 nchar(10),产品名称 nchar(10),型号 nchar(10),数量 int,产品要求 nchar(10),)iv发货单表创立:create table 发货单表(客户名称 nchar(10) not null primary key ,联系人 nchar(10),x nchar(10),发货地址 nchar(10),地址 nchar(10),产品名称 nchar(10),型号 nchar(10),数量 int,单价 int,运费 int,总价 int,发货日期 nchar(10),)v收货单表创
11、立:create table 收货单表(客户名称 nchar(10) not null primary key ,联系人 nchar(10),x nchar(10),发货地址 nchar(10),地址 nchar(10),产品名称 nchar(10),型号 nchar(10),数量 int,单价 int,运费 int,总价 int,收货日期 nchar(10),)vi管理员信息表创立:create table unpw表(qx int not null primary key ,un varchar(12) not null,pw varchar(12) not null7应用系统设计实现1用
12、户登录模块2各用户操作模块i系统管理员操作模块ii根本档案管理员操作模块iii业务员操作模块3系统管理员登录在登陆界面选择“系统管理员角色,输入正确的ID和密码。验证成功那么可进入系统管理员管理界面。系统管理员ID号和登录密码存在数据库中的管理员信息表。表中存在的管理员才允许登录。i点击客户信息管理,弹出如下界面:ii点击显示按钮后,会出现数据库里保存的客户信息:iii点击增加按钮,弹出如下界面,输入要增加的客户信息,成功后会弹出增加成功的提示窗口:iv增加客户信息成功后客户信息管理界面会增加一行客户信息,如下图:v选中一条客户信息,点击删除按钮,成功后会出现删除成功的提示窗口:vi成功删除T
13、om客户的信息后,客户信息管理界面变化如下:vii选中一行客户信息,点击修改按钮,出现如下界面,输入要修改的信息,成功后弹出修改成功的提示窗口:此处修改了客户Tom的xviii点击查询按钮,弹出如下窗口:在文本框中输入“Hei“,即可查询所在区域为Hei“的客户信息:其他模块与客户信息管理模块类似,均能实现信息的查询、修改、删除、增加、显示等功能,在此不再赘述;点击退出系统即可完本钱次操作。经过系统一系列的增删改查操作之后,sql sever 2005数据库上的客户信息表同时也发生了改变:8实验总结实验心得本次操作实训虽然很辛苦,但实在是受益匪浅。在操作实训过程中碰到了很多问题,刚开始的时候,
14、还真不知道从哪里下手。但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次操作实训我也能将课本上的知识融会贯穿,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在实验的过程中发现了自己的缺乏之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这次操作实训之后,一定把以前所学过的知识重新温故。 通过这次操作实训使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会效劳,从而提高自己的实际动手能力和独立思考的能力。附
15、录:代码package zhm;public class Control public static void main(String args) new DLFrame();package zhm;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 serialVersi
16、onUID = 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 = ne
17、w 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;xSuppressWarnings(deprecation)public DLFrame() / 构造方
18、法super(登录界面);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(一五0, 一五0, 250, 250);p2.setLay
19、out(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();btnLo
20、gin.addActionListener(this);cbrole.addItemListener(this);btncz.addActionListener(this);btnCancel.addActionListener(this);public void connDB() / 连接数据库try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver); catch (ClassNotFoundException e) e.printStackTrace();try con = DriverManager.getConnec
21、tion(jdbc:sqlserver:/localhost:1433; DatabaseName=销售管理系统,sa, 219一八26);stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭连接try stmt.close();con.close(); catch (SQLException e) ();public void itemStateChanged(ItemEvent e) if (e.getStateChange() = ItemEv
22、ent.SELECTED) JComboBox jcb = (JComboBox) e.getSource();qxian = jcb.getSelectedIndex();xSuppressWarnings(deprecation)public void actionPerformed(ActionEvent e) Object source = e.getSource();String un = null;String pw = null;boolean success = false;/ 用于判断是否登录成功if (source = btnLogin) if (txtUser.getTe
23、xt().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)
24、 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();s
25、uccess = 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);package zhm;import java.awt.event.ActionE
26、vent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;public class sysManagerFrame extends JFrame implements ActionListener / 系统管理员界面private static final long serialVersionUID = 1L;JPanel p1 = new JPanel();J
27、Panel p2 = new JPanel();JButton btns = new JButton(客户信息管理);JButton btnc = new JButton(产品信息管理);JButton btnsc = new JButton(订单信息管理);JButton btng = new JButton(发货管理);JButton btnu = new JButton(签收管理);JButton btnClose = new JButton(退出管理系统);JLabel l = new JLabel(系统管理员);xSuppressWarnings(deprecation)sysMan
28、agerFrame() / 构造方法super(销售管理系统);setSize(205, 300);add(North, p1);add(Center, p2);p1.add(l);p2.add(btns);p2.add(btnc);p2.add(btnsc);p2.add(btng);p2.add(btnu);p2.add(btnClose);btns.addActionListener(this);btnc.addActionListener(this);btnsc.addActionListener(this);btng.addActionListener(this);btnu.addA
29、ctionListener(this);btnClose.addActionListener(this);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);show();public void actionPerformed(ActionEvent e) if (e.getActionCommand() = 客户信息管理)new CustomerManager(客户信息管理).display();if (e.getActionCommand() = 产品信息管理) new ProductMa
30、nager(产品信息管理).display();if (e.getActionCommand() = 订单信息管理) new OrderManager(订单信息管理).display();if (e.getActionCommand() = 发货管理) new sendManager(发货管理).display();if (e.getActionCommand() = 签收管理) new ReceiveManager(签收管理).display();if (e.getActionCommand() = 退出管理系统) System.exit(0);package zhm;import java
31、.awt.event.*;import javax.swing.*;public class baseManagerFrame extends JFrame implements ActionListener / 系统管理员界面private static final long serialVersionUID = 1L;JPanel p1 = new JPanel();JPanel p2 = new JPanel();JButton btns = new JButton(客户信息管理);JButton btnc = new JButton(产品信息管理);JButton btnClose =
32、 new JButton(退出管理系统);JLabel l = new JLabel(根本档案管理员);xSuppressWarnings(deprecation)baseManagerFrame() / 构造方法super(销售管理系统);setSize(205, 300);add(North, p1);add(Center, p2);p1.add(l);p2.add(btns);p2.add(btnc);p2.add(btnClose);btns.addActionListener(this);btnc.addActionListener(this);btnClose.addActionL
33、istener(this);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);show();public void actionPerformed(ActionEvent e) if (e.getActionCommand() = 客户信息管理)new CustomerManager(客户信息管理).display();if (e.getActionCommand() = 产品信息管理) new ProductManager(产品信息管理).display();if (e.getAction
34、Command() = 订单信息管理) new OrderManager(订单信息管理).display();if (e.getActionCommand() = 退出管理系统) System.exit(0);package zhm;import java.awt.event.*;import javax.swing.*;public class businessManFrame extends JFrame implements ActionListener / 业务员界面private static final long serialVersionUID = 1L;JPanel p1 =
35、new JPanel();JPanel p2 = new JPanel();JButton btnsc = new JButton(订单信息管理);JButton btng = new JButton(发货管理);JButton btnu = new JButton(签收管理);JButton btnClose = new JButton(退出管理系统);JLabel l = new JLabel(业务员);xSuppressWarnings(deprecation)businessManFrame() / 构造方法super(销售管理系统);setSize(205, 300);add(Nor
36、th, p1);add(Center, p2);p1.add(l);p2.add(btnsc);p2.add(btng);p2.add(btnu);p2.add(btnClose);btnsc.addActionListener(this);btng.addActionListener(this);btnu.addActionListener(this);btnClose.addActionListener(this);this.setResizable(false);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);show();publ
37、ic void actionPerformed(ActionEvent e) if (e.getActionCommand() = 订单信息管理) new OrderManager(订单信息管理).display();if (e.getActionCommand() = 发货管理) new sendManager(发货管理).display();if (e.getActionCommand() = 签收管理) new ReceiveManager(签收管理).display();if (e.getActionCommand() = 退出管理系统) System.exit(0);package
38、zhm;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.sql.*;public class CustomerAdd extends JFrame implements ActionListener/ 用于客户信息管理中增加或修改某条记录的界面private static final long serialVersionUID = 1L;JLabel l1 = new JLabel(客户名称:);JLabel l2 = new JLabel(单位地址:);JLabel l3 = new JLa
39、bel(x:);JLabel l4 = new JLabel(地址: );JLabel l5 = new JLabel(开户银行:);JLabel l6 = new JLabel(银行账号:);JLabel l7 = new JLabel(发票抬头:);JLabel l8 = new JLabel(所在区域:);JTextField t1 = new JTextField(10);JTextField t2 = new JTextField(10);JTextField t3 = new JTextField(10);JTextField t4 = new JTextField(10);JTextField t5 = new JT