1. Trang chủ
  2. » Luận Văn - Báo Cáo

Đồ Án Môn Học Cấu Trúc Dữ Liệu Và Giải Thuật.pdf

50 0 0
Tài liệu được quét OCR, nội dung có thể không chính xác
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 đề Đồ Án Môn Học Cấu Trúc Dữ Liệu Và Giải Thuật
Tác giả Nguyễn Bảo Lâm
Người hướng dẫn ThS. Đỗ Thị Kim Dung
Trường học TRUONG DAI HOC PHAN THIET
Chuyên ngành Cấu Trúc Dữ Liệu Và Giải Thuật
Thể loại Đồ Án Môn Học
Năm xuất bản 2023
Thành phố Phan Thiết
Định dạng
Số trang 50
Dung lượng 2,39 MB

Nội dung

Yéu cau: Hãy định nghĩa một DSLK đơn để quản lý thông tin máy tính đề bàn của 1 cửa hàng vi tính.. Mỗi máy tính có các thông tin: MS, Tenmaytinh, CPU, Main, Ram, Nhacungcap, Nhasanxuat,

Trang 1

TRUONG DAI HOC PHAN THIET Khoa Công nghệ thông tin

ĐỎ ÁN MÔN HỌC CẤU TRÚC DỮ LIỆU VÀ GIẢI

Phan Thiết, ngày 25 tháng 4 năm 2023

Trang 2

MUC LUC

Yêu CẦU: 2 22c 2122211221211 1212121112212 121212112121 tre 3 Chương trình hoàn thiện có menu để lựa chọn 11 chức năng 2- 5s se¿ 3 Chương I : Các bước của chương trình : - c1 1121212121221 11111811211 k kg 4

1.2 Chúng ta cần tạo một lớp để đại diện cho danh liên kết đơn 4 1.3 Tiếp theo , chúng ta cần tạo một lớp để đại diện cho danh sách liên kết đơn: 4 1.4 Cuối cùng chúng ta sẽ tạo menu: 5 S1 E111 1121112 1E HH ray 19 Chương 2 : Code chương trình : 2 22122211211 11251 15 1151111551151 15111111521 x ket 21 QD Code hice 21 2.2 : Kết qua Domotec cecccccccssesccscesessesecsvssvsscsvesvesessvsvsssevsresssnsevsssvsusevevsusetevivareevens 41

Trang 3

Yéu cau:

Hãy định nghĩa một DSLK đơn để quản lý thông tin máy tính đề bàn của 1 cửa

hàng vi tính Mỗi máy tính có các thông tin: MS, Tenmaytinh, CPU, Main, Ram, Nhacungcap, Nhasanxuat, DiemDanhgia, SoLuong, Gia Cai dat cac hàm sau: I- _ Nhập thông tin danh sách của nhiều Máy Tính

2 - Cho biết thông tin của máy tính có mã số là x 3 - Cho biết các thông tin về MT có giá tiền trong khoảng 12tr đến 20 tr 4- Sắp xếp MT theo chiều tăng dần của MS/ của tên

5 - Thêm một MT sao cho vẫn giữ nguyên thứ tự tăng (có kiểm tra trùngkhóa) 6- — Xóa MTIcó MS =x

7- Xóa tất ca các MT có tên là x 8 - _ Tạo danh sách mới từ danh sách đã cho sao cho danh sách mới giảm dần theo điểm trung bình

9 In danh sách các MT trong khoảng 2 tr đến 3 tr 10 - _ Cho biết MT có điểm trung bình cao nhất /thấp nhất 11 - _ Cho biết MT được mua nhiều nhất trong số các các laptop được mua Chương trình hoàn thiện có menu để lựa chọn 11 chức năng

Trong đó thông tin máy tính:

I- _ MS: Mã số máy tính (Kiêu char, tôi đa 10 kí tự)

2 - Ten: Tên máy tính (Kiểu char, t6i đa 50 kí tự) 3 - CPU: Thông tin CPU của máy (Kiểu char, tôi đa 50 kí tự) 4- Main: Thông tin Main của máy (Kiểu char, tôi đa 50 kí tự) 5- RAM: Thông tin RAM của máy (Kiêu char, tối đa 20 kí tự) 6 - NhaCungCap: Thông tin Nhà cung cấp máy (Kiểu char, tối đa 50 kí tự) 7- _ NhaSanXuat: Thông tin Nhà sản xuất máy (Kiểu char, toi đa 50 ki tự)

8 - DiemDanhGia: Điểm dánh giá chỉ tiết máy (Kiểu int, tir 0 dén 9)

Trang 4

9- SoLanMua: $6 luong may da ban ra(Kiéu int , 2 bytes)

10- Gia: Giá thành sản phẩm (Kiêu long int)

Chương | : Các bước của chương trình :

1.1 Để bắt đầu chúng ta cần tạo một lớp để tạo lớp đại diện cho thông tin của máy tính:

class MayTinh

{

public string MS { get; set; } public string TenMayTinh { get; set; } public string MainBoard { get; set; } public string CPU { get; set; } public int Ram { get; set; } public string NhaCungCap { get; set; }

public int DanhGia { get; set; }

public int SoLuong { get; set; } public int Gia { get; set; } }

1.2 Chúng ta cần tạo một lớp để đại diện cho danh

liên kết đơn

class Node public MayTinh data; public Node next; public Node()

{ }

public Node(MayTinh mt)

{

Node newNode = new Node(); newNode.data = mt; newNode.next = null;

}

1.3 Tiép theo , chung ta cần tạo một lớp để đại diện

cho danh sách liên kết đơn: class DanhSachMay Tinh

Trang 5

private Node head; public DanhSachMayTinh() {

head = null; }

public void ThemMay Tinh(May Tinh mt) {

Node newNode = new Node(); newNode.data = mt; newNode.next = head; head = newNode; }

public void XoaMay Tinh(string ms) {

Node temp = head; Node prev = null; while (temp !=null && temp.data.MS != ms) {

prev = temp; temp = temp.next;

Trang 6

} if (temp == null) {

Console.WriteLine("Không tìm thấy máy tính có mã số " + ms);

return;

} if (prev = null) {

head = temp.next;

else

prev.next = temp.next;

}

Console WriteLine('=======—Xóa thành công máy tinh co ma" + ms +

public void HienThiDanhSachMay Tinh()

Node temp = head; Console WriteLine("Danh sach may tinh: "); while (temp != null)

Trang 7

} Console WriteLine("Ma so: " + temp.data.MS); Console WriteLine("Tén may tinh: " + temp.data.TenMay Tinh); Console WriteLine("Mainboard: " + temp.data.MainBoard); Console WriteLine("CPU: " + temp.data.CPU);

Console WriteLine("Ram: " + temp.data.Ram); Console WriteLine("Nha cung cap: " + temp.data.NhaCungCap); Console WriteLine("Danh gia: " + temp.data DanhGia); Console WriteLine("S6 luong: " + temp.data.SoLuong); Console WriteLine("Gia: " + temp.data.Gia);

May Tinh mt = new May TinhQ);

Trang 8

Console WriteLine("Nhap thong tin cho may tinh thi" + (i+ 1) +":");

Console Write("Ma s6: "):

mt.MS = Console.ReadLine();

Console Write("Tén may tinh: "); mt TenMay Tinh = Console.ReadLine(); Console Write("Mainboard: "); mt.MainBoard = Console.ReadLine(); Console Write("CPU: ");

mt.CPU = Console.ReadLine(); Console Write("Ram: "); mt.Ram = int.Parse(Console.ReadLine()); Console Write("Nha cung cap: "); mt NhaCungCap = Console.ReadLine();

Console Write("Danh gia: ");

mt.DanhGia = int.Parse(Console.ReadLine()); Console.Write("Số lượng: ");

mt.SoLuong = int.Parse(Console.ReadLine()); Console Write("Gia: ");

mt.Gia = int.Parse(Console.ReadLine()); ThemMay Tinh(mt);

Trang 9

} public void HienThiMay TinhTheoMS (string ms) {

May Tinh mt = null; Node temp = head; while (temp != null) {

if (ms == temp.data.MS) {

mt = temp.data; break; }

temp = temp.next;

} if (mt = null) {

Console.WriteLine("Không tìm thấy máy tính có mã số " + ms);

else

Console WriteLine("Th6ng tin may tinh có mã số " + ms + ":");

Trang 10

} Console WriteLine("Tén may tinh: " + mt.TenMayTinh); Console WriteLine("Mainboard: " + mt.MainBoard); Console WriteLine("CPU: " + mt.CPU);

Console WriteLine("Ram: " + mt.Ram); Console WriteLine("Nha cung cap: " + mt.NhaCungCap): Console WriteLine("Danh gia: " + mt.DanhGia); Console WriteLine("S6 luong: " + mt.SoLuong); Console WriteLine("Gia: " + mt.Gia);

public void XoaMay TinhTheoTen(string name) {

int numDeleted = 0; Node current = head; Node previous = null; while (current != null)

if (current.data.TenMay Tinh == name) {

if (previous == null) {

10

Trang 11

head = current.next;

else

previous.next = current.next;

} numDeleted++;

else

previous = current;

current = current.next;

} if (numDeleted > 0) {

Console WriteLine("Da xoa " + numDeleted + " máy tính có tên ” + name);

else

Console WriteLine("Khéng tim thay may tính nào có tên " + name);

lãi

Trang 12

} public void SortPCsByMS() {

Node 1, ]; May Tinh temp;

for G = head; 1 != null; 1 =1.next) {

for (J =1.nexf; j |= null; j =j.next) {

if (String Compare(i.data.MS, j.data.MS) > 0) {

temp = 1.data; i.data = j.data; j.data = temp; }

} } Console WriteLine("===== Danh sach may tinh sau khi sắp xếp tăng dần theo mã ——="),

HienThiDanhSachMay Tinh();

12

Trang 13

public void ThemMay TinhMS() {

May Tinh mt = new MayTinh();

Console.Write("Mã số: ");

mt.MS = Console.ReadLine();

Console Write("Tén may tinh: "); mt TenMay Tinh = Console.ReadLine(); Console Write("Mainboard: "); mt.MainBoard = Console.ReadLine(); Console Write("CPU: ");

mt.CPU = Console.ReadLine(); Console Write("Ram: "); mt.Ram = int.Parse(Console.ReadLine()); Console Write("Nha cung cap: "); mt NhaCungCap = Console.ReadLine();

Console Write("Danh gia: "):

mt.DanhGia = int.Parse(Console.ReadLine()); Console Write("S6 long: ");

mt.SoLuong = int.Parse(Console.ReadLine()); Console Write("Gia: ");

mt.Gia = int.Parse(Console.ReadLine());

13

Trang 14

Node p = head; while (p != null) {

if (p.data.MS == mt.MS) {

Console WriteLine($"Error: A PC with MS {mt.MS} already exists in the list.");

return;

}

p= p.next;

} Node newNode = new Node(); newNode.data = mt; newNode.next = head; if (head == null || String Compare(head.data.MS, mt.MS) > 0) {

newNode.next = head; head = newNode;

else

Node p2 = head;

14

Trang 15

while (p2.next != null && String Compare(p2.next.data.MS, mt.MS) > 0) {

p2 = p2.next; }

newNode.next = p2 next; p2.next = newNode;

} public DanhSachMay Tinh TaoLinkedListMoiTheoDanhGiaGiamDan() {

DanhSachMay Tinh dsmtMoi = new DanhSachMay TinhQ); Node temp = head;

while (temp.next != null) {

dsmtMoi ThemMay Tinh(temp.data);

temp = temp.next;

} Node 1, ]; May Tinh mt;

for (1 = dsmtMo1.head; 1 != null; 1 =i.next) {

15

Trang 16

for (J =1.next; J != nulÏ; J = J.next) {

if (i.data.DanhGia > j.data DanhGia) {

mt = i.data; i.data = j.data; j.data = mt;

} return dsmtMoi; }

public void HienThongTinMayTinhCaoNhat() {

if (head == null) {

Console WriteLine("Danh sach may tinh réng.");

return;

} Node curr = head; May Tinh may TinhCaoNhat = curr data;

16

Trang 17

while (curr |= null) {

May Tinh mt = curr.data; if (mt DanhGia > may TinhCaoNhat.DanhGia) {

may TinhCaoNhat = mt; }

curr = curr.next;

} Console.WriteLine("===== Thong tin máy tỉnh có điểm đánh giá cao nhất

Console WriteLine("MS: " + mayTinhCaoNhat.MS); Console WriteLine("Tén May Tinh: " + mayTinhCaoNhat.TenMay Tinh); Console WriteLine("MainBoard: " + mayTinhCaoNhat.MainBoard); Console WriteLine("CPU: " + mayTinhCaoNhat.CPU);

Console WriteLine("RAM: " + mayTinhCaoNhat.Ram); Console WriteLine("Nha Cung Cap: " + mayTinhCaoNhat.NhaCungCap); Console WriteLine("Danh Gia: " + mayTinhCaoNhat.DanhGia); Console WriteLine("S6 Luong: " + mayTinhCaoNhat.SoLuong); Console WriteLine("Gia: " + mayTinhCaoNhat.Gia);

} public void HienThongTinMayTinhTheoGia(int giaMin, int giaMax)

17

Trang 18

if (head == null) {

Console WriteLine("Danh sach may tinh réng.");

return;

} Node curr = head; bool found = false; while (curr != null)

Console WriteLine("===== Danh sách máy tính có giá trong khoảng 12tr đến

May Tĩnh mt = curr.data; if (mt.Gia >= giaMin && mt.Gia <= giaMax) {

Console WriteLine("MS: " + mt.MS); Console WriteLine("Tén May Tinh: " + mt.TenMay Tinh); Console WriteLine("MainBoard: " + mt.MainBoard); Console WriteLine("CPU: " + mt.CPU);

Console WriteLine("RAM: " + mt.Ram); Console WriteLine("Nha Cung Cap: " + mt.NhaCungCap); Console WriteLine("Danh Gia: " + mt.DanhGia);

18

Trang 19

Console WriteLine("S6 Luong: " + mt.SoLuong); Console WriteLine("Gia: " + mt.Gia);

Console WriteLine(" - ");

found = true; curr = curr.next; if (!found) { Console.WriteLine("Không tìm thấy máy tính nào trong khoảng giá đã cho."); } 1.4 Cuối cùng chúng ta sẽ tạo menu: class Program static void Main(string[] args) Console.OutputEncoding = Encoding.UTF8; DanhSachMayTinh dsmt = new DanhSachMayTinh(); while (true) Console.WriteLine(" - Menu "); Console WriteLine(" -

Thoát ");

Console.Write("Hãy cho yêu cầu của bạn: ");

19

Trang 20

Console.WriteLine(); switch (chon)

case 0:

return;

case 1: dsmt.NhapDanhSachMayTinh(); dsmt.HienThiDanhSachMayTinh(); break;

case 2: Console.WriteLine("Nhap ma may tinh can tim kiém: "); string ms = Console.ReadLine();

dsmt.HienThiMayTinhTheoMS(ms); break;

case 3: Console.WriteLine("Nhập mã máy tính cần xoá: "); ms = Console.ReadLine();

dsmt.XoaMayTinh(ms); dsmt.HienThiDanhSachMayTinh(); break;

case 4: Console.WriteLine("Nhập tên máy tính cần xoá: "); ms = Console.ReadLine();

dsmt.XoaMayTinhTheoTen(ms); dsmt.HienThiDanhSachMayTinh(); break;

case 5: dsmt.SortPCsByMS(); dsmt.HienThiDanhSachMayTinh(); break;

case 6: dsmt.ThemMayTinhMS(); dsmt.HienThiDanhSachMayTinh(); break;

case 7:

DanhSachMayTinh newDS = dsmt.TaoLinkedListMoiTheoDanhGiaGiamDan();

newDS.HienThiDanhSachMayTinh(); dsmt.HienThongTinMayTinhCaoNhat(); break;

case 8: Console.WriteLine("===== Danh sách máy tính có giá trong khoảng 12tr đến 20tr dsmt.HienThongTinMayTinhTheoGia(12000000, 20000000);

Console.WriteLine("===== Danh sách máy tính có giá trong khoảng 2tr đến 3tr dsmt.HienThongTinMayTinhTheoGia(2000000, 3000000);

break; string str = Console.ReadLine(); Console.WriteLine(str); Console.ReadKey();

20

Trang 21

Chương 2 : Code chương trình :

2.1 Code : using System; using System Text;

namespace QLTTMT {

class May Tinh {

public string MS { get; set; }

public string TenMayTinh { get; set; }

public string MainBoard { get; set; } public string CPU { get; set; }

public int Ram { get; set; }

public string NhaCungCap { get; set; } public int DanhGia { get; set; }

public int SoLuong { get; set; }

public int Gia { get; set; }

} class Node

21

Trang 22

public MayTinh data; public Node next; public Node() {

} public Node(May Tinh mt) {

Node newNode = new Node(); newNode.data = mt; newNode.next = null;

} class DanhSachMay Tinh {

private Node head; public DanhSachMayTinh() {

head = null;

22

Trang 23

public void ThemMay Tinh(May Tinh mt) {

Node newNode = new Node(); newNode.data = mt; newNode.next = head; head = newNode; }

public void XoaMay Tinh(string ms) {

Node temp = head; Node prev = null; while (temp !=null && temp.data.MS != ms) {

prev = temp; temp = temp.next;

} if (temp == null) {

Console WriteLine("Kh6ng tim thay may tinh co m4 sé " + ms);

return;

23

Trang 24

if (prev = null) {

head = temp.next;

else

prev.next = temp.next;

}

Console WriteLine('=======—Xóa thành công máy tinh co ma" + ms +

public void HienThiDanhSachMay Tinh() {

Node temp = head; Console WriteLine("Danh sach may tinh: "); while (temp != null)

{ Console.WriteLine("Mã số: " + temp.data.MS); Console WriteLine("Tén may tính: ” ~ temp.data IlenMay Tĩnh); Console WriteLine("Mainboard: " + temp.data.MainBoard); Console WriteLine("CPU: " + temp.data.CPU);

Console WriteLine("Ram: " + temp.data.Ram);

24

Trang 25

} Console WriteLine("Nha cung cap: " + temp.data.NhaCungCap); Console WriteLine("Danh gia: " + temp.data DanhGia); Console WriteLine("S6 luong: " + temp.data.SoLuong); Console WriteLine("Gia: " + temp.data.Gia);

{

MayTinh mt = new MayTinh();

Console WriteLine("Nhap thong tin cho may tinh thi" + (i+ 1) +":");

Console Write("Ma s6: "):

mt.MS = Console.ReadLine();

Console Write("Tén may tinh: "); mt TenMay Tinh = Console.ReadLine(); Console Write("Mainboard: ");

25

Ngày đăng: 23/09/2024, 15:00

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN