* Khởi tạo đầy đủ tham số * Property cho các trường * NhapThongTin: Nhập thông tin cho nhân viên * XuatThongTin: Hiển thị thông tin nhân viên ra màn hình * TinhTienThuong: Tính tiền t
Trang 1BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC PHAN THIẾT KHOA CÔNG NGHỆ THÔNG TIN
-BÁO CÁO MÔN LẬP TRÌNH HƯỚNG ĐỐI TƯỢ NG
Giảng viên hướ ng dẫn: ThS Nguy ễ n H ữ u Ti ế n
Sinh viên thự c hiện: PHAN LÊ PHÚC NGUYÊ N – H U Ỳ NH NGỌC THÁI H ỌC
Trang 3Bình Thuận, ngày 21 tháng 12 năm 2022 Câu 1
Tạo class có tên SoHoc gồm có các thành phần dữ liệu sau:
* private number1 (float)
* private number2 (float)
Phương thức
* Phương thức khở i tạo mặc định
* Phương thức khở i tạo có tham số
* Các property cho tất cả các trườ ng
* Nhap(): Nhậ p hai số number1, number2
* Xuat(): Hiển thị hai số number1, number2
* Cong(): Dùng để cộng number1, number2
* Tru(): Dùng để tr ừ number1, number2
* Nhan(): Dùng để nhân number1, number2
* Chia(): Dùng để chia number1, number2
private float number1;
private float number2;
this.number1 = number1;
this.number2 = number2;
}
public float Number1
{
get { return number1; }
set { number1 = value; }
}
Trang 4public float Number2
{
get { return number2; }
set { number2 = value; }
}
public void Nhap()
{
Console.Write("Nhap so thu nhat: ");
number1 = float.Parse(Console.ReadLine());
Console.Write("Nhap so thu hai: ");
number2 = float.Parse(Console.ReadLine());
}
public void Xuat()
{
Console.WriteLine("So thu nhat: "+number1);
Console.WriteLine("So thu hai: "+number2);
Trang 5* Khởi tạo đầy đủ tham số
* Property cho các trường
* NhapThongTin(): Nhập thông tin cho nhân viên
* XuatThongTin(): Hiển thị thông tin nhân viên ra màn hình
* TinhTienThuong(): Tính tiền thưởng của nhân viên theo công thức sau:
* Nếu tổng số giờ làm của nhân viên >=200 thì thưởng = Lương *20%
* Nếu tổng số giờ làm của nhân viên <200 và >=100 thì thưởng = lương * 10%
* Nếu tổng số giờ làm của nhân viên <100 thì thưởng = 0
private string ten;
private int tuoi;
private string diaChi;
private double luong;
private int soGioLam;
this.ten = ten;
this.tuoi = tuoi;
this.diaChi = diaChi;
this.luong = luong;
this.soGioLam = soGioLam;
}
Trang 6public string Ten
{
get { return ten; }
set { ten = value; }
}
public int Tuoi
{
get { return tuoi; }
set { tuoi = value; }
}
public string DiaChi
{
get { return diaChi; }
set { diaChi = value; }
}
public double Luong
{
get { return luong; }
set { luong = value; }
}
public int SoGioLam
{
get { return soGioLam; }
set { soGioLam = value; }
Console.Write("Nhap tuoi nhan vien: ");
tuoi = int.Parse(Console.ReadLine());
Console.Write("Nhap đia chi nhan vien: ");
diaChi = Console.ReadLine();
Console.Write("Nhap luong nhan vien: ");
luong = double.Parse(Console.ReadLine());
Console.Write("Nhap so gio lam cua nhan vien: ");
soGioLam = int.Parse(Console.ReadLine());
}
public void XuatThongTin()
{
Console.WriteLine("Ten nhan vien: " + ten);
Console.WriteLine("Tuoi nhan vien: " + tuoi);
Console.WriteLine("Dia chi nhan vien: " + diaChi);
Console.WriteLine("Tien luong nhan vien: " + luong);
Console.WriteLine("So gio lam nhan vien: " + soGioLam);
Trang 7* Tuổi: phải lớn hơn hoặc bằng 18
* Lớp: Phải Bắt đầu bằng ký tự ‘A’ hoặc ‘C’
Viết các phương thức sau:
* Khởi tạo mặc định
* Khởi tạo có tham số
* Property cho các trường
* Nhập thông tin cho sinh viên (theo các ràng buộc dữ liệu trên)
* Hiển thị thông tin sinh viên ra màn hình
* Kiểm tra xem sinh viên có được học bổng không (điểm trung bình >=8.0)
private string maSV;
private float diemTB;
private int tuoi;
private string lop;
public Student()
Trang 8this.maSV = maSV;
this.diemTB = diemTB;
this.tuoi = tuoi;
this.lop = lop;
}
public string MaSV
{
get { return maSV; }
set { maSV = value; }
}
public float DiemTB
{
get { return diemTB; }
set { diemTB = value; }
}
public int Tuoi
{
get { return tuoi; }
set { tuoi = value; }
}
public string Lop
{
get { return lop; }
set { lop = value; }
}
public void NhapThongTin()
{
Console.Write("Nhap ma sinh vien: ");
string tempMaSV = Console.ReadLine();
if (tempMaSV.Length != 8)
{
Console.WriteLine("Ma sinh vien khong dung 8 ki tu!");
return;}
Console.Write("Nhap diem trung binh: ");
float tempDiemTB = float.Parse(Console.ReadLine());
if (tempDiemTB < 0 || tempDiemTB > 10)
{
Console.WriteLine("Diem sinh vien khong hop le !");
return;}
Console.Write("Nhap so tuoi: ");
int tempTuoi = int.Parse(Console.ReadLine());
if (tempTuoi < 18)
{
Console.WriteLine("Tuoi cua sinh vien phai lon hon bang 18");
return;}
Console.Write("Nhap lop sinh vien: ");
string tempLopSV = Console.ReadLine();
if (!(tempLopSV.StartsWith('A') || tempLopSV.StartsWith('C'))){
Trang 9Console.WriteLine("Ma lop phai bat dau bang A hoac C!");
return;}
Console.WriteLine("Ma so sinh vien: " + maSV);
Console.WriteLine("Diem trung binh: " + diemTB);
Console.WriteLine("Tuoi sinh vien: " + tuoi);
Console.WriteLine("Lop sinh vien: " + lop);
Viết các phương thức sau:
* Kiểm tra hai Vector có bằng nhau không
* Tính góc giữa hai vector
* Tính module của 2 vector
Trang 10* Kiểm tra hai vector có cùng phương không
* Cộng, trừ, nhân hai vector
Hàm Main(): Nhập vào hai vector và thực hiện các phép toán trên hai vector đó
// X1, Y1 la diem bat dau
// X2, Y2 la diem ket thuc
public double X1 { get; set; }
public double Y1 { get; set; }
public double X2 { get; set; }
public double Y2 { get; set; }
public Vector(double x1, double y1, double x2, double y2)
double tichVoHuong = TichVoHuong(v);
double doDaiA = TinhModule();
double doDaiB = v.TinhModule();
double goc = Math.Acos(tichVoHuong / (doDaiA * doDaiB));
Trang 11double y2 = Y2 + v.Y2;
return new Vector(x1, y1, x2, y2);
double y2 = Y2 - v.Y2;
return new Vector(x1, y1, x2, y2);
Trang 12* Giới tính
* Ngày sinh
* Địa chỉ
Viết các phương thức sau:
* Khởi tạo mặc định, khởi tạo có tham số, property cho các thành phần dữ liệu
* Viết phương thức nhập, xuất thông tin ra màn hình
protected string ten;
protected int gioiTinh;
protected DateTime ngaySinh;
protected string diaChi;
this.ten = ten;
this.gioiTinh = gioiTinh;
this.ngaySinh = ngaySinh;
this.diaChi = diaChi;
}
public string Ten
{
get { return ten; }
set { ten = value; }
}
public int GioiTinh
{
get { return gioiTinh; }
set { gioiTinh = value; }
}
public DateTime NgaySinh
{
get { return ngaySinh; }
set { ngaySinh = value; }
}
public string DiaChi
{
get { return diaChi; }
set { diaChi = value; }
}
Trang 13{
Console.Write("Nhap ho ten: ");
ten = Console.ReadLine();
Console.Write("Chon gioi tinh (nam = 0, nu = 1): ");
gioiTinh = int.Parse(Console.ReadLine());
while (gioiTinh >1 || gioiTinh < 0)
{
Console.WriteLine("Gioi tinh khong hop le !");
Console.Write("Vui long chon lai gioi tinh (0 hoac 1): ");gioiTinh = int.Parse(Console.ReadLine());
Console.WriteLine("Ten: " + ten);
string strGioiTinh = gioiTinh == 0 ? "Nam" : "Nu";
Console.WriteLine("Gioi tinh: "+strGioiTinh);
Console.WriteLine("Ngay sinh: " + ngaySinh.Date.ToString("d"));Console.WriteLine("Dia chi: " + diaChi);
Trang 14* Ghi đè các phương thức nhập, xuất thông tin
* Kiểm tra xem sinh viên có được học bổng không (Điểm trung bình >=8.0)
private string maSV;
private float diemTB;
private string email;
public Student() : base()
{
}
public Student(string ten, int gioiTinh, DateTime ngaySinh, string diaChi, string maSV, float diemTB, string email) : base(ten, gioiTinh, ngaySinh,diaChi)
{
this.maSV = maSV;
this.diemTB = diemTB;
this.email = email;
}
public string MaSV
{
get { return maSV; }
set { maSV = value; }
}
public float DiemTB
{
get { return diemTB; }
set { diemTB = value; }
}
public string Email
{
get { return email; }
set { email = value; }
}
public void NhapThongTin()
{
base.NhapThongTin();
Console.Write("Nhap ma sinh vien: ");
string tempMaSV = Console.ReadLine();
while (tempMaSV.Length != 8)
{
Console.WriteLine("Ma sinh vien khong dung 8 ki tu!");
Console.Write("Nhap lai ma sinh vien: ");
tempMaSV = Console.ReadLine();
}
Console.Write("Nhap diem trung binh: ");
float tempDiemTB = float.Parse(Console.ReadLine());
while (tempDiemTB < 0 || tempDiemTB > 10)
Trang 15Console.WriteLine("Diem sinh vien khong hop le !");
Console.Write("Nhap lai diem trung binh: ");
tempDiemTB = float.Parse(Console.ReadLine());
}
Console.Write("Nhap email: ");
string tempEmail = Console.ReadLine();
while (!tempEmail.Contains('@') || tempEmail.Contains(' '))
Console.WriteLine("Ma so sinh vien: " + maSV);
Console.WriteLine("Email sinh vien: " + email);
Console.WriteLine("Diem trung binh: " + diemTB);
}
}
Demo:
Trang 16Câu 7:
Tạo lớp StudentTest chứa hàm Main() và thực hiện các công việc sau:
Tạo menu chọn với yêu cầu:
1 - Nhập vào danh sách n sinh viên (n được nhập từ bàn phím)
2 - Hiển thị danh sách sinh viên đã nhập ra màn hình
3 – Hiển thị sinh viên có điểm trung bình cao nhất và sinh viên có điểm trung bình thấp nhất
4 – Tìm kiếm sinh viên theo mã sinh viên Cho người dùng nhập vào mã sinh viên, nếu tồn tại sinh viên có trong danh sách thì in thông tin sinh viên đó ra màn hình, ngược lại in
“không tìm thấy”.
5 – Hiển thị danh sách sinh viên theo thứ tự tăng dần theo tên.
6 Hiển thị danh sách sinh viên nhận được học bổng.
Trang 17VIEN Console.WriteLine("1 Nhap danh sach sinh vien moi");
Console.WriteLine("2 Hien thi danh sach sinh vien da nhap");
Console.WriteLine("3 Hien thi sinh vien co diem trung binh cao nhat
va thap nhat");
Console.WriteLine("4 Tim kiem sinh vien");
Console.WriteLine("5 Hien thi sinh vien tang dan theo ten");
Console.WriteLine("6 Hien thi danh sach duoc nhan hoc bong");Console.WriteLine("7 Thoat chuong trinh");
}
static void luaChon()
{
Console.Write("Lua chon: ");
int num = int.Parse(Console.ReadLine());
break;}
Console.Write("\n\n");
}
static void xuLy1()
{
Trang 18// Nhap danh sach sinh vien
Console.Write("Nhap so luong sinh vien n: ");
int n = int.Parse(Console.ReadLine());
students = new Student[n];
for (int i = 0; i < students.Length; i++)
{
students[i] = new Student();
Console.WriteLine(" -Nhap thong tin sinh vien thu
Console.WriteLine(" -Danh sach sinh
// Khơi tạo giá trị đầu tiên
Student minStudent = students[0];
Student maxStudent = students[0];
// Duyệt từ 1 thay vì 0 vì giá trị ban đầu đã là 1
for (int i = 1; i < students.Length; i++)
{
Student stu = students[i];
if (stu.DiemTB > maxStudent.DiemTB)maxStudent = stu;
if (stu.DiemTB < minStudent.DiemTB)minStudent = stu;
Trang 19Console.WriteLine(" -Tim kiem sinh vien -");Console.Write("Nhap ma sinh vien: ");
string msv = Console.ReadLine();
bool isFound = false;
for (int i = 0; i < students.Length; i++)
{
if (students[i].MaSV.Equals(msv)){
isFound = true;students[i].XuatThongTin();
Console.Write("\n");
}}
Console.WriteLine(" -Danh sach sinh vien theo ten tangdan -\n");
// Selection sort
Student[] sortedStudents = (Student[]) students.Clone();
for (int i = 0; i < sortedStudents.Length; i++)
{
k = j;
}}Student temp = sortedStudents[i];
Trang 20Console.WriteLine(" -Danh sach sinh vien duoc hoc -\n");
bong for (int i = 0; i < students.Length; i++)
{
if (students[i].KiemTraHocBong()){
students[i].XuatThongTin();
Console.Write("\n");
}}
Trang 21* Lương một giờ dạy
* Số giờ dạy trong tháng
Viết các phương thức sau:
* Ghi đè phương thức nhập, xuất của lớp Person.
* Tính lương giảng viên theo công thức sau:
Nếu lớp dạy là lớp buổi sáng và buổi chiều (Lớp G, H, I, K) thì:
Lương = lương một giờ dạy x Số giờ dạy trong tháng
Nếu lớp dạy là lớp buổi tối (Lớp L, M) thì:
Lương = lương một giờ dạy x Số giờ dạy trong tháng + 200000đ
private string lopDay;
private float luong1Gio;
private float soGioDay;
public Teacher() : base()
{
}
public string LopDay
{
get { return lopDay; }
set { lopDay = value; }
}
public float Luong1Gio
{
get { return luong1Gio; }
set { luong1Gio = value; }
}
public float SoGioDay
{
get { return soGioDay; }
set { soGioDay = value; }
while (!(lopDay.StartsWith('G') || lopDay.StartsWith('H') ||
lopDay.StartsWith('I') || lopDay.StartsWith('K') || lopDay.StartsWith('L') ||lopDay.StartsWith('M')))
{
Trang 22Console.Write("Nhap luong 1 gio day: ");
luong1Gio = float.Parse(Console.ReadLine());
while (luong1Gio < 0)
{
Console.WriteLine("Luong 1 gio day khong be hon 0 !");
Console.Write("Nhap lai luong 1 gio day: ");
luong1Gio = float.Parse(Console.ReadLine());
}
Console.Write("Nhap so gio day: ");
soGioDay = float.Parse(Console.ReadLine());
while (soGioDay < 0)
{
Console.WriteLine("So gio day khong be hon 0 !");
Console.Write("Nhap lai so gio day: ");
soGioDay = float.Parse(Console.ReadLine());
Console.WriteLine("Lop day: " + lopDay);
Console.WriteLine("Luong 1 gio day: " + luong1Gio);
Console.WriteLine("So gio day: " + soGioDay);
Console.WriteLine("Tong tien luong: " + TinhLuong());
Trang 23Câu 9:
Tạo lớp TeacherTest chứa hàm Main() và thực hiện các công việc sau:
Tạo menu lựa chọn với các yêu cầu cụ thể như sau:
1 – Nhập vào danh sách n giảng viên (với n là số lượng giảng viên được nhập từ bàn phím)
2 – Hiển thị danh sách giảng viên đã nhập ra màn hình
3 – Hiển thị giảng viên có số giờ dạy cao nhất
4 – Hiển thị giảng viên có lương thực nhận cao nhất
static Teacher[] teachers;
public static void Main()
Trang 24VIEN -Console.WriteLine("1 Nhap danh sach giang vien moi");
Console.WriteLine("2 Hien thi danh sach giang vien da nhap");Console.WriteLine("3 Hien thi giang vien co gio day cao nhat");Console.WriteLine("4 Hien thi giang vien co luong cao nhat");Console.WriteLine("5 Thoat chuong trinh");
}
static void luaChon()
{
Console.Write("Lua chon: ");
int num = int.Parse(Console.ReadLine());
break;}
Console.Write("\n\n");
}
static void xuLy1()
{
// Nhap danh sach giang vien
Console.Write("Nhap so luong giang vien n: ");
int n = int.Parse(Console.ReadLine());
teachers = new Teacher[n];
for (int i = 0; i < teachers.Length; i++)
{
teachers[i] = new Teacher();
Console.WriteLine(" -Nhap thong tin giang vien thu " +(i + 1) + " -");
Trang 25// Hien thi danh sach giang vien
Console.WriteLine(" -Danh sach giang
// Khơi tạo giá trị đầu tiên
Teacher maxGioDay = teachers[0];
// Duyệt từ 1 thay vì 0 vì giá trị ban đầu đã là 1
for (int i = 1; i < teachers.Length; i++)
{
Teacher teacher = teachers[i];
if (teacher.SoGioDay > maxGioDay.SoGioDay)maxGioDay = teacher;
// Khơi tạo giá trị đầu tiên
Teacher maxLuong = teachers[0];
for (int i = 1; i < teachers.Length; i++)
{
Teacher teacher = teachers[i];
if (teacher.TinhLuong() > maxLuong.TinhLuong())maxLuong = teacher;
Trang 26{
Console.WriteLine("Danh sach giang vien trong !");
return true;}
Cuối năm học, nhà trường muốn trao phần thưởng cho các sinh viên giỏi, các giáo viên
có tham gia nghiên cứu đề tài khoa học Trong đó thông tin về các sinh viên là: Họ tên, ngày sinh, lớp, điểm trung bình Thông tin về giáo viên là: Họ tên, ngày sinh, khoa, số bài báo Điều kiện khen thưởng của sinh viên là có điểm trung bình lớn hơn 8 Điều kiện khen thưởng của giáo viên là có ít nhất một bài báo nghiên cứu khoa học Áp dụng tính
kế thừa và đa hình, hãy thực hiện các yêu cầu sau:
* Xây dựng lớp Person gồm các thông tin chung của hai lớp giáo viên và sinh viên Sau
đó xây dựng hai lớp giáo viên và sinh viên kế thừa từ lớp Person này.
* Xây dựng phương thức nhập, xuất thông tin trong lớp Person, sau đó ghi đè lại các phương thức này trong hai lớp sinh viên và giáo viên.
* Khởi tạo một mảng duy nhất để lưu trữ các đối tượng sinh viên và giáo viên In ra màn hình danh sách sinh viên và giáo viên được khen thưởng.