Professional Documents
Culture Documents
TIỂU LUẬN
CẤU TRÚC DỮ LIỆU & GIẢI THUẬT
NÂNG CAO
Đề tài:
Lớp: ITT2022B
Hà Nội, 11-2022
1. Phân tích yêu cầu bài toán
Để tiếp cận sự phát triển của nền thương mại điện tử ở Việt Nam, em đã tìm
hiểu, phân tích xây dựng và cài đặt hệ thống website thương mại điện tử với mặt
hàng là: máy ảnh, máy quay và phụ kiện
Khảo sát tổng quan hệ thống:
- Người chủ cửa hàng là người có chức quyền to nhất trong hệ thống: có thể
xem thông tin về tình hình thu nhập cũng như mọi thay đổi trên website bán hàng.
- Nếu chủ cửa hàng cũng là người quản trị website thì mọi thông tin trên
website là do chủ cửa hàng đưa lên, nếu thuê nhân viên quản trị thì chủ cửa hàng
cung cấp thông tin hoặc cấp quyền hạn cho người quản trị.
- Nhân viên chỉ là người giao dịch: tức là xem trong ngày, trong tuần có bao
nhiêu đơn đặt hàng và đã giải quyết được bao nhiêu, để có thể báo cáo bất cứ lúc
nào cho chủ cửa hàng.
- Khách hàng có thể xem các sản phẩm trên giao diện website và tiến hành đặt
hàng trên hệ thống.
- Có 3 phương thức thanh toán cho khách hàng:
1. Thanh toán bằng thẻ phát hành của công ty. người mua chỉ cần nhập tên tài
khoản, mã tài khoản vào căn cứ vào tài khoản còn mà trừ dần đi số tiền mua hàng.
2. Thanh toán trực tiếp cho shipper sau khi nhận và kiểm tra hàng (Ship COD)
3. Thanh toán qua thẻ Visa
Yêu cầu của người quản trị hệ thống:
- Quản lí chung: liên quan tới các thông tin nhân viên, khách hàng, hàng,..
- Cập nhật thông tin hàng hóa trực tuyến: Dễ dàng cập nhật và thường xuyên
thay đổi hình ảnh, thông tin chi tiết giá các mặt hàng bạn sẽ kinh doanh ở bất cứ
đâu.
- Quản lí các đơn hang trực tuyến: Quản lí, lưu trữ và báo cáo thong tin về đặt
hàng và trạng thái của đơn hàng: đã giao hàng chưa, đã thanh toán chưa …
- Quản lí khách hàng: Lưu trữ các hoạt động gắn với các khách hàng của cửa
hàng. Mọi hoạt động gắn với khách hàng và đơn hàng đều có thể thực hiện từ xa,
không phụ thuộc vào vị trí địa lý.
- Thống kê chi tiết cụ thể, chính xác và nhanh chóng: Thống kê được mặt hàng
nào bán hết, mặt hàng nào bán chạy, mặt hàng nào tồn kho, mặt hàng nào cần
chỉnh sửa…; Tổng hợp thu chi hàng ngày, hàng tuần, hàng tháng hàng quý và hàng
năm; Tổng hợp lưu trữ được ý kiến phản ánh của khách hàng để có thể trả lời
khách hàng một cách nhanh chóng và chính xác nhất.
2
- Cho phép in các danh sách , các thông tin cần thiết.
Yêu cầu của nhân viên:
- Sản phẩm : Có thể thêm, sửa xóa thông tin, danh mục
- Quản lý các module : định vị, chỉnh sửa , bật - tắt các module chức năng
- Xem các báo cáo , thống kê, đơn đặt hàng
- Nhận và phản hồi các yêu cầu của khách hàng
- Quản lý các thông tin khác : khuyến mại, tin tức…
2. Thiết kế cấu trúc dữ liệu
2.1. Actor và Usecase của hệ thống
- Khách Hàng:
Đăng ký thành viên
Tìm kiếm sản phẩm:
Tìm kiếm theo tên sản phẩm
Tìm kiếm theo mức giá
Tìm kiếm theo nhà cung cấp …
Đặt hàng, mua hàng: đăng nhập.
Thanh toán: Trực tiếp tiền mặt, chuyển khoản, qua thẻ visa
- Nhân Viên:
Quản lí hàng
Quản lí khách hàng
Quản lí các loại hàng
Quản lí bán hàng
Báo cáo thống kê
- Quản trị viên:
Quản lí nhân viên:
Thêm nhân viên
Sửa nhân viên
Xóa nhân viên
Quản lí phân quyền:
2.2. Biểu đồ phân cấp chức năng
3
2.3. Biểu đồ luồng dữ liệu mức bối cảnh
4
2.4. Biểu đồ luồng dữ liệu ở mức đỉnh
5
2.6. Biểu đồ lớp tham gia ca sử dụng
6
7
8
2.7. Biểu đồ lớp chi tiết
10
2.9. Sơ đồ quan hệ dữ liệu
3. Chương trình
1 phần chương trình về danh sách liên kết
#include<iostream>
#include<stdlib.h>
using namespace std;
/////////////////////khai bao cac kieu, cau truc va ham se su dung trong
chuong trinh
//Dinh nghia kieu ElemType la kieu int
typedef int ElemType;
//Khai bao mot nut' trong danh sach
struct LNode {
ElemType data; //Du lieu
LNode* next; //Con tro den nut' tiep theo
};
11
//Xem kich co danh sach lien ket
int ListSize(LNode* HL);
//Kiem tra danh sach rong
bool ListEmpty(LNode* HL);
//Lay du lieu cua nut' o vi tri xac dinh
ElemType GetElem(LNode* HL, int pos);
//Duyet danh sach
void TraverseList(LNode* HL);
//Tim kiem trong danh sach
bool FindList(LNode* HL, ElemType& item);
//Cap nhat danh sach
bool UpdateList(LNode* HL, const ElemType& item);
//Chen` them nut' moi' vao danh sach
void InsertList(LNode*& HL, const ElemType& item, int mark);
//Xoa' mot nut’ khoi danh sach
bool DeleteList(LNode*& HL, ElemType& item, int mark);
//Sap xep danh sach
void OrderOutputList(LNode* HL, int mark);
13
return false;
else {
p->data=item;
return true;
}
}
if(mark>0) {
newptr->next=HL; HL=newptr;
}
else if(mark<0) {
if(HL==NULL) {newptr->next=NULL; HL=newptr;}
else {
LNode* p=HL;
while(p->next!=NULL)
p=p->next;
p->next=newptr; newptr->next=NULL;
}
}
else {
LNode* cp;
LNode* ap;
ap=NULL; cp=HL;
while(cp!=NULL) {
if(item<cp->data) break;
else {ap=cp; cp=cp->next;}
}
if(ap==NULL) {newptr->next=HL; HL=newptr;}
else {newptr->next=cp; ap->next=newptr;}
}
}
//Xoa phan tu khoi danh sach
///item la du lieu cua phan tu xoa
///mark > 0: xoa phan tu dau cua danh sach
///mark < 0: xoa phan tu cuoi danh sach
///mark = 0: Xoa phan tu co du lieu la item
bool DeleteList(LNode*& HL, ElemType& item, int mark)
{
if(HL==NULL) return false;
if(mark>0) {//xoa phan tu dau
LNode* p=HL;
item=HL->data;
14
HL=HL->next;
delete p;
return true;
}
else if(mark<0) {
LNode *cp=HL, *ap=NULL;
while(cp->next!=NULL) {
ap=cp; cp=cp->next;
}
if(ap==NULL) HL=NULL;
else ap->next=cp->next;
item=cp->data;
delete cp;
return true;
}
else {
LNode *cp=HL, *ap=NULL;
while(cp!=NULL)
if(cp->data==item) break;
else {ap=cp; cp=cp->next;}
if(cp==NULL) return false;
else {
if(ap==NULL) HL=HL->next;
else ap->next=cp->next;
item=cp->data;
delete cp;
return true;
}
}
}
//sap xep danh sach
//mark = 1: sap xep thu tu tang dan
//mark khac 1: sap xep thu tu giam dan
void OrderOutputList(LNode* HL, int mark)
{
if(HL==NULL) {cout<<"Danh sach rong!"<<endl; return;}
//Tao mot danh sach lien ket moi de luu tam danh sach da sap xep
LNode* head=new LNode; //phan tu dau cua danh sach moi
head->data=HL->data; head->next=NULL;
//Bat dau sap xep danh sach da cho vao danh sach moi
for(LNode* p=HL->next; p; p=p->next) {
LNode* q=new LNode;
q->data=p->data;
LNode *cp=head, *ap=NULL;
//Tim vi tri thich hop cho q de chen` vao ds moi' theo thu' tu
while(cp) {
if(mark==1) {
if(q->data<cp->data) break;
else {ap=cp; cp=cp->next;}
}
else {
if(q->data>cp->data) break;
else {ap=cp; cp=cp->next;}
}
15
}
//chen nut' vao vi tri vua tim duoc
if(ap==NULL) {q->next=head; head=q;}
else {
q->next=cp; ap->next=q;
}
}
//Duyet danh sach vua tao
TraverseList(head);
//Xoa trang danh sach vua tao
ClearList(head);
}
16
cout<<"Xoa nut cuoi"<<endl;
if(DeleteList(a,x,-1)){
cout<<"Xoa thanh cong!"<<endl;
cout<<"Danh sach a sau khi xoa"<<endl;
TraverseList(a);
}else cout<<"Xoa that bai!"<<endl;
17