Trường Đại Học Công Nghiệp Hà Nội
Khoa Công Nghệ Thông Tin
BÀI TẬP
LỚN
Môn: LẬP TRÌNH
WINDOWS
Đề tài 41. Xây dựng phần mềm quản lý
hoạt động thuê xe du lịch.
Giáo viên hướng dẫn: Ths. Đỗ Ngọc Sơn
Sinh viên thực hiện:
1. Trần Văn Bôn
2. Phạm Đình Chiến
3. Bùi Quang Khoa
Hà Nội 8-2013
Lời nói đầu
Xã hội ngày càng phát triển, con người ngày càng giàu có và văn minh hơn. Vì thế
nhu cầu đi lại, giải trí của họ cũng nhiều hơn, cao cấp hơn.
Trong thời kì khó khăn việc đi lại là một vấn đề nan giải, bởi phương tiện đi lại thiếu
thốn, cộng với việc không có tiền. Nhưng ngày nay điều đó thật đơn giản.
Bạn muốn đi đến công sở, nơi gặp gỡ đối tác mà không muốn tự mình lái xe thì taxi
là sự lựa chọn thông minh và tuyệt vời nhất.
Sau bao ngày làm việc căng thẳng, bạn muốn thư giãn, muốn tìm hiểu những vùng
đất mới, hay cùng gia đình đi thăm và tìm hiểu những vùng miền của đất nước thì đã
có xe du lịch đồng hành cùng bạn trên mọi nẻo đường.
Nếu trước kia ai có xe đạp đã được xem là phú hộ, giàu có. Sau đó xã hội phát triển
thêm một nấc nữa thì xe mày trở thành thế mạnh biểu trưng cho sự giàu sang thì ngày
nay xe hơi là đích đến của những người giàu có.
Những chiếc xe hơi sang trọng, đắt tiền không chỉ là ước mơ nữa mà đã thuộc về
những người nhiều tiền trong xã hội.
Hãy lựa chọn cho mình loại xe phù hợp nhất, để chúng thật sự là người bạn thân thiết
bao gồm: biển số xe, mã loại xe, màu sơn, tình trạng và mô tả khác. Các thông tin về
xe và loại xe đều do nhân viên công ty cung cấp.
Khách hàng muốn thuê xe tại công ty lần đầu thì thông tin về họ được lưu trữ lại.
Quản lý các khách hàng: thêm mới thông tin khách hàng gồm: họ tên, điện thoại, địa
chỉ và các đặc điểm khác để xác nhận như: số chứng minh thư nhân dân, hoặc số hộ
chiếu, hoặc số tài khoản. Mỗi khách hàng được gán 1 định danh duy nhất là mã khách
hàng. Sau khi xác nhận các thông tin về khách hàng, hệ thống lưu trữ thông tin của họ.
Thông tin của khách hàng thay đổi thì được cập nhật lại, xóa bỏ thông tin của khách
hàng khi họ không thuê xe trong vòng 1 năm.
Khi thuê xe tại công ty, khách hàng chỉ được thuê không quá 6 chiếc và 1 ngày chỉ
được lập 1 hợp đồng thuê. Trước khi thuê họ phải trình chứng minh thư nhân dân hoặc
hộ chiếu. Quản lý cho thuê xe được thực hiện như sau: sau khi kiểm tra chứng minh
thư nhân dân hoặc hộ chiếu và kiểm tra xe mà khách hàng yêu cầu thì sẽ cho đăng kí
xe thuê. Nếu công ty không còn xe mà khách yêu cầu thì từ chối cho thuê. Nếu công ty
có xe đáp ứng yêu cầu của khách thì tiến hành lập phiếu thuê gửi đến khách. Thông tin
trong phiếu thuê gồm: số phiếu thuê, ngày thuê, mã khách hàng, số chứng minh thư
nhân dân hoặc hộ chiếu và các thông tin về xe gồm: biển số xe, loại xe, hãng sản xuất,
năm sản xuất, tình trạng, số lượng, số ngày mượn và đơn giá. Khi khách hàng trả xe
thì nhân viên sẽ kiểm tra tình trạng xe trả và ghi nhận việc trả xe của khách hàng. Nếu
xe bị hỏng hóc thì khách phải chịu chi phí sửa chữa hoặc thay thế phụ tùng và tiến
hành lập phiếu nộp phạt. Thông tin trong phiếu phạt gồm: số phiếu phạt, ngày phạt, mã
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
khách hàng, họ tên khách hàng, số CMTND hoặc hộ chiếu và danh mục các khoản nộp
phạt: lý do nộp phạt, số tiền nộp phạt. Mỗi phiếu cho thuê xe do 1 nhân viên thu tiền.
Mỗi nhân viên có thể thu tiền của nhiều của nhiều phiếu cho thuê xe.
Để tiện theo dõi và quản lý nhân viên làm việc, công ty thực hiện thêm mới vào danh
sách khi có nhân viên mới được tuyển, sửa đổi thông tin khi có những biến đổi xảy ra
và xóa bỏ nhân viên khi hết hợp đồng hoặc bị sa thải. Các thông tin về nhân viên gồm:
mã nhân viên, tên nhân viên, điện thoại lien hệ, các mô tả khác.
Ngoài ra, để tiện theo dõi việc kinh doanh của công ty, hàng tháng công ty lập các
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
2.2. Sơ đồ liên kết
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
Chương 2. Cài đặt trong SQL Server
1. Tạo database
2. Tạo các bảng
BANG
MyUser
CREATE TABLE MyUser
(
mauser char(10) NOT NULL CONSTRAINT pk_MyUser_mauser PRIMARY KEY,
name nvarchar(50) NOT NULL,
pas nvarchar(20),
chucvu nvarchar(20),
)
BANG
QuanTri
CREATE TABLE QuanTri
(
myuser nvarchar(50) NOT NULL CONSTRAINT pk_QT_user PRIMARY KEY,
pass nvarchar(10)
)
BANG LoaiXe
CREATE TABLE LoaiXe
(
maloaixe CHAR(10) NOT NULL
CONSTRAINT pk_LoaiXe_maloaixe PRIMARY KEY,
hangxe NVARCHAR(40) NOT NULL,
loaixe NVARCHAR(40) NOT NULL,
namsx DATE NOT NULL,
BANG
KhachHang
CREATE TABLE KhachHang
(
makhachhang CHAR(10) NOT NULL
CONSTRAINT pk_KhachHang_makhachhang PRIMARY KEY,
hoten NVARCHAR(40) NOT NULL,
gioitinh BIT NOT NULL,
CMTND VARCHAR(15) NOT NULL,
dienthoai VARCHAR(15) NOT NULL,
diachi NVARCHAR(40) ,
)
BANG
XeThue
CREATE TABLE XeThue
(
ngaythue DATE NOT NULL,
makhachhang char(10) NOT NULL,
bienso VARCHAR(11) NOT NULL,
dongiangay int NOT NULL
CONSTRAINT fk_xt_makhachhang
FOREIGN KEY (makhachhang)
REFERENCES KhachHang(makhachhang)
ON UPDATE CASCADE,
CONSTRAINT fk_xt_bienso
FOREIGN KEY (bienso)
REFERENCES ThongTinXe(bienso)
ON UPDATE CASCADE
)
BANG
makhachhang char(10) NOT NULL
CONSTRAINT fk_PhieuPhat_manhanvien
FOREIGN KEY (manhanvien)
REFERENCES NhanVien(manhanvien),
CONSTRAINT fk_PhieuPhat_makhachhang
FOREIGN KEY (makhachhang)
REFERENCES KhachHang(makhachhang)
)
3. Tạo View, thủ tục, trigger
Tạo các Thủ tục
Thủ tục Them
CREATE proc [dbo].[ThemXeThue]
@ngaythue DATE ,
@makhachhang char(10),
@bienso VARCHAR(11) ,
@dongiangay int
as
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
begin
IF NOT EXISTS (SELECT *
FROM view_BienSoChuaThue
WHERE bienso = @bienso)
BEGIN
RAISERROR ('Xe ðã ðýợc thuê.',16,1)
RETURN
END
insert into XeThue values(@ngaythue,@makhachhang,@bienso,@dongiangay)
end
CREATE proc [dbo].[ThemThongTinXe]
@bienso VARCHAR(11),
@makhachhang CHAR(10),
@manhanvien CHAR(10),
@songaymuon INT
as
IF @songaymuon <=0
BEGIN
RAISERROR ('So ngay muon phai >0.',16,1)
RETURN
end
insert into PhieuThue
values(@maphieuthue,@ngaythue,@makhachhang,@manhanvien,@songaymuon)
CREATE proc [dbo].[ThemPhieuPhat]
@maphieuphat CHAR(10),
@maphieuthue CHAR(10),
@ngayphat DATE,
@noidungphat NVARCHAR(100),
@tienphat INT,
@manhanvien CHAR(10),
@makhachhang char(10)
as
begin
insert into PhieuPhat
values(@maphieuphat,@maphieuthue,@ngayphat,@noidungphat,@tienphat,@manha
nvien,@makhachhang )
end
CREATE proc [dbo].[ThemNhanVien]
@manhanvien CHAR(10),
@hoten NVARCHAR(40) ,
@ngaysinh DATE,
@ngaylamviec DATE,
@loaixe NVARCHAR(40),
@mota NVARCHAR(40),
@namsx DATE
as
begin
insert into LoaiXe values(@maloaixe ,@hangxe,@loaixe,@namsx,@mota)
end
CREATE proc [dbo].[ThemKhachHang]
@makhachhang CHAR(10),
@hoten NVARCHAR(40),
@gioitinh BIT,
@CMTND VARCHAR(15),
@dienthoai VARCHAR(15),
@diachi NVARCHAR(40)
as
begin
insert into KhachHang values(@makhachhang
,@hoten,@gioitinh,@CMTND,@dienthoai,@diachi)
end
Thủ tục Sua
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
create proc [dbo].[SuaXeThue]
@ngaythue DATE ,
@makhachhang char(10),
@bienso VARCHAR(11) ,
@dongiangay int
as
begin
update XeThue set
ngaythue=@ngaythue,makhachhang=@makhachhang,bienso=@bienso,dongiangay=
END
update PhieuThue set
maphieuthue=@maphieuthue,ngaythue=@ngaythue,makhachhang=@makhachhang,m
anhanvien=@manhanvien,songaymuon=@songaymuon where
maphieuthue=@maphieuthue
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
CREATE proc [dbo].[SuaPhieuPhat]
@maphieuphat CHAR(10),
@maphieuthue CHAR(10),
@ngayphat DATE,
@noidungphat NVARCHAR(100),
@tienphat INT,
@manhanvien CHAR(10),
@makhachhang char(10)
as
begin
update PhieuPhat set
maphieuphat=@maphieuphat,maphieuthue=@maphieuthue,ngayphat=@ngayphat,noi
dungphat=@noidungphat,tienphat=@tienphat,manhanvien=@manhanvien,makhachha
ng=@makhachhang where maphieuphat=@maphieuphat
end
GO
CREATE proc [dbo].[SuaNhanVien]
@manhanvien CHAR(10),
@hoten NVARCHAR(40) ,
@ngaysinh DATE,
@ngaylamviec DATE,
@diachi NVARCHAR(100),
@dienthoai VARCHAR(15)
as
update LoaiXe set maloaixe=@maloaixe
,hangxe=@hangxe,loaixe=@loaixe,namsx=@namsx,mota=@mota
where maloaixe=@maloaixe
end
GO
create proc [dbo].[SuaKhachHang]
@makhachhang CHAR(10),
@hoten NVARCHAR(40),
@gioitinh BIT,
@CMTND VARCHAR(15),
@dienthoai VARCHAR(15),
@diachi NVARCHAR(40)
as
begin
update KhachHang set makhachhang=@makhachhang
,hoten=@hoten,gioitinh=@gioitinh,CMTND=@CMTND,dienthoai=@dienthoai,diach
i=@diachi
where makhachhang=@makhachhang
end
GO
Thủ tục Xoa
CREATE proc [dbo].[XoaXeThueBS]
@bienso VARCHAR(11),
@makhachhang char(10),
@ngaythue DATE
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
as
begin
delete from XeThue
where bienso=@bienso and ngaythue=@ngaythue and
delete from PhieuThue
where maphieuthue=@maphieuthue
end
GO
CREATE proc [dbo].[XoaPhieuPhat]
@maphieuPhat CHAR(10)
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
as
begin
delete from PhieuPhat
where maphieuphat=@maphieuphat
end
GO
create proc [dbo].[XoaNhanVien]
@manhanvien CHAR(10)
as
begin
delete from NhanVien
where manhanvien=@manhanvien
end
GO
CREATE proc [dbo].[XoaMyUser]
@maUser char(10)
as
begin
delete from MyUser
where maUser=@maUser
end
GO
create proc [dbo].[XoaLoaiXe]
end
GO
CREATE proc [dbo].[TuXoaPhieuThue]
as
delete from PhieuThue
where ngaythue < GETDATE()-365-songaymuon
GO
CREATE proc [dbo].[TuXoaPhieuPhat]
as
delete from PhieuPhat
where ngayphat < GETDATE()-365
GO
Thủ tục Tim
create proc [dbo].[TimXeThue]
@makhachhang char(10)
as
begin
select * from XeThue
where makhachhang=@makhachhang
end
GO
create proc [dbo].[TimThongTinXe_ma]
@maloaixe char(10)
as
select *
from view_ThongTinXe
where maloaixe=@maloaixe
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
GO
CREATE proc [dbo].[TimThongTinXe]
as
select *
from view_PhieuThueXe
where maphieuthue=@maphieuthue
GO
CREATE proc [dbo].[TimPhieuPhat]
@maphieuphat CHAR(10)
Kỹ thuật phần mềm 2_k6 Đại học công nghiệp
as
select *
From view_PhieuPhat
where maphieuphat=@maphieuphat
GO
CREATE proc [dbo].[TimMyUser]
@maUser char(10)
as
begin
select * from MyUser
where maUser=@maUser
end
GO
create proc [dbo].[TimLoaiXe]
@maloaixe CHAR(10)
as
select *
from LoaiXe
where maloaixe=@maloaixe
GO
CREATE proc [dbo].[TimKhachHang]
@makhachhang CHAR(10)
,PhieuThue.ngaythue
,[manhanvien]
,PhieuThue.makhachhang
,[hoten]
,[CMTND]
,XeThue.bienso
,LoaiXe.maloaixe
,ThongTinXe.tinhtrang
,[hangxe]
,[namsx]
,[songaymuon]
,[dongiangay]
from PhieuThue,LoaiXe,KhachHang,ThongTinXe,XeThue
where PhieuThue.makhachhang=KhachHang.makhachhang and XeThue.bienso=
ThongTinXe.bienso
and ThongTinXe.maloaixe=LoaiXe.maloaixe and
PhieuThue.makhachhang=XeThue.makhachhang
and PhieuThue.ngaythue=XeThue.ngaythue
GO
create view [dbo].[view_PhieuPhat]
as
SELECT dbo.PhieuPhat.maphieuphat, dbo.PhieuPhat.ngayphat,
dbo.PhieuPhat.maphieuthue, dbo.PhieuPhat.manhanvien,PhieuPhat.makhachhang,
dbo.KhachHang.hoten, dbo.KhachHang.CMTND,
dbo.PhieuPhat.tienphat, dbo.PhieuPhat.noidungphat
FROM PhieuPhat,Khachhang,NhanVien
where
dbo.PhieuPhat.manhanvien = NhanVien.manhanvien and
PhieuPhat.makhachhang = dbo.KhachHang.makhachhang
GO