{"id":29921381,"url":"https://github.com/dangtranhuu/davisy","last_synced_at":"2025-08-02T07:34:53.138Z","repository":{"id":128504953,"uuid":"564388035","full_name":"dangtranhuu/DAVISY","owner":"dangtranhuu","description":"Phần mềm quản lí bán hàng của cửa hàng cung cấp phụ kiện di động DAVISY","archived":false,"fork":false,"pushed_at":"2024-05-21T03:20:23.000Z","size":130988,"stargazers_count":22,"open_issues_count":0,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-04T19:31:25.125Z","etag":null,"topics":["featured","jdbc","mssqlserver","swing"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dangtranhuu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-11-10T15:58:07.000Z","updated_at":"2025-04-22T02:08:59.000Z","dependencies_parsed_at":"2023-06-01T03:30:18.207Z","dependency_job_id":"db3a3fff-7eae-4394-911e-38c5703d45ef","html_url":"https://github.com/dangtranhuu/DAVISY","commit_stats":null,"previous_names":["theanishtar/davisy","devkuri/davisy","dangtranhuu/davisy"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dangtranhuu/DAVISY","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dangtranhuu%2FDAVISY","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dangtranhuu%2FDAVISY/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dangtranhuu%2FDAVISY/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dangtranhuu%2FDAVISY/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dangtranhuu","download_url":"https://codeload.github.com/dangtranhuu/DAVISY/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dangtranhuu%2FDAVISY/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":268348670,"owners_count":24236299,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-02T02:00:12.353Z","response_time":74,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["featured","jdbc","mssqlserver","swing"],"created_at":"2025-08-02T07:34:48.971Z","updated_at":"2025-08-02T07:34:53.122Z","avatar_url":"https://github.com/dangtranhuu.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://travis-ci.org/joemccann/dillinger.svg?branch=master)](https://tranhuudang.cf)\n\u003cbr/\u003e\n\n\u003cbr/\u003e\n\nDự án được xuất hiện trên website của trường [caodang.fpt.edu.vn/tin-tuc-poly/can-tho-tin-sinh-vien/du-an-phan-mem-quan-ly-ban-phu-kien-thiet-bi-di-do...](https://caodang.fpt.edu.vn/tin-tuc-poly/can-tho-tin-sinh-vien/du-an-phan-mem-quan-ly-ban-phu-kien-thiet-bi-di-dong-cua-sinh-vien-fpoly-can-tho-lot-mat-xanh-cua-giang-vien.html)\n\nXem demo chức năng [tại đây](https://youtu.be/x7tL29kG5j8?si=6tEQbuafT8ae0QkT)\n\n# DAVISY-PRO1014\n\n## Tên dự án: Xây dựng ứng dụng quản lý bán hàng cho cửa hàng bán phụ kiện thiết bị di động DAVISY\n\n\u003cbr/\u003e\n\n\u003cbr/\u003e\n\n## Thành viên\n| Tên thành viên                                             | Ảnh minh họa                                                                                                                                     | Chức vụ                  | Sản phẩm nổi bật                                                                        |\n| -----------------------------------------------------------| -------------------------------------------------------------------------------------------------------------------------------------------------| ------------------------ | --------------------------------------------------------------------------------------- |\n| [Trần Hữu Đang](https://github.com/Theanishtar)            | \u003cimg src=\"https://raw.githubusercontent.com/echhoclaptrinh/Image/main/gif-flog/pepefrg-55.gif\" title=\"\" alt=\"06-00-18-00-html5.gif\" width=\"100\"\u003e | Project Manager, developer          | [Mô phỏng thuật toán sắp xếp](https://github.com/TheanIshtar/simulation-sort-algorithm) |\n| [Nguyễn Khánh Đan](https://github.com/nguyenkhanhdan)      | \u003cimg src=\"https://raw.githubusercontent.com/echhoclaptrinh/Image/main/gif-flog/zQRCHEK.gif\" width=\"100\"\u003e                                 | BA Writer, Tester, developer        | [Hệ thống bán hàng FreshFood](https://github.com/NguyenKhanhDan/FreshFood)              |\n| [Đoàn Hiệp Sỹ](https://github.com/DoanSy166)               | \u003cimg src=\"https://raw.githubusercontent.com/echhoclaptrinh/Image/main/gif-flog/f5f.gif\" width=\"100\"\u003e                                             | DevOps, developer                   | [Phần mềm quản lí xe máy](https://github.com/DoanSy16/biker-shop-manager)               |\n| [Phùng Quốc Vinh](https://github.com/Dinhisme)             | \u003cimg src=\"https://raw.githubusercontent.com/echhoclaptrinh/Image/main/gif-flog/pepefrg-72.gif\" width=\"100\"\u003e                                      | Data Scentist, developer            | [Dodge Game](https://github.com/Dinhisme/DodgeGame)                                                                     |\n| [Lê Bích Vi](https://github.com/TheBank0911)               | \u003cimg src=\"https://raw.githubusercontent.com/echhoclaptrinh/Image/main/gif-flog/pepefrg-34.gif\" width=\"100\"\u003e                                      | Business Analyst, developer         | [Quản lí kí túc xá](https://github.com/TheBank0911/Quanlikitucxa)                                                                      |\n\nNgoà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!\u003cbr/\u003e\n\n\u003cbr/\u003e\n\n# Documents\n- [Cài đặt và sử dụng](#install)\n- [Tài khoản và phân quyền](#account)\n- [Các tính năng nâng cao](#ui-components)\n  - [Tùy chỉnh giao diện (Darkmode - Lightmode)](#)\n  - [Quên mật khẩu](#header-bar)\n  - [Thêm sản phẩm số lượng lớn thông qua file excel](#header-bar)\n  - [Tạo mã QR cho từng sản phẩm](#)\n  - [Quét mã sản phẩm](#radio-box)\n  - [Gửi thông tin sản phẩm qua email khách hàng](#button)\n  - [In thông tin sản phẩm thành file word](#textbox)\n  - [In hóa đơn thành file pdf](#alert)\n  - [Tìm kiếm nâng cao (được tùy chỉnh các tiêu chí tìm kiếm)](#alert)\n  - [Đọc số tiền trong hóa đơn](#alert)\n  - [Thống kê theo dạng biểu đồ](#alert)  \n  - [Xuất thống kê thành file excel](#alert)\n- [Các công nghệ sử dụng](#)\n  - [Lớp drawer dùng để khởi tạo menu](#drawer)\n  - [Thư viện bên ngoài để mở webcam](#webcam)\n  - [Lớp tiện ích để chuyển đổi giữa mã nhị phân và ASCII](#bitmap)\n  - [Thư viện để xuất file excel, word, pdf,...](#file)\n  - [Thư viện Chart để vẽ biểu đồ 2D](#chart)\n  - [Thư viện làm việc với email](#email)\n- [Các công cụ sử dụng](#)\n  - [Netbeans IDE](#)\n  - [MSS Management Studio 18](#)\n  - [Visual Studio Code](#)\n  - [Github.com](#)\n  - [Trello.com](#)\n  - [Visio 2016](#)\n  - [Balsamiq Wireframes](#)\n  - [Microsoft Office 2016](#)\n  - [Launch 4 J](#)\n  \n- [Các tư liệu tham khảo](#draw-func)\n  - [Github - DJ Raven](#draw)\n  - [Github - KeepToo](#gotoxy)\n  - [YouTube - Ếch học lập trình](#square)\n  - [YouTube - Abner Rodrigues](#set-color)\n  - [YouTube - Bro Code](#clear)\n  - [YouTube - Thân Triệu](#codepage)\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n# Mô tả chi tiết dự án\n\n## Mô tả\n\nPhầ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](https://caodang.fpt.edu.vn/) được hướng dẫn bởi thầy [Trần Văn Nhuộm](https://thaynhuom.edu.vn/).\n\n\u003c!-- \u003cbr/\u003e\n\u003ccenter\u003e\u003cimg src=\"\"\u003e\u003c/center\u003e\n\u003cbr/\u003e --\u003e\n\n## Account\n| Tên tài khoản         | Tên đăng nhập        | Chức vụ            | Email                           | Trạng Thái                                       |\n| ----------------------| ---------------------| ------------------ | ------------------------------- | -------------------------------------------------|\n| Trần Văn Nhuộm        | admin                | Quản trị           | nhuomtv@fpt.edu.vn              | \u003cspan style=\"color:green\" \u003eĐang hoạt động\u003c/span\u003e |\n| Trần Hữu Đang         | dangth               | Quản lí            | dangthpc04349@fpt.edu.vn        | \u003cspan style=\"color:green\" \u003eĐang hoạt động\u003c/span\u003e |\n| Nguyễn Khánh Đan      | dannk                | Nhân viên          | dannkpc04351@fpt.edu            | \u003cspan style=\"color:green\" \u003eĐang hoạt động\u003c/span\u003e |\n| Đoàn Hiệp Sỹ          | sydh                 | Nhân viên          | sydhpc04388@fpt.edu.vn          | \u003cspan style=\"color:green\" \u003eĐang hoạt động\u003c/span\u003e |\n| Phùng Quốc Vinh       | vinhpq               | Nhân viên          | vinhpqpc04338@fpt.edu.vn        | \u003cspan style=\"color:red\" \u003eNgưng hoạt động\u003c/span\u003e  |\n| Lê Bích Vi            | vilb                 | Nhân viên          | vilbpc04354@fpt.edu.vn          | \u003cspan style=\"color:green\" \u003eĐang hoạt động\u003c/span\u003e |\n\u003chr/\u003e\n\n\u003cbr/\u003e\n\n\u003eQuản trị sẽ có toàn quyền với phần mềm\n\n\u003eQuả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)\n\n\u003eNhâ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\n\u003cbr/\u003e\n\n\u003cbr/\u003e\n\n## Install\n\n1. Tải và giải nén file đã được đính kèm\n2. Cài đặt vào ổ đĩa D trong máy tính\n3. Chạy chương trình đã cài đặt và đăng nhập với tài khoản bên trên\n\n## Run Project by Netbeans IDE\n1. Mở project \"DAVISYS\"\n2. Chạy trang login hoặc main trong package com.gui\n3. Đăng nhập các tài khoản bên trên\n\n\u003cbr/\u003e\n\n\u003cbr/\u003e\n\n# Các công nghệ sử dụng trong dự án\n\n\n\n## drawer\n```java\nvoid initMenu() {\n        drawer = Drawer.newDrawer(this)\n                .addChild(new DrawerItem(\"Cửa sổ chính\").build())\n                .addChild(new DrawerItem(\"Tài khoản\").build())\n                .addFooter(new DrawerItem(\"Đăng xuất\").build())\n                .event(new EventDrawer() {\n                    @Override\n                    public void selected(int index, DrawerItem item) {\n                        if (drawer.isShow()) {\n                          drawer.hide();\n                        }\n                        switch (index) {\n                            case 0:\n                              //gọi trang Main\n                              break;\n                            case 1:\n                              //gọi trang tài khoản\n                              break;\n                        }\n                    }\n                }).build();\n}\n```\n\u003cbr/\u003e\n\n\u003cbr/\u003e\n\n## webcam\n\n\n```java\npublic void initWebcam() {\n    Dimension size = WebcamResolution.QVGA.getSize();\n    webcam = Webcam.getWebcams().get(0); //0 is default webcam\n    webcam.setViewSize(size);\n    panel = new WebcamPanel(webcam);\n    panel.setPreferredSize(size);\n    pnQR.add(panel, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 0, 470, 300));\n    executor.execute(this);\n}\n```\nGhi đè phương thức chạy của luồng mở webcam\n```java\n@Override\n    public void run() {\n        do {\n            try {\n                Thread.sleep(100);\n            } catch (InterruptedException e) {\n                e.printStackTrace();\n            }\n\n            Result result = null;\n            BufferedImage image = null;\n            if (!webcam.isOpen()) {\n                return;\n            }\n            if (webcam.isOpen()) {\n                if ((image = webcam.getImage()) == null) {\n                    continue;\n                }\n            }\n            LuminanceSource source = new BufferedImageLuminanceSource(image);\n            BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));\n            try {\n                result = new MultiFormatReader().decode(bitmap);\n            } catch (NotFoundException e) {\n            }\n            if (result != null) {\n                //xử lý mã tại đây\n            }\n        } while (true);\n    }\n```\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n## bitmap\n\n```java\n//Trình tạo mã QR\ntry {\n    String charset = \"UTF-8\"; // or \"ISO-8859-1\"\n    Map\u003c EncodeHintType, ErrorCorrectionLevel\u003e hintMap = new HashMap\u003c EncodeHintType, ErrorCorrectionLevel\u003e();\n    hintMap.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.L);\n    BitMatrix matrix = new MultiFormatWriter().encode(\n            new String(qrCodeData.getBytes(charset), charset),\n            BarcodeFormat.QR_CODE, 200, 200, hintMap);\n    MatrixToImageWriter.writeToFile(matrix, filePath.substring(filePath\n            .lastIndexOf('.') + 1), new File(filePath));\n     } catch (Exception e) {\n}\n```\n\u003cbr\u003e\n\n\u003cbr\u003e\n\n## file\n```java\ntry {\n    XSSFWorkbook wb = new XSSFWorkbook();\n    XSSFSheet sheet = wb.createSheet(\"Danh sách sản phẩm\");\n    XSSFRow row = null;\n    Cell cell = null;\n    row = sheet.createRow(0);\n\n    cell = row.createCell(0, CellType.STRING);\n    cell.setCellValue(\"MÃ SẢN PHẨM\");\n\n    cell = row.createCell(1, CellType.STRING);\n    cell.setCellValue(\"TÊN SẢN PHẨM\");\n\n    JFileChooser fc = new JFileChooser();\n    fc.showOpenDialog(null);\n    File f = fc.getSelectedFile();\n    String path = f.getAbsoluteFile().toString();\n    String file = f.getAbsolutePath();\n    if (!path.contains(\".xlsx\")) {\n        file = f.getAbsolutePath() + \".xlsx\";\n    }\n    try {\n        FileOutputStream fis = new FileOutputStream(file);\n        wb.write(fis);\n        fis.close();\n    } catch (Exception ex) {\n        System.out.println(ex);\n    }\n} catch (Exception ex) {\n    System.out.println(ex);\n}\n\n```\n\u003cbr\u003e\n\u003cbr\u003e\n\n## chart\n```java\nDate now = new Date();\n    SimpleDateFormat formater = new SimpleDateFormat();\n    formater.applyPattern(\"yyyy\");\n    String thisYear = formater.format(now);\n    List\u003cObject[]\u003e listTKSP_L = TKdao.getSPBanChayTL(thisYear);\n    DefaultPieDataset data = new DefaultPieDataset();\n    float tongsl = 0;\n    for (Object[] row : listTKSP_L) {\n        tongsl += (int) row[1];\n    }\n    for (Object[] row : listTKSP_L) {\n        data.setValue((String) (row[0]), (((int) row[1] / tongsl) * 100));\n    }\n    JFreeChart Chart = ChartFactory.createPieChart(\"Tỷ lệ phần trăm loại sản phẩm bán được\", data, true, true, true);\n    ChartPanel chartPanel = new ChartPanel(Chart);\n    chartPanel.setPreferredSize(new Dimension(jpPie.getWidth(), jpPie.getHeight()));\n\n    jpPie.removeAll();\n    jpPie.setLayout(new CardLayout());\n    jpPie.add(chartPanel);\n```\n\u003cbr\u003e\n\u003cbr\u003e\n\n## Email\n\n```java\nProperties prop = new Properties();\n    prop.put(\"mail.smtp.host\", \"smtp.gmail.com\");\n    prop.put(\"mail.smtp.port\", \"587\");\n    prop.put(\"mail.smtp.auth\", \"true\");\n    prop.put(\"mail.smtp.starttls.enable\", \"true\"); //TLS\n\n    Session session = Session.getInstance(prop,\n            new Authenticator() {\n        protected PasswordAuthentication getPasswordAuthentication() {\n            return new PasswordAuthentication(username, password);\n        }\n    });\n    try {\n        Message message = new MimeMessage(session);\n        message.setFrom(new InternetAddress(email));\n        message.setRecipients(\n                Message.RecipientType.TO,\n                InternetAddress.parse(email)\n        );\n\n        Multipart content = new MimeMultipart();\n        MimeBodyPart textBody = new MimeBodyPart();\n\n        message.setSubject(\"DAVISY\");\n\n        textBody.setText(\"Hello\");\n\n        content.addBodyPart(textBody);\n        message.setContent(content);\n        Transport.send(message);\n\n    } catch (MessagingException e) {\n        System.out.println(e);\n    }\n\n```\n\n[Designed by Theanishtar in CanTho city.](tranhuudang.cf)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdangtranhuu%2Fdavisy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdangtranhuu%2Fdavisy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdangtranhuu%2Fdavisy/lists"}