<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
ĐẠI HỌC MỞ HÀ NỘI
<b>KHOA CÔNG NGHỆ THÔNG TIN</b>
<b> BÁO CÁO BÀI TẬP LỚN</b>
<b>MƠN: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG.</b>
<b>ĐỀ TÀI: QUẢN LÝ KINH DOANH MÁY TÍNHGiảng viên hướng dẫn: Nguyễn Thành Huy</b>
<i><b>Danh sách sinh viên: </b></i><b>Nhóm 16.</b>
1. Nguyễn Hoàng Quân – 2210A04
</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">
<b>PHÂN CÔNG VÀ KẾ HOẠCH THỰC HIỆN</b>
Trần Ngọc ĐạiPhát biểu bài tốn và vẽ sơ đồ, cài đặt bài tốn
<b>Hồn thành</b>
Nguyễn Minh HiếuMô tả thuật toán các thao tác nghiệp vụ, cài đặt bài tốn
<b>Hồn thành</b>
Nguyễn Hồng QnMơ tả thuật toán các thao tác nghiệp vụ, cài đặt bài toán
<b>I. Phát biểu bài toán</b> ---1
<b>II. Xác định sơ đồ lớp của bài tốn </b>---3
<b>III. Mơ tả thuật tốn các thao tác nghiệp vụ</b> ---5
<b>IV. Cài đặt bài toán </b>---1
<b>1. Package QuanLySanPham --- </b>
a. Xây dựng lớp Computer b. Xây dựng lớp xử lý tác vụ QuanLySanPham <b>2. Package QuanLyNhanSu --- </b>
a. Xây dựng lớp cơ sở Person b. Xây dựng lớp dẫn xuất Staff (kế thừa lớp Person) c. Xây dựng lớp dẫn xuất Provider (kế thừa lớp Person) d. Xây dựng lớp dẫn xuất Customer (kế thừa lớp Person) e. Xây dựng lớp xử lý tác vụ QuanLyNhanSu <b>3. Package QuanLyHoaDon --- </b>
a. Xây dựng lớp cơ sở HoaDon
b. Xây dựng lớp dẫn xuất HDNhap (kế thừa lớp HoaDon)
2 | P a g e
</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">
c. Xây dựng lớp dẫn xuất HDXuat (kế thừa lớp HoaDon) d. Xây dựng lớp xử lý tác vụ QuanLyHoaDon
<b>4. Package NgayThangNam </b>
---a. 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)
<b>5. Package ThemSuaXoa </b>
---a. Xây dựng Interface ThemSuaXoa (các thao tác nghiệp vụ thêm, sửa, xóa cho các lớp cơ sở)
<b>6. Package QuanLyChung </b>
---a. Xây dựng lớp QuanLyChung (quản lý toàn bộ thao tác của chương trình)
<b>7. Xây dựng lớp Main chứa hàm main ---V. Kiểm thử đánh giá chương trình --- </b>
3 | P a g e
</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">
<b>I. PHÁT BIỂU BÀI TỐN</b>
- Bài tốn quản lý kinh doanh máy tính là một bài tố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 tố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
- <b>Các đối tựợng</b>: + Người (nhân viên, nhà phân phối, khách hàng) + Máy tính
+ Hóa Đơn (hóa đơn nhập, hố đơn xuất)
<b>1.Người: Mã số, họ tên, ngày sinh, số CCCD, số điện thoại</b>
- Nhân viên: Hệ số lương - Khách hàng:
-Nhà phân phối:
<b>2. Máy tính: Mã số, tên thương hiệu, nước xuất xứ, tên sản phẩm, </b>
ngày sản xuất, giá cả, số lượng, thời gian bảo hành.
<b>3. Hóa Đơn: Mã số, ngày lập hóa đơn, giá trị hóa đơn, nhân viên lập </b>
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
<b> - Các phương thức cần xử lý</b>
1. Nhập hàng 2. Bán hàng
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
4 | P a g e
</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">
<b>II.XÁC ĐỊNH SƠ ĐỒ LỚP CỦA BÀI TOÁN1. Sơ đồ lớp Computer</b>
<b>2. Sơ đồ lớp Person</b>
5 | P a g e
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">
<b>3. Sơ đồ lớp HoaDon</b>
6 | P a g e
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">
<b>III.Mô tả thuật toán các thao tác nghiệp vụ cần xử lý 1.Nhập hàng</b>
<b>B1: Nhập mã số nhân viên (Thông tin nhân viên được lấy trong file</b>
thông qua mã số )
<b>B2: Nhập mã số hóa đơn, ngày lập hóa đơnB3: Nhập thông tin nhà phân phốiB4: Nhập thông tin máy tính</b>
- Nhập n loại sản phẩm
- 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 - Kết thúc vịng for
<b>B5: Thêm thơng tin hóa đơn vừa lập ở trên vào danh sách hóa đơnB6: Thêm thơng tin nhà phối vào danh sách </b>
<b>B7: Đưa danh sách computer2 chứa thơng tin máy tính nhập qua đối</b>
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
<b>B8: Kết thúc</b>
7 | P a g e
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">
- 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 + nếu a != null
* 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ì 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 - Kết thúc vong for
<b>B5: Thêm thơng tin hóa đơn vừa lập ở trên vào danh sách hóa đơnB6: Thêm thông tin nhà phối vào danh sách </b>
<b>B7: Đưa danh sách máy tính chứa thơng tin máy tính bán qua đối chiều</b>
với danh sách máy tính trong kho -> cập nhật lại số lượng trong kho8 | P a g e
</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">
<b>B8: Kết thúc</b>
<b>3. Thao tác với máy tính (thêm sửa xóa) a. Thêm</b>
<b>B1: Nhập n loại máy tính</b>
<b>B2: Khởi tạo vịng for với số lần lặp bé hơn n</b>
<b>-Khởi tạo danh sách máy tính (ds a) lưu n loại máy tính</b>
<b>B3: Dùng lệnh if kiểm tra xem ds máy tính trong kho (ds kho) có trống</b>
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
<b>B4: Kết thúc b.Xóa</b>
<b>B1: Nhập mã số sản phẩm muốn xóa (ms)</b>
<b>B2: Duyệt từng phần tử của danh sách máy tính kho </b>
-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 <sub></sub>
<b>B2: Duyệt từng phần tử của danh sách máy tính kho </b>
-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 9 | P a g e
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">
không tồn tại”
<b>B3: Kết thúc</b>
<b>4. Thao tác với người (thêm sửa xóa)</b>
<b>a.Thêm: chỉ thêm đối tượng nhân viên, nhà phân phối và khách hàng</b>
được thêm qua phương thức nhập hàng, bán hàng
<b>B1: Khởi tạo biến Staff a</b>
B2: Nhập thông tin cho a
<b>B3: Thêm a vào danh sách người b.Xóa</b>
<b>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</b>
-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<sub></sub> +nếu khơng phần tử nào thỏa mãn trả về “Đối tượng không tồn tại
<b>B3: Kết thúc c.Sửa</b>
<b>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</b>
-So sánh thuộc mã số của từng phần tử với ms
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">
<b>5. Thao tác với hóa đơn (thêm sửa xóa)</b>
<b>a.Thêm: chỉ thêm hóa đơn vào danh sách qua phương thức nhập hàng,</b>
bán hàng
<b>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</b>
-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<sub></sub> không tồn tại
<b>B3: Kết thúcc. Sửa</b>
<b>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</b>
-So sánh thuộc tính mã số của từng phần tử với ms +nếu trùng
*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
<b>B3: Kết thúc</b>
11 | P a g e
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">
<b>IV.Cài đặt chương trình1. Pakage QuanLySanPham</b>
a. Xây dựng lớp Computer
packageQuanLySanPham;
importjava io. .Serializable;
importjava util. .Scanner;
public classComputerimplementsSerializable{ privateStringmaSo;
privateStringnameBrand; privateStringnameCountry; privateStringnameComputer; privateNgaydateSX; private doubleprice; private int soLuong; private int thoiGianBaoHanh;
publicComputer(StringmaSo, StringnameBrand, StringnameCountry, String
nameComputer,
NgaydateSX, doubleprice, intsoLuong, intthoiGianBaoHanh) {
this.maSo = maSo; this.nameBrand = nameBrand; this.nameCountry = nameCountry; this.nameComputer = nameComputer; this.dateSX = dateSX;
this.price = price; this.soLuong = soLuong;
this.thoiGianBaoHanh = thoiGianBaoHanh;
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">
HDNhaphdn = newHDNhap();
public voidBanHang() throwsClassNotFoundException IOException, { System.out println. ("---Nhap thong tin hoa don---");
HDBanhdb = newHDBan();
public voidChucNangComputer() throwsIOException ClassNotFoundException, { Scannerscan = newScanner(System.in);
intchoose; do {
MenuChucNang(); System.out print. ("Lua chon: "); choose = Integer.parseInt scan nextLine( . ());
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">
public voidChucNangPerson() throwsClassNotFoundException IOException, { Scannerscan = newScanner(System.in);
intchoose; do {
MenuChucNang(); System.out print. ("Lua chon: "); choose = Integer.parseInt scan nextLine( . ());
</div><span class="text_page_counter">Trang 41</span><div class="page_container" data-page="41">
public voidChucNangHoaDon() throwsClassNotFoundException IOException, { Scannerscan = newScanner(System.in);
intchoose; do {
MenuChucNang(); System.out print. ("Lua chon: "); choose = Integer.parseInt scan nextLine( . ());
public voidMenuChucNang() { System.out println. ("1. Them"); System.out println. ("2. Xoa");
41 | P a g e
</div><span class="text_page_counter">Trang 42</span><div class="page_container" data-page="42">
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"); System.out println. ("7. Thoat");
} }
<b>9. Xây dựng lớp Main chứa hàm main</b>
importjava util. .Scanner;
public classMain {
public static voidmain(String[] args) { QuanLyChungqlc = newQuanLyChung();
Scannerscan = newScanner(System.in); intchoose;
do { MENU();
System.out print. ("Lua chon: "); choose = Integer.parseInt scan nextLine( . ());
</div><span class="text_page_counter">Trang 43</span><div class="page_container" data-page="43">
System.out println. ("---MENU---"); 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");
</div><span class="text_page_counter">Trang 44</span><div class="page_container" data-page="44">
<b>b. Output- Xuất hóa đơn </b>
<b>- Nhà phân phối được lưu</b>
<b>- Danh sách sản phẩm nhập được lưu </b>
</div><span class="text_page_counter">Trang 45</span><div class="page_container" data-page="45">
- Lưu thông tin khách hàng
- Cập nhật số lượng máy tính trong kho
<b>4. Các thao tác với đối tượng sản phẩm a. Thêm</b>
<b>- Input</b>
<b> -Output</b>
45 | P a g e
</div><span class="text_page_counter">Trang 46</span><div class="page_container" data-page="46">
-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
</div><span class="text_page_counter">Trang 47</span><div class="page_container" data-page="47">
Trường hợp nhập sai mã số hoặc không tồn tại máy tính
<b> d.Tìm kiếm theo mã số</b>
-Nếu tồn tại máy tính ứng với mã số được nhập
-Nếu <b>khơng</b> tồn tại máy tính ứng với mã số được nhập
<b>f. Ghi file</b>
47 | P a g e
</div><span class="text_page_counter">Trang 48</span><div class="page_container" data-page="48">
<b>5. Các thao tác với đối tượng người</b>
</div><span class="text_page_counter">Trang 51</span><div class="page_container" data-page="51">
<b> c.Tìm kiếm theo mã số</b>
<b>d. Ghi file </b>
51 | P a g e
</div>