TRƯỜNG ĐẠI HỌC BÀ RỊA VŨNG TÀU
VIỆN CÔNG NGHỆ THÔNG TIN – ĐIỆN – ĐIỆN TỬ
NGÀNH CÔNG NGHỆ THÔNG TIN
TRÌNH ĐỘ ĐÀO TẠO: ĐẠI HỌC
ĐỀ TÀI: Hệ thống quản lý phần cứng máy tính áp dụng
cho các cơ quan trường học
GIẢNG VIÊN HƯỚNG DẪN: TS. PHAN NGỌC HOÀNG
SINH VIÊN THỰC HIỆN: LÊ ĐỨC ANH TUẤN
LỚP: DH15MT2
MSSV: 15032304
Vũng tàu, tháng 6 năm 2019.
LỜI CẢM ƠN
Hệ thống quản lý phần cứng máy tính áp dụng cho các cơ quan trường học là nội
dung tôi chọn sau 4 năm theo học Công
193 trang |
Chia sẻ: huong20 | Ngày: 07/01/2022 | Lượt xem: 367 | Lượt tải: 0
Tóm tắt tài liệu Đề tài Hệ thống quản lý phần cứng máy tính áp dụng cho các cơ quan trường học, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
nghệ Thông tin chuyên ngành Kỹ Thuật
Máy Tính tại trường Đại học Bà Rịa – Vũng Tàu.
Để hoàn thành thành quá trình nghiên cứu và hoàn thiện luận văn này, lời đầu tiên
tôi xin chân thành cảm ơn sâu sắc đến thầy Phan Ngọc Hoàng của Viện Công nghệ
Thông tin – Điện – Điện tử. Thầy đã trực tiếp chỉ bảo và hướng dẫn tôi trong suốt
quá trình nghiên cứu để tôi có thể hoàn thiện luận văn này. Tôi cũng xin cảm ơn
thầy Cao Quang Tín thuộc trung tâm Công nghệ Thông tin Trường Đại học Bà Rịa
– Vũng Tàu đã phác họa ý tưởng và hướng dẫn tôi những bước đầu tiên của đề tài
này.
Ngoài ra, tôi xin cảm ơn tất cả các thầy cô thuộc viện Công nghệ Thông tin – Điện
– Điện tử. Kho kiến thức quý giá và tinh thần tiếp lửa tràn đầy nhiệt huyết của các
thầy cô có lẽ là thứ quý giá nhất tôi nhận được trong 4 năm học tập tại Trường Đại
học Bà Rịa – Vũng Tàu.
Nhân dịp này, tôi cũng xin cảm ơn Viện Công nghệ Thông tin – Điện – Điện tử,
Trường Đại học Bà Rịa – Vũng Tàu, lãnh đạo và các anh chị đã tạo điều kiện và
thời gian cho tôi trong suốt quá trình học tập và nghiên cứu.
Một lần nữa, tôi xin trân trọng cảm ơn.
2
LỜI CAM ĐOAN
Tôi xin cam đoan:
1 Những nội dung trong luận văn này là do tôi thực hiện
dưới sự hướng dẫn trực tiếp của thầy Phan Ngọc
Hoàng.
2 Mọi tham khảo dùng trong luận văn đều được trích dẫn
rõ ràng tên tác giả, tên công trình, thời gian, địa điểm
công bố.
3 Mọi sao chép không hợp lệ, vi phạm quy chế đào tạo,
hay gian trá,
tôi xin chịu hoàn toàn trách nhiệm.
Sinh viên
Lê Đức Anh Tuấn
3
Thuật ngữ, ký hiệu và chữ viết tắt
CSDL : Cơ sở dữ liệu.
[PK] : Primary key, khóa chính của bảng trong CSDL.
Phòng máy : Phòng có sử dụng máy tính.
Người dùng : Các cá nhân có quyền đăng nhập vào hệ thống nói chung.
Người sử dụng : Những người dùng hệ thống cấp thấp không có quyền quản
trị.
Nhân viên IT : Nhân viên làm việc trong hệ thống, được cấp một số quyền
quản trị nhất định.
4
MỤC LỤC
I. Đặt vấn đề ............................................................................................................ 8
II. Giải quyết vấn đề .............................................................................................. 9
III. Thực hiện đề tài .............................................................................................. 11
3.1. Thiết kế xây dựng CSDL ............................................................................ 11
3.1.1. Các đối tượng trong phạm vi làm việc.................................................. 11
3.1.2. Thiết kế cấu trúc cơ sở dữ liệu .............................................................. 12
3.1.2.1. Thông tin máy tính ......................................................................... 12
3.1.2.2. Thông tin linh kiện đã được lắp đặt máy tính ................................ 13
3.1.2.3. Thông tin phần cứng ....................................................................... 15
3.1.2.4. Thông tin người dùng ..................................................................... 17
3.1.2.5. Lịch sử cập nhật thông tin. ............................................................. 19
3.1.2.6. Thông tin phòng máy ...................................................................... 21
3.1.2.7. Thông tin Báo cáo người dùng ....................................................... 22
3.1.3. Phân tích thiết kế hệ thống .................................................................... 24
3.1.4. Quan hệ của các nhóm đối tượng thao tác ............................................ 27
3.1.5. Sơ đồ trang Web ................................................................................... 27
3.2. Thiết kế - Xây dựng trang Web ..................................................................... 29
3.2.1. Chức năng đăng nhập/Đăng xuất ............................................................ 33
3.2.2. Trang chủ Website ................................................................................... 34
3.2.2.1. Trang chủ của nhân viên IT và quản trị viên .................................... 34
3.2.2.2. Trang chủ của người dùng ................................................................. 35
3.2.3. Chức năng tìm kiếm – quản lý máy tính ................................................. 36
3.2.4. Chức năng thêm mới máy tính ................................................................ 42
3.2.5. Chức năng theo dõi lịch sử cập nhật hệ thống ........................................ 44
3.2.6. Chức năng Báo cáo vấn đề và Phản hồi báo cáo. .................................... 45
3.2.7. Chức năng Quản lý phần cứng ................................................................ 53
3.2.8. Chức năng Quản lý loại phần cứng – Hãng sản xuất .............................. 57
3.2.9. Chức năng Quản lý phòng máy ............................................................... 59
3.2.10. Chức năng quản lý người dùng ............................................................. 60
5
3.2.11. Chức năng quản lý tài khoản cá nhân ....................................................62
IV. Kết quả nghiên cứu .........................................................................................63
V. Tài liệu tham khảo ...............................................................................................64
Phụ lục: Code dùng trong chương trình ...................................................................67
1.Lớp DataAcessLayer .........................................................................................67
1.1. Dataprovider.cs ...........................................................................................67
1.2. Maytinh.cs ..................................................................................................68
1.3 Program.cs ...................................................................................................71
1.4 ThaoTacNguoiDung_DAO.cs .....................................................................71
1.5 ThongTinMayTinh_DAO.cs .......................................................................72
2. Lớp DataTransferObject .................................................................................73
2.1 Program.cs ...................................................................................................73
3. Lớp BusinessLogicLayer ................................................................................74
3.1 LichSuMayTinh.cs .......................................................................................74
3.2 Maytinh_BUS.cs ..........................................................................................76
3.9 User.cs........................................................................................................104
4. Lớp PresentationLayer .................................................................................105
4.1 Sitemaster.master .......................................................................................105
4.1.1 StyleMaster.Master.cs .........................................................................107
4.2 User.Master ................................................................................................108
4.2.1 User.Master.cs .....................................................................................110
4.3 TrangChu.aspx ...........................................................................................110
4.3.1 Trangchu.aspx.cs .................................................................................114
4.4 Quanlymaytinh.aspx ..................................................................................116
4.4.1 Quanlymaytinh.aspx.cs........................................................................118
4.5 ChinhSuaMayTinh.aspx ............................................................................120
4.5.1 ChinhSuaMayTinh.aspx.cs ..................................................................123
4.6 LichSuCapNhatMayTinh.aspx ..................................................................131
4.6.1 LichSuCapNhatMayTinh.aspx.cs ........................................................133
4.8 ChinhSuaPhanCung.aspx ..........................................................................139
4.8.1 ChinhSuaPhanCung.aspx.cs ................................................................140
6
4.9 ChiTietBaoCao.aspx .................................................................................. 142
4.9.1 ChiTietBaoCao.aspx.cs ....................................................................... 145
4.10 DangNhap.aspx ....................................................................................... 148
4.10.1 DangNhap.aspx.cs ............................................................................. 151
4.11 Logout.aspx ............................................................................................. 152
4.11.1 Logout.aspx.cs ................................................................................... 152
4.12 QuanLyLoaiPhanCung.aspx .................................................................... 153
4.12.1 QuanLyLoaiPhanCung.aspx.cs ......................................................... 155
4.13 QuanLyNguoiDung.aspx ......................................................................... 157
4.13.1 QuanLyNguoiDung.aspx.cs .............................................................. 160
4.14 QuanLyPhanCung.aspx ........................................................................... 165
4.15 Quanlyphongmay.aspx ............................................................................ 171
4.15.1 Quanlyphongmay.aspx.cs .................................................................. 172
4.16 Taikhoancanhan.aspx .............................................................................. 174
4.16.1 Taikhoancanhan.aspx.cs .................................................................... 176
4.17 Taikhoanuser.aspx ................................................................................... 177
4.17.1 Taikhoanuser.aspx.cs ........................................................................ 178
4.18 ThemMoiBaoCao.aspx ............................................................................ 179
4.18.1 ThemMoiBaoCao.aspx.cs ................................................................. 180
4.19 ThemMoiMayTinh.aspx .......................................................................... 180
4.19.1 ThemMoiMayTinh.aspx.cs ............................................................... 181
4.20 ThongBao.aspx ........................................................................................ 182
4.20.1 ThongBao.aspx.cs ............................................................................. 183
4.21 UserChiTietBaoCao.aspx ........................................................................ 185
4.21.1 UserChiTietBaoCao.aspx.cs ................................................................. 186
4.22 UserThongBao.aspx ................................................................................ 189
4.22.1 UserThongBao.aspx.cs ...................................................................... 190
4.23 UserTrangChu.aspx ................................................................................. 192
4.23.1 UserTrangChu.aspx.cs ...................................................................... 193
7
Lời nói đầu
I. Đặt vấn đề
Trên tinh thần đổi mới căn bản, toàn tiện nền giáo dục Việt Nam, báo cáo
chính trị của Ban chấp hành Trung ương Đảng khóa X đã chỉ ra: « Tiếp tục
phát triển và nâng cấp cơ sở vật chất - kỹ thuật cho các cơ sở giáo dục, đào
tạo. Đầu tư hợp lý, có hiệu quả xây dựng một số cơ sở giáo dục, đào tạo đạt
trình độ quốc tế. ». Cùng với những thay đổi căn bản về nội dung chương
trình và phương pháp dạy học, phát triển và nâng cấp cơ sở vật chất sẽ là
nhiệm vụ then chốt trong thời gian sắp tới của toàn bộ ngành Giáo dục.
Do đó, có thể thấy rằng Cơ sở vật chất của trường học sẽ là một yếu tố rất
quan trọng trong quá trình đảm bảo và nâng cao nội dung chất lượng giảng
dạy của nhà trường.
Hiểu rõ điều đó, Trường Đại học Bà Rịa – Vũng Tàu đã áp dụng nhiều biện
pháp quản lý Cơ sở vật chất trong thời gian qua, trong đó có hệ thống phần
mềm quản lý cơ sở vật chất Bước đầu, phần mềm đã nhận
được phản hồi tốt và nâng cao chất lượng quản lý cơ sở vật chất trong nhà
trường.
Bên cạnh đó, có một số nhóm đối tượng đặc thù mà những phần mềm quản
lý cơ sở vật chất chung chưa thể kiểm soát chặt chẽ, tiêu biểu cho nhóm đối
tượng này là Máy vi tính.
Bước vào thời đại 4.0, máy vi tính là công cụ quan trọng trong gần như mọi
hoạt động của xã hội nói chung và trường học nói riêng. Đại học Bà Rịa –
Vũng Tàu cũng không ngoại lệ. Kể từ khi thành lập đến nay, nhà trường luôn
cố gắng đưa công nghệ vào cuộc sống hằng ngày của sinh viên và giảng
viên. Chúng ta có thể kể đến một số công cụ rất mạnh mà nhà trường đã sử
dụng như Cổng thông tin điện tử cho sinh viên tại địa chỉ
8
sinhvien.bvu.edu.vn, cổng thông tin cho từng khoa cũng như website riêng
cho từng giảng viên. Những tiện ích vô cùng thực tế này đã tiết kiệm được
rất nhiều thời gian và công sức cho cả sinh viên lẫn giảng viên.
Đi cùng tiện ích này sẽ là một lượng lớn máy tính được sử dụng trong phạm
vi nhà trường. Do được triển khai đầu tư vào những thời điểm khác nhau trải
dài từ lúc trường Đại học Bà Rịa – Vũng Tàu vừa thành lập đến nay, các
máy tính này có chất lượng không đồng đều, tạo nên nhiều bất cập và khó
khăn trong công tác quản lý. Các phần mềm quản lý cơ sở vật chất thông
thường mới chỉ có khả năng kiểm soát đến từng đầu máy tính chứ chưa thể
đi sâu vào quản lý các thành phần bên trong như bộ nhớ truy xuất ngẫu nhiên
(RAM), vi xử lí trung tâm (CPU) hay các thành phần khác. Xuất phát từ thực
tiễn này, tôi đã chọn và nghiên cứu đề tài Hệ thống quản lý phần cứng máy
tính áp dụng cho các cơ quan trường học, áp dụng đầu tiên tại trường Đại
học Bà Rịa – Vũng Tàu.
II. Giải quyết vấn đề
Mục tiêu chính của đề tài hướng đến việc xây dựng ứng dụng Web hỗ trợ
khả năng quản lý các máy tính đang hoạt động trong phạm vi Trường Đại
học Bà Rịa – Vũng Tàu. Không chỉ vậy, ứng dụng web này cũng cần phải sở
hữu khả năng sửa đổi, nâng cấp hệ thống dễ dàng trong tương lai.
Trang Web sẽ cung cấp cho giảng viên, nhân viên IT và quản trị viên trang
web cái nhìn bao quát về hệ thống máy tính đang hoạt động trong nhà
trường. Do đó, trang Web sẽ cung cấp cho người dùng những tính năng
chính sau :
• Báo cáo lỗi từ phía người dùng và khả năng phản hồi trực tuyến của
nhân viên IT cũng như quản trị viên.
• Khả năng quản lý máy tính đến mức phần cứng cũng như quản lý các
loại phần cứng, hãng sản xuất phần cứng.
9
• Theo dõi lịch sử cập nhật của từng máy trên hệ thống, theo dõi quá
trình hệ thống làm việc.
• Thêm mới, chỉnh sửa, xóa từng máy tính cũng như linh kiện bên trong
máy tính.
• Hiển thị, tìm kiếm, lọc kết quả tìm kiếm máy tính cũng như phần cứng
máy tính.
• Quản lý hệ thống theo từng cơ sở và phòng máy.
• Trang trợ giúp cho người sử dụng.
Để thực hiện mục tiêu trên, đề tài sẽ tiến hành nghiên cứu xây dựng trang
Web quản lý hệ thống máy tính BVU phù hợp với :
• Công nghệ đang được sử dụng rộng rãi.
• Yêu cầu thực tiễn của công việc quản lý hệ thống máy tính.
• Nhu cầu thẩm mỹ của người sử dụng.
Ngoài ra, trang Web sẽ có thể phục vụ thêm nhiều chức năng phục vụ công
tác quản lý máy tính như :
• Theo dõi quá trình cập nhật thông tin của mọi thành phần dữ liệu trong
hệ thống
• Cung cấp thông tin về các thành phần linh kiện có mặt bên trong máy
tính
10
III. Thực hiện đề tài
3.1. Thiết kế xây dựng CSDL
Công việc chính của phần thiết kế CSDL nhằm thực hiện nhiệm vụ ghi nhận
và phân loại dữ liệu đầu vào của hệ thống máy tính mà trường Đại học Bà
Rịa – Vũng Tàu đang sử dụng để lưu trữ vào cơ sở dữ liệu đám mây phục vụ
cho công tác quản lý.
3.1.1. Các đối tượng trong phạm vi làm việc
Theo khảo sát về nhiệm vụ quản lý máy tính, các đối tượng và nhóm đối
tượng chính mà chương trình sẽ phải làm việc cùng gồm có :
a) Máy tính cá nhân
- Lưu trữ thông tin sơ bộ về máy tính : Tên máy, phòng máy, ngày
thêm mới vào hệ thống.
- Lưu trữ thông tin chi tiết về máy tính : Các phần cứng đang có trong
máy, trạng thái hoạt động, lịch sử thay đổi của máy tính.
- Các máy tính sẽ bao gồm nhiều phần cứng khác nhau. Các phần
cứng này sẽ có giới hạn nhất định về số lượng được lắp ráp trong từng
máy.
b) Hệ thống phần cứng
- Lưu trữ thông tin về những dòng phần cứng mà nhà trường đang sử
dụng. Ghi nhận về thời gian bắt đầu đưa vào sử dụng, số lượng, chi
tiết thành phần,.
- Lưu trữ thông tin về những phần cứng đang được sử dụng trong từng
máy tính, thời gian bắt đầu sử dụng, người sử dụng, trạng thái hoạt
động hiện tại,
c) Cơ sở vật chất
- Lưu trữ thông tin về những phòng máy đang được nhà trường sử
dụng. Ghi nhận những thay đổi đã và sẽ xảy ra của những máy tính có
trong phòng máy.
11
- Lưu trữ thông tin về vị trí phòng máy, ngày đi vào hoạt động, trạng
thái hoạt động của phòng máy.
3.1.2. Thiết kế cấu trúc cơ sở dữ liệu
3.1.2.1. Thông tin máy tính
Để tiến hành quản lý một cách hiệu quả, các máy tính được phân biệt với
nhau bằng mã số id. Các mã id này là độc nhất, không trùng hợp. Ngoài ra,
thông tin máy tính cơ bản cũng bao gồm tên máy, ngày đăng ký vào hệ
thống, người đăng ký vào hệ thống, vị trí máy tính (nằm ở phòng máy nào)
và trạng thái máy tính hiện tại.
Các thông tin cần lưu trữ :
• Tên máy tính : Tên của máy tính. Các máy tính khác nhau được phân
biệt qua mã định danh. Mã định danh do hệ thống tự xử lí, người dùng
chỉ thao tác với tên máy tính.
• Vị trí hiện tại của máy tính : Là tài sản của nhà trường, mỗi máy tính
cần được bố trí trong một phòng máy/phòng làm việc nhất định. Do
đó, máy tính sẽ được gán cùng phòng máy để tiện cho việc quản lý.
- Vị trí hiện tại của máy tính được biểu diễn bằng mã số của phòng
máy/phòng làm việc mà máy tính đó đang được đặt vào.
- Thông tin cơ sở được gắn liền với thông tin phòng máy. Do đó,
không cần lưu trữ thông tin cơ sở chung với thông tin máy tính.
• Thời gian đăng ký máy tính : Đánh dấu thời gian máy tính đang làm
việc bắt đầu tham gia vào hệ thống.
- Thời gian máy tính bắt đầu tham gia vào hệ thống được tính bằng
thời gian mã định danh của máy tính xuất hiện trên hệ thống.
- Thời gian đăng ký máy tính được ghi lại theo định dạng : yyyy-MM-
dd HH:mm:ss phù hợp với kiểu dữ liệu DATETIME của hệ quản trị
CSDL MySQL.
12
• Người đăng ký máy tính vào hệ thống : Người thêm mới máy tính vào
hệ thống, dùng cho công tác quản lý.
- Mỗi máy tính chỉ có duy nhất một người đăng ký và không thay đổi
trong suốt quá trình hoạt động của hệ thống.
- Người đăng ký máy tính được ghi nhận ngay từ lúc máy tính có mã
định danh.
Dựa vào những yêu cầu trên, thông tin cơ bản về máy tính có thể được biểu
diễn trong một bảng của CSDL như sau :
Bảng 1. Cấu trúc bảng lưu trữ thông tin cơ bản của máy tính
Tên trường Giải thích nội dung
[PK] idMay Đánh số id cho từng máy tính
Tenmay Tên của máy tính
Status Trạng thái hoạt động của máy tính
idPhong Mã định danh của phòng máy chứa máy tính đang thao tác
ThoiGianThemMoi Thời gian máy tính được đăng ký vào hệ thống
NguoiThemMoi Người dùng đăng ký máy vào hệ thống
3.1.2.2. Thông tin linh kiện đã được lắp đặt máy tính
Trên thực tế, mỗi máy tính có thể có nhiều linh kiện khác nhau và không
giống nhau về những loại phần cứng mà chúng được trang bị. Chẳng hạn,
cùng một tổng dung lượng RAM 4 GB, máy tính A có thể sử dụng 4 thanh
RAM 1 GB còn máy tính B sử dụng 2 thanh RAM 2 GB.
Do đó, hệ thống sẽ lưu trữ thông tin của tất cả các phần cứng được sử dụng
trong tất cả các máy tính. Trong quá trình truy vấn dữ liệu, tiến hành đối
chiếu bảng thông tin linh kiện với bảng Thông tin phần cứng (Bảng 3) và
bảng Thông tin máy tính (Bảng 1) trong quá trình sử dụng sẽ là biện pháp tốt
nhất.
Các thông tin cần lưu trữ :
13
• Máy tính sử dụng phần cứng : Mỗi máy tính lại có một cách lắp đặt
linh kiện khác nhau. Do đó, cần lưu lại mã định danh của máy tính để
phân biệt.
- Một số loại phần cứng có thể được lắp với số lượng nhiều hơn 1 trên
máy tính. Vì vậy, mã định danh của máy tính không thể được dùng
như cột ID của bảng.
• Loại phần cứng : Thông tin cụ thể về linh kiện được lắp đặt trong máy
tính. Thông tin này được lấy trực tiếp từ cơ sở dữ liệu của chương
trình.
• Thời gian thêm mới linh kiện : Được ghi lại theo định dạng : yyyy-
MM-dd HH:mm:ss phù hợp với kiểu dữ liệu DATETIME của hệ quản
trị CSDL MySQL.
- Thời gian thêm mới linh kiện được tính theo thời gian cập nhật vào
hệ thống, không phải thời gian lắp đặt thực tế của linh kiện.
• Người thêm mới phần cứng : Người thêm mới máy tính vào hệ thống,
dùng cho công tác quản lý.
- Người đăng ký máy tính được ghi nhận từ lúc linh kiện có mã định
danh.
Dựa vào yêu cầu trên, thông tin về những phần cứng được lắp đặt trong máy
tính có thể được biểu diễn trong bảng của CSDL như sau :
Bảng 2. Cấu trúc bảng lưu trữ thông tin phần cứng máy tính
Tên trường Giải thích nội dung
[PK] id Mã định danh cho linh kiện hiện tại đang thao tác, dùng để
liên kết giữa máy tính và phần cứng.
idMayTinh Mã định danh của máy tính mà linh kiện này đang lắp vào.
idPhanCung Mã số định danh của loại linh kiện đang thao tác, dùng để
tham chiếu qua bảng Thông tin phần cứng (Bảng 3)
14
NgayThemMoi Ngày thêm mới phần cứng vào máy tính.
NguoiThemMoi Người thêm mới phần cứng.
3.1.2.3. Thông tin phần cứng
Mỗi kiểu phần cứng sẽ thuộc một loại phần cứng xác định được tham chiếu
bằng bảng Loại phần cứng (Bảng 4). Ngoài ra, mỗi kiểu phần cứng sẽ có một
nhà sản xuất xác định (được tham chiếu qua bảng 5) và hình ảnh minh họa đi
kèm.
Các thông tin cần lưu trữ :
• Tên của kiểu phẩn cứng :
• Nhà sản xuất : Được tham chiếu trên dữ liệu về các nhà sản xuất phần
cứng đang có trong hệ thống (Bảng 5). Mỗi kiểu phần cứng chỉ có
một nhà sản xuất xác định.
• Thời gian cập nhật : Được ghi lại theo định dạng : yyyy-MM-dd
HH:mm:ss phù hợp với kiểu dữ liệu DATETIME của hệ quản trị
CSDL MySQL.
- Thời gian cập nhật được xác định theo thời gian mà kiểu phần cứng
được đăng ký lên hệ thống.
• Loại phần cứng : Được tham chiếu trên dữ liệu về loại phần cứng
đang có trên hệ thống (Bảng 4). Mỗi kiểu phần cứng chỉ thuộc một
loại phần cứng xác định.
• Hình ảnh : Đường dẫn đến hình ảnh minh họa của kiểu phần cứng.
• Mô tả phần cứng : Đưa ra mô tả chi tiết về kiểu phần cứng.
• Trạng thái : Trạng thái hoạt động của phần cứng trong hệ thống.
- Phần cứng không hoạt động sẽ không xuất hiện trong các tùy chọn
thêm mới phần cứng cũng như chỉnh sửa phần cứng. Tuy nhiên,
những máy tính đã được lắp đặt phần cứng này vẫn sẽ nhìn thấy thông
tin như bình thường.
15
Dựa vào các yêu cầu trên, chúng ta có thể thành lập bảng lưu trữ thông tin
của các linh kiện máy tính vào cơ sở dữ liệu như sau :
Bảng 3. Cấu trúc bảng lưu trữ thông tin kiểu phần cứng
Tên trường Giải thích nội dung
[PK] Mã định danh của kiểu phần cứng
idphancung
TenPhanCung Tên gọi của kiểu phần cứng
NhaSanXuat Mã định danh của nhà sản xuất phần cứng
NgayCapNhat Thời gian cập nhật kiểu phần cứng vào hệ thống
LoaiPhanCung Mã định danh của loại phần cứng
HinhAnh Đường dẫn đến hình ảnh minh họa của phần cứng.
MoTa Mô tả về phần cứng.
TrangThai Trạng thái hiện tại của phần cứng
Tuy có nhiều kiểu phần cứng nhưng chỉ có một số loại phần cứng nhất định
có thể được gắn vào máy tính và mỗi máy tính cũng chỉ có khả năng gắn một
lượng xác định các thiết bị cùng loại vào trong cùng một thời điểm. Do đó,
chúng ta cần lưu trữ những thông tin sau về loại phần cứng :
• Tên loại phần cứng : Giúp người dùng phân biệt dễ dàng từng loại
phần cứng
• Giới hạn số lượng : Số lượng phần cứng tối đa cùng một loại có thể
được lắp đặt trong máy tính.
- Các phần cứng khác kiểu nhưng cùng loại sẽ được hệ thống tính
chung.
Vì vậy, chúng ta có bảng sau để lưu trữ thông tin theo yêu cầu :
16
Bảng 4. Cấu trúc bảng lưu trữ thông tin Loại phần cứng
Tên trường Giải thích nội dung
[PK] Mã định danh của loại phần cứng
idLoaiPhanCung
TenLoaiPhanCung Tên của loại phần cứng
GioiHanSoLuong Giới hạn số lượng của những linh kiện cùng loại
trong cùng một máy tính.
TrangThai Trạng thái hiện tại của loại phần cứng
Ngoài ra, thông tin về nhà sản xuất phần cứng cũng là một nhóm dữ liệu cần
được lưu trữ.
Chúng ta có bảng sau dùng để lưu trữ thông tin nhà sản xuất phần cứng :
Bảng 5. Cấu trúc bảng lưu trữ thông tin nhà sản xuất
Tên trường Giải thích nội dung
[PK] Mã định danh của nhà sản xuất
idNhaSanXuat
TenNhaSanXuat Tên gọi của nhà sản xuất
TrangThai Trạng thái hiện tại của nhà sản xuất
3.1.2.4. Thông tin người dùng
Với 3 nhóm người dùng : Quản trị viên, kỹ thuật viên và giảng viên, chúng
ta cần có các thông tin đăng nhập cơ bản như tài khoản mật khẩu, thời gian
bắt đầu gia nhập hệ thống và quan trọng nhất là thông tin về vai trò của user
trong hệ thống. Do đó, chúng ta cần lưu trữ những thông tin sau :
• Tên đăng nhập : Tên đăng nhập của người dùng. Mỗi một người dùng
sẽ có một tên đăng nhập duy nhất trên hệ thống và không thể trùng
lặp.
• Mật khẩu : Mật khẩu đăng nhập của người dùng. Mật khẩu
17
• Quyền hạn : Quyền hạn đăng nhập hệ thống của người dùng. Có 3 cấp
độ quyền hạn : Người dùng, nhân viên IT và quản trị viên.
- Người dùng có thể đăng nhập, xem tình trạng về tài khoản cá nhân,
xem lại các báo cáo vấn đề mình đã gửi lên hệ thống, tạo mới báo cáo,
xem trạng thái báo cáo, thay đổi thông tin cá nhân.
- Nhân viên IT có thể đăng nhập, xem tình trạng hệ thống, thêm mới,
xóa, thay thế phần cứng trong máy tính, xem thông tin về loại phần
cứng – hãng sản xuất phần cứng, xem thông tin về người dùng, xem
lịch sử cập nhật hệ thống, xem lịch sử cập nhật máy tính, xem những
báo cáo của người dùng thuộc trách nhiệm xử lí của mình, thay đổi
trạng thái của báo cáo vấn đề.
- Quản trị viên là nhân sự có quyền tối đa của hệ thống. Quản trị viên
có thể đăng nhập, xem tình trạng hệ thống, thêm mới máy tính, chỉnh
sửa thông tin máy tính, Thêm, sửa, xóa toàn bộ các thông tin liên quan
về kiểu phần cứng – loại phần cứng – hãng sản xuất phần cứng. Quản
trị viên cũng có toàn quyền điều chỉnh thông tin của các người dùng
trong hệ thống, có thể xem báo cáo của người dùng và chỉ thị nhân
viên giải quyết vấn đề đó. Ngoài ra, quản trị viên còn có thể đóng báo
cáo vấn đề đã xử lí hoàn thành.
• Ngày tham gia hệ thống : Thời gian người dùng được thêm mới vào hệ
thống.
• Người thêm mới user : Người thêm mới người dùng vào hệ thống
• Trạng thái hoạt động của người dùng : Đang hoạt động hoặc không.
Nếu người dùng không hoạt động, tạm thời quyền đăng nhập hệ thống
của người dùng sẽ bị khóa.
Để lưu trữ những thông tin trên, chúng ta có bảng sau thoả mãn yêu cầu :
18
Bảng 6. Cấu trúc bảng lưu trữ thông tin người dùng
Tên trường Giải thích nội dung
[PK]idNguoiDung Mã định danh của người dùng
TenDangNhap Tên đăng nhập của người dùng
MatKhau Mật khẩu của người dùng
Role Vai trò của người dùng trên hệ thống
NgayThemMoi Thời gian người dùng tham gia vào hệ thống
NguoiThemMoi Người thêm mới người dùng
TrangThai Trạng thái hoạt động của người dùng
Ngoài ra, chúng ta cần thêm một bảng phụ lưu giữ danh mục vai trò của
người dùng trong hệ thống. Cấu trúc bảng như sau :
Bảng 7. Cấu trúc bảng lưu trữ vai trò hệ thống của người dùng
Tên trường Giải thích nội dung
[PK]idQuyen Mã định danh của quyền
TenQuyen Tên quyền người dùng
3.1.2.5. Lịch sử cập nhật thông tin.
Mỗi máy tính có thể trải qua nhiều lần sửa chữa, nâng cấp với rất nhiều khác
biệt về mặt phần cứng. Do đó, việc ghi nhận lại lịch sử thay đổi của từng
máy tính là điều cần thiết. Để làm được việc này, chúng ta cần lưu lại những
thông tin sau :
• Máy tính được thay đổi : Mã định danh của máy tính thực hiện thay
đổi, đối chiếu qua bảng 1.
• Phần cứng được thay đổi : Mã định danh của phần cứng được thay
đổi, đối chiếu qua bảng 2.
• Mục đích thay đổi : Xóa, sửa, thêm mới.
• Thời gian diễn ra : Thời gian diễn ra hoạt động cập nhật, được ghi
nhận tại thời điểm cập nhật thông tin lên hệ thống.
19
• Người tiến hành : Người tiến hành cập nhật thông tin.
Để thực hiện yêu cầu trên, chúng ta có bảng trong CSDL :
Bảng 8. Cấu trúc bảng lưu trữ thông tin về lịch sử thay đổi của máy tính
Tên trường Giải thích nội dung
[PK]idThayDoi Mã định danh của lần thay đổi
idMayTinh Mã định danh của máy tính tiến hành thay đổi
idPhanCung Mã định danh của phần cứng được thay đổi
GhiChu Nội dung thay đổi
ThoiGian Thời gian tiến hành thay đổi
NguoiThayDoi Người tiến hành thay đổi
Ngoài ra, những thay đổi khác trong hệ thống cũng cần được ghi nhận lại
như thêm máy tính, xóa máy tính, thêm mới người dùng, sửa đổi thông tin
phần cứng, cập nhật thông tin người dùng, Để làm được việc này, chúng ta
cần lưu lại những thông tin sau :
• Nội dung cập nhật : Ghi nhận lại nội dung cập nhật đã được thực hiện.
• Máy tính (tùy chọn) : Ghi nhận lại máy tính đã được thao tác. Tuy
nhiên, không phải mọi hoạt động cập nhật hệ thống đều là hành động
cập nhật máy tính. Do đó, đây chỉ là một thông tin bổ sung thêm.
• Thời gian : Thời gian ............................................
. ....................................................................................................................
4. Đánh giá kết quả đề tài:
. ....................................................................................................................
. ....................................................................................................................
. ....................................................................................................................
. ....................................................................................................................
. ....................................................................................................................
. ....................................................................................................................
Giảng viên hướng dẫn
(Ký ghi rõ họ tên)
66
Phụ lục: Mã nguồn dùng trong chương trình
1.Lớp DataAcessLayer
1.1. Dataprovider.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
namespace DataAccessLayer
{
public class DataProvider
{
public static MySqlConnection MoKetNoi()
{
string connectionstring = "Server=13.67.38.34;Database=
Quanlymaytinh;port=3306;User Id=bvu;password=bariavungtau; CharSet=utf8";
MySqlConnection ketnoi = new MySqlConnection(connectionstring);
ketnoi.Open();
return ketnoi;
}
public static void DongKetNoi(MySqlConnection connection)
{
connection.Close();
}
public static DataTable TruyVanDuLieu(string struyvan, MySqlConnection
KetNoi)
{
MySqlDataAdapter da = new MySqlDataAdapter(struyvan, KetNoi);
DataTable dt = new DataTable();
da.Fill(dt);
KetNoi.Close();
return dt;
}
public static bool TruyVanKhongLayDuLieu(string struyvan, MySqlConnection
KetNoi)
{
try
{
MySqlCommand cm = new MySqlCommand(struyvan, KetNoi);
cm.ExecuteNonQuery();
KetNoi.Close();
return true;
}
catch (Exception)
{
KetNoi.Close();
return false;
}
}
public static bool KiemTraDangNhap(string TenDangNhap, string MatKhau,
MySqlConnection KetNoi)
{
string sTruyVan = "SELECT * FROM login WHERE tendangnhap='" +
TenDangNhap + "' and matkhau='" + MatKhau + "';";
MySqlCommand KiemTra = new MySqlCommand(sTruyVan, KetNoi);
MySqlDataReader res = KiemTra.ExecuteReader();
KetNoi.Close();
67
return res.HasRows;
}
}
}
1.2. Maytinh.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using DataTransferObject;
namespace DataAccessLayer
{
public class MayTinh_DAO
{
//
static MySqlConnection con;
public static List LayThongTinMayTinh()
{
string sTruyVan = "SELECT * FROM Quanlymaytinh.thongtinmaytinh;";
con = DataProvider.MoKetNoi();
DataTable dt = DataProvider.TruyVanDuLieu(sTruyVan, con);
if (dt.Rows.Count == 0) { return null; }
List lstThongTin = new
List();
for (int i = 0; i < dt.Rows.Count; i++)
{
ThongTinMayTinh_DTO ThongTin = new ThongTinMayTinh_DTO();
ThongTin.SIdMay = dt.Rows[i]["idmay"].ToString();
ThongTin.SCPU = dt.Rows[i]["CPU"].ToString();
ThongTin.STenMayTinh = dt.Rows[i]["tenmaytinh"].ToString();
ThongTin.SHeDieuHanh = dt.Rows[i]["hedieuhanh"].ToString();
ThongTin.SPhienBanHeDieuHanh =
dt.Rows[i]["phienbanhedieuhanh"].ToString();
ThongTin.SUser = dt.Rows[i]["User"].ToString();
lstThongTin.Add(ThongTin);
}
return lstThongTin;
}
public static bool dangnhap(string tendangnhap, string matkhau)
{
con = DataProvider.MoKetNoi();
return DataProvider.KiemTraDangNhap(tendangnhap, matkhau, con);
}
public static DataTable LayDuLieu(string queryString)
{
con=DataProvider.MoKetNoi();
DataTable dt = new DataTable();
dt = DataProvider.TruyVanDuLieu(queryString, con);
return dt;
}
public static bool ChayLenhSQL(string queryString)
{
con = DataProvider.MoKetNoi();
return DataProvider.TruyVanKhongLayDuLieu(queryString, con);
}
public static bool SaoLuuPhanCung(string idphancungmaytinh) //clone phần
cứng có id gốc vào bảng lịch sử thay đổi
68
{
bool a;
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu("SELECT * FROM Phancungmaytinh
WHERE id='" + idphancungmaytinh + "'");
if (dt.Rows.Count == 0) return false;
else
{
string idmay;
idmay = dt.Rows[0][1].ToString();
string idphancung;
idphancung = dt.Rows[0][2].ToString();
a = ThongTinMayTinh_DAO.ChayLenhSQL("INSERT INTO
LichSuPhanCung(idMayTinh, idPhanCung) VALUES ('" + idmay + "', '" + idphancung +
"');");
return a;
}
}
public static void CapNhatMayCuoiCungChinhSuaTrongPhong(string idmay)
{
string q;
q = "UPDATE `Quanlymaytinh`.`PhongMay` SET `MayCapNhatCuoi` =
'"+idmay+"' WHERE (`idPhongMay` = '"+idPhong(idmay)+"');";
bool a;
a = MayTinh_DAO.ChayLenhSQL(q);
}
public static bool SaoLuuPhanCung(string idphancungmaytinh, string GhiChu,
string TenNguoiSua)
{
CapNhatMayCuoiCungChinhSuaTrongPhong(idMay(idphancungmaytinh));
bool a;
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu("SELECT * FROM Phancungmaytinh
WHERE id='" + idphancungmaytinh + "'");
if (dt.Rows.Count == 0) return false;
else
{
string idmay;
idmay = dt.Rows[0][1].ToString();
string idphancung;
idphancung = dt.Rows[0][2].ToString();
a = ThongTinMayTinh_DAO.ChayLenhSQL("INSERT INTO
LichSuPhanCung(idMayTinh, idPhanCung, GhiChu, NguoiThayDoi, ThoiGian) VALUES ('" +
idmay + "', '" + idphancung + "', '"+GhiChu+"', '"+TenNguoiSua+"',
'"+DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "');");
return a;
}
}
public static bool XoaPhanCung(string idphancungmaytinh, string
TenNguoiSua)
{
bool a;
string query;
if (SaoLuuPhanCung(idphancungmaytinh, "Xóa phần cứng", TenNguoiSua))
{
query = "DELETE FROM `Quanlymaytinh`.`Phancungmaytinh` WHERE (`id`
= '" + idphancungmaytinh + "'); ";
a = MayTinh_DAO.ChayLenhSQL(query);
return a;
}
else
{
69
return false;
}
}
public static bool CapNhatPhanCung(string idBangPhanCung, string
idPhanCungMoi, string tennguoisua) //Cập nhật lại phần cứng được chọn, phần cứng
cũ bỏ vào bảng lichsuphancung
//idBangPhanCung (cột 0 của bảng) là id của tổ hợp máy tính và idphần
cứng, miêu tả số thứ tự phần cứng được đăng ký trong bảng
{
bool a;
a = MayTinh_DAO.SaoLuuPhanCung(idBangPhanCung, "Cập nhật phần cứng",
tennguoisua);
if (a == false) return false;
else
{
string query;
query = "UPDATE `Quanlymaytinh`.`Phancungmaytinh` SET `idphancung`
= '" + idPhanCungMoi + "' WHERE (`id` = '" + idBangPhanCung + "');";
a = MayTinh_DAO.ChayLenhSQL(query);
query= "UPDATE `Quanlymaytinh`.`Phancungmaytinh` SET
`NguoiThemMoi` = '" + tennguoisua + "' WHERE (`id` = '" + idBangPhanCung + "');";
a = MayTinh_DAO.ChayLenhSQL(query);
query = "UPDATE `Quanlymaytinh`.`Phancungmaytinh` SET
`NgayThemMoi`= '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' WHERE (`id`
= '" + idBangPhanCung + "');";
a = MayTinh_DAO.ChayLenhSQL(query);
return a;
}
}
public static string idPhanCungMoiNhat()
{
string query = "SELECT DISTINCT id FROM Phancungmaytinh ORDER BY id
desc LIMIT 1;";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt.Rows[0][0].ToString();
}
public static bool ThemMoiPhanCung(string idMayTinh, string idPhanCungMoi,
string TenNguoiThem)
{
bool a;
string query;
string formatForMySql = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
query = "INSERT INTO `Quanlymaytinh`.`Phancungmaytinh`(idmaytinh,
idphancung,NgayThemMoi, NguoiThemMoi) VALUES ('" + idMayTinh + "', '" +
idPhanCungMoi + "', '"+formatForMySql+"', '"+TenNguoiThem+"');";
a = MayTinh_DAO.ChayLenhSQL(query);
a = SaoLuuPhanCung(idPhanCungMoiNhat(), "Thêm mới", TenNguoiThem);
return a;
}
public static DataTable LocPhanCungTheoIdMayTinh(string idmaytinh) //Lấy
tất cả các phần cứng gắn với id máy được nhập
{
bool a;
string query;
query = "SELECT * FROM Phancungmaytinh WHERE idmaytinh='" + idmaytinh
+ "';";
DataTable dt;
dt = MayTinh_DAO.LayDuLieu(query);
return dt;
}
70
public static DataTable TimKiemMayTinh(string keyword) //Tìm kiếm mọi máy
tính có dính đến keyword, có thể là phòng máy, cơ sở, tên máy tính,..
{
string query;
query = "SELECT * FROM Quanlymaytinh.maytinh, Quanlymaytinh.PhongMay,
Quanlymaytinh.CoSo where Quanlymaytinh.maytinh.idPhong =
Quanlymaytinh.PhongMay.idPhongMay and
Quanlymaytinh.PhongMay.idCoSo=Quanlymaytinh.CoSo.idCoSo and (tenmay like '%" +
keyword + "%' or TenPhongMay like '%" + keyword + "%' or TenCoSo like '%" +
keyword + "%'); ";
DataTable dt;
dt = MayTinh_DAO.LayDuLieu(query);
return dt;
}
public static string idPhong(string idmaytinh)
{
string q;
DataTable dt;
q = "SELECT * FROM maytinh WHERE idmay='" + idmaytinh + "';";
dt = MayTinh_DAO.LayDuLieu(q);
q = dt.Rows[0]["idPhong"].ToString();
return q;
}
public static string idMay(string idphancung)
{
string q;
DataTable dt;
q = "SELECT * FROM Phancungmaytinh WHERE id='" + idphancung + "';";
dt = MayTinh_DAO.LayDuLieu(q);
q = dt.Rows[0]["idMayTinh"].ToString();
return q;
}
}
}
1.3 Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataAccessLayer
{
static class Program
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
1.4 ThaoTacNguoiDung_DAO.cs
using System;
using System.Collections.Generic;
71
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
namespace DataAccessLayer
{
public class ThaoTacNguoiDung_DAO
{
static MySqlConnection con;
public static DataTable TruyVanDataTable(string querry)
{
con = DataProvider.MoKetNoi();
DataTable dt = new DataTable();
dt = DataProvider.TruyVanDuLieu(querry, con);
return dt;
}
}
}
1.5 ThongTinMayTinh_DAO.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using DataTransferObject;
namespace DataAccessLayer
{
public class ThongTinMayTinh_DAO
{
//
static MySqlConnection con;
public static List LayThongTinMayTinh()
{
string sTruyVan = "SELECT * FROM Quanlymaytinh.thongtinmaytinh;";
con = DataProvider.MoKetNoi();
DataTable dt = DataProvider.TruyVanDuLieu(sTruyVan, con);
if (dt.Rows.Count == 0) { return null; }
List lstThongTin = new
List();
for (int i = 0; i < dt.Rows.Count; i++)
{
ThongTinMayTinh_DTO ThongTin = new ThongTinMayTinh_DTO();
ThongTin.SIdMay = dt.Rows[i]["idmay"].ToString();
ThongTin.SCPU = dt.Rows[i]["CPU"].ToString();
ThongTin.STenMayTinh = dt.Rows[i]["tenmaytinh"].ToString();
ThongTin.SHeDieuHanh = dt.Rows[i]["hedieuhanh"].ToString();
ThongTin.SPhienBanHeDieuHanh =
dt.Rows[i]["phienbanhedieuhanh"].ToString();
ThongTin.SUser = dt.Rows[i]["User"].ToString();
lstThongTin.Add(ThongTin);
}
return lstThongTin;
}
public static bool dangnhap(string tendangnhap, string matkhau)
{
72
con = DataProvider.MoKetNoi();
return DataProvider.KiemTraDangNhap(tendangnhap, matkhau, con);
}
public static DataTable LayDuLieu(string queryString)
{
con=DataProvider.MoKetNoi();
DataTable dt = new DataTable();
dt = DataProvider.TruyVanDuLieu(queryString, con);
return dt;
}
public static bool ChayLenhSQL(string queryString)
{
con = DataProvider.MoKetNoi();
return DataProvider.TruyVanKhongLayDuLieu(queryString, con);
}
}
}
2. Lớp DataTransferObject
2.1 Program.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace DataTransferObject
{
static class Program
{
///
/// The main entry point for the application.
///
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
}
}
2.2 ThongTinMayTinh_DTO.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DataTransferObject
{
public class ThongTinMayTinh_DTO
{
private string sIdMay;
public string SIdMay
{
get { return sIdMay; }
set { sIdMay = value; }
}
private string sTenMayTinh;
public string STenMayTinh
73
{
get { return sTenMayTinh; }
set { sTenMayTinh = value; }
}
private string sCPU;
public string SCPU
{
get { return sCPU; }
set { sCPU = value; }
}
private string sHeDieuHanh;
public string SHeDieuHanh
{
get { return sHeDieuHanh; }
set { sHeDieuHanh = value; }
}
private string sPhienBanHeDieuHanh;
public string SPhienBanHeDieuHanh
{
get { return sPhienBanHeDieuHanh; }
set { sPhienBanHeDieuHanh = value; }
}
private string sUser;
public string SUser
{
get { return sUser; }
set { sUser = value; }
}
}
}
3. Lớp BusinessLogicLayer
3.1 LichSuMayTinh.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataAccessLayer;
using DataTransferObject;
using System.Data;
namespace BusinessLogicLayer
{
public class LichSuMayTinh_BUS
{
public static DataTable LayLichSuPhanCungMayTinh(string idmay)
{
//bool a;
DataTable dt;
string query = "SELECT * FROM LichSuPhanCung WHERE idMayTinh='" +
idmay + "';";
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable LoadLichSuMayTinh()
{
DataTable dt;
string query;
query = "SELECT * FROM LichSuMayTinh ORDER BY ThoiGian DESC;";
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
74
}
public static DataTable LoadLichSuMayTinh(string idmay)
{
DataTable dt;
string query;
query = "SELECT * FROM LichSuMayTinh WHERE idMayTinh='"+idmay+ "'
ORDER BY ThoiGian DESC;;";
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static bool ThemMoiLichSu(string idmaytinh, string NoiDung, string
NguoiThaoTac)
{
string query;
query = "INSERT INTO `Quanlymaytinh`.`LichSuMayTinh` (`idMayTinh`,
`NoiDung`, `ThoiGian`, `NguoiThaoTac`) VALUES ('"+idmaytinh+"', '"+NoiDung+"', '"+
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "', '"+NguoiThaoTac+"');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static string TestThemMoiLichSu(string idmaytinh, string NoiDung,
string NguoiThaoTac)
{
string query;
query = "INSERT INTO `Quanlymaytinh`.`LichSuMayTinh` (`idMayTinh`,
`NoiDung`, `ThoiGian`, `NguoiThaoTac`) VALUES ('" + idmaytinh + "', '" + NoiDung +
"', '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "', '" + NguoiThaoTac +
"');";
return query;
}
public static DataTable TimKiemLichSuMayTinh(string NoiDung, string
NguoiThaoTac, DateTime ThoiGianDau, DateTime ThoiGianCuoi)
{
string query;
query = "";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable TimKiemLichSuMayTinh(string NoiDung, string
NguoiThaoTac)
{
string query;
query = "SELECT * FROM LichSuMayTinh WHERE LichSuMayTinh.NoiDung LIKE
'%"+NoiDung+"%' and LichSuMayTinh.NguoiThaoTac='"+NguoiThaoTac+"' ORDER BY
ThoiGian DESC;";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable TimKiemLichSuMayTinh(string NoiDung)
{
string query;
query = "SELECT * FROM LichSuMayTinh WHERE LichSuMayTinh.NoiDung LIKE
'%" + NoiDung + "%' or LichSuMayTinh.NoiDung LIKE '"+NoiDung+"%' or
LichSuMayTinh.NoiDung LIKE '%"+NoiDung+"' or LichSuMayTinh.NguoiThaoTac LIKE '%" +
NoiDung + "%' ORDER BY ThoiGian DESC;";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
75
public static DataTable TimKiemLichSuMayTinh(string NoiDung, string
Ngaybatdau, string Ngayketthuc)
{
string query;
query = "SELECT * FROM LichSuMayTinh WHERE (LichSuMayTinh.NoiDung LIKE
'%" + NoiDung + "%' or LichSuMayTinh.NguoiThaoTac LIKE '%" + NoiDung + "%') and
LichSuMayTinh.ThoiGian BETWEEN '"+Ngaybatdau+"' AND '"+Ngayketthuc+"' ORDER BY
ThoiGian DESC;";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
}
}
3.2 Maytinh_BUS.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataAccessLayer;
using DataTransferObject;
using System.Data;
namespace BusinessLogicLayer
{
public class MayTinh_BUS
{
public static List LayThongTin()
{
return ThongTinMayTinh_DAO.LayThongTinMayTinh();
}
public static bool KiemTraDangNhap(string tendangnhap, string matkhau)
{
return ThongTinMayTinh_DAO.dangnhap(tendangnhap, matkhau);
}
public static DataTable LayThongTinDataTable(string querryString)
{
DataTable dt = new DataTable();
dt = ThongTinMayTinh_DAO.LayDuLieu(querryString);
return dt;
76
}
//public static bool ThemMoiPhancung(string TenPhanCung, string
idNhaSanXuat, string giathanh, string idLoaiPhanCung)
//{
// string queryString;
// queryString = "INSERT INTO `Quanlymaytinh`.`phancung`
(`tenphancung`, `nhasanxuat`, `giathanh`, `loaiphancung`) VALUES
('"+TenPhanCung+"', '"+idNhaSanXuat+"', '"+giathanh+"', '"+idLoaiPhanCung+"');";
// bool a;
// a = ThongTinMayTinh_DAO.ChayLenhSQL(queryString);
// return a;
//}
public static bool XoaMayTinh(string idmay) //Tạm thời vô hiệu hóa máy
tính trong hệ thống, status=1
{
string query;
//query = "UPDATE `Quanlymaytinh`.`Phancungmaytinh` SET `TrangThai` =
'1' WHERE (`id` = '9');";
query = "UPDATE `Quanlymaytinh`.`maytinh` SET `status` = '1' WHERE
(`idmay` = '"+idmay+"');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static bool XoaMayTinh(string idmay, bool check) //Xóa hẳn máy
tính, kể cả check true/false, dùng overload
{
string queryString;
queryString = "DELETE FROM `Quanlymaytinh`.`maytinh` WHERE (`idmay` =
'" + idmay + "');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(queryString);
queryString = "DELETE FROM `Quanlymaytinh`.`Phancungmaytinh` WHERE
(`idmaytinh` = '" + idmay+"');";
bool b;
b = ThongTinMayTinh_DAO.ChayLenhSQL(queryString);
return a && b;
}
77
public static bool Xoamaytinh() //Xóa sạch các máy đang bị treo
(status=1), cẩn thận khi dùng
{
string query;
query = "DELETE FROM `Quanlymaytinh`.`maytinh` WHERE (status='1');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static bool CapNhatMayTinh(string idMay, string TenMay, string
idPhong)
{
string query = "UPDATE `Quanlymaytinh`.`maytinh` SET `tenmay` =
'"+TenMay+"', `idPhong` = '"+idPhong+"' WHERE (`idmay` = '"+idMay+"');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static bool CapNhatMayTinh(string idMay, string TenMay, string
idPhong,string TenNguoiThayDoi)
{
string query = "UPDATE `Quanlymaytinh`.`maytinh` SET `tenmay` = '" +
TenMay + "', `idPhong` = '" + idPhong + "' WHERE (`idmay` = '" + idMay + "');";
bool a;
LichSuMayTinh_BUS.ThemMoiLichSu(idMay, "Cập nhật thông tin cho máy
mang id " + idMay + " - Tên máy: " + TenMay + ", phòng máy: " +
QuanLiCoSoVatChat_BUS.TenPhongMay(idPhong), TenNguoiThayDoi);
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static bool ThemMoiPhanCung (string idmaytinh, string idphancung,
string TenNguoiThem)
{
bool a;
a=MayTinh_DAO.ThemMoiPhanCung(idmaytinh, idphancung, TenNguoiThem);
return a;
}
public static bool ThemMoiMayTinh(string TenMayTinh,string Owner)
78
{
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL("INSERT INTO maytinh(tenmay,
owner) VALUES ('" + TenMayTinh + "', '" + Owner + "')");
return a;
}
public static bool ThemMoiMayTinh(string TenMayTinh, string owner, string
idphong)
{
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL("INSERT INTO
`Quanlymaytinh`.`maytinh` (`tenmay`, `owner`, `idPhong`) VALUES ('" + TenMayTinh +
"', '" + owner + "', '" + idphong + "');");
return a;
}
public static bool ThemMoiMayTinh(string TenMayTinh, string owner, string
idphong, string NguoiThemMoi)
{
string query;
query = "INSERT INTO `Quanlymaytinh`.`maytinh` (`tenmay`, `status`,
`owner`, `idPhong`, `ThoiGianThemMoi`, `NguoiThemMoi`) VALUES ('" + TenMayTinh +
"', 'NULL', '" + owner + "', '" + idphong + "', '" + DateTime.Now.ToString("yyyy-
MM-dd HH:mm:ss") + "', '" + NguoiThemMoi + "');";
bool a;
LichSuMayTinh_BUS.ThemMoiLichSu("", "Thêm mới máy tính " + TenMayTinh
+ " tại phòng máy " + QuanLiCoSoVatChat_BUS.TenPhongMay(idphong), NguoiThemMoi);
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static string idMayMoiNhat()
{
string query = "SELECT DISTINCT idmay FROM maytinh ORDER BY idmay desc
LIMIT 1;";
DataTable dt = new DataTable();
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt.Rows[0][0].ToString();
}
public static bool xoaphancung(string idphancung, string TenNguoiXoa)
{
79
bool a;
a = MayTinh_DAO.XoaPhanCung(idphancung, TenNguoiXoa);
return a;
}
public static bool suamaytinh(string idmay, string tenmaytinh, string
Owner, string idMainboard, string idCPU, string idRAM, string idGPU, string os,
string osbuild)
{
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL("UPDATE thongtinmaytinh SET
tenmaytinh='" + tenmaytinh + "', CPU='" + idCPU + "', hedieuhanh='" + os + "',
phienbanhedieuhanh='" + osbuild + "', GPU='" + idGPU + "', RAM='" + idRAM + "',
Mainboard='" + idMainboard + "' WHERE idmay='"+idmay+"';");
bool b;
b = ThongTinMayTinh_DAO.ChayLenhSQL("UPDATE maytinh SET tenmay='" +
tenmaytinh + "' WHERE idmay='"+idmay+"';");
return a && b;
}
public static DataTable LayDanhSachPhancung()
{
DataTable a;
a = ThongTinMayTinh_DAO.LayDuLieu("SELECT * FROM phancung;"); ;
return a;
}
public static DataTable LayDanhSachPhanCung(string idmay) //overload nhẹ
tí
{
DataTable a;
a = ThongTinMayTinh_DAO.LayDuLieu("SELECT * FROM phancung,
Phancungmaytinh WHERE Phancungmaytinh.idphancung=phancung.idphancung and
Phancungmaytinh.idmaytinh='"+idmay+"';");
return a;
}
public static DataTable LayDanhSachMayTinh()
{
DataTable a;
a = ThongTinMayTinh_DAO.LayDuLieu("SELECT * FROM maytinh");
80
return a;
}
public static DataTable TimKiemMayTinh(string keyword)
{
DataTable dt;
dt = MayTinh_DAO.TimKiemMayTinh(keyword);
return dt;
}
public static DataTable TimKiemMayTinh(string keyword, string idPhongMay)
{
DataTable dt;
string query;
query = "SELECT * FROM Quanlymaytinh.maytinh, Quanlymaytinh.PhongMay,
Quanlymaytinh.CoSo where Quanlymaytinh.maytinh.idPhong =
Quanlymaytinh.PhongMay.idPhongMay and
Quanlymaytinh.PhongMay.idCoSo=Quanlymaytinh.CoSo.idCoSo and
Quanlymaytinh.PhongMay.idPhongMay='"+idPhongMay+"' and (tenmay like '%" + keyword
+ "%' or TenPhongMay like '%" + keyword + "%' or TenCoSo like '%" + keyword +
"%'); ";
dt = MayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable TimKiemMayTinhTheoCoSo(string idcoso)
{
DataTable dt;
string query;
query = "SELECT * FROM Quanlymaytinh.maytinh, Quanlymaytinh.PhongMay,
Quanlymaytinh.CoSo where Quanlymaytinh.maytinh.idPhong =
Quanlymaytinh.PhongMay.idPhongMay and
Quanlymaytinh.PhongMay.idCoSo=Quanlymaytinh.CoSo.idCoSo and
Quanlymaytinh.PhongMay.idCoSo='"+idcoso+"';";
dt = MayTinh_DAO.LayDuLieu(query);
return dt;
}
public static bool CapNhatPhanCung(string idBangPhanCung, string
idPhanCungMoi,string TenNguoiCapNhat)
{
bool a;
a = MayTinh_DAO.CapNhatPhanCung(idBangPhanCung, idPhanCungMoi,
TenNguoiCapNhat);
81
return a;
}
public static string TenMayTinh(string idmay)
{
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu("SELECT * FROM maytinh WHERE
idmay='" + idmay + "';");
string s;
if (dt.Rows.Count>0)
{
s = dt.Rows[0][1].ToString();
}
else
s = "Trống";
return s;
}
public static string LayidMayTinhMoiNhatTheoCoSo(string idcoso)
{
DataTable dt;
string query;
query = "SELECT * FROM Quanlymaytinh.maytinh, Quanlymaytinh.PhongMay,
Quanlymaytinh.CoSo where Quanlymaytinh.maytinh.idPhong =
Quanlymaytinh.PhongMay.idPhongMay and
Quanlymaytinh.PhongMay.idCoSo=Quanlymaytinh.CoSo.idCoSo and
Quanlymaytinh.PhongMay.idCoSo='" + idcoso + "' order by idmay desc LIMIT 1 ;";
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
string idmay;
idmay = dt.Rows[0][0].ToString();
return idmay;
}
public static string DemSoMayCuaCoSo(string idcoso)
{
DataTable dt;
string query;
query = "SELECT count(*) from Quanlymaytinh.PhongMay WHERE idCoSo='" +
idcoso + "' order by idCoSo;";
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
82
query = dt.Rows[0][0].ToString();
return query;
}
}
}
3.3 Quanlybaocao.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataAccessLayer;
using DataTransferObject;
using System.Data;
namespace BusinessLogicLayer
{
public class QuanLiBaoCao_BUS
{
static DataTable dt;
public static bool ThemBaoCao(string TieuDeBaoCao, string NguoiBaoCao,
string NoiDungBaoCao)
{
string query;
query = "INSERT INTO `Quanlymaytinh`.`BaoCaoUser` (`TieuDeBaoCao`,
`idTrangThai`, `NguoiBaoCao`, `NgayBaoCao`) VALUES ('" + TieuDeBaoCao + "', '1',
'" + NguoiBaoCao + "', '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu("SELECT * from BaoCaoUser order by
idBaoCao desc limit 1;");
string idbaocao = dt.Rows[0]["idBaoCao"].ToString();
query = "INSERT INTO `Quanlymaytinh`.`LogBaoCao` (`idBaoCao`,
`NoiDungTraoDoi`, `UserTraoDoi`, `ThoiGianBaoCao`) VALUES ('" + idbaocao + "', '"
+ NoiDungBaoCao + "', '" + NguoiBaoCao + "', '" + DateTime.Now.ToString("yyyy-MM-
dd HH:mm:ss") + "');";
a = a && ThongTinMayTinh_DAO.ChayLenhSQL(query);
return a;
}
public static void TraLoiBaoCao(string idBaoCao, string NoiDungTraoDoi,
string NguoiTraoDoi)
{
string query;
query = "INSERT INTO `Quanlymaytinh`.`LogBaoCao` (`idBaoCao`,
`NoiDungTraoDoi`, `UserTraoDoi`, `ThoiGianBaoCao`) VALUES ('" + idBaoCao + "', '"
+ NoiDungTraoDoi + "', '" + NguoiTraoDoi + "', '"+ DateTime.Now.ToString("yyyy-MM-
dd HH:mm:ss") + "');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
}
public static bool HieuLucBaoCao(string idBaoCao)
{
string query;
query = "SELECT * FROM BaoCaoUser WHERE idBaoCao='" + idBaoCao + "';";
DataTable dt;
83
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
query = dt.Rows[0]["idTrangThai"].ToString();
if (query != "4")
return true;
else
return false;
}
public static void ThayDoiTrangThaiBaoCao(string idBaoCao, string
idTrangThai)
{
string query;
query = "UPDATE `Quanlymaytinh`.`BaoCaoUser` SET `idTrangThai` = '" +
idTrangThai + "' WHERE (`idBaoCao` = '" + idBaoCao + "');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
}
public static void DongBaoCao(string idBaoCao)
{
string query;
query = "UPDATE `Quanlymaytinh`.`BaoCaoUser` SET `idTrangThai` = '4'
WHERE (`idBaoCao` = '" + idBaoCao + "');";
bool a;
a = ThongTinMayTinh_DAO.ChayLenhSQL(query);
}
public static DataTable LoadBaoCao()
{
string query;
query = "SELECT * FROM Quanlymaytinh.BaoCaoUser,
Quanlymaytinh.TrangThaiBaoCao where Quanlymaytinh.BaoCaoUser.idTrangThai =
Quanlymaytinh.TrangThaiBaoCao.idTrangThaiBaoCao order by BaoCaoUser.idBaoCao desc;
";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable LoadBaoCao(string idbaocao)
{
string query;
query = "SELECT * FROM LogBaoCao WHERE idBaoCao='" + idbaocao + "';";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable LoadBaoCao(string tenuser, bool a)
{
string query;
query = "SELECT * FROM Quanlymaytinh.BaoCaoUser,
Quanlymaytinh.TrangThaiBaoCao where Quanlymaytinh.BaoCaoUser.idTrangThai =
Quanlymaytinh.TrangThaiBaoCao.idTrangThaiBaoCao and
Quanlymaytinh.BaoCaoUser.NguoiGiaiQuyet='"+tenuser+"' order by BaoCaoUser.idBaoCao
desc; ";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
}
public static DataTable LoadTrangThai()
{
string query;
query = "SELECT * FROM TrangThaiBaoCao;";
DataTable dt;
dt = ThongTinMayTinh_DAO.LayDuLieu(query);
return dt;
84
}
public static DataTable LoadTrangThai(bool a)
{
string query;
query = "SELECT...d void ListView1_ItemCommand(object sender,
ListViewCommandEventArgs e)
{
if (e.CommandName=="Xoa")
{
bool a;
a = QuanLiPhanCung_BUS.XoaPhanCung(e.CommandArgument.ToString(),
tenuser,true);
if (a)
{
Response.Write("alert('Cập nhật thành
công')");
}
else
{
Response.Write("alert('Cập nhật thất bại')");
}
170
dsphancung = ThongTinMayTinh_BUS.LayDanhSachPhancung();
so_trang = 1;
so_trang_max = dsphancung.Rows.Count / 10 + 1;
if ((dsphancung.Rows.Count % 10) == 0) so_trang_max--;
SoTrangLabel.Text = "Trang " + so_trang + "/" + so_trang_max;
NapLaiDanhSachTheoTrang();
}
else
{
Response.Redirect("ChinhSuaPhanCung.aspx?id=" +
e.CommandArgument.ToString());
}
}
}
}
4.15 Quanlyphongmay.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteMaster.Master"
AutoEventWireup="true" CodeBehind="QuanLyPhongMay.aspx.cs"
Inherits="WebApp_Quanlymaytinh.QuanLyPhongMay" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Danh sách
phần cứng
Quản lý
loại phần cứng - hãng sản xuất
Quản lý
phòng máy
Thêm mới phòng máy
Tên phòng máy
<asp:TextBox ID="TextBoxTenPhongMay" CssClass="form-control"
runat="server">
Cơ sở
<asp:DropDownList ID="DropDownListCoSo" CssClass="form-
control" runat="server">
<asp:Button ID="Button2" runat="server" CssClass="btn
btn-primary" Text="Thêm mới" OnClick="Button2_Click" />
171
Danh sách phòng máy được đăng ký
Tên phòng máy
Cơ sở
Ngày thêm mới
Người thêm mới
Hành động
<asp:ListView ID="ListView1" runat="server"
OnItemCommand="ListView1_ItemCommand">
<asp:Label ID="Label1" runat="server" Text='<%#
Eval("TenPhongMay") %>'>
<asp:Label ID="Label2" runat="server" Text='<%#
Eval("TenCoSo") %>'>
<asp:Label ID="Label3" runat="server" Text='<%#
Eval("NgayThemMoi") %>'>
<asp:Label ID="Label4" runat="server" Text='<%#
Eval("NguoiThemMoi") %>'>
<asp:Button ID="Button1" runat="server"
CssClass="btn btn-danger" Text="Xóa" CommandName="Xoa" CommandArgument='<%#
Eval("idPhongMay") %>' />
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick" href="#">Trang trước
<asp:Label ID="SoTrangLabel" runat="server"
Text="Label">
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick1" href="#">Trang kế tiếp
4.15.1 Quanlyphongmay.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
172
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BusinessLogicLayer;
namespace WebApp_Quanlymaytinh
{
public partial class QuanLyPhongMay : System.Web.UI.Page
{
public static DataTable dtPhongMay;
public static DataTable dtHienThi;
public static int so_trang;
public static int so_trang_max;
public static string user;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
user = Request.Cookies["username"].Value.ToString();
dtPhongMay = QuanLiCoSoVatChat_BUS.LoadPhongMay();
so_trang = 1;
so_trang_max = dtPhongMay.Rows.Count / 10 + 1;
if ((dtPhongMay.Rows.Count % 10) == 0) so_trang_max--;
SoTrangLabel.Text = "Trang 1/" + so_trang_max;
NapLaiTrang();
DataTable dtCoSo;
dtCoSo = QuanLiCoSoVatChat_BUS.LayDanhSachCoSo();
DropDownListCoSo.DataSource = dtCoSo;
DropDownListCoSo.DataValueField = "idCoSo";
DropDownListCoSo.DataTextField = "TenCoSo";
DropDownListCoSo.DataBind();
}
}
public static void LoadThongBaoVaoDtHienThi()
{
if (dtPhongMay.Rows.Count > 0)
{
if ((so_trang - 1) * 10 + 10 < dtPhongMay.Rows.Count)
{
dtHienThi = dtPhongMay.Select().Skip((so_trang - 1) *
10).Take(10).CopyToDataTable();
}
else
{
dtHienThi = dtPhongMay.Select().Skip((so_trang - 1) *
10).Take(dtPhongMay.Rows.Count - (so_trang - 1) * 10).CopyToDataTable();
}
}
else
{
dtHienThi = null;
}
}
public void NapLaiTrang()
{
LoadThongBaoVaoDtHienThi();
so_trang_max = dtPhongMay.Rows.Count / 10 + 1;
if ((dtPhongMay.Rows.Count % 10) == 0) so_trang_max--;
ListView1.DataSource = dtHienThi;
ListView1.DataBind();
}
173
protected void Unnamed_ServerClick(object sender, EventArgs e)
{
if (so_trang > 1)
{
so_trang--;
NapLaiTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString();
}
}
protected void Unnamed_ServerClick1(object sender, EventArgs e)
{
if (so_trang < so_trang_max)
{
so_trang++;
NapLaiTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString();
}
}
protected void ListView1_ItemCommand(object sender,
ListViewCommandEventArgs e)
{
if (e.CommandName=="Xoa")
{
QuanLiCoSoVatChat_BUS.XoaPhongMay(e.CommandArgument.ToString(),
user);
so_trang = 1;
dtPhongMay = QuanLiCoSoVatChat_BUS.LoadPhongMay();
NapLaiTrang();
}
}
protected void Button2_Click(object sender, EventArgs e)
{
QuanLiCoSoVatChat_BUS.ThemPhongMay(TextBoxTenPhongMay.Text,
DropDownListCoSo.SelectedValue, user);
dtPhongMay = QuanLiCoSoVatChat_BUS.LoadPhongMay();
so_trang = 1;
NapLaiTrang();
}
}
}
4.16 Taikhoancanhan.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteMaster.Master"
AutoEventWireup="true" CodeBehind="TaiKhoanCaNhan.aspx.cs"
Inherits="WebApp_Quanlymaytinh.TaiKhoanCaNhan" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Tài khoản cá nhân
Tên đăng nhập
174
<asp:Label ID="TenDangNhapLabel" runat="server"
Text="Label">
Ngày đăng ký
<asp:Label ID="NgayDangKyLabel" runat="server"
Text="Label">
Quyền hạn
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#myModal">
Đổi mật khẩu
Đổi mật khẩu
Mật khẩu cũ
<asp:TextBox ID="MatKhauCuTextBox" runat="server"
TextMode="Password">
Mật khẩu mới
<asp:TextBox ID="MatKhauMoiTextBox" runat="server"
TextMode="Password">
Nhập lại mật khẩu mới
175
<asp:TextBox ID="NhapLaiMatKhauTextBox"
runat="server" TextMode="Password">
<asp:Button ID="Button1" runat="server"
Text="Xác nhận" CssClass="btn btn-primary" OnClick="Button1_Click" />
<button type="button" class="btn btn-danger" data-
dismiss="modal">Hủy
4.16.1 Taikhoancanhan.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BusinessLogicLayer;
namespace WebApp_Quanlymaytinh
{
public partial class TaiKhoanCaNhan : System.Web.UI.Page
{
public static string tenuser;
public static DataTable thongtin;
protected void Page_Load(object sender, EventArgs e)
{
tenuser = Request.Cookies["username"].Value.ToString();
thongtin = User_BUS.ThongTinNguoiDung(tenuser);
TenDangNhapLabel.Text = thongtin.Rows[0]["tendangnhap"].ToString();
NgayDangKyLabel.Text = thongtin.Rows[0]["NgayThemMoi"].ToString();
RoleLabel.Text = thongtin.Rows[0]["role"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
bool a;
a = User_BUS.DoiMatKhau(tenuser, MatKhauCuTextBox.Text,
MatKhauMoiTextBox.Text, NhapLaiMatKhauTextBox.Text);
if (a)
{
Response.Write("alert('Cập nhật thành công')");
}
176
else
{
Response.Write("alert('Cập nhật thất bại')");
}
}
}
}
4.17 Taikhoanuser.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/User.Master"
AutoEventWireup="true" CodeBehind="TaiKhoanUser.aspx.cs"
Inherits="WebApp_Quanlymaytinh.TaiKhoanUser" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Tài khoản cá nhân
Tên đăng nhập
<asp:Label ID="TenDangNhapLabel" runat="server"
Text="Label">
Ngày đăng ký
<asp:Label ID="NgayDangKyLabel" runat="server"
Text="Label">
Quyền hạn
<button type="button" class="btn btn-primary" data-toggle="modal"
data-target="#myModal">
Đổi mật khẩu
Đổi mật khẩu
177
Mật khẩu cũ
<asp:TextBox ID="MatKhauCuTextBox" runat="server"
TextMode="Password">
Mật khẩu mới
<asp:TextBox ID="MatKhauMoiTextBox" runat="server"
TextMode="Password">
Nhập lại mật khẩu mới
<asp:TextBox ID="NhapLaiMatKhauTextBox"
runat="server" TextMode="Password">
<asp:Button ID="Button1" runat="server"
Text="Xác nhận" CssClass="btn btn-primary" OnClick="Button1_Click" />
<button type="button" class="btn btn-danger" data-
dismiss="modal">Hủy
4.17.1 Taikhoanuser.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogicLayer;
using System.Data;
namespace WebApp_Quanlymaytinh
{
178
public partial class TaiKhoanUser : System.Web.UI.Page
{
public static string tenuser;
public static DataTable thongtin;
protected void Page_Load(object sender, EventArgs e)
{
tenuser = Request.Cookies["username"].Value.ToString();
thongtin = User_BUS.ThongTinNguoiDung(tenuser);
TenDangNhapLabel.Text = thongtin.Rows[0]["tendangnhap"].ToString();
NgayDangKyLabel.Text = thongtin.Rows[0]["NgayThemMoi"].ToString();
RoleLabel.Text = thongtin.Rows[0]["role"].ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
bool a;
a = User_BUS.DoiMatKhau(tenuser, MatKhauCuTextBox.Text,
MatKhauMoiTextBox.Text, NhapLaiMatKhauTextBox.Text);
if (a)
{
Response.Write("alert('Cập nhật thành công')");
}
else
{
Response.Write("alert('Cập nhật thất bại')");
}
}
}
}
4.18 ThemMoiBaoCao.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/User.Master"
AutoEventWireup="true" CodeBehind="ThemMoiBaoCao.aspx.cs"
Inherits="WebApp_Quanlymaytinh.ThemMoiBaoCao" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Thêm mới báo cáo
Tiêu đề
<asp:TextBox ID="TextBox1" CssClass="form-control"
runat="server">
Nội dung báo cáo
<asp:TextBox ID="TextBox2" CssClass="form-control" runat="server"
TextMode="MultiLine">
<asp:Button ID="Button1" runat="server" CssClass="btn btn-
primary" OnClick="Button1_Click" Text="Thêm mới báo cáo" />
179
4.18.1 ThemMoiBaoCao.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogicLayer;
namespace WebApp_Quanlymaytinh
{
public partial class ThemMoiBaoCao : System.Web.UI.Page
{
public static string username;
protected void Page_Load(object sender, EventArgs e)
{
username = Request.Cookies["username"].Value.ToString();
}
protected void Button1_Click(object sender, EventArgs e)
{
bool a;
a=QuanLiBaoCao_BUS.ThemBaoCao(TextBox1.Text, username, TextBox2.Text);
if (a)
Response.Redirect("UserTrangChu.aspx");
else
{
Response.Write("alert('Thêm mới thất bại')");
}
}
}
}
4.19 ThemMoiMayTinh.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteMaster.Master"
AutoEventWireup="true" CodeBehind="ThemMoiMayTinh.aspx.cs"
Inherits="WebApp_Quanlymaytinh.ThemMoiMayTinh" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Quản lý máy
tính
Thêm mới máy
tính
Lịch
sử cập nhật phần cứng
Thêm mới máy tính
Tên máy tính
180
<asp:TextBox ID="TextBox1" CssClass="form-control"
runat="server">
Cơ sở
<asp:DropDownList ID="DropDownList1" CssClass="form-control"
AutoPostBack="true" runat="server"
OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged">
Phòng
<asp:DropDownList ID="DropDownList2" CssClass="form-control"
runat="server">
<asp:Button ID="Button1" runat="server" CssClass="btn
btn-primary" Text="Thêm mới máy tính" OnClick="Button1_Click" />
4.19.1 ThemMoiMayTinh.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BusinessLogicLayer;
namespace WebApp_Quanlymaytinh
{
public partial class ThemMoiMayTinh : System.Web.UI.Page
{
public DataTable dt;
public static string s;
public static string username;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
username = Request.Cookies["username"].Value.ToString();
DataTable dtphongmay;
dtphongmay = QuanLiCoSoVatChat_BUS.LayDanhSachPhongMay("1");
DropDownList2.DataSource = dtphongmay;
dt = QuanLiCoSoVatChat_BUS.LayDanhSachCoSo();
DropDownList1.DataSource = dt;
181
DropDownList1.DataValueField = "idCoSo";
DropDownList1.DataTextField = "TenCoSo";
DropDownList1.DataBind();
DropDownList2.DataValueField = "idPhongMay";
DropDownList2.DataTextField = "TenPhongMay";
DropDownList2.DataBind();
s =Request.Cookies["username"].Value.ToString();
}
}
protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs
e)
{
DataTable dtPhongMay;
dtPhongMay =
QuanLiCoSoVatChat_BUS.LayDanhSachPhongMay(DropDownList1.SelectedValue.ToString());
DropDownList2.DataSource = dtPhongMay;
DropDownList2.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
bool a;
a = MayTinh_BUS.ThemMoiMayTinh(TextBox1.Text, "",
DropDownList2.SelectedValue,s);
Response.Redirect("ChinhSuaMayTinh.aspx?id=" +
MayTinh_BUS.idMayMoiNhat());
}
}
}
4.20 ThongBao.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/SiteMaster.Master"
AutoEventWireup="true" CodeBehind="ThongBao.aspx.cs"
Inherits="WebApp_Quanlymaytinh.ThongBao" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Thông báo người dùng
(*) là thông báo chưa đọc
Tiêu đề báo cáo
Người báo cáo
Thời gian
Trạng thái
Hành động
182
<asp:ListView ID="ListView1" runat="server"
OnItemCommand="ListView1_ItemCommand">
Chưa nạp dữ liệu
Không có thông báo
<asp:Label ID="Label1" runat="server" Text='<%#
Eval("TieuDeBaoCao") %>'>
<asp:Label ID="Label2" runat="server" Text='<%#
Eval("NguoiBaoCao") %>'>
<asp:Label ID="Label3" runat="server" Text='<%#
Eval("NgayBaoCao") %>'>
<asp:Label ID="Label4" runat="server" Text='<%#
Eval("TenTrangThai") %>'>
<asp:Button ID="Button1" runat="server" CssClass="btn btn-
primary" Text="Xem chi tiết" CommandArgument=''
CommandName="Xem" />
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick">Trang trước
<asp:Label ID="SoTrangLabel" runat="server"
Text="Label">
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick1">Trang kế tiếp
4.20.1 ThongBao.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogicLayer;
using System.Data;
namespace WebApp_Quanlymaytinh
{
public partial class ThongBao : System.Web.UI.Page
{
public static DataTable DtThongBao;
public static DataTable DtHienThi;
public static int so_trang;
public static int so_trang_max;
public static string tenuser;
public static string role;
protected void Page_Load(object sender, EventArgs e)
183
{
if (!Page.IsPostBack)
{
tenuser = Request.Cookies["username"].Value.ToString();
role = Request.Cookies["role"].Value.ToString();
if (role=="admin") DtThongBao = QuanLiBaoCao_BUS.LoadBaoCao();
else
{
DtThongBao = QuanLiBaoCao_BUS.LoadBaoCao(tenuser, true);
}
so_trang = 1;
so_trang_max = DtThongBao.Rows.Count / 10 + 1;
if ((DtThongBao.Rows.Count % 10) == 0) so_trang_max--;
SoTrangLabel.Text = "Trang 1/" + so_trang_max;
if (role == "admin") TrangThaiDaXem("");
if (role == "IT") TrangThaiDaXem("_IT");
if (role == "user") TrangThaiDaXem("_user");
NapLaiTrang();
}
}
public static void TrangThaiDaXem(string role)
{
foreach (DataRow dr in DtThongBao.Rows)
{
if (dr["Noti"+role].ToString() == "1") dr["TieuDeBaoCao"] =
dr["TieuDeBaoCao"].ToString() + "(*)";
}
}
public static void LoadThongBaoVaoDtHienThi()
{
if (DtThongBao.Rows.Count > 0)
{
if ((so_trang - 1) * 10 + 10 < DtThongBao.Rows.Count)
{
DtHienThi = DtThongBao.Select().Skip((so_trang - 1) *
10).Take(10).CopyToDataTable();
}
else
{
DtHienThi = DtThongBao.Select().Skip((so_trang - 1) *
10).Take(DtThongBao.Rows.Count - (so_trang - 1) * 10).CopyToDataTable();
}
}
else
{
DtHienThi = null;
}
}
public void NapLaiTrang()
{
LoadThongBaoVaoDtHienThi();
ListView1.DataSource = DtHienThi;
ListView1.DataBind();
}
protected void Unnamed_ServerClick(object sender, EventArgs e)
{
if (so_trang > 1)
{
so_trang--;
NapLaiTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString();
184
}
}
protected void Unnamed_ServerClick1(object sender, EventArgs e)
{
if (so_trang<so_trang_max)
{
so_trang++;
NapLaiTrang();
SoTrangLabel.Text= "Trang hiện tại: " + so_trang.ToString();
}
}
protected void Button1_Click(object sender, EventArgs e)
{
}
protected void ListView1_ItemCommand(object sender,
ListViewCommandEventArgs e)
{
if (e.CommandName=="Xem")
{
string s;
s = e.CommandArgument.ToString();
if (role == "admin") QuanLiBaoCao_BUS.DocThongBao(s, "");
if (role == "IT") QuanLiBaoCao_BUS.DocThongBao(s, "_IT");
if (role == "user") QuanLiBaoCao_BUS.DocThongBao(s, "_user");
Response.Redirect("ChiTietBaoCao.aspx?id=" + s);
}
}
}
}
4.21 UserChiTietBaoCao.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/User.Master"
AutoEventWireup="true" CodeBehind="UserChiTietBaoCao.aspx.cs"
Inherits="WebApp_Quanlymaytinh.UserChiTietBaoCao" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Chi tiết báo cáo
<asp:Button ID="Button2" runat="server" CssClass="btn btn-info"
Text="Đánh dấu là chưa đọc" OnClick="Button2_Click"/>
Tiêu đề báo cáo
<asp:Label ID="Label1" runat="server"
Text="Label">
Ngày bắt đầu
185
<asp:Label ID="Label2" runat="server"
Text="Label">
Trạng thái
<asp:DropDownList ID="DropDownList1" CssClass="form-control"
runat="server" Enabled="False">
Nội dung trao đổi
<asp:Label runat="server" Text='<%# Eval("NoiDungTraoDoi")
%>'>
Được
<asp:Label ID="Label4" runat="server" Text='<%#
Eval("UserTraoDoi") %>'>
Viết vào ngày
<asp:Label ID="Label3" runat="server" Text='<%#
Eval("ThoiGianBaoCao") %>'>,
<a
class="page-link" runat="server" onserverclick="Unnamed_ServerClick">Trang
trước
<asp:Label ID="SoTrangLabel" runat="server"
Text="Label">
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick1">Trang kế tiếp
Viết nội dung trao đổi vào đây
<asp:TextBox ID="TextBox1" CssClass="form-control" runat="server"
TextMode="MultiLine">
<asp:Button ID="Button1" CssClass="btn btn-primary" runat="server"
Text="Gửi phản hồi" OnClick="Button1_Click" />
4.21.1 UserChiTietBaoCao.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
186
using System.Web.UI.WebControls;
using BusinessLogicLayer;
using System.Data;
namespace WebApp_Quanlymaytinh
{
public partial class UserChiTietBaoCao : System.Web.UI.Page
{
public static DataTable dtDuLieu;
public static DataTable dtHienThi;
public static int so_trang;
public static int so_trang_max;
public static string user;
public static string idBaoCao;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
user = Request.Cookies["username"].Value.ToString();
idBaoCao = Request.QueryString["id"].ToString();
dtDuLieu = QuanLiBaoCao_BUS.LoadBaoCao(idBaoCao);
so_trang_max = dtDuLieu.Rows.Count / 10 + 1;
if ((dtDuLieu.Rows.Count % 10) == 0) so_trang_max--;
so_trang = 1;
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString() + "/"
+ so_trang_max;
LoadTrang();
DataTable dt;
DataTable dtThongtin;
dtThongtin = QuanLiBaoCao_BUS.ThongTinBaoCao(idBaoCao);
dt = QuanLiBaoCao_BUS.LoadTrangThai();
DropDownList1.DataSource = dt;
DropDownList1.DataValueField = "idTrangThaiBaoCao";
DropDownList1.DataTextField = "TenTrangThai";
DropDownList1.DataBind();
DropDownList1.ClearSelection();
DropDownList1.Items.FindByValue(dtThongtin.Rows[0]["idTrangThai"].ToString()).Sele
cted = true;
Label1.Text = dtThongtin.Rows[0]["TieuDeBaoCao"].ToString();
Label2.Text = dtThongtin.Rows[0]["NgayBaoCao"].ToString();
if (QuanLiBaoCao_BUS.HieuLucBaoCao(idBaoCao))
{
Button1.Enabled = true;
}
else
{
Button1.Enabled = false;
}
}
}
public void NapDuLieuTrang()
{
if (dtDuLieu.Rows.Count > 0)
{
if ((so_trang - 1) * 10 + 10 < dtDuLieu.Rows.Count)
{
dtHienThi = dtDuLieu.Select().Skip((so_trang - 1) *
10).Take(10).CopyToDataTable();
}
else
{
187
dtHienThi = dtDuLieu.Select().Skip((so_trang - 1) *
10).Take(dtDuLieu.Rows.Count - (so_trang - 1) * 10).CopyToDataTable();
}
}
else
{
dtHienThi = null;
}
}
public void LoadTrang()
{
NapDuLieuTrang();
ListView1.DataSource = dtHienThi;
ListView1.DataBind();
}
protected void Unnamed_ServerClick(object sender, EventArgs e)
{
so_trang++;
NapDuLieuTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString() + "/" +
so_trang_max;
}
protected void Unnamed_ServerClick1(object sender, EventArgs e)
{
so_trang--;
NapDuLieuTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString() + "/" +
so_trang_max;
}
protected void Button1_Click(object sender, EventArgs e)
{
QuanLiBaoCao_BUS.TraLoiBaoCao(idBaoCao, TextBox1.Text, user);
bool a;
a = false;
a = QuanLiBaoCao_BUS.DanhDauLaChuaDoc(idBaoCao, "");
a = QuanLiBaoCao_BUS.DanhDauLaChuaDoc(idBaoCao, "_IT");
so_trang = 1;
dtDuLieu = QuanLiBaoCao_BUS.LoadBaoCao(idBaoCao);
so_trang_max = dtDuLieu.Rows.Count / 10 + 1;
if ((dtDuLieu.Rows.Count % 10) == 0) so_trang_max--;
so_trang = 1;
LoadTrang();
}
protected void Button2_Click(object sender, EventArgs e)
{
bool a;
a = false;
a = QuanLiBaoCao_BUS.DanhDauLaChuaDoc(idBaoCao, "_user");
if (a)
{
Response.Write("alert('Cập nhật thành công')");
}
else
{
Response.Write("alert('Cập nhật thất bại')");
}
}
}
}
188
4.22 UserThongBao.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/User.Master"
AutoEventWireup="true" CodeBehind="UserThongBao.aspx.cs"
Inherits="WebApp_Quanlymaytinh.UserQuanLyMayTinh" %>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Danh sách báo cáo
<asp:Button ID="Button2" CssClass="btn btn-primary" runat="server"
Text="Báo cáo vấn đề mới" OnClick="Button2_Click" />
Tiêu đề báo cáo
Người báo cáo
Thời gian
Trạng thái
Hành động
<asp:ListView ID="ListView1" runat="server"
OnItemCommand="ListView1_ItemCommand">
Chưa nạp dữ liệu
Không có thông báo
<asp:Label ID="Label1" runat="server" Text='<%#
Eval("TieuDeBaoCao") %>'>
<asp:Label ID="Label2" runat="server" Text='<%#
Eval("NguoiBaoCao") %>'>
<asp:Label ID="Label3" runat="server" Text='<%#
Eval("NgayBaoCao") %>'>
<asp:Label ID="Label4" runat="server" Text='<%#
Eval("TenTrangThai") %>'>
<asp:Button ID="Button1" runat="server" CssClass="btn
btn-primary" Text="Xem chi tiết" CommandArgument=''
CommandName="Xem" />
189
Dấu (*) thể hiện báo cáo có phản hồi chưa đọc
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick">Trang trước
<asp:Label ID="SoTrangLabel" runat="server"
Text="Label">
<a class="page-link" runat="server"
onserverclick="Unnamed_ServerClick1">Trang kế tiếp
4.22.1 UserThongBao.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BusinessLogicLayer;
namespace WebApp_Quanlymaytinh
{
public partial class UserQuanLyMayTinh : System.Web.UI.Page
{
public static DataTable dtDuLieu;
public static DataTable dtHienThi;
public static int so_trang;
public static int so_trang_max;
public static string username;
public static string role;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
username = Request.Cookies["username"].Value.ToString();
role = Request.Cookies["role"].Value.ToString();
dtDuLieu = QuanLiBaoCao_BUS.TimBaoCao(username);
so_trang = 1;
so_trang_max= dtDuLieu.Rows.Count / 10 + 1;
if ((dtDuLieu.Rows.Count % 10) == 0) so_trang_max--;
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString() + "/"
+ so_trang_max;
TrangThaiDaXem("_user");
LoadTrang();
}
}
public static void TrangThaiDaXem(string role)
{
foreach (DataRow dr in dtDuLieu.Rows)
{
if (dr["Noti" + role].ToString() == "1") dr["TieuDeBaoCao"] =
dr["TieuDeBaoCao"].ToString() + "(*)";
}
}
protected void TimKiemButton_Click(object sender, EventArgs e)
{
190
}
protected void DataList1_ItemCommand(object source,
DataListCommandEventArgs e)
{
if (e.CommandName=="XemChiTiet")
{
Response.Redirect("ChinhSuaMayTinh.aspx?id=" +
e.CommandArgument.ToString());
}
}
public void NapDuLieuTrang()
{
if (dtDuLieu.Rows.Count > 0)
{
if ((so_trang - 1) * 10 + 10 < dtDuLieu.Rows.Count)
{
dtHienThi = dtDuLieu.Select().Skip((so_trang - 1) *
10).Take(10).CopyToDataTable();
}
else
{
dtHienThi = dtDuLieu.Select().Skip((so_trang - 1) *
10).Take(dtDuLieu.Rows.Count - (so_trang - 1) * 10).CopyToDataTable();
}
}
else
{
dtHienThi = null;
}
}
public void LoadTrang()
{
NapDuLieuTrang();
ListView1.DataSource = dtHienThi;
ListView1.DataBind();
}
protected void Unnamed_ServerClick(object sender, EventArgs e)
{
so_trang++;
NapDuLieuTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString() + "/" +
so_trang_max;
}
protected void Unnamed_ServerClick1(object sender, EventArgs e)
{
so_trang--;
NapDuLieuTrang();
SoTrangLabel.Text = "Trang hiện tại: " + so_trang.ToString() + "/" +
so_trang_max;
}
protected void ListView1_ItemCommand(object sender,
ListViewCommandEventArgs e)
{
QuanLiBaoCao_BUS.DocThongBao(e.CommandArgument.ToString(), "_user");
Response.Redirect("UserChiTietBaoCao.aspx?id=" +
e.CommandArgument.ToString());
}
protected void Button2_Click(object sender, EventArgs e)
191
{
Response.Redirect("ThemMoiBaoCao.aspx");
}
}
}
4.23 UserTrangChu.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/User.Master"
AutoEventWireup="true" CodeBehind="UserTrangChu.aspx.cs"
Inherits="WebApp_Quanlymaytinh.TrangChuUser" %>
.auto-style2 {
height: 29px;
}
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1"
runat="server">
Tên người dùng
<asp:Label ID="LabelTenNguoiDung" runat="server"
CssClass="form-control" Text="Label">
Ngày đăng ký
<asp:Label ID="LabelNgayDangKy" CssClass="form-control"
runat="server" Text="Label">
Báo cáo đã gửi
<asp:Label ID="LabelBaoCaoDaGui" runat="server"
CssClass="form-control" Text="Label">
Báo cáo đã giải quyết
<asp:Label ID="LabelBaoCaoDaGiaiQuyet" runat="server"
CssClass="form-control" Text="Label">
Báo cáo đã đóng
<asp:Label ID="LabelBaoCaoDaDong" runat="server"
CssClass="form-control" Text="Label">
192
4.23.1 UserTrangChu.aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BusinessLogicLayer;
using System.Data;
namespace WebApp_Quanlymaytinh
{
public partial class TrangChuUser : System.Web.UI.Page
{
public static DataTable dtDuLieu;
public static DataTable dtNguoiDung;
public static string TenNguoiDung;
protected void Page_Load(object sender, EventArgs e)
{
TenNguoiDung = Request.Cookies["username"].Value.ToString();
dtDuLieu = QuanLiBaoCao_BUS.TimBaoCao(TenNguoiDung);
dtNguoiDung = QuanLiUser_BUS.LayDanhSachUser(TenNguoiDung);
int SoBaoCaoDaGui;
SoBaoCaoDaGui = 0;
int SoBaoCaoDaHoanThanh;
SoBaoCaoDaHoanThanh = 0;
int SoBaoCaoDaDong;
SoBaoCaoDaDong = 0;
foreach (DataRow dr in dtDuLieu.Rows)
{
SoBaoCaoDaGui++;
if (dr["idTrangThai"].ToString() == "3") SoBaoCaoDaHoanThanh++;
if (dr["idTrangThai"].ToString() == "4") SoBaoCaoDaDong++;
}
LabelTenNguoiDung.Text = TenNguoiDung;
LabelNgayDangKy.Text = dtNguoiDung.Rows[0]["NgayThemMoi"].ToString();
LabelBaoCaoDaGui.Text = SoBaoCaoDaGui.ToString();
LabelBaoCaoDaGiaiQuyet.Text = SoBaoCaoDaHoanThanh.ToString();
LabelBaoCaoDaDong.Text = SoBaoCaoDaDong.ToString();
}
}
}
193
Các file đính kèm theo tài liệu này:
- de_tai_he_thong_quan_ly_phan_cung_may_tinh_ap_dung_cho_cac_c.pdf