Tất nhiên, sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần
“Điều khiển” chỉ dùng servlet, phần “Hiển thị” chỉ dùng JSP sẽ dãn đến một
vài trường hợp kém hiệu quả, nhất là khi các yêu cầu từ trình duyệt web chỉ
đò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 sẽ hiệu quả hơn. Trong cách áp dụng
MVC này, các yêu cầu có liên quan đến logic chương trình hoặc truy cập dữ
liệu sẽ gửi tới servlet controller, còn các yêu cầu chỉ liên quan tới hiển thị sẽ
được gửi tới JSP controller.
57 trang |
Chia sẻ: lylyngoc | Lượt xem: 2418 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Luận văn Áp dụng mô hình MVC của Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ệu hay từ các hệ thống ứng dụng khác (như
mail…).
-View (tạm dịch là phần “Hiển thị”): Là phần giao diện với người
dùng, bao gồm việc hiện dữ liệu ra màn hình, cung cấp các menu, nút bấm,
hộp đối thoại, chọn lựu…, để người dùng có thể thêm, xóa, sửa, tìm kiếm và
làm các thao tác khác đối với dữ liệu trong hệ thống.
-Controller (tạm dịch là phần “Điều khiển”): Là phần điều khiển toàn
bộ logic về hoạt động của giao diện, tương tác với thao tác của người dùng
(từ chuột, bàn phím và các thiết bị ngoại vi khác) và cập nhật, thao tác trên
dữ liệu theo đầu vào nhận được và điều khiển việc chọn phần “Hiển thị”
thích hợp để truyền dữ liệu tới người dùng.
-Với phương pháp thiết kế này, các chức năng hiển thị, chức năng
logic điều khiển và chức năng truy cập dữ liệu của chương trình được chia
thành các phần riêng biệt. Java là một ngôn ngữ lập trình hướng đối tượng
10
thuần túy nên việc áp dụng MVC vào các phần mếm viết bằng Java rất dễ
dàng và thuận tiện. Có hai hình mẫu chính của phương pháp thiết kế MVC
trong Java là MVC model 1 và MVC model 2.Trong MVC model 1, các
trang JSP đóng vai trò “Hiển thị” (View) và “Điều khiển” (Controller). Có
thể có nhiều trang JSP khác nhau đóng các vai trò khác nhau.
-Thao tác của người dùng trên trình duyệt web được gửi tới một trang
JSP. Trang JSP này sẽ khởi tạo một hoặc nhiều Java Bean (nếu cần thiết),
truyền các lệnh cần thi hành tới Java Bean (không phải Enterprise Java
Bean).
-Sau khi Java Bean thực hiện xong việc truy xuất hoặc cập nhập dữ
liệu, trang JSP ban đầu có thể hiển thị dữ liệu lấy từ Bean (JSP ban đầu đóng
luôn vai trò View), hoặc chọn một trang JSP khác để hiện dữ liệu từ Bean
(JSP ban đầu đóng luôn vai trò Controller). Trong một thiết kế tốt, để đảm
bảo việc tách rời phần trình bày và logic của chương trình, trang JSP nhận
yêu cầu chỉ đóng vai trò “Điều khiển” (Contronller).
-MVC model 1 có một nhược điểm là phần logic điều khiển được viết
trong trang JSP, như vậy phần chương trình Java phức tạp dùng để điều
khiển sẽ bị lẫn vào trong mã HTML dùng để trình bày. Độ phức tạp của
chương trình càng cao, thì trang JSP càng khó phát triển và bảo trì. Hơn nữa,
trong các dự án phức tạp, phần hiển thị do người thiết kế web giỏi về HTML
và đồ họa thực hiện, còn phần điều khiển được người chuyên về lập trình
thực hiện. Dùng JSP làm phần điều khiển sẽ khó phân ranh giới trách nhiệm
giữa nhóm thiết kế đồ họa và nhóm lập trình. Để khắc phục nhược điểm này,
MVC model 2 ra đời. Trong MVC model 2, một hoặc nhiều servlet (thường
là một) đóng vai trò điều khiển, các Java Bean đóng vai trò mô hình và các
trang JSP đóng vai trò hiển thị.
11
-Trong model 2, các logic phức tạp của chương trình được viết hoàn
toàn trong các servlet (chương trình Java). Phần hiển thị chỉ gồm các trang
JSP với một vài mã đơn giản để lấy dữ liệu có sẵn, không có logic phức tạp,
vì thế hoàn toàn có thể giao cho người thiết kế web. Các yêu cầu của người
dùng được gửi từ trình duyệt web tới servlet. Servlet sẽ khởi tạo Java Bean
(nếu cần thiết), ra lệnh thu nhập, cập nhập thông tin. Khi Java Bean hoàn
thành công việc, servlet sẽ chọn trang JSP thích hợp để hiện thông tin trong
Java Bean cho người dùng. Đây là cách sử dụng MVC rất hiệu quả trong
Java. Tất nhiên, sử dụng MVC model 2 một cách hoàn toàn cứng nhắc, phần
“Điều khiển” chỉ dùng servlet, phần “Hiển thị” chỉ dùng JSP sẽ dãn đến một
vài trường hợp kém hiệu quả, nhất là khi các yêu cầu từ trình duyệt web chỉ
đò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 sẽ hiệu quả hơn. Trong cách áp dụng
MVC này, các yêu cầu có liên quan đến logic chương trình hoặc truy cập dữ
liệu sẽ gửi tới servlet controller, còn các yêu cầu chỉ liên quan tới hiển thị sẽ
được gửi tới JSP controller.
12
CHƯƠNG III.PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
I. Giới thiệu :
-Phân tích và thiết kế hệ thống nhằm hiểu rõ chu kỳ phát triển hệ
thống, nghiên cứu sơ bộ, mô hình hóa yêu cầu, dữ liệu và quá trình, mô hình
hóa đối tượng, thiết kế nhập xuất và giao diện người sử dụng, thiết kế dữ
liệu, kiến trúc ứng dụng, thực hiện, cài đặt, vận hành và hỗ trợ hệ thống.
II. Phân tích hệ thống theo Chức năng
1.Quản lý người dùng
-Là chức năng quản lý người dùng hay đăng nhập vào hệ thống, với
mỗi user này đều có username và password riêng. Quản lý người dùng(user)
gồm 2 chức năng chính:
a. Hiển thị danh sách người dùng
b. Thêm, Sửa, Xoá người dùng.
13
2.Quản lý thư mục
- Là chức năng quản lý thư mục của hệ thống, mỗi thư mục là một
chức năng riêng, có một đường liên kết tới chức năng của thư mục đó. Quản
lý thư mục gồm 2 chức năng chính:
a. Hiển thị danh sách thư mục.
b. Thêm, Sửa, Xoá thư mục.
3.Quản lý Phân quyền
-Là chức năng phân quyền người dùng, chức năng này phụ thuộc vào
2 đối tượng “Người dùng” và “Thư mục”. Mỗi người dùng sẽ sử dụng một
số các thư mục, các thư mục khác không có quyền sử dụng sẽ không được
hiên ra trên giao diện người dùng. Phân quyền gồm 2 chức năng chính:
a. Hiện thị danh sách Phân Quyền.
b. Thêm sửa xoá Phần Quyền với Người Dùng.
4.Quản lý Nhân viên
-Là chức năng chính trong hệ thống, quản lý nhân sự trong doanh
nghiệp vinapay. Gồm 2 chức năng chính:
a. Hiển thị danh sách nhân viên.
b. Thêm, sửa, xoá nhân viên.
III. Phân tích hệ thống theo sơ đồ luồng dữ liệu
1.Sơ đồ luồng dữ liệu mức ngữ cảnh
14
2.Sơ đồ luồng dữ liệu mức đỉnh :
15
3.Sơ đồ luồng dữ liệu mức dưới đỉnh:
a. Chức năng quản lý người dùng:
Hiển thị danh
sách Người
Dùng
Thêm, Sửa, Xoá
Người Dùng
Người dùng
Yêu cầu
Người dùng
User, Password
ID,User,Pass
ID Nguoi dung
Báo cáo
User, Password
Phân
Quyền
b. Chức năng quản lý thư mục
Hiển thị danh
sách Thư mục
Thêm, Sửa, Xoá
Thư mục
Người dùng
Yêu cầu
ID,Tên,liênkết
ID,Tên, liênkết
ID Thư mục
Báo cáo
ID,Tên,Liên kết
Phân
Quyền
Thư mục
16
c. Chức năng phân quyền:
d. Chức năng quản lý Nhân viên:
17
4.Sơ đồ luồng dữ liệu tổng quát:
-Quản lý tài khoản của nhân viên trong công ty.
18
-Quản lý nhân viên trong công ty:
VI.Các bảng cơ sở dữ liệu dùng trong chương trình:
a.Bảng Tài khoản :
19
b.Bảng Thư mục_Tài khoản :
c.Bảng Nhân viên :
20
d.Bảng Thư mục:
21
CHƯƠNG IV.CẤU TRÚC CHƯƠNG TRÌNH ĐƯỢC ÁP DỤNG MÔ
HÌNH MVC
Chương trình được cấu trúc gồm 3 phần,đúng với cấu trúc của mô hình
MVC,gồm các phần như sau:
I.View(Interface_Hiển thị):
1.Truy cập vào web:
*Login:
-phần này người quản lý hệ thống dùng để đăng nhập vào chương trình:
*Giao diện:
22
*code:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
public partial class Interface_AccessWebsite_login : System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
protected void Page_Load(object sender, EventArgs e)
{
}
public string GetApplicationPath()
{
string applicationPath = "";
if (this.Page.Request.Url != null)
applicationPath =
this.Page.Request.Url.AbsoluteUri.Substring(
0, this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Request.ApplicationPath.ToLower(),
this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Page.Request.Url.Authority.ToLower()) +
this.Page.Request.Url.Authority.Length) +
this.Request.ApplicationPath.Length);
return applicationPath;
}
protected void btnLogin_Click(object sender, EventArgs e)
{
string strUsername = this.txtUsername.Text;
string strPassword = this.txtPassword.Text;
AccountDetails objAccountDetails = new
AccountDetails(strUsername, strPassword);
int intCount = objAccountDB.CheckAccount(objAccountDetails);
Session["sesUsername"] = strUsername;
Session["sesPassword"] = strPassword;
if (intCount == -1)
{
Response.Write(objAccountDB.ErrorDetail);
23
Response.Write("");
return;
}
if (intCount != 0)
{
Response.Redirect(GetApplicationPath() +
"/Interface/home.aspx?page=interface/wellcome.aspx");
}
Response.Write("don't access right!");
}
}
a.Danh sách tài khoản:
*Giao diện:
24
Code:
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
public partial class Interface_AccessWebsite_AccountList :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
private AccountDetails[] arrAccountDetails;
protected void Page_Load(object sender, EventArgs e)
{
arrAccountDetails = objAccountDB.GetAllAccounts();
this.grdAccounts.DataSource = arrAccountDetails;
grdAccounts.DataBind();
}
protected string GetApplicationPath()
{
string applicationPath = "";
if (this.Page.Request.Url != null)
applicationPath =
this.Page.Request.Url.AbsoluteUri.Substring(
0, this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Request.ApplicationPath.ToLower(),
this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Page.Request.Url.Authority.ToLower()) +
this.Page.Request.Url.Authority.Length) +
this.Request.ApplicationPath.Length);
return applicationPath;
}
protected void grdAccounts_SelectedIndexChanged(object sender,
EventArgs e)
{
25
}
}
b.Thay đổi Mật mã:
*Giao diện:
*Code:
public partial class Interface_AccessWebsite_ChangPassword :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
private AccountDetails objAccountDetails = new AccountDetails();
protected void Page_Load(object sender, EventArgs e)
{
}
public string GetApplicationPath()
{
string applicationPath = "";
if (this.Page.Request.Url != null)
applicationPath =
this.Page.Request.Url.AbsoluteUri.Substring(
0, this.Request.Url.AbsoluteUri.ToLower().IndexOf(
26
this.Request.ApplicationPath.ToLower(),
this.Request.Url.AbsoluteUri.ToLower().IndexOf(
this.Page.Request.Url.Authority.ToLower()) +
this.Page.Request.Url.Authority.Length) +
this.Request.ApplicationPath.Length);
return applicationPath;
}
protected void btnChange_Click(object sender, EventArgs e)
{
// Check suitable between Password and ConfirmPassword
if (this.txtConfirmPassword.Text != this.txtPassword.Text)
{
this.lblMessage.Text = "Password anh confirm is suitable!";
return;
}
// Change Password
objAccountDetails.Username = (string)Session["sesUsername"];
objAccountDetails.Password = this.txtPassword.Text;
int intError = objAccountDB.ChangePassword(objAccountDetails);
// check blank pass
//if (objAccountDB.ChangePassword(objAccountDetails) == 1 )
//{
// check error
if (intError == 0)
{
this.lblMessage.Text = "Don't use blank password";
return;
}
else
{
this.lblMessage.Text = "Password chage successfully!";
return;
}
}
}
c.Tạo người dùng mới:
*Giao diện:
27
*Code:
public partial class Interface_AccessWebsite_CreateUser :
System.Web.UI.Page
{
private AccountDB accdb = new AccountDB();
private AccountDetails accdetail = new AccountDetails();
private Common objCommon = new Common();
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Accept_Click(object sender, EventArgs e)
{
string _username = this.txtUsername.Text;
string _password = this.txtPassword.Text;
if (objCommon.CheckEmpty(this.txtUsername.Text) == 1)
{
Response.Write("Don't use blank Username !");
return;
}
if (objCommon.CheckEmpty(this.txtPassword.Text) == 1)
{
28
Response.Write ("Don't use blank password !");
return;
}
if (this.txtPassword.Text != this.txtConf.Text)
{
Response.Write("Password anh confirm is suitable!");
return;
}
string _administrator;
if (CheckBox1.Checked)
_administrator = "1";
else
_administrator = "0";
AccountDetails accdetail = new AccountDetails(_username,
_password, _administrator);
int _count = accdb.CheckAccount(_username);
if (_count == 0)
{
Response.Write("Account is not
readly!");
int _flag = accdb.InsertAccount(accdetail);
if (_flag == 1)
{
Response.Write("Insert Account is success!");
}
else
{
Response.Write("Insert Account is not success!");
}
}
else
{
Response.Write("Account is readly!");
}
}
}
d.Xóa tài khoản:
*Giao diện:
29
*Code:
public partial class Interface_AccessWebsite_DeleteAcount :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
protected void Page_Load(object sender, EventArgs e)
{
DialogResult reply;
reply = MessageBox.Show("Are you sure ?", "Yes or No Demo",
MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (reply == DialogResult.Yes)
{
int intError =
objAccountDB.DeleteAccount(Request.QueryString["username"]);
if (intError == 1)
{
Response.Redirect("~/interface/accesswebsite/AccountList.aspx");
return;
}
Response.Write(objAccountDB.ErrorDetail);
return;
}
else
Response.Redirect("~/interface/accesswebsite/AccountList.aspx");
}
e.Chỉnh sửa tài khoản:
30
public partial class Interface_AccessWebsite_EditAccount :
System.Web.UI.Page
{
private AccountDB objAccountDB = new AccountDB();
private AccountDetails objAccountDetails = new AccountDetails();
private Common objCommon = new Common();
protected void Page_Load(object sender, EventArgs e)
{
objAccountDetails =
objAccountDB.GetAccount(Request.QueryString["Username"]);
this.txtUsername.Text = objAccountDetails.Username;
if (IsPostBack)
{
if (objAccountDetails.Administrator == "1")
{
chkAdministrator.Checked = true;
}
else
{
chkAdministrator.Checked = false;
}
}
}
protected void CheckBox1_CheckedChanged(object sender, EventArgs e)
{
}
protected void btOK_Click(object sender, EventArgs e)
{
string _username = this.txtUsername.Text;
string _password = this.txtPassword.Text;
if (objCommon.CheckEmpty(this.txtPassword.Text) == 1)
{
Response.Write("Dont use Blank Username !!");
}
if (this.txtPassword.Text != this.txtConfirmPassword.Text)
{
Response.Write("Password anh confirm is suitable");
}
string _administrator;
if (chkAdministrator.Checked)
{
_administrator = "1";
}
else
{
_administrator = "0";
}
AccountDetails accdetail = new AccountDetails(_username,
_password, _administrator);
int _count = objAccountDB.UpdateAccount(accdetail);
if (_count == 0)
{
31
Response.Write("Username do not match !");
}
else
{
int _flag = objAccountDB.UpdateAccount(accdetail);
if (_flag == 1)
{
Response.Write("Update success");
return;
}
else
{
Response.Write("Update Account is not success!");
}
}
}
protected void chkAdministrator_CheckedChanged(object sender,
EventArgs e)
{
}
}
32
2.Nhân viên:
a.Xóa nhân viên:
*Giao diện:
*Code:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
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;
public partial class Interface_Employees_DeleteEmp : System.Web.UI.Page
{
private EmployeeDB objEmployeeDB = new EmployeeDB();
protected void Page_Load(object sender, EventArgs e)
{
int intError =
objEmployeeDB.DeleteEmployee(Request.QueryString["EmployeeID"]);
if (intError == 1)
{
Response.Redirect("~/interface/employees/emplist.aspx");
return;
}
Response.Write(objEmployeeDB.ErrorDetail);
}
}
33
b.Cập nhật thông tin nhân viên:
*Giao diện:
public partial class Interface_Employees_EditEmployee :
System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
EmployeeDB objEmployeeDB = new EmployeeDB();
EmployeeDetails objEmployeeDetails = new EmployeeDetails();
SetRangOfList(lstDayOfDateOfBirth, 1, 31);
SetRangOfList(lstDayOfEndDate, 1, 31);
SetRangOfList(lstDayOfIssuedDate, 1, 31);
SetRangOfList(lstDayOfProbEnd, 1, 31);
SetRangOfList(lstDayOfStartDate, 1, 31);
34
SetRangOfList(lstMonthOfDateOfBirth, 1, 12);
SetRangOfList(lstMonthOfEndDate, 1, 12);
SetRangOfList(lstMonthOfIssuedDate, 1, 12);
SetRangOfList(lstMonthOfStartDate, 1, 12);
SetRangOfList(lstMonthOfProbEnd, 1, 12);
SetRangOfList(lstYearOfDateOfBirth, 1970, 2007);
SetRangOfList(lstYearOfEndDate, 2000, 2020);
SetRangOfList(lstYearOfProbEnd, 2000, 2020);
SetRangOfList(lstYearOfStartDate, 2000, 2020);
SetRangOfList(lstYearOfIssuedDate, 2000, 2020);
objEmployeeDetails =
objEmployeeDB.GetEmployee(Request.QueryString["employeeID"]);
if(!IsPostBack) {
if (objEmployeeDB.Error == 0)
{
this.txtEmployeeID.Text = objEmployeeDetails.EmployeeID;
this.txtFirstName.Text = objEmployeeDetails.FirstName;
this.txtLastName.Text = objEmployeeDetails.LastName;
this.lstDayOfDateOfBirth.Text =
objEmployeeDetails.DateOfBirth.Day.ToString();
this.lstMonthOfDateOfBirth.Text =
objEmployeeDetails.DateOfBirth.Month.ToString();
this.lstYearOfDateOfBirth.Text =
objEmployeeDetails.DateOfBirth.Year.ToString();
this.txtPernamentAddress.Text =
objEmployeeDetails.PernamentAddress;
this.txtIDCardNumber.Text =
objEmployeeDetails.IDCardNumber;
this.lstDayOfIssuedDate.Text =
objEmployeeDetails.IssuedDate.Day.ToString();
this.lstMonthOfIssuedDate.Text =
objEmployeeDetails.IssuedDate.Month.ToString();
this.lstYearOfIssuedDate.Text =
objEmployeeDetails.IssuedDate.Year.ToString();
this.txtIssuedPlace.Text = objEmployeeDetails.IssuedPlace;
this.txtTitle.Text = objEmployeeDetails.Title;
this.txtDepartment.Text = objEmployeeDetails.Department;
this.lstDayOfStartDate.Text =
objEmployeeDetails.StartDate.Day.ToString();
this.lstMonthOfStartDate.Text =
objEmployeeDetails.StartDate.Month.ToString();
this.lstYearOfStartDate.Text =
objEmployeeDetails.StartDate.Year.ToString();
this.lstDayOfProbEnd.Text =
objEmployeeDetails.ProbEnd.Day.ToString();
this.lstMonthOfProbEnd.Text =
objEmployeeDetails.ProbEnd.Month.ToString();
this.lstYearOfProbEnd.Text =
objEmployeeDetails.ProbEnd.Year.ToString();
this.lstDayOfEndDate.Text =
objEmployeeDetails.EndDate.Day.ToString();
35
this.lstMonthOfEndDate.Text =
objEmployeeDetails.EndDate.Month.ToString();
this.lstYearOfEndDate.Text =
objEmployeeDetails.EndDate.Year.ToString();
this.txtContractStatus.Text =
objEmployeeDetails.ContractStatus;
this.txtGrossSalaryStatus.Text =
objEmployeeDetails.GrossSalaryStatus.ToString();
}else
{
Response.Write(objEmployeeDB.ErrorDetail);
}
}
}
protected void bntUpdate_Click(object sender, EventArgs e)
{
Common objCommon = new Common();
EmployeeDetails objEmployeeDetail = new EmployeeDetails();
EmployeeDB objEmployeeDB = new EmployeeDB();
objEmployeeDetail.EmployeeID = this.txtEmployeeID.Text;
objEmployeeDetail.FirstName = this.txtFirstName.Text;
objEmployeeDetail.LastName = this.txtLastName.Text;
objEmployeeDetail.DateOfBirth = objCommon.ConvertIntToDate(
this.lstDayOfDateOfBirth.Text,
this.lstMonthOfDateOfBirth.Text,
this.lstYearOfDateOfBirth.Text);
objEmployeeDetail.PernamentAddress =
this.txtPernamentAddress.Text;
objEmployeeDetail.IDCardNumber = this.txtIDCardNumber.Text;
objEmployeeDetail.IssuedDate = objCommon.ConvertIntToDate(
this.lstDayOfIssuedDate.Text,
this.lstMonthOfIssuedDate.Text,
this.lstYearOfIssuedDate.Text);
objEmployeeDetail.IssuedPlace = this.txtIssuedPlace.Text;
objEmployeeDetail.Title = this.txtTitle.Text;
objEmployeeDetail.Department = this.txtDepartment.Text;
objEmployeeDetail.StartDate = objCommon.ConvertIntToDate(
this.lstDayOfStartDate.Text,
this.lstMonthOfStartDate.Text,
this.lstYearOfStartDate.Text);
objEmployeeDetail.ProbEnd = objCommon.ConvertIntToDate(
this.lstDayOfProbEnd.Text,
this.lstMonthOfProbEnd.Text,
this.lstYearOfProbEnd.Text);
objEmployeeDetail.EndDate = objCommon.ConvertIntToDate(
this.lstDayOfEndDate.Text,
this.lstMonthOfEndDate.Text,
this.lstYearOfEndDate.Text);
36
objEmployeeDetail.ContractStatus = this.txtContractStatus.Text;
objEmployeeDetail.GrossSalaryStatus =
objCommon.ConvertStrToNum(this.txtGrossSalaryStatus.Text);
objEmployeeDB.UpdateEmployee(objEmployeeDetail);
if (objEmployeeDB.Error == 1)
{
Response.Write(objEmployeeDB.ErrorDetail);
}
else
{
Response.Redirect("EmpList.aspx");
}
}
private void SetRangOfList(DropDownList parDropDownList, int
parRangStart, int parRangEnd)
{
for (int i = parRangStart; i <= parRangEnd; i++)
{
parDropDownList.Items.Add(Convert.ToString(i));
}
}
protected void bntCancel_Click(object sender, EventArgs e)
{
Response.Redirect("EmpList.aspx");
}
}
c.Thêm mới nhân viên:
public partial class Interface_Employeers_EmpAddNew :
System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
SetRangOfList(lstDayOfDateOfBirth, 1, 31);
SetRangOfList(lstDayOfEndDate, 1, 31);
SetRangOfList(lstDayOfIssuedDate, 1, 31);
SetRangOfList(lstDayOfProbEnd, 1, 31);
SetRangOfList(lstDayOfStartDate, 1, 31);
SetRangOfList(lstMonthOfDateOfBirth, 1, 12);
SetRangOfList(lstMonthOfEndDate, 1, 12);
SetRangOfList(lstMonthOfIssuedDate, 1, 12);
SetRangOfList(lstMonthOfStartDate, 1, 12);
SetRangOfList(lstMonthOfProbEnd, 1, 12);
SetRangOfList(lstYearOfDateOfBirth, 1970, 2007);
SetRangOfList(lstYearOfEndDate, 2000, 2020);
37
SetRangOfList(lstYearOfProbEnd, 2000, 2020);
SetRangOfList(lstYearOfStartDate, 2000, 2020);
SetRangOfList(lstYearOfIssuedDate, 2000, 2020);
}
private void SetRangOfList(DropDownList parDropDownList, int
parRangStart, int parRangEnd)
{
for (int i = parRangStart; i <= parRangEnd; i++)
{
parDropDownList.Items.Add(Convert.ToString(i));
}
}
protected void bntAddNew_Click(object sender, EventArgs e)
{
Common objCommon = new Common();
EmployeeDetails objEmployeeDetail = new EmployeeDetails();
EmployeeDB objEmployeeDB = new EmployeeDB();
objEmployeeDetail.EmployeeID = this.txtEmployeeID.Text;
objEmployeeDetail.FirstName = this.txtFirstname.Text;
objEmployeeDetail.LastName = this.txtLastname.Text;
objEmployeeDetail.DateOfBirth = objCommon.ConvertIntToDate(
this.lstDayOfDateOfBirth.Text,
this.lstMonthOfDateOfBirth.Text,
this.lstYearOfDateOfBirth.Text);
objEmployeeDetail.PernamentAddress =
this.txtPernamentAddress.Text;
objEmployeeDetail.IDCardNumber = this.txtIDCardNumber.Text;
objEmployeeDetail.IssuedDate = objCommon.ConvertIntToDate(
this.lstDayOfIssuedDate.Text,
this.lstMonthOfIssuedDate.Text,
this.lstYearOfIssuedDate.Text);
objEmployeeDetail.IssuedPlace = this.txtIssuedPlace.Text;
objEmployeeDetail.Title = this.txtTitle.Text;
objEmployeeDetail.Department = this.txtDepartment.Text;
objEmployeeDetail.StartDate = objCommon.ConvertIntToDate(
this.lstDayOfStartDate.Text,
this.lstMonthOfStartDate.Text,
this.lstYearOfStartDate.Text);
objEmployeeDetail.ProbEnd = objCommon.ConvertIntToDate(
this.lstDayOfProbEnd.Text,
this.lstMonthOfProbEnd.Text,
this.lstYearOfProbEnd.Text);
objEmployeeDetail.EndDate = objCommon.ConvertIntToDate(
this.lstDayOfEndDate.Text,
this.lstMonthOfEndDate.Text,
this.lstYearOfEndDate.Text);
objEmployeeDetail.ContractStatus = this.txtContractStatus.Text;
38
objEmployeeDetail.GrossSalaryStatus =
objCommon.ConvertStrToNum(this.txtGrossSalaryStatus.Text);//
.ToInt32(this.txtContractStatus.Text);
// objEmployeeDetail.PernamentAddress =
this.txtPernamentAddress.Text;
int intError = objEmployeeDB.InsertEmployee(objEmployeeDetail);
if (intError == -1)
{
Response.Write(objEmployeeDB.ErrorDetail);
return;
}
else
{
Response.Write("successly!");
Response.Redirect("EmpList.aspx");
}
// Response.Redirect("EmpAddview.aspx");
}
protected void bntCancel_Click(object sender, EventArgs e)
{
Response.Redirect("EmpList.aspx");
}
}
39
*Giao diện:
d.EmpAddView:
e.Chi tiết thông tin nhân viên:
f.Danh sách nhân viên:
*Giao diện:
3.Thư mục:
a.Xóa tài khoản_thư mục:
public partial class Interface_AccessWebsite_DeleteAccMenu :
System.Web.UI.Page
40
{
private MenuDB objMenuDB = new MenuDB();
protected void Page_Load(object sender, EventArgs e)
{
int intError =
objMenuDB.DeleteMenuAccount(Request.QueryString["Username"],
Request.QueryString["IDMenu"]);
if (intError == 1)
{
Response.Redirect("~/interface/accesswebsite/EditAccMenu.aspx");
return;
}
Response.Write("Error");
return;
}
}
b.Sửa chữa Thư mục:
public partial class Interface_AccessWebsite_DeleteAccMenu :
System.Web.UI.Page
{
private MenuDB objMenuDB = new MenuDB();
protected void Page_Load(object sender, EventArgs e)
{
int intError =
objMenuDB.DeleteMenuAccount(Request.QueryString["Username"],
Request.QueryString["IDMenu"]);
if (intError == 1)
{
Response.Redirect("~/interface/accesswebsite/EditAccMenu.aspx");
return;
}
Response.Write("Error");
return;
}
}
II.Model(Mô hình)
Gồm AccountDetails (Chi tiết tài khoản), MenuDetails (Chi tiết danh bạ) và
EmployeeDetails (Chi tiết nhân viên):
*Code:
using System;
using System.Data;
using System.Configuration;
using System.Web;
41
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
///
/// Summary description for AccountDetails
///
public class AccountDetails
{
/**
* Function : AccountDetails
* Author : longch
* Date : 2007 - 12 - 22
* Input :
* Output :
* Description :
**/
public AccountDetails()
{
//
// TODO: Add constructor logic here
//
}
/**
* Function : AccountDetails
* Author : longch
* Date : 2007 - 12 - 22
* Input : string, string
* Output :
* Description :
**/
public AccountDetails(string username, string password)
{
//
// TODO: Add constructor logic here
//
this.username = username;
this.password = password;
}
public AccountDetails(string parUsername, string parPassword,string
parAdministrator)
{
//
// TODO: Add constructor logic here
//
this.username = parUsername;
this.password = parPassword;
this.administrator = parAdministrator;
}
42
private string username;
public string Username
{
get { return username; }
set { username = value; }
}
private string password;
public string Password
{
get { return password; }
set { password = value;}
}
private string administrator;
public string Administrator
{
get { return administrator; }
set { administrator = value; }
}
}
MenuDetails
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;
///
/// Summary description for MenuDetails
///
public class MenuDetails
{
public MenuDetails(string parIDmenu,string parNameMenu)
{
this.idMenu = parIDmenu;
this.nameMenu = parNameMenu;
}
public MenuDetails()
{
//
// TODO: Add constructor logic here
//
}
private string idMenu;
public string IdMenu
{
get { return idMenu; }
set { idMenu = value; }
43
}
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 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;
///
/// Summary description for EmployeeDetails
///
///
public class EmployeeDetails
{
public EmployeeDetails()
{
//
// TODO: Add constructor logic here
//
}
44
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 DateTime dateOfBirth;// //datetime Checked
private string pernamentAddress ;
private string iDCardNumber;
private DateTime issuedDate;// datetime Checked
private string issuedPlace;// nchar(30) Checked
private string title; // nchar(30) Checked
private string department; // nchar(30) Checked
private DateTime startDate;// datetime Checked
private DateTime probEnd; //datetime Checked
private DateTime endDate; //datetime Checked
private string contractStatus;// nchar(50) Checked
private 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; }
45
}// 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;
46
//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 :
47
**/
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 con = 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.
48
// 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 con = 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
49
{
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();
50
}
}
/**
* Function : AccountDB
* Author : longch
* Update : DucPN
* Date : 2007 - 12 - 22
* Input : (AccountDetails acc)(int)
* Output :int
* Description : 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;
}
51
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;
52
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())
53
{
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())
{
54
//(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;
55
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();
56
}
return 1;
}
}
57
MỤC LỤC
Lời mở đầu .................................................................... 1
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. ............ 3
I. Giới thiệu công ty ................................................................................................... 3
1.Giới thiệu công ty: .............................................................................................. 3
2. Đội ngũ quản lý: ................................................................................................. 5
3.Lĩnh vực hoạt động chính: .................................................................................. 6
II.Mục đích xây dựng chương trình: ........................................................................ 6
1.Mục đích xây dựng chương trình:...................................................................... 6
2.Tổng quan về chương trình: ............................................................................... 7
Chương II. TỔNG QUAN VỀ MÔ HÌNH MODEL-
VIEW-CONTROLLER (MVC). ................................ 9
I.Giới thiệu mô hình MVC: ....................................................................................... 9
1.Thiết kế MVC: .................................................................................................... 9
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 năng ................................................................... 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 dữ liệu .................................................... 13
1.Sơ đồ luồng dữ liệu mức ngữ cảnh ................................................................... 13
2.Sơ đồ luồng dữ liệu mức đỉnh : ........................................................................ 14
3.Sơ đồ luồng dữ liệu mức dưới đỉnh: ................................................................. 15
4.Sơ đồ luồng dữ liệu tổng quát: .......................................................................... 17
VI.Các bảng cơ sở dữ liệu dùng trong 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
Các file đính kèm theo tài liệu này:
- Luận văn- Áp dụng mô hình MVC của Công ty cổ phần công nghệ thanh toán Việt Nam (Vinapay).pdf