1. Trang chủ
  2. » Giáo Dục - Đào Tạo

bài tập lớn môn cấu trúc dữ liệu và giải thuật đề tài xây dựng bài toán quản lý kinh doanh điện thoại sử dụng danh sách liên kết đơn

54 432 2
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

Định dạng
Số trang 54
Dung lượng 2,33 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

2.2.Các chức năng cần thực hiện- Các chức năng của chương trình:  Thoát chương trình  Thêm một điện thoại mới vào đầu danh sách  Thêm một điện thoại vào cuối danh sách  Thêm một điện

Trang 1

VIỆN ĐẠI HỌC MỞ HÀ NỘIKHOA CÔNG NGHỆ THÔNG TIN

-BÁO CÁO BÀI TẬP LỚN

MÔN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT

ĐỀ TÀI XÂY DỰNG BÀI TOÁN QUẢN LÝ KINH DOANH ĐIỆN THOẠI SỬ DỤNG DANH SÁCH LIÊN KẾT ĐƠN

Giáo viên hướng dẫn: Ths Trịnh Thị Xuân Sinh viên thực hiện : Nguyễn Đức Đại

Hà Nội, năm 2015

Trang 2

MỤC LỤC

1 Giới thiệu đề tài 3

2 Phân tích đề tài 3

2.1 Dữ liệu cần lưu trữ trong đề tài 3

2.2 Các chức năng cần thực hiện 4

2.3 Thiết kế menu 5

3 Phân tích chương trình 6

3.1 Thao tác khai báo thư viện: 6

3.2 Thao tác khai báo cấu trúc dữ liệu: 6

3.3 Thao tác khởi tạo Node: 7

3.4 Thao tác nhập dữ liệu: 7

3.5 Thao tác hiện toàn bộ danh sách đã nhập: 10

3.6 Thao tác chèn thêm vào đầu danh sách một điện thoại mới: 12

3.7 Thao tác chèn thêm điện thoại vào cuối danh sách: 14

3.8 Thao tác chèn thêm điện thoại vào sau một điện thoại theo mã: 16

3.9 Thao tác xóa điện thoại theo mã: 18

3.10 Thao tác xóa điện thoại mới được thêm: 21

3.11 Thao tác xóa điện thoại theo tên điện thoại: 23

3.12 Thao tác đếm số lượng điện thoại trong danh sách: 26

3.13 Thao tác đếm số lượng điện thoại có đơn giá < = 1000.000: 27

3.14 Thao tác đếm số lượng điện thoại có đơn giá <= 2000.000: 28

3.15 Thao tác đếm số lượng điện thoại có đơn giá trên 2000.000: 30

3.16 Thao tác sắp xếp danh sách tăng dần theo đơn giá: 31

3.17 Thao tác sắp xếp danh sách điện thoại giảm dần theo đơn giá: 32

3.18 Thao tác hiển thị toàn bộ danh sách điện thoại với tính trạng “Db”: 34

3.19 Thao tác tìm kiếm theo mã: 35

3.20 Thao tác tìm kiếm điện thoại theo tên: 36

3.21 Thao tác tìm kiếm điện thoại có đơn giá trong một khoảng: 38

3.22 Thao tác tìm kiếm điện thoại theo loại: 40

3.23 Thao tác tìm kiếm điện thoại theo hãng sản xuất: 41

3.24 Thao tác ghi danh sách điện thoại đã nhập vào file LIST_DT 43

3.25 Thao tác lấy thông tin danh sách điện thoại từ file đã ghi: 45

3.26 Thao tác hiển thị thông tin của điện thoại có đơn giá thấp nhất: 47

3.27 Thao tác hiển thị thông tin của điện thoại có đơn giá cao nhất: 48

3.28 Thao tác tính tổng thành tiền của đơn giá tất cả điện thoại trong danh sách: 50

3.29 Chức năng tính trung bình cộng của đơn giá tất cả điện thoại trong danh sách: 51

3.30 Thao tác thoát khỏi chương trình: 52

3.31 Code của chương trình chính: 53

Trang 3

1 Giới thiệu đề tài

- Đề tài: Bài toán quản lý kinh doanh điện thoại

- Cùng với sự phát triển mạnh mẽ của Khoa học – Kỹ thuật – Công nghệ, thịtrường điện thoại di động hiện nay cũng phát triển mạnh mẽ không kém với nhiềuloại mẫu mã sản phẩm khác nhau từ các loại điển thoại phổ biến dòng đen trắng nhưnokia 1280, nokia 110i, cho đến các dòng điện thoại cao cấp như vertu, iphone,samsung galaxy , … Và để thuận tiện cho việc quản lý kinh doanh điện thoại thìcần một phần mềm tối ưu hoa nhất

2 Phân tích đề tài

2.1.Dữ liệu cần lưu trữ trong đề tài

- Các dữ liệu cần quản lý:

 Mã điện thoại – kiểu: int

 Tên điện thoại – kiểu: char

 Phân loại – kiểu: char

 Hãng sản xuất – kiểu: char

 Tình trạng – kiểu: char

 Đơn giá – kiểu: long

- Bộ dữ liệu đã nhập: (dữ liệu từ file)

Mã ĐT Tên ĐT Phân loại Hãng SX Tình trạng Đơn giá

1 Samsung Galaxy s6 Android Samsung Db 16500000

3 Lumia 535 Windowsphone Nokia Db 3500000

4 BlackBerry Q5 BlackBerry 10 BlackBerry Db 1100000

5 Sony Xperia Z3 Android Sony Cb 15000000

3

Trang 4

2.2.Các chức năng cần thực hiện

- Các chức năng của chương trình:

 Thoát chương trình

 Thêm một điện thoại mới vào đầu danh sách

 Thêm một điện thoại vào cuối danh sách

 Thêm một điện thoại vào sau một điện thoại có mã “x”

 Thêm một danh sách điện thoại

 Import danh sách từ file

 Xóa một điện thoại theo mã

 Xóa một điện thoại theo tên

 Xóa điện thoại vừa mới được thêm vào

 Đếm số lượng điện thoại trong danh sách

 Đếm số lượng điện thoại có đơn giá <=1000.000

 Đếm số lượng điện thoại có đơn giá <=2000.000

 Đếm số lượng điện thoại có đơn giá >2000.000

 Sắp xếp tăng dần theo đơn giá

 Sắp xếp giảm dần theo đơn giá

 Hiện toàn bộ danh sách điện thoại

 Hiện toàn bộ danh sách điện thoại đã bán

 Tìm kiếm theo mã điện thoại

 Tìm kiếm theo tên điện thoại

 Tìm kiếm theo đơn giá trong khoảng từ a đến b

 Tìm kiếm theo loại điện thoại

 Tìm kiếm theo hãng sản xuất

 Ghi vào file danh sách đã nhập

 Hiện điện thoại có đơn giá thấp nhất

 Hiện điện thoại có đơn giá cao nhất

 Tổng thành tiền của tất cả điện thoại

 Trung bình đơn giá của một điện thoại

Trang 5

2.3.Thiết kế menu

CAC CHUC NANG CUA CHUONG TRINH _

0 Thoat Chuong Trinh

1 Them Mot Dien Thoai Moi Vao Dau Danh Sach

2 Them Mot Dien Thoai Vao Cuoi Danh Sach

3 Them Mot Dien Thoai Vao Sau Mot Dien Thoai Co Ma 'x'

4 Them Mot Danh Sach Dien Thoai

5 Import Danh Sach Dien Thoai Tu File

6 Xoa Mot Dien Thoai Theo Ma

7 Xoa Dien Thoai Vua Moi Duoc Them Vao

8 Xoa Dien Thoai Theo Ten Dien Thoai

9 Dem So Luong Dien Thoai Trong Danh Sach

10 Dem So Luong Dien Thoai Co Don Gia <= 1000.000

11 Dem So Luong Dien Thoai Co Don Gia <= 2000.000

12 Dem So Luong Dien Thoai Co Don Gia > 2000.000

13 Sap Xep Tang Dan Theo Don Gia Dien Thoai

14 Sap Xep Giam Dan Theo Don Gia Dien Thoai

15 Hien Toan Bo Danh Sach Dien Thoai

16 Hien Toan Bo Danh Sach Co Tinh Trang 'da ban'

17 Tim Kiem Theo Ma Dien Thoai

18 Tim Kiem Theo Ten Dien Thoai

19 Tim Kiem Theo Don Gia Trong Khoang [a->b]

20 Tim Kiem Theo Loai Dien Thoai

21 Tim Kiem Theo Hang San Xuat

22 Ghi Vao FILE Danh Sach Dien Thoai

23 Dua Ra Thong Tin Dien Thoai Co Don Gia Thap Nhat

24 Dua Ra Thong Tin Dien Thoai Co Don Gia Cao Nhat

25 Tong Thanh Tien Cua Tat Ca Dien Thoai

26 Trung Binh Cong Don Gia Dien Thoai

Moi Chon Mot Chuc Nang:_

5

Trang 6

3 Phân tích chương trình

3.1.Thao tác khai báo thư viện:

Để thực hiện được toàn bộ chức năng cũng như các thao tác đối với yêu cầu bài toán thì cần phải có đầy đủ bộ thư viện cần thiết Bộ thư viện cần khai báo gồm:

3.2.Thao tác khai báo cấu trúc dữ liệu:

Cấu trúc cần khai báo trong bài toán gồm:

Trang 8

- Ta có hàm nhập vào danh sách điện thoại:

int nhapDT( dienthoai &x, LIST_DT DSDT )

Trang 10

- Kết quả khi chạy:

3.5.Thao tác hiện toàn bộ danh sách đã nhập:

Sau khi nhập một hoặc một danh sách điện thoại thì danh sách đó cần được

<x.hangsx<<setw(17)<<x.tinhtrang<<setw(17)<<x.dongia;

}void hienDSDT( LIST_DT DSDT ){

Node_DT *p;

p=DSDT.Head;

tieude();

while(p!=NULL) {

hienDT( p-> info );

p=p->Next;

}}

Trang 11

 Gọi hàm nhập trong main:

Trang 12

3.6.Thao tác chèn thêm vào đầu danh sách một điện thoại mới:

- Code:

void chendau( LIST_DT &DSDT, Node_DT *p){

if(DSDT.Head==NULL) {

DSDT.Head=p;

DSDT.Tail=p;

} else { p->Next=DSDT.Head;

DSDT.Head=p; }}

 Gọi hàm nhập trong main:

case 1:

{ system("cls");

cout<<"\n Nhap dien thoai moi vao dau danh sach \n";

if(nhapDT(x,DSDT)) {

cout<<"\nKhong thanh cong!\n\n";

system("pause");

system("cls");

break;

} else { p=get_Node(x);

Trang 13

- Kết quả khi chạy:

Danh sách điện thoại sau khi thêm vào một điện thoại mới

13

Trang 14

3.7.Thao tác chèn thêm điện thoại vào cuối danh sách:

- Code:

void chencuoi( LIST_DT &DSDT, Node_DT *p){

if(DSDT.Head==NULL) {

DSDT.Head=p;

DSDT.Tail=p;

} else { DSDT.Tail->Next=p;

DSDT.Tail=p;

}}

 Gọi hàm nhập trong main:

case 2:

{ system("cls");

cout<<"\n Nhap dien thoai moi vao cuoi danh sach \n";

if(nhapDT(x,DSDT)) {

cout<<"\nKhong thanh cong!\n\n";

system("pause");

system("cls");

break;

} else { p=get_Node(x);

Trang 15

- Kết quả khi chạy:

Danh sách điện thoại sau khi thêm vào một điện thoại mới

15

Trang 16

3.8.Thao tác chèn thêm điện thoại vào sau một điện thoại theo mã:

Khi muốn thêm một điện thoại với mã nào đó vào sau một vị trí có sẵn

if(p->info.madt==b) break;

p=p->Next;

}if(p!=NULL)return p;

else return NULL;

}void chensauma( LIST_DT &DSDT, Node_DT *p, Node_DT *q){

if(q!=NULL) {

p->Next=q->Next;

q->Next=p;

if(q==DSDT.Tail) {

DSDT.Tail=p;

} if(DSDT.Head==NULL) {

DSDT.Tail=NULL;

cout<<"\n========> Khong co du lieu!\n";

} }}

 Gọi hàm nhập trong main:

case 3:

{ int b;

Trang 17

- Kết quả khi chạy:

Danh sách điện thoại sau khi thêm điện thoại mới

17

Trang 18

3.9.Thao tác xóa điện thoại theo mã:

Nếu không muốn một phần tử nào đó tồn tại trong danh sách ta thực hiện chức năng xóa

if(p->info.madt==(timma)) {

kt++;

break;

} p=p->Next;

} if(kt==0) {

return 0;

} else { if((p==DSDT.Head)&&(p==DSDT.Tail)) {

DSDT.Head=DSDT.Head->Next;

free(p);

if(DSDT.Head==NULL) {

DSDT.Tail=NULL;

cout<<"\n========> Khong co du lieu!\n";

Trang 21

Danh sách điện thoại sau khi xóa

3.10 Thao tác xóa điện thoại mới được thêm:

{ DSDT.Head=NULL;

DSDT.Tail=NULL;

free(p);

return 1;

} } else if(DSDT.Head!=NULL) {

p=DSDT.Head;

DSDT.Head=DSDT.Head->Next;

free(p);

if(DSDT.Head==NULL) {

DSDT.Tail=NULL;

} }}

21

Trang 22

 Gọi hàm nhập trong main

Trang 23

3.11 Thao tác xóa điện thoại theo tên điện thoại:

Có thể xóa phẩn tử bằng thông tin về tên phần tử đó

if(strcmp(p->info.tendt,timten)==0) {

kt++;

break;

} p=p->Next;

} if(kt==0) {

cout<<" Khong ton tai ten: "<<timten;

cout<<"\n";

} else { if((p==DSDT.Head)&&(p==DSDT.Tail)) {

DSDT.Head=DSDT.Head->Next;

free(p);

if(DSDT.Head==NULL) {

DSDT.Tail=NULL;

23

Trang 24

cout<<"\n========> Khong co du lieu!\n";

Trang 25

cout<<"\n========> Du lieu trong! \n";

- Kết quả khi chạy:

Danh sách điện thoại sau khi xóa

25

Trang 26

3.12 Thao tác đếm số lượng điện thoại trong danh sách:

chức năng này cho ra kết quả là số lượng của toàn bộ điện thoại trong danh sách

dem++;

p=p->Next;

} return dem;

}

 Gọi hàm nhập trong maincase 9:

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

cout<<"\nSo luong dien thoai: "<<soluongdienthoai(DSDT); cout<<"\n\n";

system("pause");

system("cls");

break;

} }

- Kết quả khi chạy:

Trang 27

3.13 Thao tác đếm số lượng điện thoại có đơn giá < = 1000.000:

Chức năng này sẽ thống kê số lượng điện thoại có giá dưới 1000.000

if((p->info.dongia <= 1000000 )) {

dem++;

} p=p->Next;

} return dem;

}

 Gọi hàm nhập trong maincase 10:

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

cout<<"\n\n";

system("pause");

system("cls");

27

Trang 28

break;

} else { system("cls");

cout<<"\nSo luong dien thoai co don gia < = 1000.000:

- Kết quả khi chạy:

3.14 Thao tác đếm số lượng điện thoại có đơn giá <= 2000.000:

Chức năng này sẽ thống kê số lượng điện thoại có đơn giá dưới 2000.000

if(p->info.dongia <= 2000000 ) {

dem++;

Trang 30

3.15 Thao tác đếm số lượng điện thoại có đơn giá trên 2000.000:

Chức năng này thống kê toàn bộ số lượng điện thoại có đơn giá trên

if(p->info.dongia > 2000000 ) {

dem++;

} p=p->Next;

} return dem;

}

 Gọi hàm nhập trong maincase 12:

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

cout<<"\nSo luong dien thoai co don gia > 2000.000:

- Kết quả khi chạy:

Trang 31

3.16 Thao tác sắp xếp danh sách tăng dần theo đơn giá:

Dựa theo đơn giá của các điện thoại trong danh sách để sắp xếp tăng dần

if(p->info.dongia > q->info.dongia) {

tg=p->info;

p->info=q->info;

q->info=tg;

} }}

 Gọi hàm nhập trong maincase 13:

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

cout<<"\n\n";

31

Trang 32

system("pause");

system("cls");

break;

} else { system("cls");

- Kết quả khi chạy:

3.17 Thao tác sắp xếp danh sách điện thoại giảm dần theo đơn giá:

Trang 34

3.18 Thao tác hiển thị toàn bộ danh sách điện thoại với tính trạng “Db”:

Chức năng này sẽ đưa ra toàn bộ điện thoại đã được bán đi

if(strcmp(p->info.tinhtrang,"Db")==0) {

hienDT(p->info);

} p=p->Next;

}}

 Gọi hàm nhập trong maincase 16:

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

cout<<"\n========> Danh sach dien thoai da ban\n";

- Kết quả khi chạy:

Trang 35

3.19 Thao tác tìm kiếm theo mã:

Cho ra thông tin điện thoại khi biết mã điện thoại đó

if(timma==p->info.madt) {

hienDT(p->info);

kt++;

} p=p->Next;

} if(kt==0) {

cout<<"\n========> Khong ton tai dien thoai voi ma: "<<timma; }

}

 Gọi hàm nhập trong maincase 17:

35

Trang 36

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

- Kết quả khi chạy:

3.20 Thao tác tìm kiếm điện thoại theo tên:

Cho ra thông tin một điện thoại nào đó khi biết tên

- Code:

void timten(LIST_DT DSDT){

char timten[40];

short int kt=0;

Trang 38

- Kết quả khi chạy:

3.21 Thao tác tìm kiếm điện thoại có đơn giá trong một khoảng:

Cho ra danh sách các điện thoại có đơ giá nằm trong một khoảng nhất định:

- Code:

void timgia(LIST_DT DSDT){

if((p->info.dongia >= tu)&&(p->info.dongia <= den)) {

hienDT(p->info);

kt++;

} p=p->Next;

}

Trang 40

3.22 Thao tác tìm kiếm điện thoại theo loại:

Cho ra danh sách các điện thoại nằm trong một loại nào đó (Android,

Windows phone, IOS)

- Code:

void timtheoloai(LIST_DT DSDT){

if(strcmp(timtheoloai,p->info.phanloai)==0) {

hienDT(p->info);

kt++;

} p=p->Next;

} if(kt==0) {

cout<<"\n========> Khong ton tai loai "<<timtheoloai;

}}

 Gọi hàm nhập trong maincase 20:

{ system("cls");

if(DSDT.Head==NULL) {

cout<<"\n========> Du lieu trong! \n";

Ngày đăng: 21/11/2020, 10:18

TỪ KHÓA LIÊN QUAN

w