Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 1 TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT MÁY TÍNH NGHIÊN CỨU, XÂY DỰNG PHẦN MỀN QUẢN LÝ
NHÂN SỰ TRÊN ANDROID BÁO CÁO THỰC TẬP DOANH NGHIỆP
GVHD: VÕ ĐỖ THẮNG
SVTH : NGÔ THANH TUẤN
MSSV: 10520456
LỚP: KTMT2010
Thành phố Hồ Chí Minh – Năm 2014 Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 2
ĐÁNH GIÁ KẾT QUẢ THỰC TẬP CỦA GVHD
CHƯƠNG V: KIẾN TRÚC HỆ THỐNG VÀ DEMO CHƯƠNG TRÌNH 26
I. Kiến trúc hệ thống chương trình trên Android: 26
II. Demo Chương Trình 28
KẾT QUẢ ĐẠT ĐƯỢC QUA THỰC TẬP 33
V. TÀI LIỆU THAM KHẢO 34 Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 5
I. LỊCH LÀM VIỆC TẠI NƠI THỰC TẬP
1. Đơn vị thực tập : TRUNG TÂM ĐÀO TẠO QUẢN TRỊ MẠNG & AN NINH
MẠNG QUỐC TẾ ATHENA
2. Người hướng dẫn: Thầy Võ Đỗ Thắng (Giám Đốc Trung Tâm ATHENA)
3. Sinh viên: Lộc Văn Tiến MSSV: 10520298 Khoa: KTMT2010
Lịch thực tập:
- Thứ 3 hàng tuần từ 10h00 am - 14h00 pm
- Thứ 4 và thứ 5 hàng tuần từ 17h00 pm – 20h00 pm
II. GIỚI THIỆU TRUNG TÂM ATHENA
Trung Tâm Đào Tạo Quản Trị Mạng & An Ninh Mạng Quốc Tế ATHENA được
thành lập từ năm 2004, là một tổ chức qui tụ nhiều trí thức trẻ Việt Nam đầy năng động,
nhiệt huyết và kinh nghiệm trong lãnh vực CNTT, với tâm huyết góp phần vào công cuộc
thúc đẩy tiến trình đưa công nghệ thông tin là ngành kinh tế mũi nhọn, góp phần phát
triển nước nhà.
Lĩnh vực hoạt động chính:
Trung tâm ATHENA đã và đang tập trung chủ yếu vào đào tạo chuyên sâu quản
trị mạng, an ninh mạng, thương mại điện tử theo các tiêu chuẩn quốc tế của các hãng nổi
tiếng như Microsoft, Cisco, Oracle, Linux LPI , CEH, Song song đó, trung tâm
ATHENA còn có những chương trình đào tạo cao cấp dành riêng theo đơn đặt hàng của
các đơn vị như Bộ Quốc Phòng, Bộ Công An , ngân hàng, doanh nghiệp, các cơ quan
III. NỘI DUNG NHIỆM VỤ CHÍNH ĐƯỢC GIAO TẠI ATHENA
1. Nghiên cứu mô hình ERD, thiết kế Database cho hệ thống quản lý nhân sự.
2. Nghiên cứu, cài đặt Android,cài đặt máy ảo giả lập, các công cụ hỗ trợ xây
dựng hệ thống quản lý nhân sự.
3. Xây dựng hệ thống, nghiên cứu và sử dụng thuật toán JSON kết nối database
Sử dụng phpMyAdmin để tạo cơ sở dữ liệu cho chương trình.
Phương thức json kết nối database
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 7
Web sercive
4. Tạo report – báo cáo kết quả làm được hàng tuần
IV. NỘI DUNG CÁC CÔNG VIỆC VÀ KẾT QUẢ ĐẠT ĐƯỢC
CHƯƠNG I: KHẢO SÁT HỆ THỐNG
1. Tổng quan về hệ thống quản lý
Quản lý là cách biểu hiện một ý chí muốn biến đổi và thuần phục một tổng thể các
hiện tượng. Đó là việc tạo ra các sự kiện, thay vì để cho các sự kiện xảy ra bộc phát. Đây
không phải là sự lắp ráp các nhiệm vụ rời rạc mà là hoạt động phân biệt rõ ràng với các
chức năng khác của tổ chức.
2. Chức năng và nhiệm vụ của hệ thống quản lý nhân sự
Hệ thống quản lý nhân sự có chức năng thường xuyên thông báo cho ban lãnh đạo về
các mặt công tác: tổ chức lao động, tiền lương cho nhân viên, hệ thống này được đặt
dưới sự chỉ đạo trực tiếp của giám đốc.
Với chức năng như vậy, hệ thống quản lý nhân sự có nhiệm vụ luôn cập nhật hồ sơ
cán bộ công nhân viên theo quy định, thường xuyên bổ xung những thông tin thay đổi
trong quá trình công tác của cán bộ công nhân viên, việc theo dõi và quản lý lao động để
thanh toán lương cũng là nhiệm vụ quan trọng của hệ thống.
Ngoài ra, công tác thống kê báo cáo tình hình theo yêu cầu của ban giám đốc cũng là
nhiệm vụ không thể thiếu trong hệ thống quản lý cán bộ .
3. Yêu cầu của hệ thống và những khó khăn
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 9 Biểu đồ phân cấp chức năng của hệ quản lý nhân sự
2. Xây dựng mô hình ERD về hệ thống quản lý nhân sự
Các thực thể và thuộc tính tương ứng:
a.NHANVIEN (MaNV, HoTen, GioiTinh, NgaySinh, DanToc, QueQuan, SoDienThoai,
MaPB, MaCV, MaTDHV, BACLUONG)
b.PHONGBAN (MaPB, TenPhongBan, SoDienThoai)
c.CHUCVU (MaCV, TenCV)
d.TDHV (MaTDHV, TenTrinhDo)
e.LUONG (BacLuong, LuongCoban, HesoLuong, HesoPhucap)
f.TGCT(MaNV, MaCV, NgayNhamChuc)
g.THONGBAO(MaTB, ThongBao, MaPB, ThoiGian)
QUẢN LÝ NHÂN SỰ
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 10 Mô hình ERD trong quản lý nhân sự
3. Xây dựng mô hình cơ sở dữ liệu
Thiết kế các file dữ liệu
3.1.1 Bảng NHAN VIEN lưu trữ thông tin về các nhân viên của công ty đang
trong hiệu lực của hợp đồng
STT
Tên trường
Giới tính
6
DanToc
Text
20
Dân tộc
7
SoDienthoai
Number
20
Số điện thoại liên lạc
8
MaPB
Text
15
Mã phòng ban
9
MaCV
Text
15
Mã chức vụ
10
MaTDVH
Text
15
Mã trình độ văn hóa
11
BacLuong
Number
10
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 12
3.1.3 Bảng CHUC VU quản lý các chức danh hiện có của kết cấu tổ chức trong
doanh nghiệp
Stt
Tên trường
Kiểu
Độ rộng
Giải thích
1
MaCV
Text
10
Mã chức vụ
2
TenCV
Text
20
Tên chức vụ
3.1.4 Bảng TDHV (trình độ học vấn) quản lý các trình độ chuyên môn đã đạt
được của nhân viên cho tới thời điểm hiện tại
Stt
Tên trường
Kiểu
Độ rộng
Giải thích
1
MaTDHV
Hệ số lương
4
HesoPhucap
Number
10
Hệ số phụ cấp
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 13
3.1.6 Bảng TGCT (thời gian công tác) dùng để lưu trữ thời gian bắt đầu đảm
nhiệm chức vụ của mỗi nhân viên
Stt
Tên trường
Kiểu
Độ rộng
Giải thích
1
MaNV
Text
10
Mã nhân viên
2
MaCV
Text
10
Mã chức vụ
3
Ngày nhận thông
báo
CHƯƠNG III: XÂY DỰNG CƠ SỞ DỮ LIỆU
1. Hệ cơ sở dữ liệu
Cơ sở dữ liệu là một kho chứ thông tin, có nhiều loại cơ sở dữ liệu, trong đó phổ biến
nhất hiện nay chính là cơ sở dữ liệu quan hệ.
Một cơ sở dữ liệu quan hệ:
- Chứa dữ liệu trong các bảng, được cấu tạo bởi các dòng (mẫu tin) và các cột
(trường)
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 14
- Cho phép lấy về (truy vấn) các tập hợp dữ liệu con từ các bảng.
- Cho phép nối các bảng lại với nhau cho mục đích truy cập các mẫu tin liên quan
với nhau chứa trong các bảng khác nhau.
Bộ máy cơ sở dữ liệu: Chức năng cơ bản của một cơ sở dữ liệu được cung cấp bởi
một bộ máy cơ sở dữ liệu, là hệ thống quản lý cách thức chứa và trả về dữ liệu.
Bảng và trường: Các cơ sở dữ liệu được cấu tạo từ các bảng dùng thể hiện các phân
nhóm dữ liệu. Bảng chứa các mẫu tin là các mẫu dữ liệu riêng rẽ bên trong phân nhóm dữ
liệu. Mẫu tin chứa các trường, mỗi trường thể hiện một bộ phận dữ liệu trong một mẫu
tin.
RecordSet: Khi tạo bảng cần nắm được cách thao tác với các bảng. Thao tác với các
bảng liên quan đến việc nhập và lấy về dữ liệu từ các bảng khác cũng như việc kiểm tra
và sữa đổi cấu trúc bảng. Thao tác dữ liệu trong một bảng ta dùng Recordset. RecordSet
là một cấu trúc dữ liệu thể hiện một tập hợp con các mẫu tin lấy về từ cơ sở dữ liệu.
Khóa chính: Một trường được chỉ ra là khóa chính của bảng phục vụ cho việc xác
định duy nhất các thuộc tính
Khóa ngoại: Là khóa trong bảng liên quan chứa bản sao của khóa chính của bản chính
Mối quan hệ: là một cách định nghĩa chính thức hai bảng liên hệ với nhau như thế nào.
một tập hợp các chức năng được xác định trước, như hiển thị dữ
liệu BLOB như hình ảnh hoặc tải về liên kết
Giám sát các truy vấn (quy trình) Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 16 2.2 Thiết kế các mô đun dữ liệu
2.2.1 Bảng NHAN VIEN
2.2.2 Bảng PHONG BAN
2.2.3 Bảng LUONG
2.2.4 Bảng CHUC VU
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 17
2.2.5 Bảng TDH
static String json = "";
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url, List<NameValuePair> params)
{ try {
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
httpPost.setEntity(new UrlEncodedFormEntity(params));
HttpResponse httpResponse = httpClient.execute(httpPost);
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 19
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace(); }
try {
BufferedReader reader = new BufferedReader(new
InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n"); }
is.close();
json = sb.toString();
Log.e("JSON", json);
public JSONObject loginUser(String email, String password){
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("tag", login_tag));
params.add(new BasicNameValuePair("email", email));
params.add(new BasicNameValuePair("password", password));
JSONObject json = jsonParser.getJSONFromUrl(loginURL, params);
return json;
}
}
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 21
Sau khi cài đặt xamp. Trong thư mục localhost của phần mềm cụ thể ở đây là
htdocs C:\xampp\htdocs nhóm tạo folder là android_login_api. Như vậy ta được dạng địa
chỉ như sau: C:\xampp\htdocs\android_login_api
ở client cần có link kết nối. link kết nối ở đây là ip localhost tức là ip của máy tính
trong cùng 1 đường mạng với điện thoại client được kết nối. Máy tính đóng vai trò là
server.
Ở đây nhóm sử dụng router wifi làm đường mạng kết nối chung cho máy tính
sever và điện thoại client. Ip của máy tính là 192.168.0.111 đo đó link kết nối tới sever là
http://192.168.0.111/android_login_api/
II. WEB SERVICE:
Trong thư mục android_login_api ta cần thêm các file như sau:
Index.php là 1 chương trình viết bằng mã php. Khi người dùng kết nối tới link :
http://192.168.0.111/android_login_api/ thì index.php sẽ được gọi ra. Chương trình này
có chức năng nhận các lệnh gửi từ client, phân tích và xử lý các yêu cầu, đóng gọi lại các
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// user not found
// echo json with error = 1
$response["error"] = 1;
$response["error_msg"] = "Incorrect email or password!";
echo json_encode($response);
}}
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 23
else {
echo "Invalid Request";
}
} else {
echo "Access Denied"; } ?>
Trong thư mục include chứ các class php thực hiện cho việc kết nối database và
hàm truy xuất dữ liệu từ php:
Hàm kết nối: tên file config.php
<?php
define("DB_HOST", "localhost");
define("DB_USER", "root");
define("DB_PASSWORD", "");
define("DB_DATABASE", "staff-manager");
?>
Tên file DB_Connect.php
<?php
class DB_Connect {
// constructor
//put your code here
// constructor
function __construct() {
require_once 'DB_Connect.php';
// connecting to database
$this->db = new DB_Connect();
$this->db->connect();
}
// destructor
function __destruct() {
}
public function getUserByEmailAndPassword($email, $password) {
$result = mysql_query("SELECT * FROM users WHERE email = '$email'") or
Báo Cáo Thực Tập
SVTH: Lộc Văn Tiến Trang 25
die(mysql_error());
// check for result
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
$result = mysql_fetch_array($result);
$salt = $result['salt'];
$encrypted_password = $result['encrypted_password'];
$hash = $this->checkhashSSHA($salt, $password);
// check for password equality
if ($encrypted_password == $hash) {
// user authentication details are correct
return $result;
}
} else {