Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 57 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
57
Dung lượng
734,58 KB
Nội dung
Luận văn Áp dụng mơ hình MVC Cơng ty cổ phần cơng nghệ tốn Việt Nam (Vinapay) LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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, toá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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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” LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com -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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Độ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 (19921997), ô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 Nguyên 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Ô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 toá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 tố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 hoá 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com tố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 tồ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: +Quá trình lương +Q trình cơng tác +Q trình học tập LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com +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 chuyên 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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ị 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com } 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 // } 43 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com private string employeeID; 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; } 44 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com }// datetime Checked 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; 45 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com //this.pernamentAddress = pernamentAddress; } } 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 : 46 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com **/ 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 47 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com // throw new ApplicationException("Data error."); 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 48 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com { 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(); 49 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com } } /** * Function * Author * Update * Date * Input * Output * Description : 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; } 50 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com public AccountDetails[] GetAllAccounts() { 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; 51 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com 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[] 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()) 52 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com { 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 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()) { 53 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com //(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(); } 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; 54 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ErrorDetail = objError.ToString(); return 0; } finally { 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(); 55 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com } return 1; } } 56 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com MỤC LỤC Lời mở đầu 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: Đội ngũ quản lý: 3.Lĩnh vực hoạt động chính: II.Mục đích xây dựng chương trình: 1.Mục đích xây dựng chương trình: 2.Tổng quan chương trình: Chương II TỔNG QUAN VỀ MƠ HÌNH MODELVIEW-CONTROLLER (MVC) I.Giới thiệu mơ hình MVC: 1.Thiết kế MVC: CHƯƠNG III.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 12 I Giới thiệu : 12 II Phân tích hệ thống theo Chức 12 1.Quản lý người dùng 12 2.Quản lý thư mục 13 3.Quản lý Phân quyền 13 4.Quản lý Nhân viên 13 III Phân tích hệ thống theo sơ đồ luồng liệu 13 1.Sơ đồ luồng liệu mức ngữ cảnh 13 2.Sơ đồ luồng liệu mức đỉnh : 14 3.Sơ đồ luồng liệu mức đỉnh: 15 4.Sơ đồ luồng liệu tổng quát: 17 VI.Các bảng sở liệu dùng chương trình: 18 CHƯƠNG IV.CẤU TRÚC CHƯƠNG TRÌNH ĐƯỢC ÁP DỤNG MƠ HÌNH MVC 21 I.View(Interface_Hiển thị): 21 1.Truy cập vào web: 21 2.Nhân viên: 32 3.Thư mục: 39 III.Controller(Điều khiển): 46 57 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com ... 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... 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. .. luanvanchat@agmail.com 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