1. Trang chủ
  2. » Luận Văn - Báo Cáo

tiểu luận đề tài xây dựng và thiết kế phần mềm quản lý siêu thị mini

47 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Tài liệu dự án1 UseCase Hệ Thốngb.Usecase Quản lý nhân viên2 UseCase Quản Lý Nhân Viênc.Usecase Quản lý kho hàng...  Các chức năng của các bảng Quản lý Thêm: thêm các dữ liệu ghi trên

Trang 1

ĐÀ NẴNG

Đề tài:

Xây dựng và thiết kế phần mềm quản lý siêu thị mini

GIẢNG VIÊN HƯỚNG DẪN: Nguyễn Văn Định

SINH VIÊN THỰC HIỆN: Trần Đình Quang HuyMÃ SỐ SINH VIÊN: PD05078

Đà Nẵng ngày 3 tháng 11 năm 2021

Trang 2

a.Usecase hệ thống siêu thị mini 5

b.Usecase Quản lý nhân viên 5

c.Usecase Quản lý kho hàng 6

b.Thiết kế chi tiết các thực thể 9

3.Thiết kế giao diện 11

a.Sơ đồ tổ chức giao diện 11

b.Thiết kế giao diện cho các chức năng nghiệp vụ 12

III.Thực hiện viết mã 20

b.Model class-Các lớp mô tả dữ liệu 25

c.DAO class-Các lớp truy xuất dữ liệu 29

Trang 3

V Đóng gói và triển khai 41

1.Hướng dẫn chuyển đổi jar thành exe 41

2.Hướng dẫn cài đặt triển khai 45

3.Hướng dẫn sử dụng phần mềm 45

VI.Kết Luận 45

Trang 4

Tài liệu dự ánI.Phân tích

1 Hiện trạng

Hiện nay có rất nhiều siêu thị mini trên toàn quốc và hệ thống bán hàng vẫn đang sử dụng trên excel trong khi nguồn khách hàng ngày một gia tăng dẫn đến khả

năng lưu trữ thông tin còn hạn chế Khả năng bảo mật chưa cao do đó Dự Án 1:

Xây dựng quản lý siêu thị mini sẽ giải quyết các vấn đề đó

 Mọi thống kê phải viết bằng tay không tự động  Cần rất nhiều nhân viên để làm nhiều công việc

khác nhau

b.Hệ Thống Mới1 Ưu điểm

 Bảo mật tốt

 Tìm kiếm và thống kê nhanh chóng  Không cần nhiều nhân viên

Too long to read onyour phone? Save to

read later on your computer

Save to a Studylist

Trang 5

b.Yêu cầu của người dùng1 Yêu cầu lưu trữ

 Thông tin nhân viên  Thông tin hoá đơn 

 Thông tin mặt hàng

2 Yêu cầu quản lý

 Quản lý nhân viên  Quản lý bán hàng  Quản lý mặt hàng

3 Yêu cầu thống kê

 Thống kê doanh thu tuần, tháng, năm  Thống kê hàng bán tuần, tháng,năm  Thống kê mặt hàng tuần,tháng,năm

4 Yêu cầu bảo mật

 Tất cả thành viên phải đăng nhập mới được sử dụng phần mềm

 Quản lý mới có thể xem được thống kê Doanh thu  Nhân viên không được phép thêm sửa xoá thông

tin của nhân viên khác

3 Use case

a.Usecase hệ thống siêu thị mini

Trang 6

Tài liệu dự án

1 UseCase Hệ Thống

b.Usecase Quản lý nhân viên

2 UseCase Quản Lý Nhân Viên

c.Usecase Quản lý kho hàng

Trang 7

3 UseCase Quản Lý Kho Hàng

d.Usecase Quản lý bán hàng

4 UseCase Bán Hàng

e.Usecase Thống kê

Trang 8

 Các chức năng của các bảng Quản lý

 Thêm: thêm các dữ liệu ghi trên bảng vào CSDL

 Sửa: sửa các dữ liệu đang xem trên bảng  Xoá: xoá các dữ liệu đang xem trên bảng  Tìm kiếm: tìm kiếm các dữ liệu trong CSDL  Điều hướng: di chuyển trước và sau  Các chức năng(Thêm,sửa,xoá) cần được

kiểm lỗi hợp lý với dữ liệu

2 Các Usecase Thống kê(Doanh thu, Hàng hoá,Kho hàng)

 Thống kê Doanh thu(chỉ có tài khoản Quản lý được xem)

 Thống kê Hàng hoá(Hàng hoá bán nhiều và bán ít trong tuần, tháng, năm)

 Thống kê Kho hàng(Các hàng còn tồn kho và các hàng hết nhanh nhất kể từ khi nhập)

3 Chi tiết về yêu cầu bảo mật

Trang 9

 Tất cả chức năng phải đăng nhập mới được sử dụng

 Quản lý: được phép sử dụng tất cả chức năng  Nhân viên:

 Không được xem Thống kê doanh thu  Không được Thêm sửa xoá thông tin của các

nhân viên khác

II.Thiết kế

1 Mô hình triển khai

 Ứng dụng sẽ được cài lên một máy tính hoặc laptop với yêu cầu máy tính/laptop phải có từ 4gb Ram trở lên và cài SQL Server 2008 trở lên

 Admin sẽ đăng nhập vào hệ thống với tài khoản có quyền quản trị cao nhất và mọi thao tác thêm sửa xoá Admin trên ứng dụng sẽ lưu vào Database

 Nhân viên sẽ đăng nhập vào hệ thống với tài khoản do Admin cung cấp và có thể đổi lại mật khẩu và mọi thao tác thêm sửa xoá của nhân viên trên ứng dụng sẽ lưu vào Database

Trang 10

Tài liệu dự án

6 Mô Hình Triển Khai

2 Thiết kế CSDL

a.Sơ đồ quan hệ thực thể

Trang 11

7 Sơ Đồ ERD

b.Thiết kế chi tiết các thực thể1 Nhân Viên

Nhân Viên

2 Loại HàngLoại Hàng

Trang 12

Tài liệu dự án

3 Kho HàngMặt Hàng

not null

Mã loại

4 Hoá ĐơnHoá Đơn

Viên), not null

Mã nhân viên

5 Hoá Đơn Chi TiếtHoá Đơn ChiTiết

Trang 13

MaSanPhamVarchar(10)FK(Kho Hàng), not null

Mã sản phẩm

3 Thiết kế giao diện

a.Sơ đồ tổ chức giao diện

8 Sơ Đồ Tổ Chức Giao Diện

b.Thiết kế giao diện cho các chức năng nghiệp vụ1 Màn hình chào

Trang 15

11 Màn Hình Đổi Mật Khẩu

4 Màn hình chính

Trang 16

Tài liệu dự án

12 Màn Hình Chính

5 Màn hình Quản lý nhân viên

13Màn Hình QL Nhân Viên

Trang 17

14 Màn Hình QL Nhân Viên 2

6 Màn hình Quản lý Mặt Hàng

15 Màn Hình Mặt Hàng

Trang 18

Tài liệu dự án

16 Màn Hình Mặt Hàng2

7 Màn hình Bán hàng

Trang 19

17 Màn Hình Bán Hàng

Trang 20

Tài liệu dự án

18 Màn Hình Bán Hàng 2

8 Màn hình Thống kê báo cáo

Trang 21

create table NhanVien(

MaNhanVien varchar(10)notnull,

MatKhau varchar(15)notnull,

VaiTro bitnotnull,

TenNhanVien nvarchar(50)notnull,

Trang 22

Tài liệu dự án

NgaySinh datenotnull,

GioiTinh bitnotnull,

SoDienThoai intnotnull,

HinhAnh varchar(50)null, primary key(MaNhanVien), );

create table LoaiHang(

MaLoai varchar(10)notnull,

TenLoai nvarchar(10)notnull,

ChuThich Nvarchar(Max)null, primarykey (MaLoai) );

create table MatHang(

MaSanPham varchar(10)notnull,

MaLoai varchar(10)notnull,

TenSanPham Nvarchar(50)notnull,

GiaNhapVe floatnotnull,

SoLuong intnotnull,

GiaBan floatnotnull,

HinhAnh varchar(50)null, primarykey (MaSanPham),

constraint FK_MaLoai foreignkey (MaLoai)references LoaiHang(MaLoai) );

create table HoaDon(

MaHoaDon varchar(10)notnull,

MaNV varchar(10)notnull,

NgayMua DatenotnulldefaultgetDate(),

TenKhachHang nvarchar(50)notnull,

TrangThai bitnotnull, primary key(MaHoaDon),

constraint FK_MaNV foreignkey (MaNV)references NhanVien(MaNhanVien) );

create table ChiTietHoaDon(

MaHoaDon varchar(10)notnull,

MaSanPham varchar(10)notnull,

SoLuong Intnotnull,

TongTien floatnotnull, primarykey (MaHoaDon),

constraint FK_MaHoaDon foreignkey (MaHoaDon )references HoaDon(MaHoaDon), constraint FK_MaSanPham foreignkey (MaSanPham )references MatHang(MaSanPham) );

b.SQL truy vấn và thao tác1 Quản lý nhân viênThao tácCâu lệnh truy vấn

Thêm Insert into NhanVien(MaNhanVien, MatKhau, VaiTro, TenNhanVien, NgaySinh, GioiTinh,

SoDienThoai, HinhAnh )values('NV01',123 1, ,N'Trần Đình Quang Huy',2002 04 20 1 0762639348/ / , , ,'huy.jpg')

Trang 23

Sửa Update NhanVien set MatKhau=123, VaiTro=1, TenNhanVien=N'Huy', NgaySinh=2002/20 04/ ,

GioiTinh=1, SoDienThoai=0762639348, HinhAnh='Huy.jpg' where MaNhanVien='NV01';

Xoá Delete from NhanVien where MaNhanVien ='NV01';

Select from * NhanVien where MaNhanVien ='NV01'; Select from * NhanVien where TenNhanVien LIKE'H';

2 Quản lý mặt hàngThao tácCâu lệnh truy vấn

Thêm Insert Into MatHang(MaSanPham MaLoai TenSanPham GiaNhapVe SoLuong HinhAnh GiaBan, , , , , , ) values('SP01' 'Loai01' 'Pepsi', , ,10000 50, ,'Pepsi.jpg',15000);

Sửa Update MatHang set MaLoai='Loai02', TenSanPham=N'Bánh Gấu', GiaNhapVe='20000',

SoLuong 50= , HinhAnh='BanhGau.jpg', GiaBan='22000'where MaSanPham='SP01'

Xoá Delete from MatHang where MaSanPham ='SP01';

Select from * MatHang where MaSanPham ='SP01'; Select from * MatHang where TenSanPham LIKE'B';

3 Quản lý bán hàng(HoaDon, ChiTietHoaDon)Thao tácCâu lệnh truy vấn

Thêm create proc sp_TruSoLuong

@maHD varchar(10) @MaNV Nvarchar(10), @TenKH nvarchar( ),50 @TrangThai bit,

@MaSP varchar( ),10 @Soluong int, @TongTien float

insert into ChiTietHoaDon(MaHoaDon MaSanPham SoLuong TongTien, , , ) values (@maHD,@MaSP,@Soluong,@TongTien)

update MatHang set soluong soluong = - (Select soluong from ChiTietHoaDon

where MaSanPham=@masp)where MaSanPham = @masp

end else begin

insert into HoaDon(MaHoaDon,MaNV,TenKhachHang,TrangThai)values (@maHD,@MaNV @TenKH @TrangThai, , )

insert into ChiTietHoaDon(MaHoaDon MaSanPham SoLuong TongTien, , , ) values (@maHD,@MaSP,@Soluong,@TongTien)

Trang 24

Tài liệu dự án

update MatHang set soluong soluong = - (Select soluong from ChiTietHoaDon

where MaSanPham=@masp)where MaSanPham = @masp Thao tácCâu lệnh truy vấn

Thêm Insert into LoaiHang (MaLoai TenLoai, )values ('Loai01',N'Bánh') Insert into LoaiHang (MaLoai TenLoai, )values ('Loai02',N'Kẹo') Insert into LoaiHang (MaLoai TenLoai, )values ('Loai03',N'Nước') public class User {

public static NhanVien user = null; public static void clear(){ User.user=null; }

public static boolean isLogin(){ return User.user != null; }

public static boolean isManager(){ return User.isLogin() && user.getVaiTro();

Trang 25

import java.sql.SQLException;

public class DatabaseConnection {

private static String driver ="com.microsoft.sqlserver.jdbc.SQLServerDriver"; private static String dburl ="jdbc:sqlserver://localhost:1433;database=QLSieuThi"; private static String username="sa";

private static String password="123";

public static PreparedStatement getStmt(String sql, Object args) throws SQLException{ Connection connection = DriverManager.getConnection(dburl,username,password);

Trang 26

public class MatHang {

private String MaSanPham; private String MaLoai; private String TenSanPham; private int SoLuong; private String HinhAnh; private float GiaBan;

Trang 27

private float GiaNhap;

public MatHang(String MaSanPham, String MaLoai, String TenSanPham, int SoLuong, String HinhAnh, float GiaBan, float GiaNhap) {

Trang 28

public class NhanVien { private String MaNhanVien; private String MatKhau; private boolean VaiTro = false; private String HoTen; private Date NgaySinh; private boolean GioiTinh; private String SoDienThoai; private String HinhAnh; public NhanVien() { }

public NhanVien(String MaNhanVien, String MatKhau,String HoTen, Date NgaySinh, boolean GioiTinh, String SoDienThoai, String HinhAnh) {

Trang 30

abstract public class Dao <EntityType, KeyType> {//generic

abstract public void insert(EntityType entity);//EntityType: NhanVien, KhoaHoc abstract public void update(EntityType entity);

abstract public void delete(KeyType id);//KeyType: String, Integer, Double abstract public EntityType selectById(KeyType id);

abstract public List<EntityType> selectAll();

abstract protected List<EntityType> selectBySql(String sql, Object args);}

Trang 31

public void insert(MatHang model) { String sql = "Insert Into

public void update(MatHang model) {

String sql = "Update MatHang set MaLoai=?, TenSanPham=?, GiaNhapVe=?, SoLuong=?, HinhAnh=?, GiaBan=? where MaSanPham=?";

public void delete(String MASP) {

String sql = "Delete from MatHang where MaSanPham =?"; DatabaseConnection.update(sql, MASP);

}

Trang 32

Tài liệu dự án

@Override

public MatHang selectById(String masp) {

String sql = "Select * from MatHang where MaSanPham = ?"; List<MatHang> list = this.selectBySql(sql, masp); return list.size() > 0 ? list.get(0) : null; }

@Override

public List<MatHang> selectAll() { String sql ="Select * from MatHang"; return this.selectBySql(sql); }

@Override

protected List<MatHang> selectBySql(String sql, Object args) { List<MatHang> list = new ArrayList<>();

// public List<MatHang> selectByLoaiHang(String malh) {// String sql = "Select * from MatHang where MaLoai=?";// return this.selectBySql(sql, malh);

// }

public List<MatHang> selectByKeyWord(String keyword){ String sql ="Select * from MatHang where TenSanPham LIKE ?"; return this.selectBySql(sql, "%"+keyword+"%");

} }

Trang 33

public void insert(NhanVien model) {

String sql = "Insert into NhanVien(MaNhanVien, MatKhau, VaiTro, TenNhanVien, NgaySinh, GioiTinh, SoDienThoai, HinhAnh ) values(?,?,?,?,?,?,?,?) ";

public void update(NhanVien model) {

String sql = "Update NhanVien set MatKhau=?, VaiTro=?, TenNhanVien=?, NgaySinh=?, GioiTinh=?, SoDienThoai=?, HinhAnh=? where MaNhanVien=? ";

public void delete(String MaNV) {

String sql = "Delete from NhanVien where MaNhanVien =?"; DatabaseConnection.update(sql, MaNV);

} @Override

Trang 34

Tài liệu dự án

public NhanVien selectById(String manv) {

String sql = "Select * from NhanVien where MaNhanVien = ?"; List<NhanVien> list = this.selectBySql(sql, manv); return list.size() > 0 ? list.get(0) : null; }

@Override

public List<NhanVien> selectAll() { String sql = "Select * From NhanVien"; return this.selectBySql(sql); }

@Override

protected List<NhanVien> selectBySql(String sql, Object args) { List<NhanVien> list = new ArrayList<>();

public List<NhanVien> selectByKeyWord(String keyword){ String sql ="Select * from NhanVien where TenNhanVien LIKE ?"; return this.selectBySql(sql, "%"+keyword+"%");

Trang 35

DefaultTableModel model = (DefaultTableModel) tblDanhSachNhanVien.getModel(); model.setRowCount(0);

try {

String keyword = txtTimKiem.getText();

List<NhanVien> list = dao.selectByKeyWord(keyword); for (NhanVien nv : list) {

Trang 36

MessBox.alert(this, "Bạn không được xóa chính bạn!"); } else if (MessBox.confirm(this, "Bạn thực sự muốn xóa nhân viên có "

Trang 37

model.setRowCount(0); try {

String keyword = txtTimKiem.getText();

List<MatHang> list = mhdao.selectByKeyWord(keyword); for (MatHang mh : list) {

List<LoaiHang> list = lhdao.selectAll(); for (LoaiHang loaiHang : list) {

Trang 38

if (MessBox.confirm(this, "Bạn thực sự muốn xóa mặt hàng: " + txtTenSanPham.getText() + " ?")) { String MaSP = txtMaSanPham.getText();

Trang 39

1Kiểm thử giao diện

2 Kiểm thử form NhanViena.Kiểm thử giao diện

-Kiểm tra font chữ có đúng định dạng Tahoma không

hay không

-Kiểm tra các tên của các trường có đúng cỡ chữ 11 không

định dạng [0,0,0] không

-Kiểm tra màu sắc của các tiêu đề có đúng định dạng màu [153,204,255] không

với nhau không

b.Kiểm thử chức năng

-nhập 1 trường dữ liệu và ấn thêm -nhập tất cả dữ liệu và ấn thêm

-nhập dữ liệu trường MaNV và ấn sửa

-thay đổi dữ liệu các trường trừ MaNV và ấn sửa

-nhập dữ liệu trường MaNV và ấn xoá

-nhập tất dữ liệu các trường trừ MaNV và ấn xoá

Trang 40

Tài liệu dự án

kiếm đúng với từ khoá không

c.Kiểm tra tính hợp lệ

-Kiểm tra MaNV tối thiểu bao nhiêu ký tự -Kiểm tra MaNV tối đa bao nhiêu ký tự

-Kiểm tra mật khẩu tối thiểu bao nhiêu ký tự -Kiểm tra mật khẩu tối đa bao nhiêu ký tự

-Kiểm tra mật khẩu có cho viết chữ hoặc ký tự đặc biệt không

-Kiểm tra XNMK có trùng với MK hay không -Kiểm tra mật khẩu có cho viết chữ hoặc ký tự đặc biệt không

ứng hay không

-Kiểm tra có thể một lúc tích cả hai vai trò hay không

-Kiểm tra có cho phép viết số vào tên hay không

tương ứng hay không

-Kiểm tra có thể một lúc tích cả hai vai trò hay không

-Kiểm tra có đúng định dạng dd/MM/yyyy hay không

3 Kiểm thử form Bán Hànga.Kiểm thử giao diện

-Kiểm tra font chữ có đúng định dạng Tahoma không

Trang 41

Cỡ Chữ-Kiểm tra các tiêu đề có đúng cỡ chữ 18 và đươc in đậm hay không

-Kiểm tra các tên của các trường có đúng cỡ chữ 11 không

định dạng [0,0,0] không

-Kiểm tra màu sắc của các tiêu đề có đúng định dạng màu [153,204,255] không

với nhau không

b.Kiểm thử các chức năng

-nhập 1 trường dữ liệu và ấn thêm -nhập tất cả dữ liệu và ấn thêm

-Nhập mã hoá đơn đã thanh toán và Thanh Toán -Nhập mã hoá đơn chưa thanh toán và Thanh Toán

c.Kiểm thử dữ liệu

-Kiểm tra MaHD tối thiểu bao nhiêu ký tự -Kiểm tra MaHD tối đa bao nhiêu ký tự

nhập vào ứng dụng không

-Kiểm tra có lưu đúng MaNV hay không

-Kiểm tra có đúng ngày hiện tại không

-Kiểm tra có cho phép viết số vào tên hay không

Ngày đăng: 05/05/2024, 20:56

HÌNH ẢNH LIÊN QUAN

7  Sơ Đồ ERD - tiểu luận đề tài xây dựng và thiết kế phần mềm quản lý siêu thị mini
7 Sơ Đồ ERD (Trang 11)
8  Sơ Đồ Tổ Chức Giao Diện - tiểu luận đề tài xây dựng và thiết kế phần mềm quản lý siêu thị mini
8 Sơ Đồ Tổ Chức Giao Diện (Trang 13)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN