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

Đồ án Đồ án cơ sở lập trình quản lí rạp chiếu phim

32 0 0
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 Cơ Sở Lập Trình Quản Lí Rạp Chiếu Phim
Tác giả Hồ Khang Hy, Trần Xuân Bách
Người hướng dẫn TS. Nguyễn Năng Hùng
Trường học Trường Đại Học Bách Khoa
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đồ án
Năm xuất bản 2024
Thành phố Đà Nẵng
Định dạng
Số trang 32
Dung lượng 2,28 MB

Nội dung

Tuy nhiên, nhiều rạp chiếu phim vẫn áp dụng phương pháp quản lý thủ công, dẫn đến nhiều bất cập như tốn thời gian và công sức trong việc lưu trữ thông tin phim, suất chiếu, và khách hàng

Trang 1

TRƯỜNG ĐẠI HỌC BÁCH KHOAKHOA CÔNG NGHỆ THÔNG TIN



ĐỒ ÁN

ĐỒ ÁN CƠ SỞ LẬP TRÌNH

QUẢN LÍ RẠP CHIẾU PHIM

GIẢNG VIÊN HD: TS NGUYỄN NĂNG HÙNG VÂN

SINH VIÊN THỰC HIỆN:

Hồ Khang Hy LỚP:23T_NHAT2 Nhóm: 23NH16B Trần Xuân Bách LỚP:23T_NHAT2 Nhóm: 23NH16B

Đà Nẵng, 12/2024

Trang 2

MỤC LỤC

MỤC LỤC i

DANH MỤC HÌNH ẢNH iii

LỜI MỞ ĐẦU 1

1 TỔNG QUAN ĐỀ TÀI 2

2 CƠ SỞ LÝ THUYẾT 4

2.1 Ý tưởng 4

2.2 Cơ sở lý thuyết 4

3 TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 6

3.1 Phát biểu bài toán 6

3.2 Cấu trúc dữ liệu 6

3.3 Thuật toán 10

4 CHƯƠNG TRÌNH VÀ KẾT QUẢ 13

4.1 Ngôn ngữ cài đặt 13

4.2 Các thư viện được sử dụng trong chương trình 14

4.3 Kết quả 18

4.3.1 Giao diện đăng nhập của chương trình 18

4.3.2 Giao diện chính của chương trình 19

4.3.3 Kết quả thực thi của chương trình 26

4.3.4 Nhận xét 27

5 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 27

5.1 Kết luận 27

5.2 Hướng phát triển 27

TÀI LIỆU THAM KHẢO 28

i Trần Xuân Bách – Hồ Khang Hy 23.99B

Trang 3

ĐỒ ÁN CƠ SỞ LẬP TRÌNH

DANH MỤC HÌNH ẢNH

Hình 1 Minh họa cấu trúc dữ liệu stack 4

Hình 2 Sơ đồ tổ chức chương trình quản lí rạp chiếu phim 12

Hình 3 Thông tin của phim 15

Hình 4 Thông tin nhân viên 15

Hình 5 Thông tin của nhân viên phòng 15

Hình 6 Thông tin của quản lý 16

Hình 7 Thông tin ghế ngồi của 1 phòng 16

Hình 8 Giao diện đăng nhập của chương trình 17

Hình 9 Giao diện chính của chương trình khi đăng nhập với tư cách Room Staff 17 Hình 10 Giao diện chính của chương trình khi đăng nhập với tư cách Ticket Staff 18

Hình 11 Giao diện chính của chương trình khi đăng nhập với tư cách Manager 18

Hình 12 Tìm và kiểm tra vé khách hàng thông qua ID vé 19

Hình 13 Xem bảng giờ của tất cả các phim trong ngày 19

Hình 14 Nhập tên khách hàng 20

Hình 15 Chọn phim cho khách hàng 20

Hình 16 Chọn suất chiếu của phim theo yêu cầu khách hàng 20

Hình 17 Hiển thị các ghế khả dụng trong suất chiếu khách hàng chọn 21

Hình 18 Cập nhật và xác nhận trạng thái ghế của phòng 21

Hình 19 Hiện ra các lựa chọn để thao tác với phòng 22

Hình 20 Hiển thị tình trạng các ghế của phòng theo ID và suất chiếu 22

Hình 21 Duyệt và hiển thị doanh thu của một phim theo ID 22

Hình 22 Hiển thị các lựa chọn để thao tác với phim 23

Hình 23 Nhập thông tin của phim mới 23

Hình 24 Chỉnh sửa thông tin phim dựa theo ID phim 23

Hình 25 Lựa chọn những thông tin cần được thay đổi 24

Trang 4

Hình 26 Lựa chọn các chức năng them,sửa xoá nhân viên 24 Hình 27 File chương trình dùng để lưu thông tin vé khách hàng 24 Hình 28 Dữ liệu các vé của khách hang 25

iii Trần Xuân Bách – Hồ Khang Hy 23.99B

Trang 5

ĐỒ ÁN CƠ SỞ LẬP TRÌNH

LỜI MỞ ĐẦU

Báo cáo Đồ án lập trình tính toán là kết quả của quá trình cố gắng không ngừngcủa nhóm chúng em với sự giúp đỡ, động viên khích lệ của thầy, bạn bè Qua lời mởđầu chúng em xin gửi lời cảm ơn tới giảng viên hướng dẫn, người đã tận tụy giúp đỡ

và tạo điều kiện thuận lợi về tài liệu, quy trình thực hiện Đồ án lập trình tính toántrong thời gian học tập - nghiên cứu vừa qua

Chúng em xin tỏ lòng kính trọng và biết ơn sâu sắc đối với thầy TS Nguyễn Năng Hùng Vân - giảng viên Khoa Công Nghệ Thông Tin của Trường Đại học Bách Khoa -Đại học Đà Nẵng đã giúp đỡ chúng em về tài liệu tham khảo để có thể hoàn thành tốt Báo cáo Dự án cơ sở lập trình Và chúng em cũng xin chân thành cảm ơn cô đã nhiệt tình hướng dẫn trong việc lựa chọn đề tài nghiên cứu, hướng tiếp cận và chỉnh sửa những thiếu sót trong quá trình thực hiện Trong quá trình thực hiện, khó tránh khỏi sai sót, rất mong các thầy, cô bỏ qua và giúp chúng em hoàn thiện hơn Đồng thời do trình độ lý luận cũng như kinh nghiệm thực tế còn hạn chế nên bài báo cáo không thể tránh khỏi những thiếu sót, chúng em rất mong nhận được ý kiến đóng góp từ phía thầy, cô để chúng em học thêm được nhiều kinh nghiệm và sẽ hoàn thành tốt hơn.Ngôn ngữ C++ là một sự phát triển mạnh mẽ của C Trong C++ chẳng những đưavào tất cả khái niệm, công cụ của lập trình hướng đối tượng mà còn đưa vào nhiều khảnăng mới mẻ cho hàm Trong khuôn khổ của Dự án cơ sở lập trình này chúng em xin

sử dụng các kiến thức mà thấy cô đã trang bị và sự tìm tòi từ sách vở và bạn bè để cóthể làm rõ một phần những khó khăn của các bạn sinh viên trong quá trình học tập.Chúng em xin chân thành cảm ơn!

Trang 6

1 TỔNG QUAN ĐỀ TÀI

Trong thời đại kỹ thuật số phát triển nhanh chóng ngày nay, công nghệ thông tin đãtrở thành một phần không thể thiếu trong cuộc sống hàng ngày, từ giao tiếp, giải trí đến quản lý công việc Trong lĩnh vực giải trí, quản lý rạp chiếu phim là một trong những ứng dụng phổ biến và có giá trị cao Tuy nhiên, nhiều rạp chiếu phim vẫn áp dụng phương pháp quản lý thủ công, dẫn đến nhiều bất cập như tốn thời gian và công sức trong việc lưu trữ thông tin phim, suất chiếu, và khách hàng; dễ xảy ra sai sót trong quá trình quản lý và tính toán; làm giảm trải nghiệm của khách hàng do phải chờđợi lâu Với những hạn chế đó, chúng tôi đã tìm hiểu và nghiên cứu để đề xuất một giải pháp thông qua việc phát triển Ứng dụng Quản lý Rạp Chiếu Phim Với mục tiêu cung cấp một hệ thống nhanh chóng, chính xác, và tiện lợi, chúng tôi tin rằng ứng dụng này sẽ giúp tiết kiệm thời gian và công sức trong quản lý, nâng cao hiệu quả vận hành rạp chiếu phim, và gia tăng sự hài lòng của khách hàng Hệ thống sẽ hỗ trợ quản

lý thông tin các bộ phim bao gồm tên phim, thể loại, thời lượng, suất chiếu, và phòng chiếu; quản lý tài khoản nhân viên nhằm phân quyền và đảm bảo an toàn thông tin; tính toán doanh thu từ các suất chiếu phim; hỗ trợ tìm kiếm và hiển thị thông tin chi tiết phim một cách nhanh chóng, đồng thời cung cấp giao diện thân thiện, dễ sử dụng,

và trực quan Chúng tôi hy vọng rằng đây sẽ là công cụ đắc lực cho các rạp chiếu phim trong việc tối ưu hóa quy trình quản lý và nâng cao chất lượng dịch vụ

1.MỤC ĐÍCH THỰC HIỆN ĐỀ TÀI

Nghiên cứu, sáng tạo và vận dụng các kiến thức đã học, để xây dựng và phát triểnchương trình, ứng dụng giải quyết các vấn đề trong cuộc sống, cụ thể là ứng dụngquản lí rạp chiếu phim, hỗ trợ nhân viên thuận tiện, dễ dàng hơn

2.MỤC TIÊU ĐỀ TÀI

Cho phép người dùng (nhân viên/ quản lý) đưa vào thông tin các bộ phim, với các thao tác đọc và ghi file, nhập tài khoản nhân viên để bắt đầu,tính toán và hiển thị chi tiết thông tin phim cho người sử dụng bằng các kỹ năng, kiến thức đã học…

3.PHẠM VI VÀ ĐỐI TƯỢNG NGHIÊN CỨU

- Tìm hiểu cấu trúc dữ liệu (mảng, class,stack), thao tác làm việc với file và các thuật toán cần thiết để viết một chương trình/ứng dụng

- Liên kết các kiến thức đã học, nghiên cứu để xây dựng bài toán hoàn chỉnh nhất

4.PHƯƠNG PHÁP NGHIÊN CỨU

Trang 8

2 CƠ SỞ LÝ THUYẾT.

2.1 Ý tưởng

- Khi bắt đầu công việc,nhân viên nhập vào tài khoản và mật khẩu để bắt đầu quản lí

- Chương trình tự động quét tất cả thông tin phim,nhân viên,phòng chiếu và ghi vàochương trình

- Tại đây,nhân viên có thể chỉnh sửa,cập nhật nhanh thông tin phim

- Nhân viên có thể đặt vé cho khách hàng

- Chương trình sẽ tự động phân bổ suất chiếu của các bộ phim vào khung giờ hợp lí.-Thống kê doanh số theo từng bộ phim

2.2 Cơ sở lý thuyết

2.2.1 Cấu trúc dữ liệu Stack với Pointer Array

Pointer Array: Là một mảng mà mỗi phần tử của nó là một con trỏ Con trỏ

này có thể trỏ đến một vùng nhớ chứa giá trị, thay vì lưu trữ trực tiếp giá trị trong mảng

Đỉnh Stack (top): Là biến chỉ số theo dõi vị trí cao nhất (đỉnh) của stack.

Kích thước cố định (MAX_SIZE): Là giới hạn số phần tử mà stack có thể

chứa

Hình 1 Minh họa cấu trúc dữ liệu stack

2.2.2 Thao tác với file

Thư viện <iostream>:

Trang 9

fprintf: Xuất dữ liệu theo định dạng.

fscanf: Nhập dữ liệu theo định dạng

Các thao tác với file như đọc, ghi (fopen, fclose, fprintf)

Thư viện < iomanip>

Ý nghĩa:

Thư viện này được sử dụng để định dạng đầu ra dữ liệu

Cung cấp các hàm hỗ trợ định dạng số thập phân, căn lề, độ rộng, v.v

Công dụng:

std::setw: Đặt độ rộng của trường in

std::setprecision: Đặt số chữ số thập phân

std::fixed: In số thập phân theo định dạng cố định

std::left, std::right: Căn lề trái/phải

2.2.3 Tạo ra các lớp tổng quát

Class Template (Template lớp)

Ý nghĩa:

Là các lớp có thể hoạt động với nhiều kiểu dữ liệu khác nhau

Thay vì viết nhiều lớp riêng biệt cho từng kiểu dữ liệu, ta viết một lớp duy nhấtdùng template parameter

Trang 10

3 TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN

3.1 Phát biểu bài toán

Input:

Một file thông tin các bộ phim, trong file mỗi dòng tương ứng là: mã phim tên phimtên đạo diễn thể loại thời lượng điểm số lượng suất chiếu 1 ngày.   Một file thông tin nhân viên, trong file mỗi dòng tương ứng là tên đăng nhậpmậtkhẩumã nhân viên tên nhân viên giới tính ngày sinh số điện thoại địa     chỉchức vụ

bool push(T* value);

bool push(const T&);

T* pop();

T* peek() const;

T& getAt(int index) const {return *arr[index];}

int getTop() const {return top;};

bool isEmpty() const;

bool isFull() const;

void display();

void add(const char*);

T* findById(string);

void sortById();

void edit(const char*);

void Delete(const char*);

};

Trang 11

ĐỒ ÁN CƠ SỞ LẬP TRÌNH

b Class Movie

-Ý nghĩa các biến:

+ id: Mã phim

+ name: Tên phim

+ director: Đạo diễn

string genre;

public:

Movie();

Movie(const string&, const string&, const string&,

const string&, int, double,int );

~Movie();

string getid() const; double getrating() const;

string getname() const; int getduration() const;

string getdirector() const; int getShowTime() const;

string getgenre() const;

void set(const string&, const string&, const string&,

const string&, const int&,const double&, int &);

void setid(const string&); void setShowTime(const int&);

void setname(const string&); void setrating(const double&); void setdirector(const string&); void setduration(const int&);

void setgenre(const string&);

string role;

public:

Staff();

~Staff(){}

Staff(const string&, const string&, const string&, const string&,

bool, const string&, const string&, const string&, const string&); string getusername() const;

string getpassword() const;

string getid() const;

string getname() const;

bool getgender() const;

string getbirth() const;

string getphonenumber() const;

string getaddress() const;

string getrole() const;

void setpassword(const string&);

void setPhoneNumber(const string&);

void setAddress(const string&);

virtual void displayInfo() const = 0;

Trang 12

+name:Tên nhân viên

+role: Chức vụ

+gender: Giới tính

+birth: Ngày sinh

+phonenumber: Số điện thoại

class RoomStaff : public Staff{

double getrating(){return rating;}

void setrating(double& Rating) {rating = Rating;}

void displayInfo() const;

class Manager : public Staff{

Trang 13

ĐỒ ÁN CƠ SỞ LẬP TRÌNH

Class Manager kế thừa từ class Staff

3.3 Thuật toán

Thuật toán của bài toán quản lý bưu kiện được thể hiện qua:

3.3.1 Thuật toán phân phối suất chiếu

Bước 1: Khởi tạo biến top, filmIndex, dex, totalShowTime và mảng a[] chứa số lượng

số chiếu trong 1 ngày của các bộ phim

Khai báo mảng m[7][5] tương ứng với 5 phòng và mỗi ngày 1 phòng chiếu tối đa 7 suất

Bước 2: Lặp qua từng suất chiếu (i là thứ tự chiếu, j là phòng chiếu):

Vòng lặp i từ 0 đến 6 (tương ứng 7 suất chiếu/ngày)

Vòng lặp j từ 0 đến 4 (tương ứng 5 phòng chiếu)

Bước 3: Bỏ qua phim hết suất chiếu:

Nếu a[filmIndex]==0 , tăng filmIndex (vòng tròn với %( top+1 ) để chuyển sang phim kế tiếp

Bước 4: Phân bổ suất chiếu:

Gán m[i][j]= stackMovie.getAt(filmIndex).getid() (gán ID phim vào suất chiếu)

Giảm a[filmIndex] để cập nhật số suất chiếu còn lại

Bước 5 Kiểm tra điều kiện dừng:

Tăng dex++ Nếu dex-> totalShowTime, dừng hàm (return)

Bước 6 Chuyển sang phim kế tiếp:

Tăng filmIndex lên phim kế tiếp (vòng tròn với %(top +1))

3.3.2.Thuật toán thêm phim.

Bước 1: Tạo ID mới bằng cách tìm ID lớn nhất trong stackMovie sau đó thêm 1 đơn vị

Bước 2: Nhập thông tin phim mới:

Tiêu đề (title) ,đạo diễn (director), thể loại (genre), thời lượng

(duaration) ,đánh giá (rating), và số suất chiếu (showTime) từ người dùng

Bước 3: Tạo đối tượng phim mới:

Bước 3.1: Gán ID mới (newID) cho phim vừa nhập

Bước 3.2: Khởi tạo đối tượng Movie với các thông tin vừa nhập và ID mới.Bước 4: Thêm phim vào stack:

Trang 14

Gọi hàm push() để thêm phim mới vào stack.

Bước 5: Ghi lại danh sách phim vào file:

Mở file filename ở chế độ ghi

3.3.3 Thuật toán chỉnh sửa thông tin phim.

Bước 1: Tìm phim theo ID ,Gọi hàm findByID() để tìm phim trong stack

Nếu không tìm thấy, thông báo và kết thúc hàm

Bước 2: Nhập số lượng thuộc tính cần sửa.Yêu cầu người dùng nhập số lượng thuộc tính muốn chỉnh sửa

Bước 3: Vòng lặp sửa thuộc tính Lặp qua số lượng thay đổi người dùng yêu cầu: Hiển thị danh sách các thuộc tính có thể chỉnh sửa Nhập lựa chọn thuộc tính Cập nhật giá trị mới cho thuộc tính được chọn

Bước 4: Sắp xếp lại stack Gọi hàm sortByID() để đảm bảo stack được sắp xếp theoID

Bước 5: Ghi thông tin vào file

Mở file dữ liệu chính (filename) và ghi lại toàn bộ thông tin của các phim trong stack

3.3.4.Thuật toán xoá phim

Bước 1 Tìm phim theo ID Nhập ID cần xóa, tìm trong stack Nếu không tìm thấy,thoát

Bước 2 Xóa phim.(gọi hàm delete) Tìm và xóa phim khỏi mảng

Bước 3 Ghi lại dữ liệu vào file Cập nhật file với danh sách các phim còn lại trongstack

3.3.5.Thuật toán gán thời gian chiếu

Bước 1 Xác định freetime Tùy vào tổng suất chiếu, chọn thời gian nghỉ giữa cácsuất

Bước 2 Khởi tạo thời gian: Bắt đầu từ 8:00 sáng (28800 giây).

Bước 3 Duyệt phòng và suất chiếu:

Với mỗi phòng (5 phòng),Với mỗi suất chiếu (7 suất):

Lưu thời gian bắt đầu vào mảng h[i][j].Cộng 2 giờ phim và freetime để tính giờ tiếp theo

10Trần Xuân Bách– Hồ Khang Hy 23.16B

Trang 15

4.1.2 Lý do chọn C++

Hiệu suất cao: C++ tối ưu hóa khả năng truy cập bộ nhớ và xử lý dữ liệu, phù

hợp với các ứng dụng cần xử lý khối lượng lớn thông tin, như hệ thống quản lý rạp chiếu phim

Trang 16

Hỗ trợ lập trình hướng đối tượng: C++ cung cấp các khái niệm như lớp

(class), đối tượng (object), kế thừa (inheritance), và đa hình (polymorphism), giúp tổ chức mã nguồn rõ ràng và dễ bảo trì

1 Sơ đồ tổ chức chương trình chính

Hình 2 Sơ đồ tổ chức chương trình quản lí rạp chiếu phim.

4.2 Các thư viện được sử dụng trong chương trình

Khai báo thư viện

#include <iostream>

#include <iomanip>

#include <conio.h>

#include <string.h>

4.2 1 Các nguyên mẫu hàm được xây dựng trong chương trình.

12Trần Xuân Bách– Hồ Khang Hy 23.16B

Trang 17

char*, Stack<Manager>&); Đọc thông tin của quản lý

void readMovieFromFile(const char*,

Stack<Movie>&); Đọc thông tin chi tiết của phim

Stack<Movie>& stackMovie, string

Trang 18

int a[20],string id,int SuatChieuMua);

void InVe(const string& ticketId); Hàm in vé chiếu phim

Hàm đăng nhập tài khoảng nhân viên

interFace(stackMovie,

stackRoomStaff, stackTicketStaff,

stackManager, stackRoom);

Hàm giao diện các thao tác xử lí

4.2.2 Thiết kế file cơ sở dữ liệu đầu vào

- Tên file: Movie.txt

- Cấu trúc file: Mỗi entry của file gồm 7 trường:

ID phim, Tên phim, đạo diễn, thể loại, thời gian, điểm, số suất chiếu trong 1 ngày

Nội dung như sau:

Hình 3 Thông tin của phim

- Tên file:TicketStaffIfno.txt

- Cấu trúc file : Mỗi entry của file gồm 10 trường:

Tên đăng nhập, mật khẩu, Tên nhân viên, giới tính, ngày sinh, số điện thoại, địa chỉ, chức vụ, điểm.

Nội dung như sau:

14Trần Xuân Bách– Hồ Khang Hy 23.16B

Ngày đăng: 23/12/2024, 17:52

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

TÀI LIỆU LIÊN QUAN