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

Thông tin cơ bản

Tiêu đề Xây Dựng Và Thiết Kế Phần Mềm Quản Lý Siêu Thị Mini
Tác giả Trần Đình Quang Huy
Người hướng dẫn Nguyễn Văn Định
Trường học Cao Đẳng Thực Hành FPT Polytechnic Đà Nẵng
Thể loại dự án
Năm xuất bản 2021
Thành phố Đà Nẵng
Định dạng
Số trang 47
Dung lượng 4,75 MB

Cấu trúc

  • I. Phân tích (4)
    • 1. Hiện trạng (4)
    • 2. Yêu cầu hệ thống (4)
    • 3. Use case (5)
  • II. Thiết kế (9)
    • 1. Mô hình triển khai (9)
    • 2. Thiết kế CSDL (10)
    • 3. Thiết kế giao diện (13)
  • III. Thực hiện viết mã (21)
    • 1. Viết mã tạo CSDL (21)
    • 2. Lập trình JDBC (24)
    • 3. Viết mã cho ứng dụng (34)
  • IV. Kiểm thử (38)
    • 1. Danh sách (38)
    • 2. Kiểm thử form NhanVien (39)
    • 3. Kiểm thử form Bán Hàng (40)
    • 1. Hướng dẫn chuyển đổi jar thành exe (42)
    • 2. Hướng dẫn cài đặt triển khai (0)
    • 3. Hướng dẫn sử dụng phần mềm (0)
  • VI. Kết Luận (46)

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

Phân tích

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 đề đó a Hệ Thống Cũ

 Quản lý các hàng hoá và tài liệu về các hàng hoá rõ ràng

 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ới

 Tìm kiếm và thống kê nhanh chóng

 Không cần nhiều nhân viên

 Bán hàng một cách nhanh chóng

 Các nhân viên mới cần kiến thức cơ bản về việc sử dụng máy tính

Yêu cầu hệ thống

1 Yêu cầu về phần cứng

2 Yêu cầu về công nghệ

 Ngôn ngữ lập trình: Java

 Phần mềm lập trình:Netbean và SQL server

Too long to read on your phone? Save to read later on your computer

Save to a Studylist b Yêu cầu của người dùng

 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

 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

Use case

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

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

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ê

5 UseCase Thống Kê f Đặc tả Usecase

1 Các Usecase bảng Quản lý(Nhân viên, Kho hàng,Hàng hoá)

 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

 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

 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

Thiết kế

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

 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

Thiết kế CSDL

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

7 Sơ Đồ ERD b Thiết kế chi tiết các thực thể

Trường Kiểu dữ liệu Ràng buộc Mô tả

MaNV Varchar(10) PK,not null Mã nhân viên

MatKhau Varchar(15) not null Mật khẩu

VaiTro Bit Not null Vai trò

TenNhanVien Nvarchar(50) not null Tên nhân viên

NgaySinh Date not null Ngày sinh

GioiTinh Bit not null Giới tính

SoDienThoai Int not null Số điện thoại

HinhAnh Varchar(30) null Hình ảnh

Trường Kiểu dữ liệu Ràng buộc Mô tả

MaLoai Varchar(10) PK, not null Mã loại

TenLoai Nvarchar(50) not null Tên loại

ChuThich Nvarchar(Max) null Chú thích

Trường Kiểu dữ liệu Ràng buộc Mô tả

MaSanPham Varchar(10) PK, not null Mã sản phẩm

MaLoai Varchar(10) FK(Loại Hàng), not null

TenSanPham Nvarchar(50) not null Tên sản phẩm

GiaNhapVe Float not null Giá nhập hàng về

SoLuong Int not null Số lượng

HinhAnh Varchar(50) null Hình ảnh sản phẩm

Trường Kiểu dữ liệu Ràng buộc Mô Tả

MaHoaDon Varchar(10) PK, not null Mã hoá đơn

NgayMua Date not null Ngày mua

TenKhachHang Nvarchar(50) not null Tên khách hàng

TrangThai bit not null Trạng thái

Trường Kiểu dữ liệu Ràng buộc Mô Tả

MaHoaDon Varchar(10) PK, not null Mã hoá đơn

GiaBan Float not null Giá bán

SoLuong Int not null Số lượng

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ụ

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

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

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

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

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

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

Thực hiện viết mã

Viết mã tạo CSDL

a Tạo CSDL create database QLSieuThi go use QLSieuThi go create table NhanVien(

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

ChuThich Nvarchar(Max) null, primary key (MaLoai)

HinhAnh varchar(50) null, primary key (MaSanPham), constraint FK_MaLoai foreign key (MaLoai) references LoaiHang(MaLoai)

NgayMua Date not null default getDate(),

TrangThai bit not null, primary key(MaHoaDon), constraint FK_MaNV foreign key (MaNV) references NhanVien(MaNhanVien)

TongTien float not null, primary key (MaHoaDon), constraint FK_MaHoaDon foreign key (MaHoaDon )references HoaDon(MaHoaDon), constraint FK_MaSanPham foreign key (MaSanPham )references MatHang(MaSanPham) );

GO b SQL truy vấn và thao tác

Thao tác Câ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

Sửa Update NhanVien set MatKhau3, VaiTro=1, TenNhanVien=N'Huy', NgaySinh 02/20 04,/

GioiTinh=1, SoDienThoai62639348, 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';

Thao tác Câ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ác Câu lệnh truy vấn

Thêm create proc sp_TruSoLuong

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

If the specified invoice exists, a new record is added to the invoice details table with the provided parameters The quantity of the purchased product is reduced accordingly in the product table If the invoice does not exist, both the invoice table and invoice details table are updated with the given values The quantity of the purchased product is also adjusted in the product table These operations are executed by calling a stored procedure with the specified parameters, resulting in the successful creation of an invoice and the adjustment of product inventory.

Thao tác Câ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') c Các thủ tục lưu tổng hợp thống kê

Lập trình JDBC

1 User package com.huytdq.pd05078.utils; import com.huytdq.pd05078.entity.NhanVien; public class User { public static NhanVien user = null; public static void clear(){

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

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

2 DatabaseConnection package com.huytdq.pd05078.utils; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; 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"; static{ try {

} catch (ClassNotFoundException e) { throw new RuntimeException(e);

} public static PreparedStatement getStmt(String sql, Object args) throws SQLException{ Connection connection = DriverManager.getConnection(dburl,username,password); PreparedStatement pstmt = null; if(sql.trim().startsWith("{")){ pstmt = connection.prepareStatement(sql);//store procedure

}else{ pstmt = connection.prepareStatement(sql);

} for(int i=0; i= 0){ return 1;

} catch (SQLException e) { throw new RuntimeException(e);

} public static ResultSet query(String sql, Object args){ try {

PreparedStatement stmt = DatabaseConnection.getStmt(sql, args); return stmt.executeQuery();

} catch (SQLException e) { e.printStackTrace(); throw new RuntimeException(e);

} public static Object value(String sql, Object args){ try {

ResultSet rs = DatabaseConnection.query(sql, args); if (rs.next()) { return rs.getObject(0);

} rs.getStatement().getConnection().close(); return null;

} catch (Exception e) { throw new RuntimeException(e);

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

1 Mặt hàng package com.huytdq.pd05078.entity; public class MatHang { private String MaSanPham; private String MaLoai; private String TenSanPham; private int SoLuong; private String HinhAnh; private float GiaBan; private float GiaNhap;

@Override public String toString(){// do du lieu ra combobox return this.TenSanPham;

} public MatHang(String MaSanPham, String MaLoai, String TenSanPham, int SoLuong, String HinhAnh, float GiaBan, float GiaNhap) { this.MaSanPham = MaSanPham; this.MaLoai = MaLoai; this.TenSanPham = TenSanPham; this.SoLuong = SoLuong; this.HinhAnh = HinhAnh; this.GiaBan = GiaBan; this.GiaNhap = GiaNhap;

} public String getMaSanPham() { return MaSanPham;

} public void setMaSanPham(String MaSanPham) { this.MaSanPham = MaSanPham;

} public String getMaLoai() { return MaLoai;

} public void setMaLoai(String MaLoai) { this.MaLoai = MaLoai;

} public String getTenSanPham() { return TenSanPham;

} public void setTenSanPham(String TenSanPham) { this.TenSanPham = TenSanPham;

} public int getSoLuong() { return SoLuong;

} public void setSoLuong(int SoLuong) { this.SoLuong = SoLuong;

} public String getHinhAnh() { return HinhAnh;

} public void setHinhAnh(String HinhAnh) { this.HinhAnh = HinhAnh;

} public float getGiaBan() { return GiaBan;

} public void setGiaBan(float GiaBan) { this.GiaBan = GiaBan;

} public float getGiaNhap() { return GiaNhap;

} public void setGiaNhap(float GiaNhap) { this.GiaNhap = GiaNhap;

2 Nhân viên package com.huytdq.pd05078.entity; import java.util.Date; 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) { this.MaNhanVien = MaNhanVien; this.MatKhau = MatKhau; this.HoTen = HoTen; this.NgaySinh = NgaySinh; this.GioiTinh = GioiTinh; this.SoDienThoai = SoDienThoai; this.HinhAnh = HinhAnh;

} public String getMaNhanVien() { return MaNhanVien;

} public void setMaNhanVien(String MaNhanVien) { this.MaNhanVien = MaNhanVien;

} public String getMatKhau() { return MatKhau;

} public void setMatKhau(String MatKhau) { this.MatKhau = MatKhau;

} public boolean getVaiTro() { return VaiTro;

} public boolean isVaiTro() { return VaiTro;

} public void setVaiTro(boolean VaiTro) { this.VaiTro = VaiTro;

} public String getHoTen() { return HoTen;

} public void setHoTen(String HoTen) { this.HoTen = HoTen;

} public Date getNgaySinh() { return NgaySinh;

} public void setNgaySinh(Date NgaySinh) { this.NgaySinh = NgaySinh;

} public boolean getGioiTinh(){ return GioiTinh;

} public boolean isGioiTinh() { return GioiTinh;

} public void setGioiTinh(boolean GioiTinh) { this.GioiTinh = GioiTinh;

} public String getSoDienThoai() { return SoDienThoai;

} public void setSoDienThoai(String SoDienThoai) { this.SoDienThoai = SoDienThoai;

} public String getHinhAnh() { return HinhAnh;

} public void setHinhAnh(String HinhAnh) { this.HinhAnh = HinhAnh;

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

1 Dao package com.huytdq.pd05078.dao; import java.util.List; abstract public class Dao {//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 selectAll(); abstract protected List selectBySql(String sql, Object args);

2 MatHangDao package com.huytdq.pd05078.dao; import com.huytdq.pd05078.entity.MatHang; import com.huytdq.pd05078.utils.DatabaseConnection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class MatHangDao extends Dao {

@Override public void insert(MatHang model) {

MatHang(MaSanPham,MaLoai,TenSanPham,GiaNhapVe,SoLuong,HinhAnh,GiaBan) values(?,?,?,?,?,?,?)";

DatabaseConnection.update(sql, model.getMaSanPham(), model.getMaLoai(), model.getTenSanPham(), model.getGiaNhap(), model.getSoLuong(), model.getHinhAnh(), model.getGiaBan()

@Override public void update(MatHang model) {

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

DatabaseConnection.update(sql, model.getMaLoai(), model.getTenSanPham(), model.getGiaNhap(), model.getSoLuong(), model.getHinhAnh(), model.getGiaBan(), model.getMaSanPham()

@Override public void delete(String MASP) {

String sql = "Delete from MatHang where MaSanPham =?";

@Override public MatHang selectById(String masp) {

String sql = "Select * from MatHang where MaSanPham = ?";

List list = this.selectBySql(sql, masp); return list.size() > 0 ? list.get(0) : null;

@Override public List selectAll() {

String sql ="Select * from MatHang"; return this.selectBySql(sql);

@Override protected List selectBySql(String sql, Object args) {

List list = new ArrayList(); try {

ResultSet rs = null; try { rs = DatabaseConnection.query(sql, args); while (rs.next()) {

MatHang entity = new MatHang(); entity.setMaSanPham(rs.getString("MaSanPham")); entity.setMaLoai(rs.getString("MaLoai")); entity.setTenSanPham(rs.getString("TenSanPham")); entity.setGiaNhap(rs.getFloat("GiaNhapVe")); entity.setSoLuong(rs.getInt("SoLuong")); entity.setHinhAnh(rs.getString("HinhAnh")); entity.setGiaBan(rs.getFloat("GiaBan")); list.add(entity);

} finally { rs.getStatement().getConnection().close();

} catch (SQLException e) { throw new RuntimeException(e);

// public List selectByLoaiHang(String malh) {

// String sql = "Select * from MatHang where MaLoai=?";

// return this.selectBySql(sql, malh);

// } public List selectByKeyWord(String keyword){

String sql ="Select * from MatHang where TenSanPham LIKE ?"; return this.selectBySql(sql, "%"+keyword+"%");

3 NhanVienDao package com.huytdq.pd05078.dao; import com.huytdq.pd05078.entity.NhanVien; import com.huytdq.pd05078.utils.DatabaseConnection; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class NhanVienDao extends Dao{

@Override public void insert(NhanVien model) {

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

DatabaseConnection.update(sql, model.getMaNhanVien(), model.getMatKhau(), model.getVaiTro(), model.getHoTen(), model.getNgaySinh(), model.getGioiTinh(), model.getSoDienThoai(), model.getHinhAnh());

@Override public void update(NhanVien model) {

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

DatabaseConnection.update(sql, model.getMatKhau(), model.getVaiTro(), model.getHoTen(), model.getNgaySinh(), model.getGioiTinh(), model.getSoDienThoai(), model.getHinhAnh(), model.getMaNhanVien());

@Override public void delete(String MaNV) {

String sql = "Delete from NhanVien where MaNhanVien =?";

@Override public NhanVien selectById(String manv) {

String sql = "Select * from NhanVien where MaNhanVien = ?";

List list = this.selectBySql(sql, manv); return list.size() > 0 ? list.get(0) : null;

@Override public List selectAll() {

String sql = "Select * From NhanVien"; return this.selectBySql(sql);

@Override protected List selectBySql(String sql, Object args) {

List list = new ArrayList(); try {

ResultSet rs = null; try { rs = DatabaseConnection.query(sql, args); while (rs.next()) {

NhanVien entity = new NhanVien(); entity.setMaNhanVien(rs.getString("MaNhanVien")); entity.setMatKhau(rs.getString("MatKhau")); entity.setHoTen(rs.getString("TenNhanVien")); entity.setVaiTro(rs.getBoolean("VaiTro")); entity.setNgaySinh(rs.getDate("NgaySinh")); entity.setGioiTinh(rs.getBoolean("GioiTinh")); entity.setSoDienThoai(rs.getString("SoDienThoai")); entity.setHinhAnh(rs.getString("HinhAnh")); list.add(entity);

} finally { rs.getStatement().getConnection().close();

} catch (SQLException e) { throw new RuntimeException(e);

} public List selectByKeyWord(String keyword){

String sql ="Select * from NhanVien where TenNhanVien LIKE ?"; return this.selectBySql(sql, "%"+keyword+"%");

Viết mã cho ứng dụng

a Xử lý Form Quản lý nhân viên void fillTable() {

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

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

Object[] row = { nv.getMaNhanVien(), nv.getMatKhau(), nv.getVaiTro() ? "Admin" : "Nhân viên", nv.getHoTen(), nv.getNgaySinh(), nv.getGioiTinh() ? "Nam" : "Nữ", nv.getSoDienThoai(), nv.getHinhAnh()

MessBox.alert(this, "Truy vấn thất bại !");

String mk2 = new String(txtXNMK.getPassword()); if (!mk2.equals(nv.getMatKhau())) {

MessBox.alert(this, "Xác nhận mật khẩu không đúng"); txtXNMK.setBackground(Color.pink);

} else { try { dao.insert(nv); this.fillTable(); this.clearForm();

MessBox.alert(this, "Thêm mới thành công !");

MessBox.alert(this, "Thêm mới thất bại !"); e.printStackTrace();

String mk2 = new String(txtXNMK.getPassword()); if (!mk2.equals(nv.getMatKhau())) {

MessBox.alert(this, "Xác nhận mật khẩu không đúng!");

} else { try { dao.update(nv); this.fillTable();

MessBox.alert(this, "Cập nhật thành công!");

MessBox.alert(this, "Cập nhật thất bại!"); e.printStackTrace();

} void delete() { if (!User.isManager()) {

MessBox.alert(this, "Bạn không có quyền xóa nhân viên!");

String manv = txtMaNV.getText(); if (manv.equals(User.user.getMaNhanVien())) {

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ó "

+ "mã: " + txtMaNV.getText() + " ?")) { try { dao.delete(manv); this.fillTable(); this.clearForm();

MessBox.alert(this, "Xóa thành công!");

MessBox.alert(this, "Xóa thất bại!"); e.printStackTrace();

} b Xử lý Form Quản lý mặt hàng void fillTable() {

DefaultTableModel model = (DefaultTableModel) tblMatHang.getModel(); model.setRowCount(0); try {

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

Object[] row = { mh.getMaSanPham(), mh.getMaLoai(), mh.getTenSanPham(), mh.getGiaNhap(), mh.getSoLuong(), mh.getGiaBan(), mh.getHinhAnh()

MessBox.alert(this, "Truy vấn thất bại !");

DefaultComboBoxModel model = (DefaultComboBoxModel) cbbTenLoai.getModel(); model.removeAllElements();

List list = lhdao.selectAll(); for (LoaiHang loaiHang : list) { model.addElement(loaiHang);

LoaiHang loaiHang = (LoaiHang) cbbTenLoai.getSelectedItem();

} private void timKiem() { this.fillTable(); this.clearForm(); this.row = -1; this.updateStatus();

MatHang mh = this.getForm(); try { mhdao.insert(mh); this.fillTable(); this.clearForm();

MessBox.alert(this, "Thêm mới thành công");

MessBox.alert(this, "Thêm mới thất bại"); e.printStackTrace();

MatHang model = getForm(); try { mhdao.update(model); this.fillTable();

MessBox.alert(this, "Cập nhật thành công");

MessBox.alert(this, "Cập nhật thất bại"); e.printStackTrace();

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

MessBox.alert(this, "Xóa thành công!");

MessBox.alert(this, "Xóa thất bại!");

Kiểm thử

Danh sách

3 Kiểm thử dữ liệu truyền vào

Kiểm thử form NhanVien

Font Chữ -Kiểm tra font chữ có giống nhau không

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

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 Màu sắc -Kiểm tra màu sắc của tên các trường có đúng màu đen đị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

Icon -Kiểm tra các icon có tương đồng về màu sắc và kích thước với nhau không b Kiểm thử chức năng

Thêm -không nhập dữ liệu và ấn thêm

-nhập 1 trường dữ liệu và ấn thêm -nhập tất cả dữ liệu và ấn thêm Sửa -không nhập dữ liệu trường MaNV và ấn sửa

-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 Xoá -không nhập dữ liệu trường MaNV và ấn xoá

- Nhập dữ liệu vào trường Mã nhân viên (MaNV) và nhấn nút "Xóa" để kiểm tra.- Nhập dữ liệu vào tất cả các trường, trừ MaNV, và nhấn nút "Xóa" để kiểm tra.- Nhấn nút "Mới" để kiểm tra xem tất cả các trường có được xóa trắng hay không.- Nhấn vào nút "Thêm ảnh" để kiểm tra xem JFileChooser có mở ra hay không.- Nhập từ khóa cần tìm kiếm vào ô tìm kiếm và kiểm tra xem kết quả tìm kiếm có chính xác với từ khóa không.- Kiểm tra tính hợp lệ của dữ liệu nhập vào.

Mã nhân viên -Kiểm tra cho phép để trống hay không

-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ự Mật khẩu -Kiểm tra cho phép để trống hay không

-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

Xác nhận mật khẩu -Kiểm tra cho phép để trống hay 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

Vai trò - Kiểm tra tích vào vai trò có lưu vào cơ sở dữ liệu vai trò tương ứng hay không - Kiểm tra có thể một lúc tích cả hai vai trò hay không.

Họ tên -Kiểm tra cho phép để trống hay không

-Kiểm tra có cho phép viết số vào tên hay không Giới tính -Kiểm tra tích vào vai trò có lưu vào Database giới tính tương ứng hay không -Kiểm tra có thể một lúc tích cả hai vai trò hay không Ngày sinh -Kiểm tra cho phép để trống hay không

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

Kiểm thử form Bán Hàng

Font Chữ -Kiểm tra font chữ có giống nhau không

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

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 Màu sắc -Kiểm tra màu sắc của tên các trường có đúng màu đen đị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

Icon -Kiểm tra các icon có tương đồng về màu sắc và kích thước với nhau không b Kiểm thử các chức năng

Thêm -không nhập dữ liệu và ấn thêm

-nhập 1 trường dữ liệu và ấn thêm -nhập tất cả dữ liệu và ấn thêm Thanh toán -Không nhập mã hoá đơn và Thanh Toán

-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 Mới -ấn Mới và xem tất cả các trường có được xoá trắng không? c Kiểm thử dữ liệu

Mã hoá đơn -Kiểm tra cho phép để trống hay không

-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ự Tên sản phẩm -Kiểm tra chọn đúng tên sản phẩm không

- Mã nhân viên: Kiểm tra mã nhân viên có đúng là mã của nhân viên đang đăng nhập vào ứng dụng hay không, đồng thời kiểm tra xem mã nhân viên có được lưu trữ chính xác hay không.- Ngày mua: Kiểm tra xem ngày mua có đúng định dạng dd/MM/yyyy hay không.

-Kiểm tra có đúng ngày hiện tại không Tên khách hàng -Kiểm tra cho phép để trống hay không

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

Giá bán -Kiểm tra giá bán có đúng là giá của Sản phẩm được chọn không

Số lượng -Kiểm tra cho phép để trống hay không

-Kiểm tra cho phép nhập chữ hay không -Kiểm tra cho phép nhập số lương bé hơn 0 không

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

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

Bước 1: chuột phải vào Project và chọn Clean and Build

20 Thao tác Clean And Build

Bước 2: Vào thư mục chứa Project và tìm đến thư mục Dist

Bước 3: Copy file icon của ứng dụng có đuôi ico và Patse và thư mục

Bước 4: Cài Launch4j và khởi động Launch4j

Bước 5: Mở Launch4j và tại OutPut File chọn đến đường dẫn muốn xuất file và đặt tên cho ứng dụng và đuôi phải có exe (VD:

Bước 6: Tại mục Jar trong Launch4j chọn đến đường dẫn có chứa file Jar (ở trong thư mục Dist vừa làm ở Bước 2)

Bước 7: Tại mục Icon trong Launch4j chọn đến đường dẫn có chứa file ico (ở trong thư mục Dist vừa làm ở Bước 3)

Bước 8: Tại thanh công cụ ở Launch4j chọn JRE và tìm đến Min JRE version tại đây gõ vào phiên bản JRE tối thiểu là 1.8

Bước 9:Chọn vào Build Wrapper và đợi phần mềm Build

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

29 File Sau Khi Đã Build Thành Cô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