资源描述
大连海事大学本科生实验报告
数据库原理-操作实训
院 (系): 交通运输管理学院
专 业: 电子商务
课程名称: 数据库原理
学 号: 2220113494
学 生: 周慧敏
任课教师: 贺琳
完成日期: 2013 年 12 月
1.实验目的
掌握数据库模式设计,依据实际要求设计表结构,建立表的关系;结合一定的开发工具实现数据库应用程序的开发。
2.实验环境
2.1 硬件环境:
处理器:Intel(R) Core(TM) i3 CPU M 380 @ 2.53GHz 2.53GHz
安装内存:(RAM):2GB(1.86GB可用)
2.2 软件环境
操作系统: Windows7
数据库管理系统:微软公司的SQL Server2005
开发工具: Eclipse
3.需求分析
销售管理系统,可用于企业的销售信息管理,查询,更新与维护,使用方便,易用性强,图形界面清晰明了。该软件用java语言编写,用SQLServer2005数据库作为后台的数据库进行信息的存储,用SQL语句完成销售信息的添加,查询,修改,删除的操作。用ODBC驱动实现前台Java与后台SQL数据库的连接。Java语言跨平台性强,可以在windows,linux,ubuntu等系统下使用,方便简单,安全性好。SQLServer2005数据库高效安全,两者结合可相互利用各自的优势。
该系统实现的大致功能:
1. 用户登陆界面。该界面可以选择使用者的身份,“系统管理员,基本档案管理员,业务员”。不同的身份有不同的操作界面和功能权限。ID号和密码输入正确即可登录。
2. 系统管理员界面,拥有最高权限。提供了客户信息管理、产品信息管理、订单信息管理、发货管理与签收管理等功能。
3. 基本档案管理员界面。提供了客户信息管理、产品信息管理等功能。
4. 业务员界面。提供了订单信息管理、发货管理与签收管理等功能。
5. 登录的用户信息分别存储在SQL数据库的“unpw表”中,如果用户信息不存在这个表中,将会无权利登录本管理系统。
6. 保证了本销售管理系统的安全性。
系统功能图如下:
销售管理系统
基本档案管理员
业务员
系统管理员
发货管理
签收管理
订单信息管理
产品信息管理
客户信息管理
订单信息管理
订单信息管理
产品信息管理
客户信息管理
发货管理
签收管理
4.概念结构设计
根据以上对系统的需求分析,系统设计,本系统使用的数据库实体分别为客户信息实体,产品信息实体,订单信息实体,发货单实体,签收单实体。
1:客户信息实体
客户信息实体包括客户名称、单位地址、联系电话、地址、开户银行、银行账号、发票抬头、所在区域等属性。客户信息实体的E-R图如图所示。
所在区域
发票抬头
银行账号
地址
联系电话
单位地址
客户名称
客户信息
开户银行
2:发货单实体
发货单实体包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期等属性,E-R图如图所示。
产品名称
发货日期
单价
总价
运费
数量
型号
地址
联系人
发货单
发货地址
联系电话
客户名称
3:签收单实体
签收单实体包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期等属性,E-R图如图所示。
产品名称
收货日期
单价
总价
运费
数量
型号
地址
联系人
签收单
发货地址
联系电话
客户名称
4:unpw实体
unpw实体包括un、pw、qx等属性,E-R图如图所示。
pw
un
unpw
qx
5:产品信息实体
产品信息实体主要包括产品名称、规格、型号、操作系统、产品描述、产品分类等属性。E-R图如图所示。
规格
产品名称
型号
产品分类
产品描述
产品信息
操作系统
6:订单信息实体
订单信息实体主要包括客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、数量、产品要求等属性。E-R图如图所示。
最后到货期限
联系人
产品要求
数量
型号
产品名称
客户名称
发货地址
联系电话
订单信息
实体属性表:
实体
属性
客户信息
客户名称、单位地址、联系电话、地址、开户银行、银行账号、发票抬头、所在区域
产品信息
产品名称、规格、型号、操作系统、产品描述、产品分类
订单信息
客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、数量、产品要求
签收单
客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期
发货单
客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期
unpw(用户)
un(登录名)、pw(密码)、qx(用户)
产品描述
操作系统
产品分类
产品名称
产品信息
产品名称
1包含n
型号
型号
1采购n
数量
订单信息
规格
客户名称
地址
产品要求
1
生成1
1
客户信息
产品名称
所在区域
1
签收
N
单位地址
型号
发货单
发票抬头
联系电话
客户名称
数量
银行账号
联系电话
单价
签收单
开户银行
联系人
运费
数量
发货地址
总价
地址
单价
发货日期
收货日期
总价
运费
5.逻辑结构设计
(1) 表-dbo.客户信息(客户信息表)
客户信息表包括客户名称、单位地址、联系电话、地址、开户银行、银行帐号、发票抬头、所在区域等信息。
(2) 表-dbo.产品信息(产品信息表)
产品信息表包括产品名称、规格、型号、操作系统、产品描述、产品分类等信息。
(3)表-dbo.订单信息(订单信息表)
订单信息表包括客户名称、联系人、联系电话、发货地址、最后到货期限(日期)以及产品名称、型号、数量、产品要求等信息。
(4) 表-dbo.发货单信息(发货单表)
发货单表主要包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、发货日期等信息。
(5) 表-dbo.签收单信息(签收单表)
签收单表主要包括客户名称、联系人、联系电话、发货地址、地址、产品名称、型号、数量、单价、运费、总价、收货日期等信息。
(6) 表-dbo.unpw(用户表)
用户表包括un、pw、qx等信息。
6.数据库实现
(1)数据库关系图
(2)SQL语句实现
数据表的创建:
(i)客户信息表创建:
create table 客户信息表(
客户名称 nchar(10) not null primary key ,
单位地址 nchar(10),
联系电话 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 ,
联系人 nchar(10),
联系电话 nchar(10),
发货地址 nchar(10),
最后到货期限 nchar(10),
产品名称 nchar(10),
型号 nchar(10),
数量 int,
产品要求 nchar(10),
)
(iv)发货单表创建:
create table 发货单表(
客户名称 nchar(10) not null primary key ,
联系人 nchar(10),
联系电话 nchar(10),
发货地址 nchar(10),
地址 nchar(10),
产品名称 nchar(10),
型号 nchar(10),
数量 int,
单价 int,
运费 int,
总价 int,
发货日期 nchar(10),
)
(v)收货单表创建:
create table 收货单表(
客户名称 nchar(10) not null primary key ,
联系人 nchar(10),
联系电话 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 null
)
7.应用系统设计实现
(1)用户登录模块
(2)各用户操作模块
(i)系统管理员操作模块
(ii)基本档案管理员操作模块
(iii)业务员操作模块
(3)系统管理员登录
在登陆界面选择“系统管理员”角色,输入正确的ID和密码。验证成功则可进入系统管理员管理界面。系统管理员ID号和登录密码存在数据库中的管理员信息表。表中存在的管理员才允许登录。
(i)点击客户信息管理,弹出如下界面:
(ii)点击显示按钮后,会出现数据库里保存的客户信息:
(iii)点击增加按钮,弹出如下界面,输入要增加的客户信息,成功后会弹出增加成功的提示窗口:
(iv)增加客户信息成功后客户信息管理界面会增加一行客户信息,如图所示:
(v)选中一条客户信息,点击删除按钮,成功后会出现删除成功的提示窗口:
(vi)成功删除Tom客户的信息后,客户信息管理界面变化如下:
(vii)选中一行客户信息,点击修改按钮,出现如下界面,输入要修改的信息,成功后弹出修改成功的提示窗口:(此处修改了客户Tom的联系电话)
(viii)点击查询按钮,弹出如下窗口:
在文本框中输入“Hei“,即可查询所在区域为”Hei“的客户信息:
其他模块与客户信息管理模块类似,均能实现信息的查询、修改、删除、增加、显示等功能,在此不再赘述;点击退出系统即可完成本次操作。
经过系统一系列的增删改查操作之后,sql sever 2005数据库上的客户信息表同时也发生了改变:
8.实验总结(实验心得)
本次操作实训虽然很辛苦,但实在是受益匪浅。在操作实训过程中碰到了很多问题,刚开始的时候,还真不知道从哪里下手。但最终在图书、同学和老师的帮助下都得到了解决,让我学会了好多书本上没有的东西,通过本次操作实训我也能将课本上的知识融会贯通,起到了很好的辅助学习的效果,但是我发现我学到的知识比整整一个学期学到的都多。理论和实践的相结合是学习最有效的方法。在实验的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这次操作实训之后,一定把以前所学过的知识重新温故。
通过这次操作实训使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。
附录:代码
Control.java
package zhm;
public class Control {
public static void main(String[] args) {
new DLFrame();
}
}
DLFrame.java
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 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<String> cbrole = new JComboBox<String>();
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("登录界面");
p1 = new JPanel();
p2 = new JPanel();
p3 = new JPanel();
cbrole.addItem("系统管理员");
cbrole.addItem("基本档案管理员");
cbrole.addItem("业务员");
/*image = new ImageIcon("picture\\st.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.microsoft.sqlserver.jdbc.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
try {
con = DriverManager.getConnection(
"jdbc:sqlserver://localhost:1433; DatabaseName=销售管理系统",
"sa", "2191826");
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);
}
}
}
sysManagerFrame.java
package zhm;
import java.awt.event.ActionEvent;
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();
JPanel 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("系统管理员");
@SuppressWarnings("deprecation")
sysManagerFrame() {// 构造方法
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.addActionListener(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 ProductManager("产品信息管理").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);
}
}
}
baseManagerFrame.java
package zhm;
import java.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 = new JButton("退出管理系统");
JLabel l = new JLabel("基本档案管理员");
@SuppressWarnings("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.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 ProductManager("产品信息管理").display();
}
if (e.getActionCommand() == "订单信息管理") {
new OrderManager("订单信息管理").display();
}
if (e.getActionCommand() == "退出管理系统") {
System.exit(0);
}
}
}
businessManFrame.java
package zhm;
import java.awt.event.*;
import javax.swing.*;
public class businessManFrame extends JFrame implements ActionListener {// 业务员界面
private static final long serialVersionUID = 1L;
JPanel p1 = 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("业务员");
@SuppressWarnings("deprecation")
businessManFrame() {// 构造方法
super("销售管理系统");
setSize(205, 300);
add("North", 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();
}
public 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);
}
}
}
CustomerAdd.java
package 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 JLabel("联系电话:");
JLabel l4 = new JLabel("地址: ");
JLabel l5 = new JLabel("开户银行:");
JLabel l6 = new JLabel("银行账号:")
展开阅读全文