Chương trình quản lý bán hàng bằng java
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC DÂN LẬP CỬU LONG KHOA CÔNG NGHỆ THÔNG TIN
_ _
ĐỀ TÀI:
Đồ án java
Sinh viên thực hiện: MSSV:
Tiêu Văn Tiếng 04.020.228
2007
Trang 2SO DO PHAN RA CHUC NANG
HE THONG CHUONG TRINH QUAN LY BAN HANG
CAP NHAT
HANG HOA
CAP NHAT KHACH HANG
CAP NHAT HOA DON
VA CHI TIET HOA DON
CAP NHAT BAO HANH
VA CHI TIET BAO HANH XEM DANH MUCHANG HOA
Trang 3A LƯỢC ĐỒ CSDL
1 Cơ sở dữ liệu :
Có nội dung sau :
2 Mô tả chi tiết
+ Bảng Khách Hàng:
KHACH HANG (MAKH , TENKH , DIACHI , DIENTHOAI , FAX , EMAIL)
Diễn giải :
MAKH :Mỗi lần mua hàng Khách hàng có 1 Mã khách hàng để phân biệt với các Khách hàng khác và những lần mua hàng khác
TENKH : Cho biết Họ và Tên cụ thể của Khách hàng mua hàng
DIACHI : Cho biết Địa chỉ của Khách hàng
DIENTHOAI : Cho biết Điện thoại của Khách hàng để tiện việc liên lạc
FAX : Cho biết số Fax của Khách hàng
EMAIL : Cho biết Email của Khách hàng để có thể giới thiệu hàng mới
Trang 4+ Bảng Hàng hóa:
HANGHOA (MAH , TENH , GIA , SOLUONG , BAOHANH , HANGSX , KHUYENMAI)
Diễn giải :
MAH : Mỗi Hàng hoá có một Mã hàng hoá để phận biệt với các Hàng hóa khác
TENH : Cho biết Tên Hàng Hoá Tên hàng phải là duy nhất
GIA : Cho biết Giá bán của Hàng hóa Giá trị của GIA phải > = 0
SOLUONG : Cho biết số lượng hàng có (số lượng tồn ) để bán không Giá trị của
SOLUONG phải >= 0
BAOHANH : Cho biết hạng bảo hành của hàng Giá trị của BAOHANH thuộc
('3THG','6THG' ,'9THG','1NAM','2NAM','3NAM')
HANGSX : Cho biết hãng sản xuất tương ứng của mặt hàng này
KHUYENMAI : Cho biết được khuyến mãi của hàng hóa (nếu có) , có thể bằng tiền hay tặng phẩm
+ Bảng Hóa đơn:
HOADON (MAHD , MAKH)
+ Bảng Chi tiết Hóa đơn:
CTHOADON (MAHD , MAH , NGAYLAP, SOLUONG, THANHTIEN)
Diễn giải :
MAHD : Mỗi hóa đơn xuất cho Khách hàng điều có một Mã hóa đơn (dựa theo Mã hóa đơn đã có trong bảng Hóa đơn) Số lượng hàng được bán tuỳ thuộc vào mã hàng (MAH).NGAYLAP : Cho biết Ngày lập hoá đơn
SOLUONG : Cho biết số lượng hàng được bán
THANHTIEN : tính số tiền phải trả
THANHTIEN = GIA* SOLUONG, với GIA là giá trị lấy từ bảng HANGHOA thông qua MAH của hàng được bán
+ Bảng Bảo Hành:
BAOHANH (MABH , MAKH)
Diễn giải :
Trang 5MABH : Mỗi phiếu bảo hành có 1 Mã bảo hành để phân biệt với các phiếu bảo hành khác.
MAKH : Cho biết khách hàng đi bảo hành hàng đã mua (MAKH tham chiếu đến bảng KHACHHANG)
+ Bảng Chi Tiết Bảo Hành:
CTBAOHANH (MABH , MAH , NGAYNHAN, NGAYTRA , CHIPHI , THONGTIN)
Diễn giải :
MABH : Mỗi Hàng hóa có 1 số bảo hành (MABH) Hàng được bảo hành dựa vào (MAH)MAH : Cho biết hàng được bảo hành
NGAYNHAN : Ngày nhận hàng để sửa chữa
NGAYTRA : Ngày trả hàng (giao hàng) lại cho Khách hàng khi sửa xong
CHIPHI : Cho biết Chi Phí tức số tiền phải trả nếu hàng hóa hư không do kỹ thuật
THONGTIN : Cho biết hàng hóa đã bảo hành đã sửa chửa những gì hay là thay mới
Trang 6B SƠ ĐỒ QUAN HỆ
Trang 7C RÀNG BUỘC TOÀN VẸN
1 YÊU CẦU RÀNG BUỘC:
RÀNG BUỘC TOÀN VẸN QUAN HỆ LOẠI
RBTV
1 Giá hàng phải là một số > 0 HANGHOA A
2 Số lượng hàng bảo hành phải >= 1 CTBAOHANH A
3 Số lượng hàng bán phải >= 1 CTHOADON A
6 Mỗi hàng hóa có một tên Hàng hóa riêng biệt HANGHOA B
7 Giá trị của BAOHANH phải thuộc (‘3THG','6THG',
10 THANHTIEN = GIA* SOLUONG (với GIA thuộc bảng
HANGHOA sao cho mã hàng của hàng hóa bằng mã hàng
của chi tiết hóa đơn)
CTHOADON,HANGHOA
F
11 NGAYLAP hóa đơn trong bảng CTHOADON không được
lớn hơn ngày hiện tại
12 NGAYTRA trên bảng CTBAOHANH phải nhỏ hơn ngày
Hiện tại và phải lớn hơn NGAYNHAN
13 Số lượng trong bảng Chi tiết Hoá đơn < = Số lượng trong
bảng Hàng hóa
CTHOADON,
14 SOLUONG trong bảng HANGHOA sẽ giảm đi một lượng
đúng bằng SOLUONG trong bảng CTHOADON khi thêm
mới một CTHOADON
HANGHOA,CTHOADON
F
15 Khi thêm vào một mẫu tin trên bảng BAOHANH thì mẫu
tin phải có MAKH đã tồn tại trong bảng KHACHHANG
BAOHANH,
16 Khi thêm vào một mẫu tin trên bảng CTBAOHANH thì
mẫu tin phải có MAH đã tồn tại trong bảng HANGHOA và
có MABH đã tồn tại trong bảng BAOHANH
CTBAOHANH,BAOHANH,HANGHOA
D
17 Khi thêm vào một mẫu tin trên bảng CTHOADON thì
mẫu tin phải có MAH đã tồn tại trong bảng HANGHOA và
có MAHD đã tồn tại trong bảng HOADON
CTHOADON,HOADON,HANGHOA
D
18 Khi thêm vào một mẫu tin trên bảng HOADON thì mẫu
tin phải có MAKH đã tồn tại trong bảng KHACHHANG
HOADON,
Trang 8Ghi chú:
A: Ràng buộc miền giá trị
B: Ràng buộc liên bộ
C: Ràng buộc liên thuộc tính
D: Ràng buộc phụ thuộc tồn tại
E: Ràng buộc liên bộ _ liên quan hệ
F: Ràng buộc liên thuộc tính _ liên quan hệ
G: Ràng buộc thuộc tíng tổng hợp
H: Ràng buộc chu trình
2 BẢNG TẦM ẢNH HƯỞNG
3 CÀI ĐẶT RÀNG BUỘC TOÀN VẸN :
+Tạo bảng và ràng buộc khoá chính _ khóa ngoại:
if exists (select * from sysobjects where id = object_id(N'USERS') and OBJECTPROPERTY(id,N'IsUserTable') = 1)
drop table USERS
Trang 9constraint PK_USERS primary key (USERNAMES)
Trang 10MAKH char(5) not null,
TENKH varchar(20) null ,
DIACHI varchar(50) null ,
DIENTHOAI varchar(9) null ,
FAX varchar(9) null ,
EMAIL varchar(50) null ,
constraint PK_KHACHHANG primary key (MAKH)
)
go
/* ============================================================ *//* Table: HANGHOA */
/* ============================================================ */create table HANGHOA
(
MAH char(4) not null,
TENH varchar(20) null ,
GIA int null ,
SOLUONG int null ,
BAOHANH varchar(10) null ,
HANGSX varchar(30) null ,
KHUYENMAI varchar(50) null ,
constraint PK_HANGHOA primary key (MAH)
)
go
/* ============================================================ *//* Table: PHIEUXUAT */
/* ============================================================ */create table HOADON
(
MAHD int not null,
MAKH char(5) not null,
constraint PK_HOADON primary key (MAHD)
)
go
/* ============================================================ *//* Table: CTHOADON */
/* ============================================================ */create table CTHOADON
(
Trang 11MAHD int not null,
MAH char(4) not null,
NGAYLAP datetime null,
SOLUONG int null,
constraint PK_CTHOADON primary key (MAHD, MAH)
)
go
/* ============================================================ *//* Table: BAOHANH */
/* ============================================================ */create table BAOHANH
(
MABH int not null,
MAKH char(5) not null,
constraint PK_BAOHANH primary key (MABH)
)
go
/* ============================================================ *//* Table: CTBAOHANH */
/* ============================================================ */create table CTBAOHANH
(
MABH int not null,
MAH char(4) not null,
SOLUONG int null,
NGAYNHAN datetime null,
NGAYTRA datetime null,
CHIPHI int null,
THONGTIN varchar(20) null,
constraint PK_CTBAOHANH primary key (MABH, MAH)
)
go
alter table HOADON
add constraint FK_HOADON_MAKH_KHACHHANG foreign key (MAKH)
references KHACHHANG (MAKH)
go
alter table BAOHANH
Trang 12add constraint FK_BAOHANH_MAKH_KHACHHANG foreign key (MAKH)
references KHACHHANG (MAKH)
go
alter table CTHOADON
add constraint FK_CTHOADON_MAHD_HOADON foreign key (MAHD)
references HOADON (MAHD)
go
alter table CTHOADON
add constraint FK_CTHOADON_MAH_HANGHOA foreign key (MAH)
references HANGHOA (MAH)
go
alter table CTBAOHANH
add constraint FK_CTBAOHANH_MAH_HANGHOA foreign key (MAH)
references HANGHOA (MAH)
go
alter table CTBAOHANH
add constraint FK_CTBAOHANH_MABH_BAOHANH foreign key (MABH)
references BAOHANH (MABH)
exec sp_bindrule 'GIA','HANGHOA.GIA'
TAO RULE SOLUONG_CTBH DE KIEM TRA GIA TRONG BANG CTHOADON VAGIABAN TRONG BANG CTBAOHANH PHAI >= 1
CREATE RULE SOLUONG_CTBH AS
@SOLUONG_CTBH >= 1
go
Trang 13exec sp_bindrule 'SOLUONG_CTBH','CTBAOHANH.SOLUONG'
TAO RULE SOLUONG DE KIEM TRA GIA TRONG BANG CTHOADON VA GIABANTRONG BANG CTBAOHANH PHAI >= 1
CREATE RULE SOLUONG_CTHD AS
@SOLUONG_CTHD >= 1
go
exec sp_bindrule 'SOLUONG_CTHD','CTHOADON.SOLUONG'
TAO RULE SOLUONGHANG DE KIEM TRA GIA TRONG BANG HANGHOA PHAI >= 0CREATE RULE SOLUONGHANG AS
@SOLUONGHANG >= 0
go
exec sp_bindrule 'SOLUONGHANG', 'HANGHOA.SOLUONG'
TAO RULE CHIPHI DE KIEM TRA GIA TRONG BANG CTBAOHANH PHAI >= 0
CREATE RULE CHIPHI AS
TEN HANG HOA LA DUY NHAT
ALTER TABLE HANGHOA ADD CONSTRAINT CK_TENHH UNIQUE (TENH)
KIEM TRA BAOHANH TRONG BANG HANGHOA CO PHAI LA '3THG', '6THG' , '9THG','1NAM', '2NAM', '3NAM'
ALTER TABLE HANGHOA ADD CONSTRAINT CK_BAOHANH CHECK(BAOHANH IN('3THG','6THG' ,'9THG','1NAM','2NAM','3NAM'))
DIENTHOAI LA CAC SO TRONG KHOANG [0-9]
ALTER TABLE KHACHHANG ADD CONSTRAINT CK_DIENTHOAI CHECK(DIENTHOAILIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]' OR DIENTHOAI LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
FAX LA CAC SO TRONG KHOANG [0-9]
Trang 14ALTER TABLE KHACHHANG ADD CONSTRAINT CK_FAX CHECK(FAX LIKE 9][0-9][0-9][0-9][0-9][0-9][0-9]' OR FAX LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9]')
Tao Trigger de kiem tra THANHTIEN tren table CTHOADON phai bang SOLUONG * GIA
voi GIA la GIA cua MAH tren bang HANGHOA
-*/
Create TRIGGER KT_THANHTIEN on CTHOADON
for INSERT, UPDATE
as
BEGIN
DECLARE @MAH CHAR(4)DECLARE @MAHDINTDECLARE @GIA INTSELECT @MAH = INS.MAH, @MAHD = INS.MAHD FROM INSERTED INS,CTHOADON
WHERE INS.MAHD = CTHOADON.MAHD AND INS.MAH =CTHOADON.MAH
SELECT @GIA = HH.GIA FROM HANGHOA HH WHERE HH.MAH = @MAH
UPDATE CTHOADON SET THANHTIEN = CTHOADON.SOLUONG * @GIA
WHERE CTHOADON.MAH = @MAH AND CTHOADON.MAHD =
@MAHD
END
/* -
Tao Trigger de kiem tra NGAYLAP tren table CTHOADON khong duoc lon
hon ngay hien tai
-*/
Create TRIGGER KT_NGAYLAP on CTHOADON
for INSERT, UPDATE
as
BEGIN
DECLARE @MHD INTDECLARE @NL DATETIMESELECT @MHD = HD.MAHD FROM INSERTED HD, CTHOADON
WHERE HD.MAHD = CTHOADON.MAHD
Trang 15SELECT @NL = HD.NGAYLAP FROM INSERTED HD, CTHOADON
END
/* -
Tao Trigger de kiem tra NGAYTRA tren table CTBAOHANH khong duoc lon
lon ngay hien tai va phai lon hon NGAYNHAN
-*/
Create TRIGGER KT_NGAYTRA on CTBAOHANH
for INSERT, UPDATE
as
BEGIN
DECLARE @MBH INT
SELECT @MBH = CTBH.MABH FROM INSERTED CTBH, CTBAOHANH
WHERE CTBH.MABH = CTBAOHANH.MABHSELECT @NT = CTBH.NGAYTRA FROM INSERTED CTBH, CTBAOHANH
WHERE CTBH.MABH = @MBHSELECT @NN = CTBH.NGAYNHAN FROM INSERTED CTBH, CTBAOHANH
Trang 16/* -
Tao Trigger de kiem tra SOLUONG tren table CTHOADON khong duoc lon
hon SOLUONG hien co trong table HANGHOA
-*/
Create TRIGGER KT_SOLUONG on CTHOADON
for INSERT, UPDATE
as
BEGIN
SELECT @MHD = CTHD.MAHD, @MH = CTHD.MAH FROM INSERTEDCTHD, CTHOADON
WHERE CTHD.MAHD = CTHOADON.MAHDSELECT @SLHD = CTHD.SOLUONG FROM INSERTED CTHD, CTHOADON
WHERE CTHD.MAHD = @MHD
SELECT @MH = CTHD.MAH FROM INSERTED CTHD, CTHOADON
WHERE CTHD.MAH = CTHOADON.MAHSELECT @SLHH = HANGHOA.SOLUONG FROM HANGHOA
END
/* -
Tao Trigger KT_SOLUONG_CONLAI de kiem tra khi them vao mot mau tin tren table
CTHOADON co SOLUONG la x thi SOLUONG trong bang HANGHOA cung se giam di mot soluong x tuong ung
Trang 17DECLARE @SLHD INT SOLUONG CUA CTHOADON
SELECT @MHD = CTHD.MAHD, @MH = CTHD.MAH FROM INSERTEDCTHD, CTHOADON
WHERE CTHD.MAHD = CTHOADON.MAHDSELECT @SLHD = CTHD.SOLUONG FROM INSERTED CTHD, CTHOADON
WHERE CTHD.MAHD = @MHD
SELECT @MH = CTHD.MAH FROM INSERTED CTHD, CTHOADON
WHERE CTHD.MAH = CTHOADON.MAH
UPDATE HANGHOA SET HANGHOA.SOLUONG = (HANGHOA.SOLUONG
-@SLHD)
WHERE HANGHOA.MAH = @MHEND
/* -
Tao Trigger KT_BAOHANH de kiem tra khi them vao mot mau tin tren table
BAOHANH nhung mau tin nay chua MAHK khong co trong table KHACHHANG
/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi them mau
tin vao bang "BAOHANH" */
Trang 18Tao Trigger KT_CTBAOHANH de kiem tra khi them vao mot mau tin tren table
CTBAOHANH nhung mau tin nay chua MAH khong co trong table HANGHOA va chuaMABH khong co trong bang BAOHANH
/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi them mau
tin vao bang "BAOHANH" */
IF UPDATE(MAH)
BEGIN
IF (SELECT count(*)
FROM HANGHOA t1, INSERTED t2
WHERE t1.MAH = t2.MAH) != @numrows
Trang 19/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi them mau
tin vao bang "BAOHANH" */
IF UPDATE(MABH)
BEGIN
IF (SELECT count(*)
FROM BAOHANH t1, INSERTED t2
WHERE t1.MABH = t2.MABH) != @numrows
Tao Trigger KT_CTHOADON de kiem tra khi them vao mot mau tin tren table
CTHOADON nhung mau tin nay chua MAHD khong co trong table HOADON va chuaMAH khong co trong bang HANGHOA
@numnull INT,
Trang 20/* Khong co MAHD tuong ung tren bang "HOADON" khi them mau
tin vao bang "CTHOADON" */
IF UPDATE(MAHD)
BEGIN
IF (SELECT count(*)
FROM HOADON t1, INSERTED t2
WHERE t1.MAHD = t2.MAHD) != @numrows
/* Khong co MAH tuong ung tren bang "HANGHOA" khi them mau
tin vao bang "CTHOADON" */
IF UPDATE(MAH)
BEGIN
IF (SELECT count(*)
FROM HANGHOA t1, INSERTED t2
WHERE t1.MAH = t2.MAH) != @numrows
Trang 21/* -
Tao Trigger KT_HOADON de kiem tra khi them vao mot mau tin tren table
HOADON nhung mau tin nay chua MAHK khong co trong table KHACHHANG -*/
Create trigger KT_HOADON on HOADON
/* Khong co MAKH tuong ung tren bang "KHACHHANG" khi them mau
tin vao bang "HOADON" */
IF UPDATE(MAKH)
BEGIN
IF (SELECT count(*)
FROM KHACHHANG t1, INSERTED t2
WHERE t1.MAKH = t2.MAKH) != @numrows
Trang 22-DIENTHOAI KHONG PHAI LA SO
INSERT INTO KHACHHANG VALUES ('KH004', 'FIGO', '1E REAL', 'D151258', '8151258','figo@Yahoo.com')
FAX KHONG PHAI LA SO
INSERT INTO KHACHHANG VALUES ('KH005', 'FIGO', '1E REAL', '8151258', 'D151258','figo@Yahoo.com')
DIENTHOAI KHONG PHAI LA 7 HOAC 9 SO
INSERT INTO KHACHHANG VALUES ('KH006', 'ZINEDINE ZIDAN', '3 PARIS', '81525','8152584', 'zidan@Yahoo.com')
FAX KHONG PHAI LA 7 HOAC 9 SO
INSERT INTO KHACHHANG VALUES ('KH007', 'ZINEDINE ZIDAN', '3 PARIS', '8152584','52584', 'zidan@Yahoo.com')
-INSERT INTO HOADON VALUES (1, 'KH001')
Trang 23INSERT INTO HOADON VALUES (2, 'KH001')
INSERT INTO HOADON VALUES (3, 'KH001')
INSERT INTO HOADON VALUES (4, 'KH001')
INSERT INTO HOADON VALUES (5, 'KH003')
-INSERT INTO CTHOADON VALUES (1, 'H001', '4/4/2003', 2, null)
INSERT INTO CTHOADON VALUES (2, 'H002', '4/4/2003', 3, null)
INSERT INTO CTHOADON VALUES (3, 'H003', '4/4/2003', 1, null)
-NGAY LAP CTHOADON LON HON NGAY HIEN HANH
INSERT INTO CTHOADON VALUES (4, 'H001', '8/4/2003', 2, null)
SOLUONG AM
INSERT INTO CTHOADON VALUES (5, 'H001', '1/4/2003', -2, null)
SOLUONG LON HON SOLUONG HIEN CO TRONG BANG HANHHOA
INSERT INTO CTHOADON VALUES (5, 'H001', '1/4/2003', 122, null)
-INSERT INTO BAOHANH VALUES (1,'KH001')
INSERT INTO BAOHANH VALUES (2,'KH001')
INSERT INTO BAOHANH VALUES (3,'KH001')
INSERT INTO BAOHANH VALUES (4,'KH001')
INSERT INTO BAOHANH VALUES (5,'KH001')
INSERT INTO BAOHANH VALUES (9,'KH001')
INSERT INTO BAOHANH VALUES (6,'KH001')