Hãy nhập câu hỏi của bạn vào đây, nếu là tài khoản VIP, bạn sẽ được ưu tiên trả lời.
Tham khảo:
# Đọc dữ liệu từ tệp điểm thi
with open("diemthi.inp", "r") as file:
data = file.readlines()
# Tạo danh sách lưu thông tin điểm thi của các thí sinh
scores = []
for line in data:
line = line.strip().split()# Tách dữ liệu trên mỗi dòng thành các từ
sbd = line[0]# Lấy số báo danh của thí sinh
diem1 = int(line[1])# Lấy điểm bài 1
diem2 = int(line[2])# Lấy điểm bài 2
diem3 = int(line[3])# Lấy điểm bài 3
tong_diem = diem1 + diem2 + diem3# Tính tổng điểm
scores.append((sbd, diem1, diem2, diem3, tong_diem))# Thêm thông tin vào danh sách
# Sắp xếp danh sách giảm dần theo tổng điểm
scores.sort(key=lambda x: x[4], reverse=True)
# Ghi kết quả vào tệp ketqua.out
with open("ketqua.out", "w") as file:
for score in scores:
sbd = score[0]
diem1 = score[1]
diem2 = score[2]
diem3 = score[3]
tong_diem = score[4]
file.write(f"{sbd}\t{diem1}\t{diem2}\t{diem3}\t{tong_diem}\n")
Khi tạo bảng trong cơ sở dữ liệu có hỗ trợ khoá ngoài (foreign key), việc thiết lập khoá ngoài được thực hiện bằng cách xác định cột trong bảng hiện tại là khoá ngoài, và chỉ định bảng mà khoá ngoài này tham chiếu đến (bảng gốc).
Để lưu trữ danh sách học sinh và thông tin điểm thi của họ, bạn có thể sử dụng một danh sách chứa nhiều danh sách con. Mỗi danh sách con sẽ chứa tên học sinh (dạng chuỗi) và ba điểm số (dạng số) của họ tương ứng với ba bài thi.
Ví dụ, để tạo một mảng danh sách học sinh với thông tin điểm số, ta có thể sử dụng mã như sau:
# Nhập danh sách học sinh và điểm số
students = []
n = int(input("Nhập số lượng học sinh: "))
for i in range(n):
name = input(f"Nhập tên học sinh thứ {i+1}: ")
mark1 = float(input(f"Nhập điểm bài thi 1 của {name}: "))
mark2 = float(input(f"Nhập điểm bài thi 2 của {name}: "))
mark3 = float(input(f"Nhập điểm bài thi 3 của {name}: "))
students.append([name, mark1, mark2, mark3])
# Tính điểm trung bình và in ra danh sách học sinh và điểm trung bình của họ
for student in students:
name = student[0]
mark1 = student[1]
mark2 = student[2]
mark3 = student[3]
avg_mark = (mark1 + mark2 + mark3) / 3
print(f"Học sinh {name} có điểm trung bình là {avg_mark}")
HeidiSQL là một công cụ quản lý CSDL mã nguồn mở hỗ trợ việc thực hiện cập nhật và truy xuất dữ liệu trong các bảng đơn giản không có khoá ngoài theo các bước sau:
- Truy xuất dữ liệu: Bằng cách chọn bảng cần truy xuất và sử dụng truy vấn SQL, bạn có thể truy xuất dữ liệu trong bảng.
- Cập nhật dữ liệu: HeidiSQL cung cấp giao diện đồ họa cho phép bạn chỉnh sửa, thêm mới hoặc xoá dữ liệu trong các bảng.
Trong CSDL học tập này, ta có thể xác định các khoá chính và các khoá ngoài của từng bảng như sau:
- Bảng Hocsinh:
Khoá chính: Số CCCD
Khoá ngoài: Không có
- Bảng Monhoc:
Khoá chính: Mã môn
Khoá ngoài: Không có
- Bảng Diem:
Khoá chính: Số thẻ học sinh, Mã môn, Năm, Học kì, Loại điểm
Khoá ngoài:
Số thẻ học sinh tham chiếu đến bảng Hocsinh.
Mã môn tham chiếu đến bảng Monhoc.
Số CCCD có thể được sử dụng làm khoá chính của bảng Hocsinh, nhưng không nên sử dụng nó làm khoá chính của bảng Diem, bởi vì một học sinh có thể có nhiều môn học và điểm khác nhau trong các môn học đó. Do đó, ta cần sử dụng một tập hợp các trường (số thẻ học sinh, mã môn, năm, học kì, loại điểm) để tạo thành khoá chính của bảng Diem.
Để cung cấp thông tin như vậy, ngoài CSDL điểm thi, hệ thống cần kết nối với các CSDL khác như CSDL học sinh, CSDL trường học, CSDL kết quả xét tuyển và có hệ thống liên kết để truy vấn dữ liệu giữa các CSDL này. Các CSDL này cần chứa thông tin về học sinh, trường học, các kết quả xét tuyển và có quan hệ chặt chẽ với nhau để có thể cung cấp thông tin đầy đủ và chính xác cho người dùng khi tra cứu điểm thi. Ngoài ra, hệ thống cần có các phần mềm hỗ trợ để truy vấn, lọc và hiển thị thông tin một cách nhanh chóng và dễ dàng cho người dùng.
Trong giao diện của một hệ quản trị CSDL, để truy xuất dữ liệu từ các bảng khác theo mối quan hệ thì người dùng có thể sử dụng các công cụ truy vấn dữ liệu như truy vấn SQL hoặc các công cụ đồ họa. Các công cụ này thường cung cấp các tính năng đồ họa giúp người dùng thiết kế và tạo các mối quan hệ giữa các bảng và cho phép người dùng truy xuất dữ liệu từ các bảng khác nhau bằng cách sử dụng các truy vấn SQL.
Cụ thể, để truy xuất dữ liệu từ các bảng có mối quan hệ với nhau, người dùng cần sử dụng câu lệnh JOIN để kết hợp các bảng với nhau theo khoá ngoài. Câu lệnh JOIN cho phép bạn truy xuất dữ liệu từ nhiều bảng cùng một lúc bằng cách ghép các bảng lại với nhau theo khoá ngoài.
Tham khảo:
Khi hai bảng trong một CSDL có liên quan đến nhau, mỗi giá trị khoá ngoài ở bảng tham chiếu sẽ được giải thích chi tiết hơn ở bảng được tham chiếu. Ví dụ “HS-001” được giải thích bằng thông tin “Họ và tên: Trần Văn An, Ngày sinh: 14/9/2009, Lớp: 12A2”. Nếu có một giá trị khoá ngoài nào không xuất hiện trong giá trị khoá ở bảng được tham chiếu. Trong Hình 3, “HS-007” không xuất hiện trong Số thẻ TV của bảng NGƯỜI ĐỌC. Do vậy, việc bổ xung cho bảng MƯỢN-TRẢ một bảng ghi mới có giá trị khoá ngoài là: “HS-007” sẽ làm cho dữ liệu trong CSDL không còn đúng nữa, không giải thích được “HS-007” là số thẻ thư viện của ai. Muốn cập nhập đó hợp lệ, phải bổ xung bản ghi có giá trị khoá là “HS-007” vào bảng NGƯỜI ĐỌC trước.
Dựa trên yêu cầu của bài toán, ta có thể đề xuất các bảng dữ liệu và các trường làm khoá chính và khoá ngoài như sau:
- Bảng HocSinh:
Trường: Mã số báo danh, Họ tên, Ngày sinh, Địa chỉ
Khoá chính: Mã số báo danh
Khoá ngoài: Không có
- Bảng MonHoc:
Trường: Tên môn học, Mã môn học
Khoá chính: Mã môn học
Khoá ngoài: Không có
- Bảng PhongThi:
Trường: Mã phòng thi, Tên phòng thi
Khoá chính: Mã phòng thi
Khoá ngoài: Không có
- Bảng ThiSinh_MonHoc:
Trường: Mã số báo danh, Mã môn học
Khoá chính: Mã số báo danh, Mã môn học
Khoá ngoài: Mã số báo danh tham chiếu đến bảng HocSinh, Mã môn học tham chiếu đến bảng MonHoc
- Bảng KetQuaThi:
Trường: Mã số báo danh, Mã môn học, Mã phòng thi, Điểm thi
Khoá chính: Mã số báo danh, Mã môn học, Mã phòng thi
Khoá ngoài:
Mã số báo danh tham chiếu đến bảng HocSinh
Mã môn học tham chiếu đến bảng MonHoc
Mã phòng thi tham chiếu đến bảng PhongThi
Lưu ý rằng, trong bảng ThiSinh_MonHoc, ta cần sử dụng một tập hợp các trường (Mã số báo danh, Mã môn học) để tạo thành khoá chính, bởi vì một thí sinh có thể đăng kí thi nhiều môn học khác nhau. Còn trong bảng KetQuaThi, ta cần sử dụng một tập hợp các trường (Mã số báo danh, Mã môn học, Mã phòng thi) để tạo thành khoá chính, bởi vì một thí sinh có thể thi cùng một môn học ở nhiều phòng thi khác nhau.