Tải bản đầy đủ (.doc) (30 trang)

Project 2 Quarter 5 Call Centre Management

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (340.51 KB, 30 trang )

PROJECT
REPORT
Project 2: Call Centre Management
Member:
1. Huỳnh Thuỷ Ngân (S103006100002)
Batch Code: B1100017
Centre: NIIT
Call Center Management NIIT Cần Thơ
Project title
Batch Code : B11000017
Start Date : 11/5/2011 End Date: 12/06/2011
Name of the Coordinator : Ms. Châu Ngân Khánh
Names of Developers : Huỳnh Thuỷ Ngân B1100017
Date of Submission: 14/05/2011
Huỳnh Thuỷ Ngân Page 2 of 30
Call Center Management NIIT Cần Thơ
CHỨNG NHẬN
Đây là tài liệu về báo cáo mang tên Call Centre Management được hoàn
thành bởi Huỳnh Thuỷ Ngân tại trung tâm NIIT Cần Thơ.
Ng ười hướng dẫn : Ms. Châu Ngân Khánh
Huỳnh Thuỷ Ngân Page 3 of 30
Call Center Management NIIT Cần Thơ
HỖ TRỢ
Chúng tôi nhận được sự hỗ trợ và góp ý từ cô Châu Ngân Khánh và những
giảng viên khác trong trung tâm NIIT, xin chân thành cảm ơn mọi người đã giúp
đỡ tôi hoàn thành bài báo cáo này.
MỤC LỤC
Huỳnh Thuỷ Ngân Page 4 of 30
Call Center Management NIIT Cần Thơ
Project title 2
Chứng nhận 3


Hỗ trợ 4
Mục lục 5
Yêu cầu hệ thống 6
Phân tích hệ thống 8
Phân bố cục 9
Ràng buộc dữ liệu 22
Giao diện 21
Kết luận đánh giá 27
Tài liệu tham khảo 28
Cấu hình 29
Nhận xét của giảng viên 30
Huỳnh Thuỷ Ngân Page 5 of 30
Call Center Management NIIT Cần Thơ
YÊU CẦU HỆ THỐNG
Futuristic Systems call centre được thành lập vào năm 2004 với con số
đầu tiên là 20. Trong một thời gian ngắn, số lượng nhân viên đã tăng lên 250,
cho thấy sự thành công của Futuristic System. Futuristic System đã thu hút được
sự chú ý của khác hàng. Doanh thu hằng năm nhảy vọt từ 20.000 $ trong năm
đầu tiên đến $ 6 triệu trong năm tài chính vừa qua. Các quản lý đã luôn luôn
thúc đẩy ý tưởng sáng tạo và tăng hiệu quả cho Futuristic System. Hệ thống làm
việc tốt hơn ở môi trường work và excel. Tốc độ phát triển tìm kiếm sự hoàn
hảo trong các hoạt động tổng thể của trung tâm cuộc gọi đã luôn luôn phát sinh
kết quả mong đợi.
Futuristic System duy trì một hệ thống dẫn sử dụng để quản lý các ngành, các
hoạt động của mình. Khi một nhân viên được đưa vào Futuristic System, bộ
phận tính lương lưu trữ các chi tiết nhân viên, chẳng hạn như tên, địa chỉ và số
điện thoại. Các bộ phận tính lương giữnhững tập tin khác nhau, chẳng hạn như
chi tiết nhân viên, tính lương, và cho vay có thể trợ giúp quản lý các quá trình
liên quan đến tiền lương của nhân viên. Các bộ phận xử lý khách hàng giữ các
tập tin khác nhau và đăng ký để quản lý hoạt động xử lý khách hàng, chẳng hạn

như đăng ký cuộc gọi và phản hồi của khách hàng. Các bộ phận xử lý khách
hàng sau quá trình sau khi một nhân viên được giới thiệu trong hoạt động xử lý
của khách hàng:
1. Nhân viên được cho một huấn luyện kỹ lưỡng cho các yêu cầu xử lý để đảm
bảo rằng anh ta sẽ đáp ứng được yêu cầu của công việc.
2. Sau khi hoàn thành công việc đào tạo, nhân viên được chỉ định bằng giọng
nói hoặc văn bản hỗ trợ khách hàng dựa trên các quy trình như là một điều hành
hỗ trợ khách hàng.
3. Inbound Calls được duy trì để theo dõi các khách hàng tất cả các cuộc gọi
được thực hiện để điều hành hỗ trợ khác nhau của khách hàng. Các phản ứng
của các cuộc gọi của khách hàng là chìa khoá để đo hiệu suất của giám đốc điều
hành hỗ trợ khách hàng.
4. Các cuộc gọi được thực hiện bởi các giám đốc điều hành hỗ trợ khách hàng
cũng được đăng ký trong một cuộc gọi đăng ký tập tin để ngăn chặn lạm dụng
các nguồn tài nguyên của công ty.
Một tập tin Khách hàng Thông tin phản hồi được duy trì để ghi lại việc thực
hiện các giám đốc điều hành hỗ trợ khách hàng theo các thông tin phản hồi của
khách hàng. Các kết quả được chiết xuất từ tập tin này được gửi đến bộ phận
Huỳnh Thuỷ Ngân Page 6 of 30
Call Center Management NIIT Cần Thơ
nguồn nhân lực cho hoạt động chế cần thiết.
Huỳnh Thuỷ Ngân Page 7 of 30
Call Center Management NIIT Cần Thơ
PHÂN TÍCH HỆ THỐNG
Hệ thống cơ sở dữ liệu được chia làm 2 phần: Employee và Login. 2 bảng này
dùng để lưu trữ thông tin về nhân viên và thông tin để log in vào hệ thống khi
mở phần mềm. Các Feedback của khách hàng sẽ được lưu vào file XML theo
cấu trúc cây để tiện cho việc xem lại. Chương trình được viết bằng C# và cơ sở
dữ liệu được truy cập từ SQL Server với 2 liên kết: liên kết thứ nhất là
CallCentreDataSet.xsd dùng để thực hiện việc lấy dữ liệu so sánh và log in vào

hệ thống, liên kết thứ hai là EmployeeDataSet.xsd dùng để lấy dữ liệu về nhân
viên cũng như các thông tin để nhập dữ liệu của khách hàng.
Hệ thống được chia làm 2 form chính:
Thành phần Chức năng
Log in Trang chủ. Hiển thị khi người dùng mở phần mềm,
dùng user name và pass word để đăng nhập vào hệ
thống.
Main Dùng để quản lý các thông tin về Employee,
Account( admin), hoặc đơn giản là xem các thông tin
và nhập các Feedback từ khách hàng
Hệ thống cung cấp thông tin cho việc quản lý các tài khoản và nhân viên trong
công ty là chủ yếu. Thêm vào đó là việc ghi lại các phản hồi từ khách hàng được
lưu lại để tiện việc theo dõi.
Huỳnh Thuỷ Ngân Page 8 of 30
Call Center Management NIIT Cần Thơ
PHÂN BỐ CỤC
Phần mềm có 2 cửa sổ chính: Log in và Main form.
Log in: Cửa sổ Log in cho phép người dùng nhập user name và password để
đăng nhập vào hệ thống.
Khi người dùng đăng nhập, hệ thống sẽ tự động kiểm tra dữ liệu trong cơ sở dữ
liệu để xem tên đăng nhập có đúng hay không, nên việc xác định đường liên kết
dữ liệu là rất quan trọng. Chuỗi liên kết mặc định được đặt là:
Data Source=ASA\SQLEXPRESS;Initial Catalog=CallCentre;Integrated
Security=True
Tuy nhiên người dùng có thể thay đổi chuỗi liên kết này bằng một chuỗi liên kết
khác nếu có sự thay đổi cơ sở dữ liệu.
private void btnSave_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream("ConnectionString.txt",
FileMode.Truncate, FileAccess.Write);

StreamWriter w = new StreamWriter(fs);
string str = txtConnectionString.Text.Trim();
w.Write(str);
w.Flush();
w.Close();
fs.Close();
ConStr = str;
txtConnectionString.Text = "";
MessageBox.Show("Connection String Saved!", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
Chuỗi kết nối này được lưu trong 1 file txt, người sử dụng có thể xem lại chuỗi
kết nối:
private void btnShow_Click(object sender, EventArgs e)
{
FileStream fs = new FileStream("ConnectionString.txt",
FileMode.Open, FileAccess.Read);
StreamReader r = new StreamReader(fs);
r.BaseStream.Seek(0, SeekOrigin.Begin);
string str = r.ReadLine();
if (str != null)
txtConnectionString.Text = str;
r.Close();
fs.Close();
}
Đơn giản thì người dùng có thể dùng liên kết mặc định bằng cách kiểm tra tên
của hệ thống
private void btnTest_Click(object sender, EventArgs e)
{
string machineName = System.Environment.MachineName;

txtConnectionString.Text = "Data Source=" + machineName +
";Initial Catalog=CallCentre;Integrated Security=True";
}
Huỳnh Thuỷ Ngân Page 9 of 30
Call Center Management NIIT Cần Thơ
private void button1_Click_1(object sender, EventArgs e)
{
MessageBox.Show(frmLogin.Username);
}
Khi đăng nhập vào hệ thống, hệ thống sẽ tự động load cơ sở dữ liệu để kiểm tra
việc đăng nhập có đúng hay không, nếu sai thông tin thì người dùng sẽ phải
nhập lại:
private void login()
{
SqlConnection con = new SqlConnection();
try
{
con.ConnectionString = ConStr;
con.Open();
string str = "select * from dbo.Login";
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader dr = cmd.ExecuteReader();
bool loginok = false;
while (dr.Read())
{
if ((txtUsername.Text.ToString().ToLower() ==
dr[0].ToString().ToLower()) && (txtPassword.Text.ToString() ==
dr[1].ToString()))
{
MessageBox.Show("Login is successful!", "Login

Message", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
txtUsername.Text = "";
txtPassword.Text = "";
loginok = true;
Username = dr[0].ToString().ToUpper();
UserType = dr[2].ToString().ToUpper();
FormMain.username = Username;
FormMain.type = UserType;
this.Hide();
FormMain.Show();
FormMain.LoadUsername();
break;
}
}
if (loginok == false)
{
MessageBox.Show("Error. Username and Password
mismatch!", "Login Message", MessageBoxButtons.OK,
MessageBoxIcon.Asterisk);
txtUsername.Focus();
}
con.Close();
}
catch (ArgumentException exc)
{
MessageBox.Show("Cannot connect to database, please check
your connection string.", "Error Message", MessageBoxButtons.OK,
MessageBoxIcon.Asterisk);
}
catch (SqlException sqlexp)

{
MessageBox.Show("Cannot connect to database, please check
Huỳnh Thuỷ Ngân Page 10 of 30
Call Center Management NIIT Cần Thơ
your connection string.", "Error Message", MessageBoxButtons.OK,
MessageBoxIcon.Asterisk);
}
con.Close();
}
Main form:
Main form được sử dụng để quản lí thông tin nhân viên, thông tin account, và
ghi lại các feedback.
Main form sẽ sử dụng liên kết thứ 2 để liên kết vào hệ thống cơ sở dữ liệu, lấy
thông tin về người đã log in cũng như thống tin về Employee:
public void LoadUsername()
{
label1.Text = "Welcome, " + frmLogin.Username;
label2.Text = "Account Type: " + type;
TabMain.SelectedIndex = 0;
bnEmployee.Enabled = true;
bnUser.Enabled = true;
txtUsername.Enabled = false;
txtPassword.Enabled = false;
cbbType.Enabled = false;
txtUserId.Enabled = false;
btnSaveAccount.Enabled = false;
btnCancel.Enabled = false;
btnAddAccount.Enabled = true;
btnCancel.Enabled = false;
txtEmpName.Enabled = false;

txtEmpPhone.Enabled = false;
txtEmpAddress.Enabled = false;
txtEmpDesignation.Enabled = false;
btnAddEmp.Enabled = true;
btnDeleteEmp.Enabled = true;
btnSaveEmp.Enabled = false;
btnCancelEmp.Enabled = false;
btnSaveModifiedEmp.Enabled = false;
button1.Enabled = false;
btnModifyEmp.Enabled = true;
if (type == "NORMAL")
{
(this.tabUser as Control).Enabled = false;
groupAddDeleteUsers.Hide();
labelAccInfo.Text = "You do not have permisson to access
this section.";
}
else if (type == "ADMIN")
{
(this.tabUser as Control).Enabled = true;
groupAddDeleteUsers.Show();
labelAccInfo.Text = "";
}
ShowAllEmp();
}
Huỳnh Thuỷ Ngân Page 11 of 30
Call Center Management NIIT Cần Thơ
private void frmMain_Load(object sender, EventArgs e)
{
// TODO: This line of code loads data into the

'callCentreDataSet.Employee' table. You can move, or remove it, as needed.

this.employeeTableAdapter.Fill(this.callCentreDataSet.Employee);
// TODO: This line of code loads data into the
'callCentreDataSet.Login' table. You can move, or remove it, as needed.
this.loginTableAdapter.Fill(this.callCentreDataSet.Login);
//label1.Text = "Welcome, " + username;
/*SqlConnection con = new SqlConnection();
con.ConnectionString = frmLogin.ConStr;
con.Open();
DataSet ds = new DataSet("Employee");
DataViewManager dsView;
Sql*/
txtUsername.Enabled = false;
txtPassword.Enabled = false;
cbbType.Enabled = false;
txtUserId.Enabled = false;

btnSaveAccount.Enabled = false;
btnCancel.Enabled = false;
btnAddAccount.Enabled = true;
btnCancel.Enabled = false;

txtEmpName.Enabled = false;
txtEmpPhone.Enabled = false;
txtEmpAddress.Enabled = false;
txtEmpDesignation.Enabled = false;
btnAddEmp.Enabled = true;
btnDeleteEmp.Enabled = true;
btnSaveEmp.Enabled = false;

btnCancelEmp.Enabled = false;
btnSaveModifiedEmp.Enabled = false;
button1.Enabled = false;
btnModifyEmp.Enabled = true;
}
Main form được chia làm 4 phần:
- User managing
- Employee managing
- Employee searching
- Input
User managing:
Phần này chỉ dành cho admin quản lí các account có thể đăng nhập vào hệ
thống, các thành viên khác sẽ không thấy được các chức năng trong phần
Huỳnh Thuỷ Ngân Page 12 of 30
Call Center Management NIIT Cần Thơ
này. Admin có thể quản lí bằng các chức năng như: thêm, xóa các account.
- Thêm account: nếu account thêm vào bị trùng, phần mềm sẽ thông báo
và không thêm vào cơ sở dữ liệu. ID của user sẽ tự động tăng.
private void btnAddAccount_Click(object sender, EventArgs e)
{
btnSaveAccount.Enabled = true;
btnAddAccount.Enabled = false;
btnCancel.Enabled = true;
bnUser.Enabled = false;
txtUsername.Enabled = true;
txtPassword.Enabled = true;
cbbType.Enabled = true;
tmpuser = txtUsername.Text;
tmppass = txtPassword.Text;
tmptype = cbbType.Text;

tmpuserid = txtUserId.Text;

txtUsername.Text = "";
txtPassword.Text = "";
cbbType.Text = "";
int ctr, len;
datatable = callCentreDataSet.Tables["login"];
len = datatable.Rows.Count - 1;
datarow = datatable.Rows[len];
ctr = Convert.ToInt32(datarow["UserID"].ToString());
ctr = ctr + 1;
txtUserId.Text = ctr.ToString();
txtUserId.Enabled = false;
}
private void btnSaveAccount_Click(object sender, EventArgs e)
{
// Code kiem tra trung account
bool valid = true; // valid = true > Account ko bi trung
SqlConnection con = new SqlConnection();
con.ConnectionString = frmLogin.ConStr;
con.Open();
string str = "select * from dbo.Login";
SqlCommand cmd = new SqlCommand(str, con);
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if ((txtUsername.Text.ToString().ToLower().Trim() ==
dr[0].ToString().ToLower()))
{
valid = false;

break;
}
}

if (txtUsername.Text.Trim() == "")
{
MessageBox.Show("Username cannot be left blank.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (txtPassword.Text == "")
{
Huỳnh Thuỷ Ngân Page 13 of 30
Call Center Management NIIT Cần Thơ
MessageBox.Show("Password cannot be left blank.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if ((cbbType.Text.ToLower() != "admin") &&
(cbbType.Text.ToLower() != "normal"))
{
MessageBox.Show("Type must be ADMIN or NORMAL", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (valid == false)
{
MessageBox.Show("This account has already existed.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
datatable = callCentreDataSet.Tables["Login"];

datarow = datatable.NewRow();
datarow[0] = txtUsername.Text.ToLower();
datarow[1] = txtPassword.Text;
datarow[2] = cbbType.Text.ToLower();
datarow[3] = txtUserId.Text;
datatable.Rows.Add(datarow);
loginTableAdapter.Update(callCentreDataSet);
this.loginTableAdapter.Fill(this.callCentreDataSet.Login);
txtUserId.Enabled = false;
txtUsername.Enabled = false;
txtPassword.Enabled = false;
cbbType.Enabled = false;
btnCancel.Enabled = false;
btnAddAccount.Enabled = true;
btnSaveAccount.Enabled = false;
bnUser.Enabled = true;
}
con.Close();
}
- Xóa account: nếu account đang được sử dụng để log in phần mềm thì sẽ
không thể xóa.
private void btnDeleteAccount_Click(object sender, EventArgs e)
{
string id = txtUserId.Text;
datarow = callCentreDataSet.Tables["Login"].Rows.Find(id);
if (datarow[0].ToString().ToLower() == username.ToLower())
{
MessageBox.Show("This account is being used. You cannot
delete it.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}

else
{
datarow.Delete();
loginTableAdapter.Update(callCentreDataSet);
}
}
Employee managing
Huỳnh Thuỷ Ngân Page 14 of 30
Call Center Management NIIT Cần Thơ
Phần này có 4 chức năng chính: thêm, xóa, sửa, xuất ra XML thông tin của nhân
viên.
- Thêm nhân viên: ID nhân viên sẽ tự tăng, các thông tin khác thì người
dùng tự nhập
private void btnAddEmp_Click(object sender, EventArgs e)
{
btnSaveEmp.Enabled = true;
btnAddEmp.Enabled = false;
btnCancelEmp.Enabled = true;
bnEmployee.Enabled = false;
btnModifyEmp.Enabled = false;
btnDeleteEmp.Enabled = false;
btnSearchEmp.Enabled = false;
txtEmpName.Enabled = true;
txtEmpAddress.Enabled = true;
txtEmpPhone.Enabled = true;
txtEmpDesignation.Enabled = true;
tmpempid = txtEmpID.Text;
tmpempname = txtEmpName.Text;
tmpempaddress = txtEmpAddress.Text;
tmpempdesignation = txtEmpDesignation.Text;

tmpempphone = txtEmpPhone.Text;
txtEmpName.Text = "";
txtEmpAddress.Text = "";
txtEmpDesignation.Text = "";
txtEmpPhone.Text = "";
int ctr, len;
string codeval, code;
datatable = callCentreDataSet.Tables["Employee"];
len = datatable.Rows.Count - 1;
if (len == -1)
{
txtEmpID.Text = "E001";
}
else
{
datarow = datatable.Rows[len];
code = datarow["EmpID"].ToString();
codeval = code.Substring(1, 3);
ctr = Convert.ToInt32(codeval);
if ((ctr >= 1) && (ctr < 9))
{
ctr = ctr + 1;
txtEmpID.Text = "E00" + ctr;
}
else if ((ctr >= 9) && (ctr < 99))
{
ctr = ctr + 1;
txtEmpID.Text = "E0" + ctr;
}
else if (ctr >= 99)

{
ctr = ctr + 1;
Huỳnh Thuỷ Ngân Page 15 of 30
Call Center Management NIIT Cần Thơ
txtEmpID.Text = "E" + ctr;
}
}
}
private void btnSaveEmp_Click(object sender, EventArgs e)
{
if (txtEmpName.Text.Trim() == "")
{
MessageBox.Show("Employee name cannot be left blank.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (txtEmpAddress.Text.Trim() == "")
{
MessageBox.Show("Employee address cannot be left blank.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (txtEmpPhone.Text.Trim() == "")
{
MessageBox.Show("Employee phone cannot be left blank.",
"Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (txtEmpDesignation.Text.Trim() == "")
{
MessageBox.Show("Employee desgination cannot be left
blank.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}

else
{
datatable = callCentreDataSet.Tables["Employee"];
datarow = datatable.NewRow();
datarow[0] = txtEmpID.Text;
datarow[1] = txtEmpName.Text.Trim();
datarow[2] = txtEmpAddress.Text.Trim();
datarow[3] = txtEmpPhone.Text.Trim();
datarow[4] = txtEmpDesignation.Text.Trim();
datatable.Rows.Add(datarow);
employeeTableAdapter.Update(callCentreDataSet);

this.employeeTableAdapter.Fill(this.callCentreDataSet.Employee);
txtEmpName.Enabled = false;
txtEmpAddress.Enabled = false;
txtEmpPhone.Enabled = false;
txtEmpDesignation.Enabled = false;
btnCancelEmp.Enabled = false;
btnAddEmp.Enabled = false;
btnSaveEmp.Enabled = false;
bnEmployee.Enabled = true;
btnCancel.Enabled = false;
btnAddEmp.Enabled = true;
btnSaveEmp.Enabled = false;
bnEmployee.Enabled = true;
btnModifyEmp.Enabled = true;
btnDeleteEmp.Enabled = true;
btnSearchEmp.Enabled = true;
}
}

Huỳnh Thuỷ Ngân Page 16 of 30
Call Center Management NIIT Cần Thơ
- Xóa nhân viên: thông tin về nhân viên sẽ bị xóa dự trên ID của nhân viên.
private void btnDeleteEmp_Click(object sender, EventArgs e)
{
string empid = txtEmpID.Text;
datarow =
callCentreDataSet.Tables["Employee"].Rows.Find(empid);
try
{
datarow.Delete();
}
catch (NullReferenceException enr)
{
MessageBox.Show("There is no record to delete.", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
employeeTableAdapter.Update(callCentreDataSet);
}
- Sửa nhân viên:
private void btnModifyEmp_Click(object sender, EventArgs e)
{
tmpempid = txtEmpID.Text;
tmpempname = txtEmpName.Text;
tmpempaddress = txtEmpAddress.Text;
tmpempdesignation = txtEmpDesignation.Text;
tmpempphone = txtEmpPhone.Text;
btnAddEmp.Enabled = false;
btnDeleteEmp.Enabled = false;
btnModifyEmp.Enabled = false;

btnSaveModifiedEmp.Enabled = true;
button1.Enabled = true;
btnSearchEmp.Enabled = false;
txtEmpName.Enabled = true;
txtEmpAddress.Enabled = true;
txtEmpDesignation.Enabled = true;
txtEmpPhone.Enabled = true;
}

private void btnSaveModifiedEmp_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = frmLogin.ConStr;
con.Open();
string id = txtEmpID.Text;
string str = "select * from Employee";
SqlDataAdapter adapter = new SqlDataAdapter(str, con);
SqlCommandBuilder cmdBuilder = new SqlCommandBuilder(adapter);
DataSet ds = new DataSet("Employee");

adapter.Fill(ds, "Employee");
Huỳnh Thuỷ Ngân Page 17 of 30
Call Center Management NIIT Cần Thơ
DataRow row = ds.Tables["Employee"].Rows[0];
int len = ds.Tables["Employee"].Rows.Count;
for (int i = 0; i < len; i++)
{
row = ds.Tables["Employee"].Rows[i];
if (row[0].ToString() == txtEmpID.Text)
break;

}

row["Name"] = txtEmpName.Text.Trim();
row["Address"] = txtEmpAddress.Text.Trim();
row["Phone"] = txtEmpAddress.Text.Trim();
row["Designation"] = txtEmpDesignation.Text.Trim();

adapter.Update(ds, "Employee");
ds.Clear();
con.Close();
btnSaveModifiedEmp.Enabled = false;
btnModifyEmp.Enabled = true;
btnCancelEmp.Enabled = false;
btnAddEmp.Enabled = true;
btnDeleteEmp.Enabled = true;
button1.Enabled = false;
btnSearchEmp.Enabled = true;
txtEmpName.Enabled = false;
txtEmpAddress.Enabled = false;
txtEmpPhone.Enabled = false;
txtEmpDesignation.Enabled = false;
}
Người quản lý có thể tìm nhanh nhân viên bằng ID của họ:
private void btnSearchEmp_Click(object sender, EventArgs e)
{
if (txtSearchEmp.Text.Trim() == "")
{
MessageBox.Show("Please enter an employee ID ", "Error",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}

else
{
int temp = employeeBindingSource.Find("EmpID",
txtSearchEmp.Text.Trim());
if (temp != -1)
{
employeeBindingSource.Position = temp;
bnEmployee.PositionItem =
bindingNavigatorPositionItem1;
//bindingNavigatorPositionItem;
MessageBox.Show("Employee found.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (temp == -1)
{
MessageBox.Show("Employee not found.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
}
Huỳnh Thuỷ Ngân Page 18 of 30
Call Center Management NIIT Cần Thơ
}
- Xuất thông tin nhân viên ra file xml:
private void btnExportEmpXML_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = frmLogin.ConStr;
con.Open();
string XMLPath = "";
SaveFileDialog saveXMLDialog = new SaveFileDialog();

saveXMLDialog.InitialDirectory =
Environment.SpecialFolder.MyDocuments.ToString();
saveXMLDialog.Filter = "XML file (*.xml)|*.xml";
saveXMLDialog.FilterIndex = 0;
if(saveXMLDialog.ShowDialog() == DialogResult.OK)
{
XMLPath = saveXMLDialog.FileName;
SqlDataAdapter adapter = new SqlDataAdapter("select * from
Employee", con);
DataSet dataset = new DataSet();
adapter.Fill(dataset, "Employee");
dataset.WriteXml(XMLPath, XmlWriteMode.DiffGram);
con.Close();
MessageBox.Show("File saved.", "Message",
MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
return;
}
con.Close();
}
Employee searching:
Phần này chúng tôi dùng DatagridView để hiển thị tất cả các thông tin
của tất cả Employee cũng như dựa vào đó để search theo ID, phone,
name hay designation.
private void btnSearchAllEmp_Click(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection();
con.ConnectionString = frmLogin.ConStr;
con.Open();
string sql = "SELECT * FROM Employee";
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, con);


DataSet ds = new DataSet();
dataadapter.Fill(ds, "Employee");
DataView dv;
if (radioEmpID.Checked)
{
string s = "EmpID='" + txtSearchAllEmp.Text.Trim() + "'";
dv = new DataView(ds.Tables[0], s, "EmpID Asc",
DataViewRowState.CurrentRows);
dgvEmployee.DataSource = dv;
}
else if (radioEmpName.Checked)
{
string s = "Name='" + txtSearchAllEmp.Text.Trim() + "'";
Huỳnh Thuỷ Ngân Page 19 of 30
Call Center Management NIIT Cần Thơ
dv = new DataView(ds.Tables[0], s, "EmpID Asc",
DataViewRowState.CurrentRows);
dgvEmployee.DataSource = dv;
}
else if (radioEmpPhone.Checked)
{
string s = "Phone='" + txtSearchAllEmp.Text.Trim() + "'";
dv = new DataView(ds.Tables[0], s, "EmpID Asc",
DataViewRowState.CurrentRows);
dgvEmployee.DataSource = dv;
}
else if (radioEmpDesgination.Checked)
{
string s = "Designation='" + txtSearchAllEmp.Text.Trim() +

"'";
dv = new DataView(ds.Tables[0], s, "EmpID Asc",
DataViewRowState.CurrentRows);
dgvEmployee.DataSource = dv;
}

con.Close();
}
private void ShowAllEmp()
{
SqlConnection con = new SqlConnection();
con.ConnectionString = frmLogin.ConStr;
con.Open();
string sql = "SELECT * FROM Employee";
SqlDataAdapter dataadapter = new SqlDataAdapter(sql, con);
DataSet ds = new DataSet();
dataadapter.Fill(ds, "Employee");
DataView dv;
string s = "";
dv = new DataView(ds.Tables[0], s, "EmpID Asc",
DataViewRowState.CurrentRows);
dgvEmployee.DataSource = dv;
con.Close();
}
Input:
Phần này dùng để nhân viên nhập dữ liệu về các phản hồi của khách hàng
và lưu lại:
private void btnAccept_Click(object sender, EventArgs e)
{
XmlWriterSettings settings = new XmlWriterSettings();

settings.Indent = true;
settings.IndentChars = " ";
settings.NewLineOnAttributes = true;
using(XmlWriter writer = XmlWriter.Create("Feedback.xml",
settings))
{
writer.WriteStartElement("CustFeedback");
writer.WriteStartElement("Comment");
writer.WriteAttributeString("CallID", this.txtCallID.Text);
writer.WriteElementString("CustName",
Huỳnh Thuỷ Ngân Page 20 of 30
Call Center Management NIIT Cần Thơ
this.txtCustName.Text);
writer.WriteElementString("Phone", this.txtPhone.Text);
writer.WriteElementString("Feedback",
this.txtFeedBack.Text);
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
}
this.txtFeedBack.Text = "";
this.txtPhone.Text = "";
this.txtCallID.Text = "";
this.txtCustName.Text = "";
}
Huỳnh Thuỷ Ngân Page 21 of 30
Call Center Management NIIT Cần Thơ
RÀNG BUỘC DỮ LIỆU
Do phần mềm được thiết lập dựa trên việc hỗ trợ cho việc quản lý nhân viên của
công ty nên chúng tôi chia cơ sở dữ liệu thành 2 phần riêng biệt là: Employee và

Log in. Employee lưu giữ thông tin về nhân viên. Và log in lưu giữ thông tin về
các account.
Huỳnh Thuỷ Ngân Page 22 of 30
Call Center Management NIIT Cần Thơ
GIAO DIỆN
Đây là giao diện đăng nhập của phần mềm khi người dùng mở phần mềm.
Sau khi đăng nhập cửa sổ chính hiện ra.
Như đã nói, phần mềm được chia làm 4 phần chính, khi bấm vào các tab, các
thành phần sẽ hiện ra:
Huỳnh Thuỷ Ngân Page 23 of 30
Call Center Management NIIT Cần Thơ
Huỳnh Thuỷ Ngân Page 24 of 30
Call Center Management NIIT Cần Thơ
Huỳnh Thuỷ Ngân Page 25 of 30

×