2.2.5.1. Giao diện đăng nhập
PHÒNG KHOA HỌC & QUAN HỆ QUỐC TẾ
ĐĂNG NHẬP
Hệ thống Danh mục Đề tài Thành viên Hội đồng Thống kê
DESIGN BY 07 Admin ****** Tài khoản Mật khẩu Đăng nhập Thoát
TRƯỜNG ĐẠI HỌC TÂY NGUYÊN PHÒNG KHOA HỌC & QUAN HỆ QUỐC TẾ
Hình 2.12: Thiết kế giao diện đăng nhập Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Click nút ĐĂNG NHẬP
Lấy dữ liệu từ bảng User, so sánh với giá trị ở textbox xem có hợp lệ hay không. Nếu hợp lệ thì cho phép đăng nhập và ngược lại.
2 Click nút THOÁT
Thoát khỏi quyền đăng nhập hiện tại.
2.2.5.2. Giao diện quản lý danh sách đơn vị
QUẢN LÝ ĐƠN VỊ
Mã đơn vị Tên đơn vị
DESIGN BY 07 Thêm Sửa Xóa Thoát Mã đơn vị Tên đơn vị Lưu
Hình 2.13: Thiết kế giao diện quản lý đơn vị Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS Đơn vị lên Datagridview. 2 Click nút THÊM Lấy dữ liệu ở Textbox thêm vào CSDL. 3 Click nút Xóa Xóa bản ghi được chỉ trong danh sách. 4 Click nút SỬA Lấy thông tin bản ghi đang được chỉ
trong danh sách hiện thị lên Textbox, nút THÊM và XÓA bị khóa lại.
5 Click nút LƯU Lấy thông tin trên Textbox, lưu thay đổi vào CSDL. Nút THÊM & XÓA được
31
2.2.5.3. Giao diện quản lý danh sách cán bộ
DANH SÁCH CÁN BỘ
Mã cán bộ CMND Họ tên Ngày sinh
DESIGN BY 07 Thêm Sửa Xóa Lưu Mã cán bộ CMND Họ tên Học vị Ngày sinh Chức vụ Đơn vị
Hình 2.14: Thiết kế giao diện quản lý danh sách cán bộ Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS cán bộ lên Datagridview, gán DS Đơn vị vào Combo Box.
2 Click nút THÊM Lấy dữ liệu ở Textbox thêm vào CSDL. 3 Click nút Xóa Xóa bản ghi được chỉ trong danh sách. 4 Click nút SỬA Lấy thông tin bản ghi đang được chỉ
trong danh sách hiện thị lên Textbox, nút THÊM và XÓA bị khóa lại.
5 Click nút LƯU Lấy thông tin trên Textbox, lưu thay đổi vào CSDL. Nút THÊM & XÓA được mở
2.2.5.4. Giao diện thêm mới đề tài
QUẢN LÝ ĐỀ TÀI
ID Tên đề tài Cấp đề tài
DESIGN BY 07 Thêm Sửa Xóa Thoát Năm Tên đề tài Cấp đề tài Lưu Lĩnh vực ID
Hình 2.15: Thiết kế giao diện thêm mới đề tài Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS đề tài lên Datagridview, gán DS Lĩnh vực khoa học, Cấp đề tài vào
Combo Box.
2 Click nút THÊM Lấy dữ liệu ở Textbox thêm vào CSDL. 3 Click nút Xóa Xóa bản ghi được chỉ trong danh sách. 4 Click nút SỬA Lấy thông tin bản ghi đang được chỉ
33
2.2.5.5. Giao diện quản lý thành viên nghiên cứu:
QUẢN LÝ THÀNH VIÊN NGHIÊN CỨU
Mã thành viên CMND Họ tên Ngày sinh Vị trí N/C Đơn vị Học vị
DESIGN BY 07
ID đề tài
Thêm Xóa Sửa Lưu
Ngày sinh
Mã thành viên Vị trí N/C
CMND Đơn vị
Họ tên Học vị
Địa chỉ Chức vụ
Hình 2.16: Thiết kế giao diện quản lý thành viên nghiên cứu Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS thành viên lên Datagridview, gán DS Đơn vị, Vị trí nghiên cứu vào Combo Box.
2 Click nút THÊM Lấy dữ liệu ở Textbox thêm vào CSDL. 3 Click nút Xóa Xóa bản ghi được chỉ trong danh sách. 4 Click nút SỬA Lấy thông tin bản ghi đang được chỉ
trong danh sách hiện thị lên Textbox, nút THÊM và XÓA bị khóa lại.
5 Click nút LƯU Lấy thông tin trên Textbox, lưu thay đổi vào CSDL. Nút THÊM & XÓA được mở
2.2.5.6. Giao diện cập nhật thuyết minh
CẬP NHẬT THUYẾT MINH
DESIGN BY 07
Lưu lại Thoát Đề tài Mục tiêu Dự kiến kết quả Ngày kết thúc Ngày bắt đầu DV chủ trì Kinh phí toàn bộ
Hình 2.17: Thiết kế giao diện cập nhật thuyết minh Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Click nút LƯU LẠI
Lấy dữ liệu ở Textbox lưu vào CSDL. 2 Click nút
THOÁT
Thoát khỏi Form
35
2.2.5.7. Giao diện quản lý cấp kinh phí cho đề tài
CẤP KINH PHÍ CHO ĐỀ TÀI
Ngày cấp Số tiền DESIGN BY 07 Thêm Xóa Thoát Ngày cấp Số tiền ID đề tài
Hình 2.18: Thiết kế giao diện quản lý cấp kinh phí Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS cấp kinh phí lên Datagridview. 2 Click nút THÊM Lấy dữ liệu ở Textbox thêm vào CSDL. 3 Click nút Xóa Xóa bản ghi được chỉ trong danh sách.
2.2.5.8. Giao diện quản lý tiến độ của đề tài
QUẢN LÝ TIẾN ĐỘ ĐỀ TÀI
Hạn báo cáo Nội dung Kinh phí Ngày hoàn thành
DESIGN BY 07
ID đề tài
Thêm Xóa Sửa Lưu
Hạn báo cáo
Nội dung Kinh phí
Đánh dấu hoàn thành
Hình 2.19: Thiết kê giao diện quản lý tiến độ Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS tiến độ của đề tài lên Datagridview.
2 Click nút THÊM Lấy dữ liệu ở Textbox thêm vào CSDL. 3 Click nút Xóa Xóa bản ghi được chỉ trong danh sách. 4 Click nút SỬA Lấy thông tin bản ghi đang được chỉ
37
2.2.5.9. Giao diện quản lý hội đồng khoa học
THÀNH VIÊN HỘI ĐỒNG Cán bộ Chức vụ trong HĐ DESIGN BY 07 Xét duyệt Xét duyệt Thêm Lưu HĐ Xóa Hội đồng số: Cán bộ Chức vụ trong HĐ
Kiểu hội đồng ID đề tài
Ngày Địa điểm
DANH SÁCH CHI TIẾT HỘI ĐỒNG
Hình 2.20: Thiết kế giao diện quản lý hội đồng khoa học Danh sách biến cố:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Hiện DS thành viên hội đồng lên Datagridview. Gán danh sách Cán bộ, Chức vụ hội đồng lên
Combobox.
Nếu hội đồng chưa được tạo trong CSDL thì để trống.
2 Click nút LƯU HĐ
Lấy dữ liệu (thời gian, địa điểm) của hội đồng lưu vào CSDL.
Nếu HĐ chưa tạo thì tạo mới, nếu đã có thì cập nhật lại.
3 Click nút THÊM Lấy dữ liệu về thành viên hội đồng ở Combobox thêm vào CSDL. 4 Click nút Xóa Xóa bản ghi được chỉ trong danh
sách.
2.2.5.10. Giao diện thống kê đề tài
THỐNG KÊ ĐỀ TÀI
Tên đề tài Chủ nhiệm Mục tiêu Bắt đầu Kết thúc Tổng kinh phí Đã cấp
DESIGN BY 07
Thống kê Năm
Cấp đề tài
Đơn vị
Hình 2.21: Thiết kế giao diện thống kê đề tài Danh sách biến cố của Form:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Gán danh sách Cấp đề tài, Đơn vị lên Combobox.
2 Click nút THỐNG KÊ
Tìm trong CSDL các đề tài thỏa mãn điều kiện thống kê. Showmessage kết quả cho người sử dụng và hiện kết quả lên Gridview.
39 2.2.5.11. Giao diện tìm kiếm đề tài
TÌM KIẾM ĐỀ TÀI
Tên đề tài Chủ nhiệm Mục tiêu Bắt đầu Kết thúc Tổng kinh phí Đã cấp
DESIGN BY 07
Tên đề tài Tự nhiên
Tìm kiếm Tìm theo
Cấp đề tài
Lĩnh vực
Từ khóa
Hình 2.22: Thiết kế giao diện tìm kiếm đề tài Danh sách biến cố của Form:
BC ĐK kích hoạt Xử lý Ghi chú
1 Form load Dán danh sách Kiểu tìm kiếm, Linhc vực khoa học, Cấp đề tài lên Combobox. 2 Click nút TÌM
KIẾM
Tìm trong CSDL các đề tài thỏa mãn điều kiện tìm kiếm. Showmessage kết quả cho người sử dụng và hiện kết quả lên Gridview.
CHƯƠNG 3: XÂY DỰNG PHẦN MỀM
2.3.1. GIAO DIỆN PHẦN MỀM
2.3.1.1. Menu và giao diện đăng nhập:
Hình 3.1: Menu và giao diện đăng nhập
41
2.3.1.3. Form quản lý đề tài
Hình 3.3: Form quản lý đề tài
2.3.1.4. Form cập nhật nội dung thuyết minh
2.3.1.5. Form quản lý thành viên nghiên cứu
Hình 3.5: Form quản lý thành viên nghiên cứu
43
2.3.1.7. Form quản lý tiến độ của đề tài
Hình 3.7: Form quản lý tiến độ của đề tài
2.3.1.8. Form quản lý hội đồng khoa học
2.3.1.9. Form thống kê đề tài
Hình 3.9: Form thống kê đề tài
45
2.3.1.11. Form in phiếu đăng ký đề tài
Hình 3.11: Form in phiếu đăng ký đề tài
2.3.1.12. Report – phiếu đăng ký đề tài
2.3.1.13. Report – Báo cáo triển khai thực hiện đề tài
Hình 3.13: Report báo cáo triển khai thực hiện đề tài
47
2.3.1.15. Report – Đơn xin nghiệm thu đề tài
2.3.1.16. Report – Quyết định xét duyệt
49
2.3.1.17. Report – Danh mục nhiệm vụ nghiên cứu khoa học của đơn vị trong năm
Hình 3.17: Report danh mục nghiên cứu khoa học
2.3.1.18. Form sao lưu dữ liệu
2.3.2. CHUYỂN GIAO VÀ VẬN HÀNH HỆ THỐNG 2.3.1.1. Code chức năng đăng nhập
Code:
private void buttonItem8_Click(object sender, EventArgs e) {
dangnhap = bll.DangNhap(txtName.Text, txtPass.Text); if (dangnhap == 1)
{
MessageBox.Show("Đăng nhập thành công."); tabControl1.Enabled = true;
ribbonBar1.Enabled = true; ribbonBar2.Enabled = true; btDN.Enabled = false; btDX.Enabled = true;
txtName.Enabled = txtPass.Enabled = false; txtName.Text = "";
}
else MessageBox.Show("Đăng nhập sai."); txtPass.Text = "";
}
private void btDX_Click(object sender, EventArgs e) { dangnhap = 0; tabControl1.Enabled = false; ribbonBar1.Enabled = false; ribbonBar2.Enabled = false; btDN.Enabled = true; btDX.Enabled = false; txtName.Text = txtPass.Text = "";
txtName.Enabled = txtPass.Enabled = true; MessageBox.Show("Đã đăng xuất.");
}
private void btDoiMK_Click(object sender, EventArgs e) {
51
2.3.1.2. Code chức năng quản lý danh sách cán bộ
Code:
public List<CanBo> DanhSachDK(string _MaDV) {
List<CanBo> list = new List<CanBo>();
list = (from x in _db.CanBos where x.MaDV == _MaDV select x).ToList();
return list; }
public bool Add(string _MaCB, string _CMND, string _HoTen,
DateTime _NgaySinh, string _HocVi, string _ChucVu, string _MaDV) {
CanBo _dto = new CanBo(); try { if (_MaCB.Length != 8) { Error = "MÃ CÁN BỘ GỒM 8 KÝ TỰ"; return false; } _dto.MaCB = _MaCB; _dto.CMND = _CMND; _dto.HoTen = _HoTen; _dto.NgaySinh = _NgaySinh; _dto.HocVi = _HocVi; _dto.ChucVu = _ChucVu; _dto.MaDV = _MaDV; _db.CanBos.InsertOnSubmit(_dto); _db.SubmitChanges(); } catch (Exception) {
Error = "THÊM DỮ LIỆU THẤT BẠI"; return false;
}
return true; }
public bool Del(string _MaCB) {
var _dto = (from x in _db.CanBos where x.MaCB == _MaCB select x).ToList(); _db.CanBos.DeleteAllOnSubmit(_dto); _db.SubmitChanges();
return true; }
2.3.1.3. Code chắc năng quản lý đề tài
Code:
public bool XacNhanHoanThanhDT(string _IDDeTai, int _kq) {
if (HoanThanhTienDo(_IDDeTai) == false) {
System.Windows.Forms.MessageBox.Show("CHƯA HOÀN THÀNH TOÀN
BỘ TIẾN ĐỘ");
return false; }
try
{
var _dto = (from x in _db.DeTais
where x.IDDeTai == long.Parse(_IDDeTai) select x).Single(); _dto.DaHoanThanh = _kq; _db.SubmitChanges(); } catch (Exception) { Error = "CẬP NHẬT THẤT BẠI"; return false; } return true; }
public DeTai TimDeTai(string _IDDeTai) {
var rs = (from x in _db.DeTais
where (x.IDDeTai == long.Parse(_IDDeTai)) select x).Single();
return rs; }
public bool Add(string _TenDeTai, int _LoaiDeTai, string _Nam,
string _MaLV) {
DeTai _dto = new DeTai(); try
{
53
2.3.1.4. Code chức năng quản lý thành viên nghiên cứu
Code:
public List<ThanhVien> DanhSachSVNC(string _ID) {
List<ThanhVien> list = new List<ThanhVien>(); long k = 0;
long.TryParse(_ID, out k); list = (from x in _db.ThanhViens
where ((x.IDDeTai == k)&&(x.LoaiThanhVien!=3)) select x).ToList();
return list; }
public ThanhVien TimChuNhiem(string _IDDeTai) {
var tv = (from x in _db.ThanhViens
where ((x.IDDeTai == long.Parse(_IDDeTai)) && (x.LoaiThanhVien == 1))
select x).Single(); return tv;
}
public ThanhVien TimGiaoVien(string _IDDeTai) {
var tv = (from x in _db.ThanhViens
where ((x.IDDeTai == long.Parse(_IDDeTai)) && (x.LoaiThanhVien == 3))
select x).Single(); return tv;
}
public bool kiemtraCN(string _IDDeTai) {
var _dto = (from x in _db.ThanhViens where (x.IDDeTai ==
long.Parse(_IDDeTai))&&(x.LoaiThanhVien == 1) select x).ToList(); if (_dto.Count == 0)
return true; else return false; }
public bool kiemtradangCN(string _CMND) {
var _dto = (from x in _db.ThanhViens
where ((x.DeTai.DaHoanThanh == 1)&&(x.CMND == _CMND)&&(x.LoaiThanhVien == 1))
select x).ToList(); if (_dto.Count == 0)
return true; else return false; }
2.3.1.5. Code chức năng quản lý tiến độ
Code:
public void Fill() {
try
{
var list = bll.DanhSachDK(lbID.Text); dataGridViewX1.Rows.Clear();
for (int i = 0; i < list.Count; i++) { dataGridViewX1.Rows.Add(list[i].ID.ToString(), list[i].HanBaoCao == null ? "" : list[i].HanBaoCao.Value.ToShortDateString(), list[i].NoiDung == null ? "" : list[i].NoiDung.ToString(), list[i].SoTien == null? "" : list[i].SoTien.Value.ToString(),
list[i].NgayHoanThanh == null? "Chưa hoàn thành" : list[i].NgayHoanThanh.Value.ToShortDateString());
if (list[i].NgayHoanThanh != null)
dataGridViewX1.Rows[i].DefaultCellStyle.ForeColor = Color.DarkBlue; if ((list[i].NgayHoanThanh == null) &&
(list[i].HanBaoCao < DateTime.Today.Date))
dataGridViewX1.Rows[i].DefaultCellStyle.ForeColor = Color.Red; } dataGridViewX1.Sort(dataGridViewX1.Columns[1], ListSortDirection.Ascending); } catch (Exception) { } }
private void btCom_Click(object sender, EventArgs e) { if (dataGridViewX1.RowCount > 0) { int len = 1; len = dataGridViewX1.CurrentRow.Cells[2].Value.ToString().Length; if (len > 30) len = 30;
DialogResult X = MessageBox.Show("Bạn muốn đánh dấu tiến
độ \"" + dataGridViewX1.CurrentRow.Cells[2].Value.ToString().Substring(0,
55
2.3.1.6. Code chức năng quản lý hội đồng
Code:
public HoiDong TimHD(string _Loai, string _ID) {
var rs = (from x in _db.HoiDongs
where ((x.LoaiHoiDong == _Loai) && (x.IDDeTai == long.Parse(_ID)))
select x).Single(); return rs;
}
public bool UpdateHD(string _Loai, string _ID, DateTime _Ngay, string _DiaDiem, string _GhiChu)
{
List<HoiDong> list = new List<HoiDong>(); list = (from x in _db.HoiDongs
where ((x.LoaiHoiDong == _Loai) && (x.IDDeTai == long.Parse(_ID)))
select x).ToList(); if (list.Count == 0)
{
HoiDong _dto = new HoiDong(); try { _dto.LoaiHoiDong = _Loai; _dto.IDDeTai = long.Parse(_ID); _dto.Ngay = _Ngay; _dto.DiaDiem = _DiaDiem; _dto.GhiChu = _GhiChu; _db.HoiDongs.InsertOnSubmit(_dto); _db.SubmitChanges(); } catch (Exception) {
Error = "THÊM DỮ LIỆU THẤT BẠI"; return false; } return true; } else{ try { list[0].LoaiHoiDong = _Loai; list[0].IDDeTai = long.Parse(_ID); list[0].Ngay = _Ngay; list[0].DiaDiem = _DiaDiem; list[0].GhiChu = _GhiChu; _db.SubmitChanges(); } catch (Exception) {
Error = "SỬA DỮ LIỆU THẤT BẠI"; return false;
}
return true; }
2.3.1.7. Code SQL
CREATE FUNCTION [dbo].[fc_KinhPhiNam]
(
@IDDeTai bigint, @Nam int
)
RETURNS decimal(18,0)
AS BEGIN
DECLARE @KQ decimal(18,0)
select @KQ=isnull(SUM(SoTien),0) from DeTai A inner join
KinhPhi B on A.IDDeTai = B.IDDeTai
where A.IDDeTai = @IDDeTai and Nam = @Nam RETURN @KQ
END
CREATE FUNCTION [dbo].[fc_TongKinhPhi]
( @IDDeTai bigint ) RETURNS decimal(18,0) AS BEGIN DECLARE @KQ decimal(18,0)
select @KQ=isnull(SUM(SoTien),0) from DeTai A inner join
KinhPhi B on A.IDDeTai = B.IDDeTai where A.IDDeTai = @IDDeTai
RETURN @KQ END
SELECT A.*, B.Nam, B.MucTieu, B.BatDau, B.KetThuc, B.KinhPhi, B.DaHoanThanh
FROM (SELECT A.IDDeTai, TenDeTai, B.HoTen, B.MaDV, TenDV, dbo.fc_TongKinhPhi(A.IDDeTai) AS DaCap,
dbo.fc_KinhPhiNam(A.IDDeTai, A.Nam) as DaCapNam
FROM DeTai A INNER JOIN ThanhVien B ON
57
KẾT QUẢ VÀ THẢO LUẬN
1. MỘT SỐ KẾT QUẢ ĐẠT ĐƯỢC
Xây dựng phần mềm quản lý đề tài các cấp của phòng KH&QHQT đảm bảo các chức năng:
Quản lý việc đăng nhập và quản lý người dùng thông qua việc kiểm soát User và Password.
Bảo mật: Sử dụng mã hóa MD5 để mã hóa một số thành phần quan trọng, cần thiết phải bảo mật như Password.
Quản lý danh sách cán bộ theo từng đơn vị: Cho phép người dùng cập nhật thông tin về các đơn vị trong trường, thông tin cán bộ của trường và phân chia danh sách cán bộ theo từng đơn vị.
Quản lý đề tài nghiên cứu khoa học các cấp mỗi năm: Phân cấp đề tài, kiểm tra các đề tài cũ, cập nhật đề tài mới. Quản lý được mục tiêu, dự kiến tiến độ và kinh phí, kết quả dự kiến của đề tài.
Các cá nhân tham gia nghiên cứu khoa học và Hội đồng khoa học của các đề tài được quản lý chặt chẽ: Người dùng cập nhật thông tin Hội đồng khoa học của đề tài, danh sách cán bộ tham gia và chức danh của họ trong hội đồng. Kiểm tra tính hợp lệ của việc một cá nhân đứng ra chủ nhiệm đề tài khoa học, kiểm tra tính hợp lệ của việc đưa một cán bộ vào Hội đồng khoa học.
Quản lý tiến độ đã thực hiện của đề tài, thời hạn đưa ra cho từng tiến độ và kết quả của nó, cùng với kinh phí tương ứng cũng như số kinh phí cấp mỗi năm cho đề tài.
Thống kê: Thống kê đề tài của từng đơn vị theo năm và theo cấp đề tài.
Tìm kiếm: Tìm kiếm đề tài dựa vào lĩnh vực khoa học, tên đề tài, tên chủ nhiệm đề tài.
Thiết kế report: Các bản report theo mẫu mà phòng KH&QHQT sử dụng như: Phiếu đăng ký đề tài cho cán bộ hoặc sinh viên; danh sách hội đồng xét duyệt; báo cáo triển khai thực hiện đề tài; biên bản kiểm tra thực hiện