Luận văn : Cty cổ phần công nghệ thanh toán VN (Vinapay)
Nguyễn Mạnh Hải Quản lý nhân Lời mở đầu Bước sang kỉ 21, bùng nổ công nghệ thơng tin, giới số giúp ích cho người nhiều lĩnh vực kinh tế, xã hội, quốc phịng,an ninh…Cơng việc người ngày phức tạp nhằm đáp ứng nhu cầu sống ngày cao xã hội, tốn đặt phải quản lý nhân cách chặt chẽ hợp lý tất ngành nghề như: y tế, giao thơng, quốc phịng …chứ không riêng kinh doanh sản xuất Xuất phát từ nhu cầu thiết thực nhiều công ty nay, đợt thực tập vừa qua, em nghiên cứu xây dựng phần mềm quản lý nhân công ty Vinapay Với giúp đỡ nhiệt tình anh Cao Hồng Long, người hướng dẫn em thực tập công ty đặc biệt bảo tận tình PGS-TS Đặng Minh Ất, em xây dựng chương trình quản lý nhân với chức đơn giản : nhập thơng tin, xóa thơng tin, sửa chữa lưu trữ thông tin nhân viên công ty Tuy nhiên, kiến thức hạn chế nên chương trình em cịn nhiều thiếu xót, ví dụ như: phần tính hệ số lương chưa hồn thiện… Em xin chân thành cám ơn PGS-TS Đặng Minh Ất, Trưởng Bộ môn Công nghệ thông tin giúp em hồn thành báo cáo Hà Nội, 27-4-2008 Cơng nghệ thơng tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân Chương I.GIỚI THIỆU VỀ CƠNG TY THỰC TẬP VÀ MỤC ĐÍCH XÂY DỰNG PHẦN MỀM I Giới thiệu công ty 1.Giới thiệu công ty: -Cơng ty cổ phần cơng nghệ tốn Việt Nam (Vinapay)- thức thành lập vào tháng 2-2007 nhà đầu tư nước hàng đầu giới tập đồn cơng nghệ Net 1, quỹ đầu tư IDG Venture tập đoàn MK Việt Nam Mục tiêu Vinapay góp phần xây dựng Việt Nam hạ tầng tốn an tồn cho thương mại di động -Tầm nhìn Vinapay mang sức mạnh tiện ích thương mại điện tử đến với tất khách hàng Việt Nam Công ty nỗ lực mang đến cho khách hàng thêm nhiều tiện ích việc mua sắm việc tạo điều kiện thuận lợi mua hàng trực tuyến, toán nhu cầu hàng ngày điện thoại di động, hội để kiếm thêm thu nhập -Sứ mệnh Vinapay trở thành công ty hàng đầu lĩnh vực giao dịch thương mại điện tử di động việc kết hợp tảng công nghệ tiên tiến công nhận giới với mạng lưới phân phối rộng lớn toàn quốc.Vinapay trở thành nhà cung cấp dịch vụ tiền điện tử giải pháp toán nhằm mang đến cho khách hàng nhà bán lẻ tiện lợi an toàn giao dịch với điện thoại di động máy tính nối mạng Internet -Cam kết Vinapay Cung cấp dịch vụ nhanh chóng, an tồn tiện lợi cho tất người, nơi thời gian nào.Cho dù bạn đâu, dịch vụ công ty sẵn sàng với phương châm “Vinapay-Sức mạnh niềm tin” Công nghệ thông tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân -Chiến lược Ngày 25-12-2007 Vinapay thức đưa thị trường dịch vụ MrTopUp (www.mrtopup.com.vn) Bằng việc sử dụng đội ngũ bán hàng cầu nối với nhà phân phối cho phép công ty xây dựng hệ thống phân phối với mục tiêu đạt 24.000 điểm vào cuối năm 2008 Thông qua hệ thống phân phối này, Vinapay triển khai bán Vcash, hình thức tiền điện tử cho phép người dùng mua mã thẻ trả trước điện thoại di động, mã games online, toán trực tuyến, chuyển nhận tiền, đồng thời quản lý tài khoản giao dịch thông qua ứng dụng MrTopUp điện thoại di động Internet -Lợi nhuận Vinapay thu tử khoản chính, bán mã thẻ trả trước, phí giao dịch tốn chuyển Vcash tiền lãi Thời gian đầu, nạp tiền điện thoại di động trả trước cung cấp phần lớn lợi nhuận cho doanh nghiệp, đến cuối năm đưa MrTopUp thị trường, lợi nhuận đến từ phí giao dịch Đến năm thứ trở đi, lượng khách hàng sử dụng Vcash tạo lượng vốn lớn cho phép công ty thu lãi từ số vốn -Lợi so sánh Vinapay bao gồm tảng công nghệ cấp phép từ Net 1và lượng vốn lớn từ nhà đầu tư nước để triển khai kế hoạch tiếp thị quảng cáo Công ty sử dụng tảng cơng nghệ đạt tiêu chuẩn đại tính bảo mật cao triển khai thành công Nam Phi, Phillippin Columbia a năm qua Khi đến Việt Nam, đội ngũ kĩ sư hàng đầu công ty điều chỉnh sáng tạo cho phù hợp với số lượng người dùng điện thoại di động ngày cao Việt Nam Điều quan trọng công ty vấn đề bảo mật Như hiệu “Vinapay -Sức mạnh niềm tin” , nhìn xa rộng hơn, công ty kinh doanh niềm tin tín nhiệm Cơng nghệ thơng tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân Đội ngũ quản lý: -Ông Nguyễn Trọng Khang sáng lập viên Chủ tịch Hội đồng quản trị Vinapay Bắt đầu nghiệp với vị trí Giám đốc phát triển kinh doanh văn phòng đại diện Renong (Malaysia) Hà Nội (1992-1997), ơng Khang tích lũy kinh nghiệm phát triển dự án, quản lý dự án kinh doanh thương mại Năm 1999, ông bắt đầu khởi nghiệp kinh doanh với công ty MK Technology Group phát triển trở thành cơng ty hàng đầu lĩnh vực cơng nghệ dịch vụ thẻ Ơng Khang có cao học Henley Management College (Anh quốc), MBA đại học Boise State (Mỹ) Ông vinh danh với nhiêu giải thưởng kinh doanh nhiều đóng góp lĩnh vực cơng nghiệp trẻ Cơng nghệ thơng tin Việt Nam -Ơng Hồng Kim Chương Phó tổng Giám đốc Quan hệ đối tác Ơng bắt đầu nghiệp với vị trí kĩ sư dầu khí Petechim vào năm 1986 Vũng Tàu Ơng gia nhập cơng ty Café Trung Ngun từ năm 2003-2005, với vị trí Giám đốc Tiếp thị Bán hàng cho phận Kinh doanh quốc tế Ông có MBA đại học Boise State (Mỹ) Thạc sỹ khoa học Đại học dầu khí Quốc gia Mátxcơva, Liên bang Nga Ơng sử dụng thành thạo tiếng Việt, Anh, Nga -Ông Đỗ Việt Hà khởi đầu nghiệp với vị trí chuyên gia thiết kế đồ họa video với công ty công nghệ Miranda Technology Quebec, Canada,năm 1998 nơi ông nhận thạc sĩ kĩ sư điện tử máy tính Ơng trở Việt Nam năm 2004 trở thành Giám đốc cho nhiều dự án tổ chức Lux Development, chương trình phủ Lucxemburg tài trợ vốn Công nghệ thông tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân Ông Hà gia nhập Vinapay năm 2007 với vị trí Phó tổng Giám đốc Vận hành hệ thống -Bà Nguyễn Hương Giang với vai trò Giám đốc Bán hàng tiếp thị, bà Giang phụ trách chiến lược tiếp thị cho Vinapay phát triển đội ngũ kinh doanh cho cơng ty Bà có cử nhân học viện Quan hệ quốc tế Việt Nam 3.Lĩnh vực hoạt động chính: -Sản xuất phát triển loại thẻ liệu công nghệ cao (bao gồm thẻ thơng minh có gắn chip, thẻ cào có mệnh giá trả trước, thẻ quản lý tài khoản, thẻ SIM phục vụ dịch vụ thương mại điện tử…) -Nghiên cứu, phát triển thực dịch vụ công nghệ cao có liên quan đến tốn thương mại điện tử (e-commerce) , thương mại di động (m-commerce), thẻ trả trước, thẻ thông minh -Sản xuất phát triển phần mềm công nghệ cao -Vận hành cổng điện tử, chuyển mạch để thực kết nối hệ thống toán thẻ ngân hàng, thẻ toán, thẻ trả trước đơn vị phát hành thẻ, cho phép người sử dụng điện thoại di động nạp tiền, trả trước thông qua điện thoại di động Internet -Lắp đặt, bảo trì, cho thuê hệ thống thiết bị phát hành thẻ, loại máy chấp nhận toán ATM, máy đọc chấp nhận toán đầu cuối (POS) II.Mục đích xây dựng chương trình: 1.Mục đích xây dựng chương trình: -Việc tin học hố Tổ chức quản lý nhân mang lại nhiều lợi ích so với quản lý thủ công Quản lý thông tin cán bộ, công nhân viên Công nghệ thông tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân toán quan trọng có nhiều ứng dụng việc quản lý nguồn nhân lực, sách cán …nhằm đưa định lĩnh vực xây dựng đội ngũ lao động đủ khả trình độ đáp ứng nhu cầu giai đoạn Với ưu điểm vượt trội: 1.Bộ máy quản lý nhân gọn nhẹ, cần số nhân viên với hệ thống máy vi tính 2.Tổ chức quản lý, lưu trữ hệ thống máy vi tính làm tăng tính an toàn, bảo mật cao 3.Phù hợp với ứng dụng triển khai diện rộng 4.Chi phí ban đầu phải triển khai máy chủ 5.Dễ dàng phát triển ứng dụng, tất ứng dụng phải triển khai máy chủ, dễ bảo trì, phát triển hệ thống 6.Khơng phụ thuộc vào phạm vi ứng dụng Việc mở rộng tốn 7.Đào tạo sử dụng chương trình tốn 8.Dễ dàng tích hợp với ứng dụng khác mơt Website 2.Tổng quan chương trình: *Các chức chính: -Cập nhập hồ sơ nhân viên : Khi tuyển nhân viên cập nhập sơ yếu lí lịch lí lịch cơng chức viên chức -Cập nhập biến động q trình cơng tác: Khi cán tăng lương, lên chức, thay đổi cơng việc, nước ngồi, học, chuyển đơn vị công tác phạm vi tổ chức quan thơng tin kiện lưu hồ sơ -Quản lý vấn đề lien quan đến nhân viên: +Q trình lương +Q trình cơng tác +Q trình học tập Cơng nghệ thơng tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân +Quá trình khen thưởng, kỉ luật +Quan hệ gia đình +Ngoại ngữ -Phân tích báo cáo tình hình nhân sự: Đưa thống kê để phân tích tượng cần điều chỉnh Ví dụ: Có nhiều cán cao tuổi dẫn đến cần chuẩn bị lực lượng kế tục Số lượng nhân viên tăng giảm theo tháng nhiều hay để điều chỉnh, phân cơng cơng việc cách hợp lý -Tìm kiếm, tra cứu thông tin nhân theo tiêu chí để phục vụ cho số trường hợp, VD liệt kê cán theo chun ngành có trình độ nào, nhân viên Sale có trình độ cấp nào, nhân viên marketting biết ngoại ngữ gì, ngày môi giới khách hàng… -Quản trị hệ thống: Chương trình xây dựng sở đối tượng sử dụng phân quyền truy cập vào phần chặt chẽ Người quản trị hệ thống có quyền cao nhất, có quyền cấp (thu) quyền sử dụng chương trình cho người khác Công nghệ thông tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân Chương II TỔNG QUAN VỀ MƠ HÌNH MODEL-VIEWCONTROLLER (MVC) I.Giới thiệu mơ hình MVC: 1.Thiết kế MVC: -MVC viết tắt Model-View-Controller Phương pháp thiết kế MVC phương pháp chia nhỏ ứng dụng thành nhiều lớp chia nhỏ phần giao diện người dùng (User Interface) ứng dụng thành phần Model, View Controller -Model (tạm dịch phần “Mơ hình”) đối tượng tập hợp đối tượng biểu diển cho phần liệu chương trình, ví dụ: liệu lưu sở liệu hay từ hệ thống ứng dụng khác (như mail…) -View (tạm dịch phần “Hiển thị”): Là phần giao diện với người dùng, bao gồm việc liệu hình, cung cấp menu, nút bấm, hộp đối thoại, chọn lựu…, để người dùng thêm, xóa, sửa, tìm kiếm làm thao tác khác liệu hệ thống -Controller (tạm dịch phần “Điều khiển”): Là phần điều khiển toàn logic hoạt động giao diện, tương tác với thao tác người dùng (từ chuột, bàn phím thiết bị ngoại vi khác) cập nhật, thao tác liệu theo đầu vào nhận điều khiển việc chọn phần “Hiển thị” thích hợp để truyền liệu tới người dùng -Với phương pháp thiết kế này, chức hiển thị, chức logic điều khiển chức truy cập liệu chương trình chia thành phần riêng biệt Java ngơn ngữ lập trình hướng đối tượng Cơng nghệ thông tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân túy nên việc áp dụng MVC vào phần mếm viết Java dễ dàng thuận tiện Có hai hình mẫu phương pháp thiết kế MVC Java MVC model MVC model 2.Trong MVC model 1, trang JSP đóng vai trị “Hiển thị” (View) “Điều khiển” (Controller) Có thể có nhiều trang JSP khác đóng vai trị khác -Thao tác người dùng trình duyệt web gửi tới trang JSP Trang JSP khởi tạo nhiều Java Bean (nếu cần thiết), truyền lệnh cần thi hành tới Java Bean (không phải Enterprise Java Bean) -Sau Java Bean thực xong việc truy xuất cập nhập liệu, trang JSP ban đầu hiển thị liệu lấy từ Bean (JSP ban đầu đóng ln vai trị View), chọn trang JSP khác để liệu từ Bean (JSP ban đầu đóng ln vai trị Controller) Trong thiết kế tốt, để đảm bảo việc tách rời phần trình bày logic chương trình, trang JSP nhận u cầu đóng vai trị “Điều khiển” (Contronller) -MVC model có nhược điểm phần logic điều khiển viết trang JSP, phần chương trình Java phức tạp dùng để điều khiển bị lẫn vào mã HTML dùng để trình bày Độ phức tạp chương trình cao, trang JSP khó phát triển bảo trì Hơn nữa, dự án phức tạp, phần hiển thị người thiết kế web giỏi HTML đồ họa thực hiện, phần điều khiển người chuyên lập trình thực Dùng JSP làm phần điều khiển khó phân ranh giới trách nhiệm nhóm thiết kế đồ họa nhóm lập trình Để khắc phục nhược điểm này, MVC model đời Trong MVC model 2, nhiều servlet (thường một) đóng vai trị điều khiển, Java Bean đóng vai trị mơ hình trang JSP đóng vai trị hiển thị Công nghệ thông tin – 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân -Trong model 2, logic phức tạp chương trình viết hồn tồn servlet (chương trình Java) Phần hiển thị gồm trang JSP với vài mã đơn giản để lấy liệu có sẵn, khơng có logic phức tạp, hồn tồn giao cho người thiết kế web Các yêu cầu người dùng gửi từ trình duyệt web tới servlet Servlet khởi tạo Java Bean (nếu cần thiết), lệnh thu nhập, cập nhập thông tin Khi Java Bean hồn thành cơng việc, servlet chọn trang JSP thích hợp để thơng tin Java Bean cho người dùng Đây cách sử dụng MVC hiệu Java Tất nhiên, sử dụng MVC model cách hoàn toàn cứng nhắc, phần “Điều khiển” dùng servlet, phần “Hiển thị” dùng JSP dãn đến vài trường hợp hiệu quả, yêu cầu từ trình duyệt web địi hỏi việc hiển thị thơng tin Trong trường hợp này, gửi thẳng yêu cầu hiển thị từ trình duyệt web tới trang JSP hiệu Trong cách áp dụng MVC này, yêu cầu có liên quan đến logic chương trình truy cập liệu gửi tới servlet controller, yêu cầu liên quan tới hiển thị gửi tới JSP controller Công nghệ thông tin – 46 10 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân private string username; public string Username { get { return username; } set { username = value; } } private string nameMenu; public string NameMenu { get { return nameMenu;} set { nameMenu = value;} } private string link; public string Link { get { return link; } set { link = value; } } private string idParent; public string IdParent { get { return idParent; } set { idParent = value; } } } EmployeeDetails using using using using using using using using using System; System.Data; System.Configuration; System.Web; System.Web.Security; System.Web.UI; System.Web.UI.WebControls; System.Web.UI.WebControls.WebParts; System.Web.UI.HtmlControls; /// /// Summary description for EmployeeDetails /// /// public class EmployeeDetails { public EmployeeDetails() { // // TODO: Add constructor logic here // } private string employeeID; Công nghệ thông tin – 46 42 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân public string EmployeeID { get { return employeeID; } set { employeeID = value; } } private string firstName; public string FirstName { get { return firstName; } set { firstName = value; } } private string lastName; public string LastName { get { return lastName; } set { lastName = value; } } private private private private private private private private private private private private DateTime dateOfBirth;// //datetime Checked string pernamentAddress ; string iDCardNumber; DateTime issuedDate;// datetime Checked string issuedPlace;// nchar(30) Checked string title; // nchar(30) Checked string department; // nchar(30) Checked DateTime startDate;// datetime Checked DateTime probEnd; //datetime Checked DateTime endDate; //datetime Checked string contractStatus;// nchar(50) Checked int grossSalaryStatus;// numeric(18, 0) Checked public DateTime DateOfBirth { get { return dateOfBirth; } set { dateOfBirth = value; } } public string PernamentAddress { get { return pernamentAddress; } set { pernamentAddress = value; } } public string IDCardNumber { get { return iDCardNumber; } set { iDCardNumber = value; } } public DateTime IssuedDate { get { return issuedDate; } set { issuedDate = value; } }// datetime Checked Công nghệ thông tin – 46 43 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân public string IssuedPlace { get { return issuedPlace; } set { issuedPlace = value; } }// nchar(30) Checked public string Title { get { return title; } set { title = value; } }// nchar(30) Checked public string Department { get { return department; } set { department = value; } }// nchar(30) Checked public DateTime StartDate { get { return startDate; } set { startDate = value; } }// datetime Checked public DateTime ProbEnd { get { return probEnd; } set { probEnd = value; } }//datetime Checked public DateTime EndDate { get { return endDate; } set { endDate = value; } } //datetime Checked public string ContractStatus { get { return contractStatus; } set { contractStatus = value; } }// nchar(50) Checked public int GrossSalaryStatus { get { return grossSalaryStatus; } set { grossSalaryStatus = value; } }// numeric(18, 0) Checked // private string pernamentAddress; // public string PernamentAddress //{ // set { PernamentAddress = value; } // } public EmployeeDetails(string employeeID, string firstName, string lastName) { this.employeeID = employeeID; this.firstName = firstName; this.lastName = lastName; //this.pernamentAddress = pernamentAddress; Công nghệ thông tin – 46 44 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải } Quản lý nhân } III.Controller(Điều khiển): Gồm AccountDB (Tài khoản), MenuDB (Thư mục), EmployeeDB (Nhân viên) *Code phần AccountDB (Tài khoản): using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; /** * Task: add lib * Author: longch - cao hoang long **/ using System.Data.SqlClient; using System.Collections; /// /// Summary description for AccountDB /// public class AccountDB { private Common objCommon = new Common(); /** * Function : AccountDB * Author : longch * Date : 2007 - 12 - 22 * Input : * Output : * Description : **/ public AccountDB() { // // TODO: Add constructor logic here // connectionString = ConfigurationSettings.AppSettings["databaseConnectionString"]; } /** * Function : AccountDB * Author : longch * Date : 2007 - 12 - 22 * Input : * Output : * Description : **/ Công nghệ thông tin – 46 45 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân private string connectionString; public string ConnectionString { get { return connectionString; } set { connectionString = value; } } /** * Function : AccountDB * Author : longch * Date : 2007 - 12 - 22 * Input : * Output : * Description : **/ private int error; /** * Function : AccountDB * Author : longch * Date : 2007 - 12 - 22 * Input : * Output : * Description : **/ public int Error { get { return error; } set { error = value; } } private string errorDetail; public string ErrorDetail { get { return errorDetail; } set { errorDetail = value; } } public int CheckAccount(AccountDetails acc) { SqlConnection = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand("CountAccount", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 10)); cmd.Parameters["@Username"].Value = acc.Username; cmd.Parameters.Add(new SqlParameter("@Password", SqlDbType.NVarChar, 10)); cmd.Parameters["@Password"].Value = acc.Password; Error = 0; try { con.Open(); return (int)cmd.ExecuteScalar(); } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Công nghệ thông tin – 46 46 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân Error = 1; ErrorDetail = objError.ToString(); return -1; } finally { con.Close(); } } public int CheckAdminAccount(AccountDetails parAccountDetails) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("CheckAdminAccount", objConnection); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Username"].Value = parAccountDetails.Username; objCommand.Parameters.Add(new SqlParameter("@Password", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Password"].Value = parAccountDetails.Password; Error = 0; try { objConnection.Open(); return (int)objCommand.ExecuteScalar(); } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return -1; } finally { objConnection.Close(); } } public int CheckAccount(string _username) { SqlConnection = new SqlConnection(connectionString); SqlCommand cmd = new SqlCommand("CountAccount2", con); cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 10)); cmd.Parameters["@Username"].Value = _username; Error = 0; try { Công nghệ thông tin – 46 47 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân con.Open(); return (int)cmd.ExecuteScalar(); } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return 0; } finally { con.Close(); } } public int InsertAccount(AccountDetails parAccountDetails) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objcommand = new SqlCommand("InsertAccount", objConnection); objcommand.CommandType = CommandType.StoredProcedure; objcommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 10)); objcommand.Parameters["@UserName"].Value = parAccountDetails.Username; objcommand.Parameters.Add(new SqlParameter("@Password", SqlDbType.NVarChar, 10)); objcommand.Parameters["@Password"].Value = parAccountDetails.Password; objcommand.Parameters.Add(new SqlParameter("@Administrator", SqlDbType.NVarChar, 10)); objcommand.Parameters["@Administrator"].Value = Convert.ToInt32(parAccountDetails.Administrator); Error = 0; try { objConnection.Open(); objcommand.ExecuteNonQuery(); return 1; } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return 0; } finally { objConnection.Close(); } Công nghệ thông tin – 46 48 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải } /** * Function * Author * Update * Date * Input * Output * Description Quản lý nhân : AccountDB : longch : DucPN : 2007 - 12 - 22 : (AccountDetails acc)(int) :int : return =0 dont change return =1 change pass **/ public int ChangePassword(AccountDetails parAccountDetails) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("ChangePassword", objConnection); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.Add(new SqlParameter("@UserName", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Username"].Value = parAccountDetails.Username; objCommand.Parameters.Add(new SqlParameter("@Password", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Password"].Value = parAccountDetails.Password; Error = 0; //check blank pass if (objCommon.CheckEmpty(parAccountDetails.Password) != 1) try { objConnection.Open(); objCommand.ExecuteNonQuery(); return 1; } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return 0; } finally { objConnection.Close(); } else return 0; } public AccountDetails[] GetAllAccounts() Công nghệ thông tin – 46 49 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("GetAllAccounts", objConnection); objCommand.CommandType = CommandType.StoredProcedure; // Create a collection for all the employee records ArrayList arrAccounts = new ArrayList(); Error = 0; try { objConnection.Open(); SqlDataReader objReader = objCommand.ExecuteReader(); while (objReader.Read()) { AccountDetails objAccountDetails = new AccountDetails(); //(int)reader["EmployeeID"], (string)reader["FirstName"], //(string)reader["LastName"], (string)reader["TitleOfCourtesy"]); objAccountDetails.Username = objReader["Username"].ToString(); objAccountDetails.Password = objReader["Password"].ToString(); objAccountDetails.Administrator = objReader["Administrator"].ToString() ; arrAccounts.Add(objAccountDetails); } objReader.Close(); return ((AccountDetails[])arrAccounts.ToArray(typeof(AccountDetails))); } catch (SqlException objError) { //throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return null; } finally { objConnection.Close(); } } public AccountDetails[] GetAllUser() { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("GetUser", objConnection); objCommand.CommandType = CommandType.StoredProcedure; // Create a collection for all the employee records ArrayList arrAccounts = new ArrayList(); Error = 0; try { Công nghệ thông tin – 46 50 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân objConnection.Open(); SqlDataReader objReader = objCommand.ExecuteReader(); while (objReader.Read()) { AccountDetails objAccountDetails = new AccountDetails(); //(int)reader["EmployeeID"], (string)reader["FirstName"], //(string)reader["LastName"], (string)reader["TitleOfCourtesy"]); objAccountDetails.Username = objReader["Username"].ToString(); objAccountDetails.Password = objReader["Password"].ToString(); objAccountDetails.Administrator = objReader["Administrator"].ToString(); arrAccounts.Add(objAccountDetails); } objReader.Close(); return ((AccountDetails[])arrAccounts.ToArray(typeof(AccountDetails))); } catch (SqlException objError) { //throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return null; } finally { objConnection.Close(); } } public AccountDetails[] GetAccounts(string parUsername) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("GetAccounts", objConnection); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.Add(new SqlParameter("@Username", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Username"].Value = parUsername; // Create a collection for all the employee records ArrayList arrAccounts = new ArrayList(); Error = 0; try { objConnection.Open(); SqlDataReader objReader = objCommand.ExecuteReader(); while (objReader.Read()) { AccountDetails objAccountDetails = new AccountDetails(); Công nghệ thông tin – 46 51 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân //(int)reader["EmployeeID"], (string)reader["FirstName"], //(string)reader["LastName"], (string)reader["TitleOfCourtesy"]); objAccountDetails.Username = objReader["Username"].ToString(); objAccountDetails.Password = objReader["Password"].ToString(); objAccountDetails.Administrator = objReader["Administrator"].ToString(); arrAccounts.Add(objAccountDetails); } objReader.Close(); return ((AccountDetails[])arrAccounts.ToArray(typeof(AccountDetails))); } catch (SqlException objError) { //throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return null; } finally { objConnection.Close(); } } public AccountDetails GetAccount(string parUsername) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("GetAccounts", objConnection); AccountDetails objAccountDetails = new AccountDetails(); ArrayList arrAccounts = new ArrayList(); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.Add(new SqlParameter("@Username", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Username"].Value = parUsername; // Create a collection for all the employee records Error = 0; try { objConnection.Open(); SqlDataReader objReader = objCommand.ExecuteReader(); while (objReader.Read()) { //(int)reader["EmployeeID"], (string)reader["FirstName"], //(string)reader["LastName"], (string)reader["TitleOfCourtesy"]); Công nghệ thông tin – 46 52 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân objAccountDetails.Username = objReader["Username"].ToString(); objAccountDetails.Password = objReader["Password"].ToString(); objAccountDetails.Administrator = objReader["Administrator"].ToString(); arrAccounts.Add(objAccountDetails); } objReader.Close(); } catch (SqlException objError) { //throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return null; } finally { objConnection.Close(); } return objAccountDetails; } public int DeleteAccount(string parUsername) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("DeleteAccount", objConnection); SqlCommand objDeleteMenu = new SqlCommand("DeleteMenu_acc",objConnection); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.Add(new SqlParameter("@Username", SqlDbType.NVarChar, 10)); objCommand.Parameters["@Username"].Value = parUsername; objDeleteMenu.CommandType = CommandType.StoredProcedure; objDeleteMenu.Parameters.Add(new SqlParameter("@_Username", SqlDbType.NVarChar, 20)); objDeleteMenu.Parameters["@_Username"].Value = parUsername; Error = 0; try { objConnection.Open(); objCommand.ExecuteNonQuery(); objDeleteMenu.ExecuteNonQuery(); } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return 0; } finally Công nghệ thông tin – 46 53 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân { objConnection.Close(); } return 1; } public int UpdateAccount(AccountDetails parAccountDetails) { SqlConnection objConnection = new SqlConnection(connectionString); SqlCommand objCommand = new SqlCommand("UpdateAccount", objConnection); objCommand.CommandType = CommandType.StoredProcedure; objCommand.Parameters.Add(new SqlParameter("@Username", SqlDbType.NVarChar, 10)); objCommand.Parameters.Add(new SqlParameter("@Password", SqlDbType.NVarChar, 10)); objCommand.Parameters.Add(new SqlParameter("@Administrator", SqlDbType.Int, 8)); objCommand.Parameters["@Username"].Value = parAccountDetails.Username; objCommand.Parameters["@Password"].Value = parAccountDetails.Password; int intValue; if (objCommon.CheckString(parAccountDetails.Administrator) == 0) { intValue = Int32.Parse(parAccountDetails.Administrator); } else { intValue = 0; } objCommand.Parameters["@Administrator"].Value = intValue; Error = 0; try { objConnection.Open(); objCommand.ExecuteNonQuery(); } catch (SqlException objError) { // Replace the error with something less specific // You could also log the error now // throw new ApplicationException("Data error."); Error = 1; ErrorDetail = objError.ToString(); return 0; } finally { objConnection.Close(); } return 1; } } Công nghệ thông tin – 46 54 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Quản lý nhân MỤC LỤC Công nghệ thông tin – 46 55 Trường ĐH Kinh tế Quốc dân Nguyễn Mạnh Hải Công nghệ thông tin – 46 Quản lý nhân 56 Trường ĐH Kinh tế Quốc dân ... XÂY DỰNG PHẦN MỀM I Giới thiệu công ty 1.Giới thiệu công ty: -Cơng ty cổ phần cơng nghệ tốn Việt Nam (Vinapay)- thức thành lập vào tháng 2-2007 nhà đầu tư nước hàng đầu giới tập đồn cơng nghệ Net... tảng công nghệ cấp phép từ Net 1và lượng vốn lớn từ nhà đầu tư nước để triển khai kế hoạch tiếp thị quảng cáo Công ty sử dụng tảng cơng nghệ đạt tiêu chuẩn đại tính bảo mật cao triển khai thành công. .. công nghệ cao có liên quan đến tốn thương mại điện tử (e-commerce) , thương mại di động (m-commerce), thẻ trả trước, thẻ thông minh -Sản xuất phát triển phần mềm công nghệ cao -Vận hành cổng