Xây dựng lớp Ngay định nghĩa các thuộc tính cho các lớp cơ sở: ngày sinh của nhân sự, ngày lập hóa đơn, ngày sản xuất máy tính 5.. Xây dựng Interface ThemSuaXoa các thao tác nghiệp vụ th
Phát biểu bài toán
- Bài toán quản lý kinh doanh máy tính là một bài toán liên quan đến quản lý các hoạt động kinh doanh trong lĩnh vực máy tính Bài toán này đòi hỏi quản lý các khía cạnh như quản lý kho, quản lý nhập hàng/đặt hàng
- Các đối tựợng: + Người (nhân viên, nhà phân phối, khách hàng)
+ Hóa Đơn (hóa đơn nhập, hoá đơn xuất)
1 Người: Mã số, họ tên, ngày sinh, số CCCD, số điện thoại
- Nhân viên: Hệ số lương
2 Máy tính: Mã số, tên thương hiệu, nước xuất xứ, tên sản phẩm, ngày sản xuất, giá cả, số lượng, thời gian bảo hành
3 Hóa Đơn: Mã số, ngày lập hóa đơn, giá trị hóa đơn, nhân viên lập hóa đơn, máy tính nhập/bán
- Hóa đơn nhập: Nhà phân phối
- Hóa đơn bán: Khách hàng
- Các phương thức cần xử lý
3 Thêm, sửa, xóa, ghi file, đọc file với đối tượng sản phẩm
4 Thêm, sửa, xóa, ghi file, đọc file với đối tượng người
5 Thêm, sửa, xóa, ghi file, đọc file với đối tượng hóa đơn
Xác định sơ đồ lớp của bài toán
Mô tả thuật toán các thao tác nghiệp vụ
B1: Nhập mã số nhân viên (Thông tin nhân viên được lấy trong file thông qua mã số )
B2: Nhập mã số hóa đơn, ngày lập hóa đơn
B3: Nhập thông tin nhà phân phối
B4: Nhập thông tin máy tính
- Khởi tạo vòng for với số lần lặp bé hơn n
+ Khởi tạo 2 biến Computer mt1, Computer mt2
+ Nhập thông tin cho mt1
+ Thêm mt1 vào danh sách computer1
+ mt2 được sao chép thông tin từ mt1 ( không phải mt2 mt1 )
+ Thêm mt2 vào danh sách computer2
B5: Thêm thông tin hóa đơn vừa lập ở trên vào danh sách hóa đơn B6: Thêm thông tin nhà phối vào danh sách
B7: Đưa danh sách computer2 chứa thông tin máy tính nhập qua đối chiều với danh sách máy tính trong kho
- Nếu sản phẩm mới -> Thêm mới
- Nếu sản phẩm đã có -> cập nhật lại số lượng máy tính trong kho
B1: Nhập mã số nhân viên (Thông tin nhân viên được lấy trong file thông qua mã số )
B2: Nhập mã số hóa đơn, ngày lập hóa đơn
B3: Nhập thông tin khách hàng
B4: Nhập thông tin máy tính
- Khởi tạo vòng for với số lần lặp bé hơn n
+ Nhập mã số máy tính a (Thông tin máy tính a được lấy trong file thông qua mã số)
+ nếu a = null, yêu cầu nhập lại
* Nhập số lượng mua (slm)
* Vì a được lấy từ file -> thuộc tính số lượng của a là số lượng máy trong kho (sltk) Lợi dụng điều đó ta dùng kiểm tra xem sltk có lớn hơn hoặc bằng slm hay không Nếu không thì yêu cầu nhập cho tới khi thỏa mãn Set slm cho thuộc tính số lượng của a
Thêm máy tính a vào danh sách máy tính
B5: Thêm thông tin hóa đơn vừa lập ở trên vào danh sách hóa đơn B6: Thêm thông tin nhà phối vào danh sách
B7: Đưa danh sách máy tính chứa thông tin máy tính bán qua đối chiều với danh sách máy tính trong kho -> cập nhật lại số lượng trong kho
3 Thao tác với máy tính (thêm sửa xóa) a Thêm
B2: Khởi tạo vòng for với số lần lặp bé hơn n
-Khởi tạo danh sách máy tính (ds a) lưu n loại máy tính
B3: Dùng lệnh if kiểm tra xem ds máy tính trong kho (ds kho) có trống không
-Nếu trống, thêm các phần tử của ds a vào ds kho
-Nếu không trống, duyệt từng phần tử của ds a với ds kho -Nếu có phần tử giống nhau cập nhật số lượng cho phần tử trong kho
-Nếu phần tử trong ds a khác với mọi phần tử trong ds kho
Thêm mới phần tử đó vào ds kho
B1: Nhập mã số sản phẩm muốn xóa (ms)
B2: Duyệt từng phần tử của danh sách máy tính kho
-So sánh thuộc mã số của từng phần tử với ms
+nếu trùng xóa phần tử đó ra khỏi danh sách máy tính kho
+nếu không phần tử nào thỏa mãn trả về “Sản phẩm không tồn tại
B1: Nhập mã số sản phẩm muốn sửa (ms)
B2: Duyệt từng phần tử của danh sách máy tính kho
-So sánh thuộc mã số của từng phần tử với ms
+nếu trùng nhập mới phần tử đó
+nếu không phần tử nào thỏa mãn trả về “Sản phẩm
4 Thao tác với người (thêm sửa xóa) a.Thêm: chỉ thêm đối tượng nhân viên, nhà phân phối và khách hàng được thêm qua phương thức nhập hàng, bán hàng
B3: Thêm a vào danh sách người b.Xóa
B1: Nhập mã số đối tượng muốn xóa (ms)
B2: Duyệt từng phần tử của danh sách người
-So sánh thuộc tính mã số của từng phần tử với ms
+nếu trùng xóa phần tử đó ra khỏi danh sách
+nếu không phần tử nào thỏa mãn trả về “Đối tượng không tồn tại
B1: Nhập mã số đối tượng muốn sửa (ms)
B2: Duyệt từng phần tử của danh sách người
-So sánh thuộc mã số của từng phần tử với ms
+nếu trùng nhập mới phần tử đó
+nếu không phần tử nào thỏa mãn trả về “Đối tượng không tồn tại”
5 Thao tác với hóa đơn (thêm sửa xóa) a.Thêm: chỉ thêm hóa đơn vào danh sách qua phương thức nhập hàng, bán hàng b.Xóa
B1: Nhập mã số hóa đơn muốn xóa (ms)
B2: Duyệt từng phần tử của danh sách hóa đơn
-So sánh thuộc tính mã số của từng phần tử với ms
+nếu trùng xóa phần tử đó ra khỏi danh sách
+nếu không phần tử nào thỏa mãn trả về “Hóa đơn không tồn tại
B1: Nhập mã số hóa đơn muốn sửa (ms)
B2: Duyệt từng phần tử của danh sách hóa đơn
-So sánh thuộc tính mã số của từng phần tử với ms
*Dùng luôn biến ms lưu mã số hóa đơn mới
*Tạo biến Ngay a lưu ngày lập hóa đơn mới
*set lại 2 thuộc tính mới cho hóa đơn +nếu không phần tử nào thỏa mãn trả về “Hóa đơn không tồn tại
IV.Cài đặt chương trình
1 Pakage QuanLySanPham a Xây dựng lớp Computer package QuanLySanPham; import java io Serializable; import java util Scanner; import NgayThangNam.Ngay; public class Computer implements Serializable{ private String maSo; private String nameBrand; private String nameCountry; private String nameComputer; private Ngay dateSX; private double price; private int soLuong; private int thoiGianBaoHanh; public Computer ( String maSo, String nameBrand, String nameCountry, String nameComputer,
Ngay dateSX, double price, int soLuong, int thoiGianBaoHanh)
{ this maSo = maSo; this nameBrand = nameBrand; this nameCountry = nameCountry ; this nameComputer = nameComputer; this dateSX = dateSX ; this price = price; this soLuong = soLuong ; this thoiGianBaoHanh = thoiGianBaoHanh;
} public Computer(){} public String getMaSo() { return maSo;
} public String getNameBrand() { return nameBrand;
System out println ( " -Nhap thong tin hoa don -");
HDNhap hdn = new HDNhap(); hdn Nhap(); qlhd addHDN hdn); ( qlsp addSP hdn getComputers()); ( qlns addNPP hdn getNhaPP()); (
} public void BanHang() throws ClassNotFoundException IOException , {
System out println ( " -Nhap thong tin hoa don -");
HDBan hdb = new HDBan(); hdb Nhap(); if (qlsp removeSP hdb getComputers())) { ( qlhd addHDB hdb); ( qlns addKH hdb getKhachHang()); (
} public void ChucNangComputer() throws IOException ClassNotFoundException , {
Scanner scan = new Scanner ( System in); int choose; do {
System out print ( "Lua chon: "); choose = Integer parseInt scan nextLine()); ( switch ( choose ) { case 1: qlsp Them(); break; case 2: qlsp Xoa(); break; case 3: qlsp Sua(); break; case 4: qlsp HienDS(); break; case 5: while ( true ) {
Computer a = qlsp TimKiem(); if (a == null ) {
System out println ( "San pham khong ton tai Nhap lai!!!");
} break; case 6: qlsp WriteFile(); break; default: break;
} public void ChucNangPerson() throws ClassNotFoundException IOException , {
Scanner scan = new Scanner ( System in); int choose; do {
System out print ( "Lua chon: "); choose = Integer parseInt scan nextLine()); ( switch ( choose ) { case 1: qlns Them(); break; case 2: qlns Xoa(); break; case 3: qlns Sua(); break; case 4: qlns HienDS(); break; case 5: while ( true ) {
Person a = qlns TimKiem(); if (a == null ) {
System out println ( "Doi tuong khong ton tai Nhap lai!!!");
40 | P a g e break; case 6: qlns WriteFile(); break; default: break;
} public void ChucNangHoaDon() throws ClassNotFoundException IOException , {
Scanner scan = new Scanner ( System in); int choose; do {
System out print ( "Lua chon: "); choose = Integer parseInt scan nextLine()); ( switch ( choose ) { case 1: qlhd Them(); break; case 2: qlhd Xoa(); break; case 3: qlhd Sua(); break; case 4: qlhd HienDS(); break; case 5: qlhd XuatTheoMaso(); break; case 6: qlhd WriteFile(); break; default: break;
System out println ( "3 Sua thong tin");
System out println ( "4 Hien danh sach");
System out println ( "5 Tim kiem theo ma so");
System out println ( "6 Luu du lieu vao file");
9 Xây dựng lớp Main chứa hàm main import java util Scanner; import QuanLyChung.QuanLyChung; public class Main { public static voidmain ( String[] args) {
Scanner scan = new Scanner ( System in); int choose; do {
System out print ( "Lua chon: "); choose = Integer parseInt scan nextLine()); ( switch ( choose ) { case 1: qlc NhapHang(); break; case 2: qlc BanHang(); break; case 3: qlc ChucNangPerson(); break; case 4: qlc ChucNangComputer(); break; case 5: qlc ChucNangHoaDon(); break; default:
System out println ( " Ket Thuc "); break;
System out println ( "1 Nhap hang");
System out println ( "2 Ban hang");
System out println ( "3 Cac thao tac voi nhan su");
System out println ( "4 Cac thao tac voi san pham");
System out println ( "5 Cac thao tac voi hoa don");
System out println ( "6 Thoat chuong trinh");
V Kiểm thử đánh giá chương trình
2 Chức năng nhập hàng a Input
- Nhà phân phối được lưu
- Danh sách sản phẩm nhập được lưu
3 Chức năng bán hàng a Input b Output
- Lưu thông tin hóa đơn
- Lưu thông tin khách hàng
- Cập nhật số lượng máy tính trong kho
4 Các thao tác với đối tượng sản phẩm a Thêm
-Sản phẩm mới -> thêm mới
-Sản phẩm có sẵn trong kho -> cập nhật số lượng b.Sửa
Trường hợp nhập sai mã số hoặc không tồn tại máy tính c Sửa
Trường hợp nhập sai mã số hoặc không tồn tại máy tính d.Tìm kiếm theo mã số
-Nếu tồn tại máy tính ứng với mã số được nhập
-Nếu không tồn tại máy tính ứng với mã số được nhập f Ghi file
5 Các thao tác với đối tượng người a Thêm
Trường hợp không có đối tượng ứng với mã số được nhập c Xóa d Tìm kiếm theo mã số
6 Các thao tác với đối tượng hóa đơn a Sửa b.Xóa