MÔ TẢ HỆ THỐNG
Mô tả bài toán
Từ cơ sở dữ liệu ta suy ra nghiệp vụ của bài toán như sau:
Cơ sở dữ liệu quản lý rạp chiếu phim của công ty bao gồm các thông tin quan trọng như Mã rạp, Tên rạp, Địa chỉ, Điện thoại, Số phòng và Tổng số ghế Mỗi rạp được ghi nhận trong hệ thống nhằm đảm bảo quản lý hiệu quả và cung cấp thông tin đầy đủ cho người dùng.
- Mỗi rạp sẽ có nhiều phòng chiếu vì ở bảng phòng chiếu có mã rạp Mỗi phòng chiếu sẽ có Mã phòng, Tên phòng và Tổng số ghế
Cơ sở dữ liệu quản lý thông tin về các bộ phim chiếu tại hệ thống rạp, bao gồm các yếu tố như tên phim, mã nước sản xuất, mã hãng sản xuất, đạo diễn, mã thể loại, ngày khởi chiếu, ngày kết thúc, nữ diễn viên chính, nam diễn viên chính, nội dung chính, tổng chi phí, tổng thu và ảnh Mỗi bộ phim có lịch chiếu riêng biệt tại từng rạp.
- Các thông tin của phim về Hãng sản xuất, Nước sản xuất, Thể loại đều có bảng riêng gồm Mã và Tên
Mỗi rạp phim có lịch chiếu riêng, trong đó mỗi show được xác định bằng mã show Mỗi show tương ứng với một bộ phim cụ thể, bao gồm mã phim, mã phòng chiếu, mã rạp và thời gian chiếu khác nhau, được trình bày rõ ràng trong bảng Giờ chiếu.
Từ đó suy ra hệ thống có chức năng quản lý các danh mục, tạo lịch chiếu và in các báo cáo doanh thu
Thiết kế chức năng của hệ thống
Ở frmMain thì có các danh mục Quản lý rạp, Quản lý phim, Tìm kiếm và Báo cáo là các mục cấp 1
Trong Quản lý rạp thì ta có các mục Rạp, Phòng chiếu, Lịch chiếu, Giờ chiếu, Ghế,
Vé là các mục cấp 2
3 Ở trong Quản lý phim sẽ bao gồm Phim, Thể loại, Hãng sản xuất, Nước sản xuất là các mục cấp 2
Trong mục Tìm kiếm thì có Phim và Lịch chiếu, mục đích là để tìm kiếm Phim hoặc tìm kiếm Lịch chiếu
Danh mục Báo cáo sẽ bao gồm hai phần chính: Doanh thu và Phim đang chiếu ở cấp 2 Trong phần Doanh thu, sẽ có hai danh mục cấp 3 là Phim và Rạp.
Sơ đồ liên kết quan hệ các bảng
GIẢI QUYẾT VẤN ĐỀ
Trường Tổng thu, Số phòng, Tổng số ghế, Số vé đã bán, Tổng tiền trong ban đầu có giá trị = 0, không được nhập mà tự động cập nhật
có giá trị = 0, không được nhập mà tự động cập nhật
Khi xây dựng cơ sở dữ liệu trong SQL, giá trị mặc định cho các trường được đặt là 0, và trong quá trình tạo các Form Quản lý danh mục, chúng ta sẽ không thiết lập Textbox cho các trường này Việc tự động cập nhật sẽ được trình bày trong các phần tiếp theo.
Khi cập nhập phòng chiếu thì trường Số phòng và Tổng số ghế trong bảng Rạp được cập nhật theo
− Form liên quan: Phòng chiếu, Rạp và chức năng liên quan gồm Thêm, Sửa, Xóa, Lưu
Khi người dùng thao tác thêm, bớt bản ghi hoặc thay đổi Số ghế trong bảng Phòng chiếu, Số phòng và Tổng số ghế của bản ghi tương ứng trong bảng Rạp sẽ tự động cập nhật.
Ý tưởng là tạo các trigger cho cơ sở dữ liệu SQL liên quan đến bảng tblPhongChieu, nhằm tự động cập nhật số phòng và tổng số ghế trong bảng Rạp tương ứng với số lượng hiện có.
Mã rạp tương ứng được sử dụng để kích hoạt trigger, hoạt động mỗi khi người dùng thực hiện các thao tác insert, delete hoặc update trên bảng Phòng chiếu thông qua các nút Sửa, Xóa, Lưu Hệ thống sẽ tự động đếm lại số phòng theo Mã rạp của các bản ghi liên quan và tổng số ghế bằng cách sử dụng hàm.
• Bước 1: Tạo trigger trong SQL cho các hành động insert, delete và update tại bảng Phòng chiếu
• Bước 2: Viết câu lệnh đếm số lượng phòng bằng hàm COUNT, tính tổng số ghế bằng hàm SUM tại các Phòng chiếu của một Rạp
• Bước 3: Kiểm tra độ chính xác của trigger Kết thúc
The trigger "SoPhongRap" is designed to update the total number of rooms in a cinema whenever a new room is added After a new entry is inserted into the "tblPhongChieu" table, the trigger increments the "SoPhong" (number of rooms) in the "tblRap" table by counting the newly inserted rooms that correspond to each cinema This ensures that the cinema's room count is always accurate and reflects the latest additions.
To update the total number of seats in a cinema when a new screening room is added, a trigger named "TongSoGheRap" is created on the "tblPhongChieu" table This trigger activates after a new record is inserted, updating the "TongSoGhe" field in the "tblRap" table It adds the number of seats from the newly inserted record to the existing total for the corresponding cinema, ensuring accurate seat counts across all screening rooms.
To update the total number of rooms in a cinema after a room has been deleted, a trigger named "XoaSoPhongRap" is created on the "tblPhongChieu" table This trigger executes upon deletion, adjusting the room count in the "tblRap" table by subtracting the count of deleted room IDs that match the cinema ID The update is performed through a join between the "tblRap" and the deleted records.
To update the total number of seats in a cinema after a screening room is deleted, create a trigger named "XoaTongSoGheRap." This trigger will execute upon the deletion of a record in the "tblPhongChieu" table It adjusts the "TongSoGhe" field in the "tblRap" table by subtracting the number of seats from the deleted room, ensuring accurate seat counts in the cinema's overall seating capacity.
The article discusses updating the total number of seats in a cinema after modifying the data in a specific room It describes a trigger named "SuaTongSoGhe" that activates after an update occurs in the "tblPhongChieu" table The trigger updates the "TongSoGhe" (total seats) in the "tblRap" (cinema) table by adding the new seat count from the inserted data and subtracting the previous count from the deleted data, ensuring accurate seat totals across the cinema.
Khi cập nhật Phòng chiếu - Ghế thì trường Tổng số ghế trong bảng Phòng chiếu được cập nhật theo
− Form liên quan: Phòng chiếu – Ghế, Phòng chiếu và chức năng liên quan gồm Thêm, Sửa, Xóa, Lưu
Khi người dùng thao tác với các nút để thêm, bớt bản ghi hoặc thay đổi ghế trong bảng Phòng chiếu – Ghế, tổng số ghế của bản ghi sẽ được cập nhật đồng thời.
Mã phòng chiếu tương ứng trong bảng Phòng chiếu cũng tự động thay đổi theo
Tạo trigger cho cơ sở dữ liệu SQL trên bảng tblPhongChieuGhe nhằm cập nhật Tổng số ghế trong bảng Phòng chiếu theo số lượng ghế có Mã phòng chiếu tương ứng Trigger sẽ tự động hoạt động mỗi khi người dùng thực hiện thao tác insert.
Khi thực hiện thao tác xóa, cập nhật bản ghi của bảng Phòng chiếu – Ghế thông qua các nút Sửa, Xóa, Lưu, hệ thống sẽ tự động đếm lại số ghế theo Mã phòng chiếu của các bản ghi liên quan Tổng số ghế sẽ được tính toán bằng cách sử dụng hàm.
Để quản lý các hành động insert và delete tại bảng Phòng chiếu – Ghế, bước đầu tiên là tạo trigger trong SQL Việc này không yêu cầu thực hiện câu lệnh update, vì khi sửa một bản ghi, số lượng vẫn sẽ được giữ nguyên.
• Bước 2: Viết câu lệnh Tổng số ghế cũ cộng/trừ số lượng ghế được thêm (đếm bằng hàm COUNT) tại Phòng chiếu của một Rạp
• Bước 3: Kiểm tra độ chính xác của trigger Kết thúc
- Code xử lý yêu cầu:
To update the total number of seats in a room after a new seat is added, a trigger named `TongSoGhePC` is created on the `tblPhongChieuGhe` table This trigger activates after an insert operation, executing an update on the `tblPhongChieu` table It increments the `TongSoGhe` by the count of seats from the inserted records corresponding to the specific room.
=tblPhongChieu.MaPhong) from tblPhongChieu join inserted on tblPhongChieu.MaPhong=inserted.MaPhong end
To update the total number of seats in a room after a seat is deleted, create a trigger named "XoaTongSoGhePC" on the "tblPhongChieuGhe" table This trigger will initiate an update on the "tblPhongChieu" table, decreasing the total seat count by the number of deleted seats, as specified by the count of "MaGhe" from the deleted records where the room ID matches.
=tblPhongChieu.MaPhong) from tblPhongChieu join deleted on tblPhongChieu.MaPhong eted.MaPhong end
Khi cập nhật lịch chiếu, kiểm tra các điều kiện
a) Mã phòng chỉ hiển thị danh sách các phòng của rạp tương ứng
- Form liên quan: Lịch chiếu
Khi người dùng truy cập danh mục quản lý lịch chiếu, các phòng sẽ được hiển thị tương ứng với rạp, đảm bảo tính thống nhất và logic trong trải nghiệm sử dụng.
When populating the Room Code Combo Box, we will utilize the Selected Index Changed event of the Cinema Code Combo Box to display only the corresponding Room Codes.
• Bước 1: Tạo Form Lịch chiếu với Combo Box là các khóa ngoại, trong đó bao gồm Mã phòng và Mã rạp.
• Bước 2: Kích hoạt event Selecte Index Changed của Combo Box Mã rạp và dùng code xử lý phù hợp.
• Bước 3: Kiểm tra và kết thúc
The code for handling requests in C# includes a feature that displays showtimes corresponding to the selected theater, ensuring consistency in the user experience The functionality is triggered by the event handler for the combo box selection change, specifically in the method `private void cboMarap_SelectedIndexChanged(object sender, EventArgs e)`.
{ string str; str = "select distinct MaPhong, TenPhong from tblPhongChieu where MaRap = '"
DAO.FillDataToCombo(str, cboMaphong, "MaPhong", "TenPhong");
{ string str1; str1 = "select distinct MaGioChieu, GioChieu from tblGioChieu where MaRap '" + cboMarap.SelectedValue + "'";
DAO.FillDataToCombo(str1, cboMagiochieu, "MaGioChieu", "GioChieu");
} b) Mã phòng của một rạp không được chiếu cùng lịch
− Yêu cầu liên quan đến form Lịch chiếu
• Dữ kiện đầu vào: nhập đầy đủ thông tin form lịch chiếu
• Điều kiện cần kiểm tra: không tồn tại trùng lặp dữ liệu của các thuộc tính sau: Mã phim, Mã phòng, Mã Giờ chiếu, Ngày chiếu
• Kết quả trả về: lưu CSDL vào bảng Lịch chiếu thành công
//1 phòng không được chiếu trùng lịch
//Kiểm tra Phim, Phòng, Giờ chiếu, Ngày chiếu có trùng?
DAO.OpenConnection(); string sql = "SELECT MaPhim,MaPhong,MaGioChieu,NgayChieu FROM tblLichChieu WHERE MaPhim=N'" + cboMaphim.SelectedValue.ToString() + "' AND MaPhong=N'" + cboMaphong.SelectedValue.ToString() + "' AND MaGioChieu=N'" + cboMagiochieu.SelectedValue.ToString() + "' AND NgayChieu=N'" +
Convert.ToDateTime(dateNgaychieu.Value) + "'"; if (DAO.checkKeyExit(sql) == true)
MessageBox.Show("Phim '" + cboMaphim.SelectedValue.ToString() + "' đã có lịch chiếu tại phòng vào giờ này!", "Thông báo"); return;
Khi cập nhập bảng Vé, kiểm tra các điều kiện
a) Mã ghế chỉ hiển thị danh sách các ghế còn trống của lịch chiếu đó
Khi người dùng truy cập vào danh mục quản lý vé, ứng dụng sẽ hiển thị các ghế còn trống tương ứng với rạp chiếu, giúp tránh tình trạng đặt nhầm vé đã được đặt trước.
- Ý tưởng: Khi đổ dữ liệu vào Combo Box của Mã ghế, ta sẽ chỉ hiện thị các Mã ghế có Trạng thái tương ứng là “Trống”
Để xử lý yêu cầu, trước tiên chúng ta sẽ tạo một trigger nhằm ghi nhận việc thêm hoặc xóa dữ liệu tại bảng Vé Cột Trạng thái sẽ tự động được cập nhật thành “Đã đặt” hoặc “Trống” tương ứng với tình trạng của vé.
Create trigger DatVe on tblVe AFTER INSERT AS
From tblPhongChieuGhe join inserted on tblPhongChieuGhe.MaGhe = inserted.MaGhe where tblPhongChieuGhe.MaGhe = inserted.MaGhe
Create trigger HuyVe on tblVe AFTER DELETE AS
From tblPhongChieuGhe join deleted on tblPhongChieuGhe.MaGhe = deleted.MaGhe where tblPhongChieuGhe.MaGhe = deleted.MaGhe
11 o Sau đó là code C# với combobox private void FrmVe_Load(object sender, EventArgs e)
DAO.FillDataToCombo("SELECT MaShow FROM tblLichChieu", cboMashow, "MaShow",
DAO.FillDataToCombo("SELECT MaGhe FROM tblPhongChieuGhe where TrangThai N'Trống'", cboGhe, "MaGhe", "MaGhe"); btnLuu.Enabled = false;
} b) Các trường Số vé đã bán, Tổng tiền trong bảng Lịch chiếu; trường tổng thu trong bảng Phim được cập nhật theo
− Form liên quan: Vé, Lịch chiếu, Phim và chức năng liên quan gồm Thêm, Sửa, Xóa, Lưu
Khi người dùng thao tác thêm, bớt hoặc chỉnh sửa bản ghi trong bảng Vé, số vé đã bán và tổng tiền trong bảng Lịch chiếu sẽ tự động cập nhật theo mã show tương ứng, dẫn đến sự thay đổi tổng thu của phim có mã phim liên quan.
Để quản lý dữ liệu hiệu quả, chúng ta cần tạo các trigger cho cơ sở dữ liệu SQL liên quan đến bảng tblVe và tblLichChieu Các trigger này sẽ tự động cập nhật số vé đã bán, tổng tiền và tổng thu mỗi khi người dùng thực hiện các thao tác insert, delete hoặc update trên bảng Vé Cụ thể, số vé đã bán sẽ tự động tăng hoặc giảm tương ứng với số lượng vé được thêm hoặc xóa Tổng tiền được tính bằng cách nhân số vé đã bán với giá vé và sẽ được cập nhật ngay khi bảng Lịch chiếu thay đổi số vé đã bán Đồng thời, tổng thu của một bộ phim sẽ là tổng số tiền từ tất cả các show trong bảng Lịch chiếu.
Trong quá trình xử lý yêu cầu, không cần thiết phải cập nhật tổng thu khi có một lịch chiếu mới được thêm vào Quy tắc áp dụng là tổng tiền của một show sẽ tự động cập nhật mà không cần thêm mới.
Cập nhật tổng tiền khi có thêm vé được bán
Create trigger TongTienist on tblVe AFTER INSERT AS
SET TongTien = (GiaVe * SoVeDaBan) FROM tblLichChieu join inserted on tblLichChieu.MaShow = inserted.MaShow
WHERE tblLichChieu.MaShow = inserted.MaShow
Cập nhật tổng tiền khi có vé bị hủy
Create trigger TongTiendlt on tblVe AFTER DELETE AS
SET TongTien = (GiaVe * SoVeDaBan) FROM tblLichChieu join deleted on tblLichChieu.MaShow = deleted.MaShow
WHERE tblLichChieu.MaShow = deleted.MaShow
Cập nhật tổng tiền khi có vé thay đổi phim
Create trigger TongTienudt on tblVe AFTER UPDATE AS
SET TongTien = (GiaVe * SoVeDaBan) FROM tblLichChieu join inserted on tblLichChieu.MaShow = inserted.MaShow
WHERE tblLichChieu.MaShow = inserted.MaShow
Cập nhật tổng thu khi show được cập nhật
Create trigger TongThuupdate on tblLichChieu AFTER UPDATE AS
SET TongThu = (select SUM(TongTien) from tblPhim join inserted on tblPhim.MaPhim inserted.MaPhim
Cập nhật tổng tiền khi có một show bị hủy
Create trigger TongThudelete on tblLichChieu AFTER DELETE AS
SET TongThu = (select SUM(TongTien) from tblPhim join deleted on tblPhim.MaPhim deleted.MaPhim
Tìm kiếm các phim theo: tên, loại phim, hãng sản xuất
− Form liên quan: Tìm kiếm phim o Ứng dụng: Tìm kiếm thêm theo một trong ba tiêu chí: Tên, Loại phim, Hãng sản xuất hoặc cả 3. o Các bước tiến hành:
• Bước 1: Tạo form FrmTimKiemPhim với 3 button tìm kiếm riêng cho từng tiêu chí và một button tìm kiếm chung cả 3 tiêu chí.
• Bước 2: Hoàn thiện code theo yêu cầu đều bài.
− Code xử lí: public FrmTimKiemPhim()
} private void FrmTimKiemPhim_Load(object sender, EventArgs e)
//Load cboTheLoai tìm kiếm cboTheLoai.DataSource = DAO.GetDataToTable("SELECT MaTheLoai, TenTheLoai FROM tblTheLoai"); cboTheLoai.ValueMember = "MaTheLoai"; cboTheLoai.DisplayMember = "TenTheLoai"; cboTheLoai.SelectedIndex = -1;
//Load cboMaHangSX tìm kiếm cboHangSX.DataSource = DAO.GetDataToTable("SELECT MaHangSX, TenHangSX FROM tblHangSX"); cboHangSX.ValueMember = "MaHangSX"; cboHangSX.DisplayMember = "TenHangSX"; cboHangSX.SelectedIndex = -1;
} private void btnTimkiem_Click(object sender, EventArgs e)
MessageBox.Show("Hãy chọn tên Phim cần tìm!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); return;
MessageBox.Show("Hãy chọn tên thể loại cần tìm!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); return;
MessageBox.Show("Hãy chọn tên hãng sản xuất cần tìm!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); return;
DataTable tbl; string sql = "SELECT * FROM tblPhim WHERE (TenPhim LIKE '%" + txtTenphim.Text.Trim() + "%' AND MaTheLoai= N'" + cboTheLoai.SelectedValue + "' AND MaHangSX = N'" + cboHangSX.SelectedValue + "')"; tbl = DAO.GetDataToTable(sql);
} private void btnTimkiemphim_Click(object sender, EventArgs e)
MessageBox.Show("Hãy chọn tên Phim cần tìm!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); return;
DataTable tbl; string sql = "SELECT * FROM tblPhim WHERE TenPhim LIKE '%" + txtTenphim.Text.Trim() + "%'"; tbl = DAO.GetDataToTable(sql);
} private void btnTimkiemtheloai_Click(object sender, EventArgs e)
MessageBox.Show("Hãy chọn tên thể loại cần tìm!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); return;
DataTable tbl; string sql = "SELECT * FROM tblPhim WHERE (MaTheLoai =N'" + cboTheLoai.SelectedValue + "')"; tbl = DAO.GetDataToTable(sql);
} private void btnTimkiemhsx_Click(object sender, EventArgs e)
MessageBox.Show("Hãy chọn tên hãng sản xuất cần tìm!", "Thông Báo",
MessageBoxButtons.OK, MessageBoxIcon.Information); return;
DataTable tbl; string sql = "SELECT * FROM tblPhim WHERE (MaHangSX =N'" + cboHangSX.SelectedValue + "')"; tbl = DAO.GetDataToTable(sql);
Tìm kiếm các lịch chiếu theo: mã rạp, mã phim
− Form liên quan: Tìm kiếm lịch o Ứng dụng: Tìm kiếm thêm theo một trong hai tiêu chí: Mã rạp, Mã phim hoặc cả 3. o Các bước tiến hành:
• Bước 1: Tạo form FrmTimKiemLich với 2 button tìm kiếm riêng cho từng tiêu chí và một button tìm kiếm chung cả 2 tiêu chí.
• Bước 2: Hoàn thiện code theo yêu cầu đều bài.
− Code xử lí: public FrmTimKiemLich()
17 private void FrmTimKiemLich_Load(object sender, EventArgs e)
//Load cboMaRap tìm kiếm cboRap.DataSource = DAO.GetDataToTable("SELECT MaRap, TenRap FROM tblRap"); cboRap.ValueMember = "MaRap"; cboRap.DisplayMember = "TenRap"; cboRap.SelectedIndex = -1;
//Load cboMaPhim tìm kiếm cboPhim.DataSource = DAO.GetDataToTable("SELECT MaPhim, TenPhim FROM tblPhim"); cboPhim.ValueMember = "MaPhim"; cboPhim.DisplayMember = "TenPhim"; cboPhim.SelectedIndex = -1;
} private void btnTimkiem_Click(object sender, EventArgs e)
MessageBox.Show("Chưa chọn mã rạp!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return;
MessageBox.Show("Chưa chọn mã phim!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return;
DataTable tbl; string sql = "SELECT * FROM tblLichChieu WHERE (MaRap =N'"
+ cboRap.SelectedValue + "' AND MaPhim= N'" + cboPhim.SelectedValue + "')"; tbl = DAO.GetDataToTable(sql);
// Không cho phép thêm mới dữ liệu trực tiếp trên lưới
// Không cho phép sửa dữ liệu trực tiếp trên lưới
GridViewTimKiemLich.EditMode = DataGridViewEditMode.EditProgrammatically; } private void btnTimkiemrap_Click(object sender, EventArgs e)
MessageBox.Show("Chưa chọn rạp!", "Thông Báo", MessageBoxButtons.OK,
DataTable tbl; string sql = "SELECT * FROM tblLichChieu WHERE (MaRap =N'" + cboRap.SelectedValue + "')"; tbl = DAO.GetDataToTable(sql);
// Không cho phép thêm mới dữ liệu trực tiếp trên lưới
// Không cho phép sửa dữ liệu trực tiếp trên lưới
} private void btnTimkiemphim_Click(object sender, EventArgs e)
MessageBox.Show("Chưa chọn tên phim!", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information); return;
DataTable tbl; string sql = "SELECT * FROM tblLichChieu WHERE (MaPhim= N'" + cboPhim.SelectedValue + "')"; tbl = DAO.GetDataToTable(sql);
// Không cho phép thêm mới dữ liệu trực tiếp trên lưới
// Không cho phép sửa dữ liệu trực tiếp trên lưới
Báo cáo doanh thu của một bộ phim bất kỳ
Để in Doanh Thu Phim, bạn cần sử dụng chức năng in trong ứng dụng khi xuất dữ liệu ra file Excel Các bước tiến hành bao gồm việc mở ứng dụng, chọn dữ liệu cần in và thực hiện các thao tác để xuất file Excel.
▪ Bước 1: Kết nối project với Excel
▪ Bước 2: Tạo một combobox mã phim để chọn phim cần in báo cáo Lấy dữ liệu về doanh thu của một bộ phim từ các bảng tblPhim và tblLichChieu
▪ Bước 3: In ra Excel, chỉnh sửa theo ý
− Form In Doanh Thu Phim:
− Mẫu báo cáo sau khi ấn In
− Code xử lý: public InDoanhThuPhim()
} private void InDoanhThuPhim_Load(object sender, EventArgs e)
DAO.FillDataToCombo("SELECT MaPhim, TenPhim FROM tblPhim", cboPhim, "MaPhim",
} private void btnInDTP_Click(object sender, EventArgs e)
COMExcel.Application exApp = new COMExcel.Application();
COMExcel.Workbook exBook; //Trong 1 chương trình Excel có nhiều Workbook
COMExcel.Worksheet exSheet; //Trong 1 Workbook có nhiều Worksheet
COMExcel.Range exRange; string sql;
DataTable tblPhim, sove; exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet); exSheet = exBook.Worksheets[1];
The general format for Excel manipulation begins with defining the range using `exRange = exSheet.Cells[1, 1];` Font settings for the range "A1:B3" are adjusted to a size of 10, using the "Times New Roman" font, with bold styling and a blue color (ColorIndex 5) Column widths are set, with "A1" at 7 and "B1" at 15, and the cells are merged for titles like "Tập đoàn tweltfthGROUP" and "Hệ thống Rạp chiếu toàn quốc," all centered horizontally The hotline number is also included in a merged cell format For the report title "BÁO CÁO DOANH THU PHIM," the font size is increased to 16, set to bold, and colored red (ColorIndex 3), with the cells merged and centered A SQL query retrieves film data based on the selected film ID, and the font for the data range "B6:C11" is set to size 12 in "Times New Roman." Labels such as "Mã phim" and "Tên phim" are added, with the film code fetched from the database.
The code snippet merges cells in an Excel range to display film details, including the film title, release date, end date, and revenue It sets the title in merged cells from C7 to E7, followed by the release date in C8 to E8, and the end date in C9 to E9 Additionally, it records the revenue in C11 to E11 and the number of tickets sold in C10 to E10, utilizing a SQL query to fetch the total tickets sold from the database based on the selected film Finally, it makes the Excel application visible to the user.
Báo cáo doanh thu của một rạp bất kỳ
Để in báo cáo Doanh Thu Rạp, bạn cần sử dụng chức năng in trong ứng dụng Chức năng này được áp dụng khi xuất dữ liệu ra file Excel để thực hiện in ấn Các bước thực hiện bao gồm việc truy cập vào ứng dụng và chọn tùy chọn xuất dữ liệu.
▪ Bước 1: Kết nối project với Excel
▪ Bước 2: Tạo một combobox mã rạp để chọn rạp cần in báo cáo Lấy dữ liệu về doanh thu của một bộ phim từ bảng tblRap
▪ Bước 3: In ra Excel, chỉnh sửa theo ý
− Form In Doanh Thu Phim:
− Mẫu báo cáo sau khi ấn In:
− Code xử lý: public InDoanhThuRap()
} private void InDoanhThuRap_Load(object sender, EventArgs e)
DAO.FillDataToCombo("SELECT MaRap, TenRap FROM tblRap", cboRap, "MaRap",
} private void btnInDTR_Click(object sender, EventArgs e)
COMExcel.Application exApp = new COMExcel.Application();
COMExcel.Workbook exBook; //Trong 1 chương trình Excel có nhiều Workbook
COMExcel.Worksheet exSheet; //Trong 1 Workbook có nhiều Worksheet
COMExcel.Range exRange; string sql;
DataTable tblRap, sove; exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet); exSheet = exBook.Worksheets[1];
To format an Excel sheet using C#, set the font size to 10 and the font name to "Times New Roman" for the range A1:B3, making it bold and changing the color to blue (ColorIndex 5) Adjust the column widths for A1 and B1, merge cells A1:B1, center-align them, and set the value to "Tập đoàn tweltfthGROUP." Similarly, merge cells A2:B2 for "Hệ thống Rạp chiếu toàn quốc" and A3:B3 for the hotline number, aligning them centrally For the header in C2:H2, use a font size of 16, bold it, change the color to red (ColorIndex 3), merge the cells, and set the value to "BÁO CÁO DOANH THU RẠP." Execute a SQL query to retrieve cinema details based on the selected cinema ID, then format the output in the range B6:C11 with a font size of 12 and "Times New Roman." Label the fields as "Mã rạp," "Tên rạp," "Địa chỉ," and "Điện thoại," merging the corresponding cells to display the retrieved data.
The SQL query retrieves the total revenue from the "tblLichChieu" table based on the selected cinema ID The result is then stored in a variable and displayed in an Excel sheet, where the label "Doanh thu:" is set in cell B10, and the total revenue is merged and shown in cells C10 to E10 Finally, the Excel application is made visible to the user.
In ra danh sách phim đang chiếu
Để in danh sách phim đang chiếu, bạn cần sử dụng chức năng in trong ứng dụng, đặc biệt khi xuất dữ liệu ra file Excel Các bước thực hiện bao gồm việc chọn danh sách phim, sử dụng tính năng in và lưu file để in ra.
▪ Bước 1: Kết nối project với Excel
Để xem danh sách các phim đang chiếu, bước đầu tiên là tạo một DataGridView Dữ liệu cho danh sách này được lấy từ bảng tblPhim, với điều kiện rằng ngày khởi chiếu phải nhỏ hơn ngày hôm nay và ngày kết thúc phải lớn hơn ngày hôm nay.
▪ Bước 3: In ra Excel, chỉnh sửa theo ý
− Form In danh sách phim đang chiếu:
− Mẫu báo cáo sau khi ấn In:
− Code xử lý: public partial class InPhimDangChieu : Form
} private void InPhimDangChieu_Load(object sender, EventArgs e)
{ string sql = "select MaPhim, TenPhim, DaoDien, TenTheLoai, NgayKhoiChieu,
NgayKetThuc from tblPhim inner join tblTheLoai on tblPhim.MaTheLoai = tblTheLoai.MaTheLoai where NgayKetThuc > getdate() and NgayKhoiChieu < getdate()";
SqlDataAdapter adapter = new SqlDataAdapter(sql, DAO.conn);
DataTable tblPhimDC = new DataTable(); adapter.Fill(tblPhimDC); dataGridView1.DataSource = tblPhimDC;
} private void btnInDTR_Click(object sender, EventArgs e)
COMExcel.Application exApp = new COMExcel.Application();
COMExcel.Workbook exBook; //Trong 1 chương trình Excel có nhiều Workbook COMExcel.Worksheet exSheet; //Trong 1 Workbook có nhiều Worksheet
COMExcel.Range exRange; int hang = 0, cot = 0; string sql = "select * from tblPhim where NgayKetThuc > getdate() and
SqlDataAdapter adapter = new SqlDataAdapter(sql, DAO.conn);
DataTable tblPhimDC = new DataTable(); exBook = exApp.Workbooks.Add(COMExcel.XlWBATemplate.xlWBATWorksheet); exSheet = exBook.Worksheets[1];
The article outlines the process of formatting an Excel sheet using COMExcel It begins by setting the font size to 10, using "Times New Roman," and applying bold styling with a blue color for a specified range The column widths are adjusted, and cells are merged and centered to display the title "Tập đoàn tweltfthGROUP" and the subtitle "Hệ thống Rạp chiếu toàn quốc," along with a hotline number A larger font size of 16 in red is used for the heading "DANH SÁCH PHIM ĐANG CHIẾU," which is also centered and merged The table headers are formatted with bold text and centered alignment, detailing columns for serial number, movie code, title, director, genre, start date, and end date Finally, data is retrieved from the database to populate the movie list.
//Điền số thứ tự vào cột 1 từ dòng 7 exSheet.Cells[1][hang + 7] = hang + 1; for (cot = 0; cot