Các bộ phận bán hàng của RedSky te duy trì dữ liệu bán hàng cho sản phẩm ách vào một tập tin văn bản riêng biệt.. mỗi bản ghi trong mỗi tập tin chứa hai lĩnh vực, thành phố và con số bán
Trang 1PROJECT REPORT
Project 2: Quick Search
Group Members:
1 Huỳnh Thuỷ Ngân (S103006100002)
2 Nguyễn Chí Nhân (S093006100153)
Batch Code: B110002 Centre: NIIT
Trang 2Project title
Name of the Coordinator : Mr Phạm Tiến Phúc
Names of Developers : Group 1 – B110002
Date of Submission: 16/02/2011
Trang 3Đây là tài liệu về báo cáo mang tên Quick Search được hoàn thành bởi nhóm 1 tại trung tâm NIIT Cần Thơ.
Ng
ười hướng dẫn : Mr Phạm Tiến Phúc
Trang 4A CKNOWLEDGEMENT
Chúng tôi nhận được sự hỗ trợ và góp ý từ thầy Phạm Tiến Phúc 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 đỡ chúng tôi hoàn thành bài báo cáo này.
Trang 5R EQUIREMENTS A NALYSIS
RedSky Inc là một tổ chức sản xuất và cung cấp sản phẩm cho một số thành phố trên thế giới RedSky sản xuất tổng cộng năm sản phẩm, đều có một mã số sản phẩm khác nhau.
Các bộ phận bán hàng của RedSky te duy trì dữ liệu bán hàng cho sản phẩm ách vào một tập tin văn bản riêng biệt mỗi bản ghi trong mỗi tập tin chứa hai lĩnh vực, thành phố và con số bán hàng Các bản ghi trong các tập tin văn bản chưa sắp xếp theo thứ tự cụ thể Để tìm kiếm một hồ sơ trong các tập tin, các tập tin cần phải được đọc liên tục.Số lượng các bản ghi trong mỗi tập tin là rất cao Kết quả là, các nhân viên phòng kinh doanh lãng phí rất nhiều thời gian trong tìm kiếm cho doanh
số thông tin bán hàng Để giải quyết vấn đề, chúng tôi đã phát triển một tiện ích gọi là QuickSearch.
Trang 6PHÂN TÍCH HỆ THỐNG
Hệ thống được xây dựng dựa trên các nguyên tắc của cây tìm kiếm nhị phân Mỗi một đối tượng gồm có 2 dữ liệu là ID của thành phố và doanh
số Nhưng theo yêu cầu của hệ thống ta sẽ cho thêm một dữ liệu nữa là index của nó Từ đây có thể thấy mỗi node gồm có 5 dữ liệu: ID của thành phố, doanh số, index, con trái nhất, con phải nhất Ta có các chức năng được sử dụng trên cây như:
Tìm kiếm (Searching)
Việc tìm một khóa trên BST được thực hiện nhờ đệ quy Chúng ta bắt đầu từ gốc Nếu khóa cần tìm bằng khóa của gốc thì khóa đó trên cây, nếu khóa cần tìm nhỏ hơn khoa ở gốc, ta phải tìm nó trên cây con trái, nếu khóa cần tìm lớn hơn khóa ở gốc, ta phải tìm nó trên cây con phải Nếu cây con (trái hoặc phải) là rỗng thì khóa cần tìm không có trên cây.
public void find(int ele, ref Node parent, ref Node currentNode)
{
currentNode = root;
parent = null;
while ((currentNode != null) && (currentNode.citY_id != ele)) {
parent = currentNode;
if (ele < currentNode.citY_id)
{
currentNode = currentNode.lchild;
}
else
currentNode = currentNode.rchild;
}
}
Chèn (Insertion)
Phép chèn bắt đầu giống như phép tìm kiếm; Nếu khóa của gốc khác khóa cần chèn ta tìm nó trong cây con trái hoặc phải Nếu cây con trái hoặc phải tương ứng là rỗng (không tìm thấy) thì thêm một nút và gán cho nút ấy khóa cần chèn.
Trang 7public void insert(int c, int s, int i)
{
Node temp, parent = null, currentNode = null;
find(c, ref parent, ref currentNode);
if (currentNode != null)
{
Console.WriteLine("Duplicate");
return;
}
else
{
temp = new Node(c, s, i, null, null);
if (parent == null)
root = temp;
else
{
if (c < parent.citY_id)
parent.lchild = temp;
else
parent.rchild = temp;
}
}
}
SỐ CHỨC NĂNG
Trang 8Số chức năng: 3
Tên chức năng:
1 Create Index
2 Insert Record
3 Load file to search
Trang 9Create Index
Khi chọn chức năng Create Index, cửa sổ tạo chỉ mục sẽ hiện ra:
Chọn trong những item trong list rồi bấm Create, hệ thống sẽ tạo index cho sản phẩm đó File lưu ID cửa hàng và doanh số bán được mở ra đọc Mỗi cửa hàng sẽ được xem như là một node trong cây nhị phân
private void bttCreateIndex_Click(object sender, EventArgs e)
{
BSTree br = new BSTree();
string str;
int pos;
int count = 0;
FileStream fs = new
FileStream(lstTypeProduce.SelectedItem.ToString()+".txt", FileMode.Open,
FileAccess.Read);
StreamReader sr = new StreamReader(fs);
FileStream fsi = new
FileStream(lstTypeProduce.SelectedItem.ToString() + "_index.txt",
FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(fsi);
while ((str = sr.ReadLine()) != null)
{
count++;
pos = str.IndexOf(",");
int city_id = Convert.ToInt32(str.Substring(0, pos));
br.insert(city_id, 0, count);
}
br.inorder(br.root, sw);
}
Trang 10INSERT RECORD
Chọn loại sản phẩm sau đó điền ID thành phố và doanh số bán được rồi bấm Insert hệ thống sẽ gọi đến công việc chèn một record vào hệ thống.
private void bttAcceptInsert_Click(object sender, EventArgs e)
{
FileStream fs = new
FileStream(lstTypeProduce.SelectedItem.ToString()+".txt", FileMode.Append,
FileAccess.Write);
StreamWriter sw = new StreamWriter(fs);
sw.WriteLine(txtIDCity.Text + "," + txtSaleFigure.Text +
",");
sw.Flush();
sw.Close();
fs.Close();
txtIDCity.Text = null;
txtSaleFigure.Text = null;
}
Trang 11SEARCH RECORD
Chức năng search được phát triển dựa trên cây tìm kiếm nhị phân
private void bttSearch_Click(object sender, EventArgs e)
{
BSTree br = new BSTree();
FileStream fs = new
FileStream(lstTypeProduce.SelectedItem.ToString()+".txt", FileMode.Open,
FileAccess.Read);
StreamReader sr = new StreamReader(fs);
string str;
int subStr;
int pos;
int count = 0;
int i = 0;
int[] arr = new int[2];
while ((str = sr.ReadLine()) != null)
{
count++;
while (true)
{
pos = str.IndexOf(",");
if (pos == -1)
break;
subStr = Convert.ToInt32(str.Substring(0, pos));
arr[i] = subStr;
i++;
str = str.Substring(pos + 1);
}
br.insert(arr[0], arr[1], count);
pos = 0;
i = 0;
}
int idCity = Convert.ToInt32(txtIDCity.Text);
br.search(br.root, idCity);}
Trang 12Hardware : P IV – 3.0 GHz 865/915 Chipset 800 MHz FSB
512 MB RAM (2* 256MB)
80 GB 7200 PRM Hard Drive
CD ROM Drive 10/100 NIC Optical Wheel Mouse Keyboard
17” Color Monitor
Operating system : Windows XP with SP 2
Software : Net Framework 2.0
Trang 13