Dự án được xuất hiện trên website của trường (xem thêm)
Tên thành viên | Ảnh minh họa | Chức vụ | Sản phẩm nổi bật |
---|---|---|---|
Trần Hữu Đang | Project Manager, developer | Mô phỏng thuật toán sắp xếp | |
Nguyễn Khánh Đan | BA Writer, Tester, developer | Hệ thống bán hàng FreshFood | |
Đoàn Hiệp Sỹ | DevOps, developer | Phần mềm quản lí xe máy | |
Phùng Quốc Vinh | Data Scentist, developer | Dodge Game | |
Lê Bích Vi | Business Analyst, developer | Quản lí kí túc xá |
Ngoài ra các thành viên còn đảm nhận một số nhiệm vụ khác được trình bày cụ thể trong phần báo cáo!
-
- Tùy chỉnh giao diện (Darkmode - Lightmode)
- Quên mật khẩu
- Thêm sản phẩm số lượng lớn thông qua file excel
- Tạo mã QR cho từng sản phẩm
- Quét mã sản phẩm
- Gửi thông tin sản phẩm qua email khách hàng
- In thông tin sản phẩm thành file word
- In hóa đơn thành file pdf
- Tìm kiếm nâng cao (được tùy chỉnh các tiêu chí tìm kiếm)
- Đọc số tiền trong hóa đơn
- Thống kê theo dạng biểu đồ
- Xuất thống kê thành file excel
Phần mềm là dự án cuối môn của nhóm DAVISY trong môn dự án 1 - PRO1041 tại FPT Polytechnic được hướng dẫn bởi thầy Trần Văn Nhuộm.
Tên tài khoản | Tên đăng nhập | Chức vụ | Trạng Thái | |
---|---|---|---|---|
Trần Văn Nhuộm | admin | Quản trị | [email protected] | Đang hoạt động |
Trần Hữu Đang | dangth | Quản lí | [email protected] | Đang hoạt động |
Nguyễn Khánh Đan | dannk | Nhân viên | [email protected] | Đang hoạt động |
Đoàn Hiệp Sỹ | sydh | Nhân viên | [email protected] | Đang hoạt động |
Phùng Quốc Vinh | vinhpq | Nhân viên | [email protected] | Ngưng hoạt động |
Lê Bích Vi | vilb | Nhân viên | [email protected] | Đang hoạt động |
Quản trị sẽ có toàn quyền với phần mềm
Quản lí chỉ được phép thêm các nhân viên và các thống kê về doanh thu (cùng toàn bộ các quyền của nhân viên)
Nhân viên sẽ bị hạn chế về quyền thêm tài khoản (chỉ được thêm sửa xóa khách hàng), chỉ được xem thống kê sản phẩm bán chạy
- Tải và giải nén file đã được đính kèm
- Cài đặt vào ổ đĩa D trong máy tính
- Chạy chương trình đã cài đặt và đăng nhập với tài khoản bên trên
- Mở project "DAVISYS"
- Chạy trang login hoặc main trong package com.gui
- Đăng nhập các tài khoản bên trên
void initMenu() {
drawer = Drawer.newDrawer(this)
.addChild(new DrawerItem("Cửa sổ chính").build())
.addChild(new DrawerItem("Tài khoản").build())
.addFooter(new DrawerItem("Đăng xuất").build())
.event(new EventDrawer() {
@Override
public void selected(int index, DrawerItem item) {
if (drawer.isShow()) {
drawer.hide();
}
switch (index) {
case 0:
//gọi trang Main
break;
case 1:
//gọi trang tài khoản
break;
}
}
}).build();
}
public void initWebcam() {
Dimension size = WebcamResolution.QVGA.getSize();
webcam = Webcam.getWebcams().get(0); //0 is default webcam
webcam.setViewSize(size);
panel = new WebcamPanel(webcam);
panel.setPreferredSize(size);
pnQR.add(panel, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 470, 300));
executor.execute(this);
}
Ghi đè phương thức chạy của luồng mở webcam
@Override
public void run() {
do {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
Result result = null;
BufferedImage image = null;
if (!webcam.isOpen()) {
return;
}
if (webcam.isOpen()) {
if ((image = webcam.getImage()) == null) {
continue;
}
}
LuminanceSource source = new BufferedImageLuminanceSource(image);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
try {
result = new MultiFormatReader().decode(bitmap);
} catch (NotFoundException e) {
}
if (result != null) {
//xử lý mã tại đây
}
} while (true);
}
//Trình tạo mã QR
try {
String charset = "UTF-8"; // or "ISO-8859-1"
Map< EncodeHintType, ErrorCorrectionLevel> hintMap = new HashMap< EncodeHintType, ErrorCorrectionLevel>();
hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);
BitMatrix matrix = new MultiFormatWriter().encode(
new String(qrCodeData.getBytes(charset), charset),
BarcodeFormat.QR_CODE, 200, 200, hintMap);
MatrixToImageWriter.writeToFile(matrix, filePath.substring(filePath
.lastIndexOf('.') + 1), new File(filePath));
} catch (Exception e) {
}
try {
XSSFWorkbook wb = new XSSFWorkbook();
XSSFSheet sheet = wb.createSheet("Danh sách sản phẩm");
XSSFRow row = null;
Cell cell = null;
row = sheet.createRow(0);
cell = row.createCell(0, CellType.STRING);
cell.setCellValue("MÃ SẢN PHẨM");
cell = row.createCell(1, CellType.STRING);
cell.setCellValue("TÊN SẢN PHẨM");
JFileChooser fc = new JFileChooser();
fc.showOpenDialog(null);
File f = fc.getSelectedFile();
String path = f.getAbsoluteFile().toString();
String file = f.getAbsolutePath();
if (!path.contains(".xlsx")) {
file = f.getAbsolutePath() + ".xlsx";
}
try {
FileOutputStream fis = new FileOutputStream(file);
wb.write(fis);
fis.close();
} catch (Exception ex) {
System.out.println(ex);
}
} catch (Exception ex) {
System.out.println(ex);
}
Date now = new Date();
SimpleDateFormat formater = new SimpleDateFormat();
formater.applyPattern("yyyy");
String thisYear = formater.format(now);
List<Object[]> listTKSP_L = TKdao.getSPBanChayTL(thisYear);
DefaultPieDataset data = new DefaultPieDataset();
float tongsl = 0;
for (Object[] row : listTKSP_L) {
tongsl += (int) row[1];
}
for (Object[] row : listTKSP_L) {
data.setValue((String) (row[0]), (((int) row[1] / tongsl) * 100));
}
JFreeChart Chart = ChartFactory.createPieChart("Tỷ lệ phần trăm loại sản phẩm bán được", data, true, true, true);
ChartPanel chartPanel = new ChartPanel(Chart);
chartPanel.setPreferredSize(new Dimension(jpPie.getWidth(), jpPie.getHeight()));
jpPie.removeAll();
jpPie.setLayout(new CardLayout());
jpPie.add(chartPanel);
Properties prop = new Properties();
prop.put("mail.smtp.host", "smtp.gmail.com");
prop.put("mail.smtp.port", "587");
prop.put("mail.smtp.auth", "true");
prop.put("mail.smtp.starttls.enable", "true"); //TLS
Session session = Session.getInstance(prop,
new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
});
try {
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(email));
message.setRecipients(
Message.RecipientType.TO,
InternetAddress.parse(email)
);
Multipart content = new MimeMultipart();
MimeBodyPart textBody = new MimeBodyPart();
message.setSubject("DAVISY");
textBody.setText("Hello");
content.addBodyPart(textBody);
message.setContent(content);
Transport.send(message);
} catch (MessagingException e) {
System.out.println(e);
}